SSD Nodes Learn 🎉 VPS $5.50/aydan başlayan
Rehberler Matt ConnorYazan Matt Connor

Teknik kitaplar ajan yeteneğine nasıl dönüştürülür?

PDF, EPUB veya doküman klasörlerini kodlama ajanınız için optimize edilmiş yeteneklere dönüştürün. Token bütçesi, headless çalıştırma ve lisanslama detaylarını öğrenin.

Teknik bir kitabı ajan yeteneğine dönüştürmek: elde edecekleriniz

Bir teknik kitabı ajan yeteneğine dönüştürmek için dönüştürücüyü bir PDF, EPUB, DOCX dışa aktarımı veya halihazırda sahip olduğunuz dahili belgelerden oluşan bir klasöre yönlendirirsiniz. Araç bir yetenek dizini oluşturur: adlandırılmış çerçeveleri ve bölümlerin dizinini içeren bir giriş dosyası ile ajanın yalnızca sorunuz gerektirdiğinde okuyacağı bölüm başına bir dosya. Kitabın tamamı bağlam penceresine (context window) girmez. Yalnızca dizin girer.

Bu işlem, halihazırda bildiğiniz bir prosedürü kodladığınız sıfırdan ajan yeteneği yazma sürecinin tam tersidir. Burada bilgi mevcuttur ancak kimse ona ulaşamamaktadır: 800 sayfalık bir üretici PDF'i veya yazan kişi ayrıldığından beri açılmamış bir el kitabı gibi. Yapılan iş sıkıştırma ve indekslemedir. Eğer yetenek (skill) terimi sizin için yeniyse, önce ajan yeteneğinin aslında ne olduğu konusunu okuyun.

Burada kullanılan dönüştürücü, kendi makinenizde çalışan, MIT lisanslı bir yetenek olan book-to-skill'dur. Ağustos 2026 itibarıyla güncel etiket v1.4.0'dur. Oluşturduğu yapı, aracın kendisinden daha önemlidir ve FAQ öncesindeki son bölüm, aynı yapının elle nasıl oluşturulacağını gösterir.

Token bütçesinin tüm tasarımın temeli olması

Bir kitabın bağlam penceresine (context window) yapıştırılması, o kitabı gerektiren her konuşmada tam boyutlu bir maliyet oluşturur. Bir yetenek (skill) ise giriş dosyasının maliyetini bir kez, artı sorunun gerçekten temas ettiği bölümlerin maliyetini getirir. Proje, oluşturduğu her dosya için bir bütçe tanımlar.

ChartDocumented token budget per generated file, book-to-skill v1.4.0
The data behind this chart
[
  {
    "label": "SKILL.md entry file",
    "tokens": "4,000"
  },
  {
    "label": "One chapter file",
    "tokens": "1,000"
  },
  {
    "label": "glossary.md",
    "tokens": "1,500"
  },
  {
    "label": "patterns.md",
    "tokens": "2,000"
  },
  {
    "label": "cheatsheet.md",
    "tokens": "1,000"
  }
]

Giriş dosyası olan SKILL.md, 4,000 token ile sınırlandırılmıştır ve adlandırılmış framework'leri ve bölüm dizinini taşır. Her bölüm dosyası yaklaşık 1,000 token boyutundadır ve bir talep gelene kadar diskte bekler. Destekleyici dosyalar da benzerdir: glossary.md için 1,500, patterns.md için 2,000, cheatsheet.md için 1,000 token.

Bu bütçeler, Claude Code'un bağlamı fiilen nasıl harcadığıyla uyumludur. Bir yeteneğin description dosyası yetenek listesinde yer alır, böylece model yeteneğin varlığından haberdar olur. Gövde kısmı yetenek çağrıldığında yüklenir ve yüklendikten sonra oturumun geri kalanı boyunca bağlamda kalır; bu nedenle giriş dosyasındaki her satır yinelenen bir maliyettir. Destekleyici dosyalar yalnızca ajan onları okuduğunda yüklenir; bölüm bazlı dosyaların düşük maliyetli olmasının nedeni budur.

Giriş dosyası rakamının arkasında daha katı bir sınır bulunur. Otomatik sıkıştırma (auto-compaction) uzun bir konuşmayı özetlediğinde, Claude Code her yeteneğin en son çağrılma anını özetin arkasına yeniden ekler ve her birinin ilk 5.000 token'ını, tüm yeniden eklenen yetenekler genelinde 25.000 token'lık birleşik bir bütçe içinde tutar. 5.000 token'a sığan bir giriş dosyası, sıkıştırmadan bütün olarak çıkar. 20.000 token'lık bir giriş dosyası ise ilk çeyreğiyle geri döner ve hangi üç çeyreğin kaybolduğunu size bildiren bir mekanizma yoktur.

Bu, aşamalı bir ifşadır (progressive disclosure): her zaman maliyetine değen küçük bir dizin ve ajanın bilerek açtığı bir kapının ardında duran materyal yığını. Claude Code'un bağlam penceresini nasıl yönettiği bu hesaplamanın geri kalanını kapsar.

Converter aracını VPS üzerine kurun ve belirli bir sürüme sabitleyin

Bu yetenek bir git deposudur. Kullandığınız ajanın yetenekler dizinine klonlayın. Dizin adı slash komutu haline gelir, bu nedenle klonlama yolu keyfi değildir.

git clone --depth 1 --branch v1.4.0 \
  https://github.com/virgiliojr94/book-to-skill.git \
  ~/.claude/skills/book-to-skill

--branch bir etiket kabul eder, bu nedenle bu komut v1.4.0 sürümünü kontrol eder ve daha sonraki sürümleri almaz. Sabitleme yapın; çünkü bir yetenek, ajanınızın izlediği talimatlar bütünüdür ve bu talimatlarda gözden geçirilmemiş bir değişiklik, sunucunuzda çalışan şeyin değişmesi anlamına gelir. GitHub Copilot CLI bunun yerine ~/.copilot/skills/ okur, Amp ise ~/.agents/skills/ okur.

Ayrıca tek satırlık bir kurulum olan npx skills add virgiliojr94/book-to-skill komutu da mevcuttur; bu komut güncel olan neyse onu çeker. Aracı denemek için bunu kullanın. Tekrar çalıştırdığınız her şey için sabitlenmiş klonlamayı kullanın.

Şimdi sunucuda hangi çıkarıcıların (extractors) bulunduğunu doğrulayın:

cd ~/.claude/skills/book-to-skill
python3 scripts/extract.py --check

--check hangi çıkarıcıların kurulu olduğunu raporlar ve eksik olan her biri için kurulum komutunu yazdırır. Paket, Python 3.9 veya daha yeni bir sürüm gerektirir.

Eğer klonlama işleminden sonra /book-to-skill otomatik tamamlama kısmında görünmezse, ajanınızı yeniden başlatın. Claude Code, oturum başladığında mevcut olan yetenek dizinlerini izler, bu nedenle iki dakika önce oluşturduğunuz bir ~/.claude/skills/ henüz izlenmiyor olabilir.

Gerçekten hangi çıkarıcılara ihtiyacınız var?

Her formatın standart kütüphanede bir yedeği bulunduğu için Python dışında hiçbir şeye gerek yoktur. Yedekler daha düşük performanslıdır; küçük bir sunucuda kullanılmayan çıkarıcıları yüklemek zaman kaybına yol açar.

  • pdftotext paketi içindeki poppler-utils, metin ağırlıklı PDF'leri işler ve neredeyse anlık sonuç verir. sudo apt install poppler-utils ile yükleyin.
  • pypdf ve pdfminer.six, PDF için Python yedekleridir.
  • docling, değeri tablolarında ve kod listelerinde olan teknik PDF'ler içindir. Proje, sayfa başına yaklaşık 1,5 saniyelik bir işlem süresi öngörmektedir.
  • ebooklib ve beautifulsoup4, EPUB dosyalarını düzgün bir şekilde okur. Bunlar olmadan araç, standart kütüphanedeki zipfile okuyucusuna geri döner.
  • python-docx, DOCX dosyalarını; striprtf ise RTF dosyalarını okur.
  • MOBI ve AZW dosyaları için Calibre'nin ebook-convert aracı gereklidir.
  • ocrmypdf, hiçbir metin katmanı içermeyen taranmış kitaplar üzerinde OCR (optik karakter tanıma) işlemi gerçekleştirir.

Ubuntu 24.04 üzerinde standart bir pip3 install pypdf komutu şu hata ile durur:

error: externally-managed-environment

Bu, bozuk bir pip değildir. Ubuntu ve Debian, sistem Python'unu apt tarafından yönetilen bir yapı olarak işaretler; bu nedenle pip, sistem dizinlerine yazmayı reddeder. İki çözüm mevcuttur. sudo apt install poppler-utils bir binary yükler ve pip gerektirmez; pdftotext ise çoğu düz metin PDF'ini tek başına işleyebilir. Python çıkarıcıları için bir sanal ortam oluşturun ve aracınızı bu ortamın içinden başlatın; böylece yeteneğin çağırdığı python3, paketlerin yüklü olduğu yorumlayıcı olur.

python3 -m venv ~/.venvs/book-to-skill
source ~/.venvs/book-to-skill/bin/activate
pip install "$HOME/.claude/skills/book-to-skill[pdf,epub,docx]"
claude

Depo; pdf, epub, docx, rtf, technical ve all ekstralarını tanımlar; burada technical, docling olarak belirtilmiştir. Projenin kurulum sayfasında pip install "book-to-skill[pdf,epub,docx]" da görünmektedir ancak bu isim Ağustos 2026 itibarıyla PyPI üzerinde yayınlanmamıştır; bu nedenle kurulumu yukarıda belirtildiği gibi kendi yerel kopyanızdan yapın.

Bir kitap ihtiyaç duyana kadar docling paketini yüklemeyin. Bu paket bir makine öğrenimi yığını gerektirir; bu yüzden kurulumdan önce küçük bir plandaki boş disk alanınızı kontrol edin.

Belgelerden oluşan bir klasör üzerinde, headless mod dahil olmak üzere çalıştırma

Komut; bir dosya, bir klasör, tırnak içinde bir glob ifadesi veya aynı anda birden fazla yolun yanı sıra isteğe bağlı bir yetenek (skill) adı alır. Bir dizine koyabileceğiniz her şey çalışır; buna RFC (internet protokollerini tanımlayan belgeler olan "request for comments") setleri de dahildir.

/book-to-skill ~/library/platform-docs/ platform-handbook
/book-to-skill "~/books/*.epub" my-library
/book-to-skill ~/papers/paper1.pdf ~/notes/export.txt unified-research

Shell'in yetenek (skill) görmeden önce genişletmemesi için glob ifadesini tırnak içine alın. Komutu mevcut bir yetenek dizinine yönlendirmek, ikinci bir yetenek oluşturmak yerine yeni kaynakları mevcut yeteneğin içine dahil eder.

Etkileşimli bir çalıştırma size sorular sorar. Materyalin teknik mi yoksa metin ağırlıklı mı olduğu, çıkarıcıyı (extractor) belirler. Referans derinliği mi yoksa çalışma derinliği mi istediğiniz, bölüm başına bütçeyi belirler. Yeteneğin adı ne olmalı ve hangi yetenek köküne (skills root) gitmeli? Ayrıca oluşturma işleminden önce bir token ve süre tahmini yazdırır ve onaylamanızı bekler.

Headless bir çalıştırmada bu soruları yanıtlayacak kimse yoktur. Kullanıcı tarafından çağrılabilen yetenekler claude -p içinde çalışır: slash komutunu istem dizisine (prompt string) koyun; Claude Code çalıştırma başlamadan önce bunu genişletir. Bu nedenle soruları aynı istemde yanıtlayın.

claude -p "/book-to-skill ~/library/platform-docs/ platform-handbook
The sources are technical. Use reference depth. Write the skill to
~/.claude/skills/. Do not publish it to GitHub. Proceed without asking me." \
  --allowedTools "Bash,Read,Write,Edit"

--allowedTools, çalıştırmanın ihtiyaç duyduğu araçları önceden onaylar; çünkü terminale bağlı olmayan bir izin istemi, asla bitmeyen bir çalıştırma demektir. --output-format json eklemek, sonuç kısmına faturanızdan ziyade istemci tarafı tahmini olan total_cost_usd bilgisini koyar.

Çıkarma işlemi, herhangi bir model okumadan önce her kaynağı /tmp altındaki geçici bir çalışma dizininde birleştirir ve çalıştırmanın son adımı bu dizini siler. Çıkarılamayan bir kaynak atlanır, böylece toplu işlem devam eder; bu da bir çalıştırmanın, sağladığınızdan daha az dosya okuyarak başarı rapor edebileceği anlamına gelir. Nihai rapordaki dosya envanterini klasördekiyle karşılaştırın. Eksik bir bölüm genellikle eksik bir kaynaktan kaynaklanır.

Çalıştırmayı, bir araca teslim etmekten çekinmeyeceğiniz bir sunucuda gerçekleştirin. Claude Code'u bir VPS üzerinde güvenli bir şekilde çalıştırma konusu, bu işin izin tarafını kapsamaktadır.

Çıktının kodlama aracınızın bulabileceği şekilde nereye kaydedileceği

Oluşturulan yetenek, bir yetenek kök dizinine yerleşir. Bunlardan ikisi önemlidir.

  • ~/.claude/skills/<skill-name>/ kişiseldir ve o makinedeki her projede kullanılabilir.
  • .claude/skills/<skill-name>/ bir deponun içinde yer alır ve onunla birlikte taşınır.

Her ikisinin içinde de SKILL.md, her bölüm için bir dosya içeren bir chapters/ dizini ve destekleyici dosyalar bulunur. Dizin adı komuttur, bu nedenle ~/.claude/skills/platform-handbook/ size /platform-handbook komutunu verir ve ardından bir konu veya basit bir soru ile devam edebilirsiniz.

Kök dizini kolaylığa göre değil, lisanslamaya göre seçin. Satın aldığınız bir kitaptan oluşturulan yetenek, kişisel dizininize aittir. Kendi ekibinizin yazdığı dokümantasyondan oluşturulan bir yetenek ise depoya aittir; bu da bir yeteneği birden fazla depo arasında paylaşmayı çözülmesi gereken bir sonraki sorun haline getirir.

Eklediğiniz her yetenekle birlikte bir maliyet artar. Her yeteneğin açıklaması, modelin onu kullanmaya karar verebilmesi için yetenek listesinde tutulur; birleşik açıklama metni giriş başına 1.536 karakterle sınırlandırılır ve listenin tamamının bir bütçesi vardır. On kitap yeteneği, bu bütçe için rekabet eden on açıklama anlamına gelir. Her zaman adıyla çağırdıklarınız için, oluşturulan ön bilgilere (frontmatter) bir satır ekleyin:

---
name: platform-handbook
description: Frameworks and chapter index from the internal platform handbook.
disable-model-invocation: true
---

disable-model-invocation: true ile açıklama bağlamın tamamen dışında tutulur ve /platform-handbook yazdığınızda yetenek yine de tam olarak yüklenir. Otomatik keşif özelliğinden vazgeçer ve daha temiz bir bağlam penceresi elde edersiniz.

Lisanslama: MIT lisansı kitabı değil, dönüştürücüyü kapsar

Bu konuda kesin olun, çünkü buradaki başarısızlık teknik bir sorun değildir.

  • MIT lisansı, dönüştürücünün kodunu ve yetenek tanımını kapsar. İçine beslediğiniz doküman hakkında hiçbir şey söylemez.
  • Satın aldığınız bir kitap üzerinde, kontrolünüz altındaki donanımda dönüştürücüyü çalıştırmak, kendi kopyanızdan notlar almanız anlamına gelir.
  • Sonucu yayınlamak dağıtımdır ve araç üzerindeki MIT lisansı, başkasının kitabından türetilmiş herhangi bir şeyi dağıtma hakkı vermez.
  • Çıktı, türev bir eserdir. Çerçeveler ve bölüm özetleri hala kaynak tarafından şekillendirilir ve türev bir eser, kaynağın telif hakkına tabidir.
  • Yeniden dağıtamayacağınız materyalden oluşturulan bir yetenek, onu oluşturan makinede kalmalıdır. Halka açık bir depoda değil. Paylaşılan bir ekip pazar yerinde değil.
  • Kaynak size ait olduğunda veya açık lisanslı olduğunda yayınlayın: ekibinizin yazdığı dokümantasyon veya şartları yeniden dağıtıma izin veren bir standart gibi.

Araç bunun etrafında inşa edilmiştir. Hiçbir kitap içeriği ile birlikte gelmez, ayıklama işlemi yerel olarak çalışır ve yayınlama adımı, depo görünürlüğünü bir çıkarım yapmak yerine doğrudan public veya private kelimelerini kabul eden ayrı bir soru olarak sorar. Bu istemi lisanslama kararı olarak değerlendirin, çünkü gerçekte olan budur.

Kurumsal el kitapları ikinci bir sorun teşkil eder. Kimsenin kabul ettiğinden daha sık kimlik bilgileri içerirler ve bir dönüştürücü, kimsenin açmadığı bir PDF'i, temsilcinizin talep üzerine okuduğu bir dosyaya dönüştürür. Oluşturulan dosyaları commit etmeden önce bir kez okuyun ve yapay zeka temsilcilerinizden sırları uzak tutma konusuna göz atın.

Bir dönüştürme işleminin maliyeti nedir?

Aşağıdaki rakamlar bizim ölçümlerimiz değil, projenin kendi yayınladığı ölçümlerdir.

ChartCost to convert one full-length book, as published by the project
The data behind this chart
[
  {
    "label": "Think Python 2",
    "cost_usd": 0.88
  },
  {
    "label": "Working Backwards",
    "cost_usd": 0.96
  },
  {
    "label": "Pro Git",
    "cost_usd": 1.23
  },
  {
    "label": "Moby-Dick",
    "cost_usd": 1.42
  }
]

Projenin ölçüm yaptığı 4 kitap genelinde, bir dönüştürme işlemi 0.88 ile 1.42 ABD doları arasında gerçekleşmiş olup, Pro Git kitabı için bu tutar 1.23 seviyesindedir. Rakamlar Claude Sonnet 4.5 üzerinde ölçülmüş, token sayıları tiktoken kullanılarak cl100k_base üzerinden hesaplanmış ve Ağustos 2026 itibarıyla projenin docs/performance.md kısmında yayınlanmıştır. Kendi maliyetiniz, kullandığınız modele ve fiyatlandırmanıza göre değişiklik gösterecektir.

Proje ayrıca, kitaptan tek bir soruya yanıt vermek için gereken token sayısının, tüm kitabın bağlama (context) yapıştırılmasına kıyasla 24 ila 51 kat daha az olduğunu belgelemektedir. Bunu bir taahhüt olarak değil, tasarruf potansiyelinin bir göstergesi olarak değerlendirin; zira bu durum kitaba ve soruya bağlıdır. Yapısal gerçek her iki durumda da geçerlidir: dönüştürme işlemi bir kez ödenir, ancak bağlama dökümü (context dump) kitabı gerektiren her konuşmada tekrar ödenir.

Neden PDF'i yapıştırmıyoruz veya bir RAG dizini oluşturmuyoruz?

Metni yapıştırmak işe yarar ve tek bir belgeyle ilgili tek bir soru için doğru yöntemdir. Ancak aynı kitaba Salı günü ve tekrar Cuma günü ihtiyaç duyulduğunda bu yöntem verimsizleşir, çünkü her seferinde kitabın tüm boyutunun maliyetini ödersiniz.

Retrieval (geri getirme) veya RAG (retrieval augmented generation), sorgu anında arama yapar ve kelimelerinizle eşleşen pasajları geri döndürür. Tam cümleye ihtiyaç duyduğunuzda bu yöntem güçlüdür. Ancak faydalı bilgi bir bölümün tamamına yayılmış bir çerçeve olduğunda zayıf kalır, çünkü hiçbir pasaj bu bilgiyi tek başına içermez. Bir skill, bu çıkarımı dönüştürme aşamasında bir kez yapar ve pasajlar yerine yapıyı depolar.

Dürüst bir sınırlama: oluşturulan bir skill, bir model tarafından yazılmış kayıplı bir özet niteliğindedir. Bu bir çalışma yardımcısıdır ve kaynak her zaman asıl belgedir. Tam ifadelerin yasal veya protokole dayalı bir ağırlığı olduğunda, PDF'i saklayın ve alıntıyı oradan yapın. MCP sunucuları ve kural dosyalarına karşı skill karşılaştırmaları bölümü, her yaklaşımın nerede kullanılması gerektiğini açıklar.

Hata modları ve karşılaşacağınız dizeler

Taranmış bir PDF hiçbir sonuç üretmiyor. Çıkarıcı, ilk sayfalarda metin katmanı olup olmadığını kontrol eder ve 400 sayfalık görseli işlemek yerine bir açıklama ile durur. Önce ocrmypdf input.pdf output.pdf komutunu çalıştırın, ardından çıktı dosyasını sisteme besleyin.

pip kurulumu reddediyor. Ubuntu 24.04 üzerindeki error: externally-managed-environment, apt'nin sistem Python'ını koruma altına almasından kaynaklanır. Yukarıda belirtilen sanal ortamı kullanın veya poppler-utils paketini kurarak pip kullanımını tamamen devre dışı bırakın.

Bölümler yanlış çıkıyor. Bölüm algılama, Chapter 7 gibi açık başlıkları ve bunların dil varyantlarını arar. Sadece bölüm başlıkları veya Romen rakamları kullanan bir kitap hatalı bölünür; çözüm, tahmin yürütmesini beklemek yerine bölümlerin nerede başladığını çalıştırma komutuna belirtmektir.

Komut bulunamadı. Otomatik tamamlama listesinde /book-to-skill eksikse, bu durum skills dizininin oturumunuz başladıktan sonra oluşturulduğu anlamına gelir. Ajanı yeniden başlatın.

Docling çok uzun sürüyor. Sayfa başına yaklaşık 1,5 saniyelik işlem süresiyle, uzun bir kitap için CPU süresi dakikalarca sürebilir ve paylaşımlı bir sunucuda bu işlem, barındırdığınız diğer tüm servislerle kaynak rekabetine girer. Çalıştırma sırasında içerik türü sorulduğunda "text-heavy" yanıtını verin veya scripts/extract.py komutunu kendiniz çalıştırırken --mode text parametresini geçin. --mode technical, docling'i seçen yanıttır.

Bir kaynak sessizce kayboluyor. Okunamayan bir dosya, toplu işlemin tamamlanabilmesi için atlanır. İşlem sonunda, verdiğinizden daha az kaynak üzerinde başarı raporu verilir; bu durumun tek görülebileceği yer nihai rapordaki dosya envanteridir.

Aynı modeli manuel olarak uygulama

Araç bir kolaylıktır. Aktarılabilir olan kısım yapıdır; bir metin düzenleyici, sahip olduğunuz her türlü referans materyali için bu yapıyı oluşturabilir.

  1. Bir giriş dosyası yazın ve bunu dönüştürücünün hedeflediği 4,000 token'larının yakınında tutun. Adlandırılmış kavramları tam formülasyonlarıyla buraya ekleyin; ayrıca her bir detay dosyasını ve bu dosyanın içerdiği konu başlıklarını listeleyen bir dizin oluşturun.
  2. Materyali, her biri yaklaşık 1,000 token uzunluğunda olacak şekilde, konu başına bir dosya olacak biçimde bölün. Dosya isimlerini, sadece isme bakarak içeriğin ne olduğunu anlayabileceğiniz şekilde belirleyin.
  3. Giriş dosyasından bu dosyaların her birini, ne zaman okunmaları gerektiğini belirten bir cümle ile tanımlayın.
  1. adım, insanların atladığı ancak modelin çalışmasını sağlayan kısımdır. Ajan, dizini okuyarak hangi dosyayı açacağına karar verir; bu nedenle dizinde tanımlanmayan bir dosya, ajanın asla açmayacağı bir dosyadır. Dizin üründür, bölüm dosyaları ise depolama alanıdır.

Giriş dosyasını sıkıştırma bütçesi dahilinde tutun; böylece tüm yapı uzun bir oturum boyunca varlığını korur. Bu kural, dosyaları bir dönüştürücü yazsa da siz yazsanız da geçerlidir.

FAQ

Satın aldığım bir kitaptan oluşturduğum bir yeteneği (skill) yayınlayabilir miyim?

Hayır, kitabın lisansı yeniden dağıtıma izin vermediği sürece yayınlayamazsınız. Dönüştürücü üzerindeki MIT lisansı yalnızca dönüştürücünün kodunu kapsar, içine beslediğiniz materyali değil; oluşturulan yetenek ise kitabın türev bir çalışmasıdır. Bunu kendi makinenizde ~/.claude/skills/ içinde tutun. Kendi yazdığınız belgeler veya açık lisanslı kaynaklar için yayınlama yapmakta bir sakınca yoktur; araç, depo görünürlüğünü kendi sorusu olarak sorar ve yalnızca boş bir public veya private kabul eder, böylece karar bilinçli bir şekilde alınmış olur.

docling kullanmam gerekiyor mu, yoksa pdftotext yeterli mi?

Düz metinler için poppler-utils içinden pdftotext yeterlidir ve neredeyse anında sonuç verir. Kitabın değeri tablolarında ve kod listelerinde saklıysa docling kurun, çünkü düz metin çıkarıcılar tam olarak bunları kaybeder. Buradaki ödünleşim hızdır: proje, docling'in sayfa başına yaklaşık 1,5 saniyede çalıştığını ölçmüştür; bu nedenle 300 sayfalık bir kılavuz, bir VPS üzerinde birkaç dakikalık CPU süresi gerektirir.

VPS üzerinde pip neden externally-managed-environment hatası veriyor?

Ubuntu 24.04 ve güncel Debian sürümleri, sistem Python'ını apt tarafından yönetilen bir paket olarak işaretler; bu nedenle pip, sistem içine kurulum yapmayı reddeder ve error: externally-managed-environment çıktısını verir. python3 -m venv ~/.venvs/book-to-skill ile bir sanal ortam oluşturun, etkinleştirin, çıkarıcıları oraya kurun ve ardından ajansınızı aynı kabuk üzerinden başlatın. Yetenek python3 komutunu çağırır, bu nedenle PATH üzerinde hangi yorumlayıcı varsa onu kullanır; bu da artık sanal ortamdaki yorumlayıcıdır.

Oluşturduğum yetenek neden slash komutu olarak görünmüyor?

İki sebebi vardır. Komut adı dizin adından gelir, bu nedenle yetenek ~/.claude/skills/<name>/SKILL.md veya .claude/skills/<name>/SKILL.md konumunda bulunmalı ve SKILL.md tam olarak bu şekilde yazılmalıdır. Yol doğruysa ajanı yeniden başlatın. Claude Code, halihazırda izlediği yetenek dizinlerindeki düzenlemeleri algılar, ancak oturum başladıktan sonra oluşturulan bir yetenek dizini hiç izlenmiyor olabilir.