كيفية تحويل كتاب تقني أو ملف PDF إلى مهارة وكيل ذكي
تعلم كيفية تحويل ملفات PDF وEPUB إلى مهارات برمجية قابلة للاستدعاء. وفر ميزانية الرموز عبر فهرسة المستندات بدلاً من حشو السياق، مع شرح كامل لخطوات التثبيت والترخيص.
تحويل كتاب تقني إلى مهارة وكيل: ما الذي تحصل عليه
لتحويل كتاب تقني إلى مهارة وكيل، وجّه أداة التحويل نحو ملف PDF أو EPUB أو تصدير DOCX أو مجلد يحتوي على مستندات داخلية تملكها بالفعل. تنشئ الأداة دليل مهارة يحتوي على: ملف إدخال واحد يضم الأطر المسماة وفهرساً للفصول، وملفاً واحداً لكل فصل يقرؤه الوكيل فقط عندما يستدعي سؤالك ذلك. لا يدخل الكتاب أبداً في نافذة السياق، بل الفهرس فقط هو ما يدخل.
هذه المهمة هي النقيض من كتابة مهارة وكيل من الصفر، حيث تقوم بترميز إجراء تعرفه مسبقاً. هنا، المعرفة موجودة بالفعل ولا يمكن لأحد الوصول إليها: مثل ملف PDF خاص بمورد يقع في 800 صفحة، أو كتيب لم يُفتح منذ رحيل الشخص الذي كتبه. العمل هنا يتمثل في الضغط والفهرسة. إذا كانت كلمة "مهارة" جديدة عليك، اقرأ أولاً ما هي مهارة الوكيل في الواقع.
أداة التحويل المستخدمة هنا هي book-to-skill، وهي مهارة مرخصة بموجب رخصة MIT وتعمل على جهازك الخاص. الإصدار الحالي اعتباراً من أغسطس 2026 هو v1.4.0. الهيكلية التي تنتجها الأداة أهم من الأداة نفسها، ويوضح القسم الأخير قبل قسم FAQ كيفية بناء الهيكلية ذاتها يدوياً.
لماذا تُعد ميزانية الرموز (token budget) جوهر التصميم
إن لصق كتاب كامل في نافذة السياق يستهلك حجمه بالكامل في كل محادثة تحتاجه. أما المهارة (skill) فتستهلك ملف الإدخال الخاص بها مرة واحدة، بالإضافة إلى الفصول التي يتطرق إليها السؤال فعلياً. توثق وثائق المشروع ميزانية لكل ملف يتم إنشاؤه.
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"
}
]يتم تقييد ملف الإدخال، SKILL.md، بـ 4,000 رمزاً، ويحتوي على أطر العمل المسماة وفهرس الفصول. يبلغ حجم كل ملف فصل حوالي 1,000 رمزاً، ويبقى مخزناً على القرص حتى يتم طلبه. الملفات الداعمة مماثلة: 1,500 رمزاً لـ glossary.md، و2,000 لـ patterns.md، و1,000 لـ cheatsheet.md.
تتوافق هذه الميزانيات مع كيفية استهلاك Claude Code للسياق فعلياً. يوضع ملف description الخاص بالمهارة في قائمة المهارات ليعرف النموذج بوجودها. يتم تحميل متن المهارة عند استدعائها، وبمجرد تحميله يبقى في السياق لبقية الجلسة، لذا فإن كل سطر في ملف الإدخال يمثل تكلفة متكررة. تُحمّل الملفات الداعمة فقط عندما يقرؤها الوكيل، وهذا ما يجعل ملفات الفصول الفردية غير مكلفة.
هناك حد أكثر صرامة خلف رقم ملف الإدخال هذا. عندما يقوم الضغط التلقائي (auto-compaction) بتلخيص محادثة طويلة، يعيد Claude Code إرفاق أحدث استدعاء لكل مهارة بعد الملخص، ويحتفظ بأول 5,000 رمز من كل منها، ضمن ميزانية مجمعة قدرها 25,000 رمز عبر جميع المهارات المعاد إرفاقها. ملف الإدخال الذي يقع ضمن 5,000 رمز ينجو من الضغط كاملاً. أما ملف الإدخال الذي يبلغ 20,000 رمز فيعود كربعه الأول فقط، ولا يوجد ما يخبرك أي الأجزاء الثلاثة المتبقية قد فُقدت.
هذا هو الكشف التدريجي: فهرس صغير يستحق تكلفته دائماً، وجزء كبير من المادة خلف باب يفتحه الوكيل عن قصد. يشرح كيف يدير Claude Code نافذة السياق الخاصة به بقية تلك الحسابات.
تثبيت المحوّل على خادمك الافتراضي الخاص (VPS) مع تثبيت الإصدار
هذه المهارة عبارة عن مستودع git. استنسخ المستودع في دليل المهارات الخاص بالوكيل الذي تستخدمه. اسم الدليل يصبح هو أمر الشرطة المائلة (slash command)، لذا فإن مسار الاستنساخ ليس مسألة اختيارية.
git clone --depth 1 --branch v1.4.0 \
https://github.com/virgiliojr94/book-to-skill.git \
~/.claude/skills/book-to-skillيقبل --branch وسماً (tag)، لذا فإن هذا الأمر يسحب v1.4.0 ولا شيء بعده. ثبّت الإصدار، لأن المهارة هي مجموعة من التعليمات التي يتبعها وكيلك، وأي تغيير غير مراجع في هذه التعليمات يعني تغييراً في ما يتم تشغيله على خادمك. يقرأ GitHub Copilot CLI ملف ~/.copilot/skills/ بدلاً من ذلك، بينما يقرأ Amp ملف ~/.agents/skills/.
يوجد أيضاً أمر تثبيت في سطر واحد، وهو npx skills add virgiliojr94/book-to-skill، والذي يجلب الإصدار الحالي أياً كان. استخدمه لتجربة الأداة. استخدم النسخة المثبتة (pinned clone) لأي شيء تعيد تشغيله.
الآن تأكد من المستخرجات (extractors) الموجودة على الخادم:
cd ~/.claude/skills/book-to-skill
python3 scripts/extract.py --checkيُبلغ --check عن المستخرجات المثبتة ويطبع أمر التثبيت لكل مستخرج مفقود. تتطلب الحزمة إصدار Python 3.9 أو أحدث.
إذا لم يظهر /book-to-skill في الإكمال التلقائي بعد الاستنساخ، أعد تشغيل الوكيل. يراقب Claude Code أدلة المهارات التي كانت موجودة عند بدء الجلسة، لذا فإن ~/.claude/skills/ الذي أنشأته قبل دقيقتين لا تتم مراقبته بعد.
ما هي المستخرجات التي تحتاجها فعلياً؟
لا شيء مطلوب بخلاف Python، لأن كل تنسيق له بديل في المكتبة القياسية. البدائل أقل كفاءة، والوقت الضائع على خادم صغير يكمن في تثبيت مستخرجات لا تستخدمها.
pdftotext، من حزمةpoppler-utils، يتعامل مع ملفات PDF الغنية بالنصوص وهو سريع جداً. ثبته باستخدامsudo apt install poppler-utils.pypdfوpdfminer.sixهما بدائل Python لملفات PDF.doclingمخصص لملفات PDF التقنية التي تكمن قيمتها في الجداول وقوائم الأكواد. يقدر المشروع زمن المعالجة بحوالي 1.5 ثانية لكل صفحة.ebooklibمعbeautifulsoup4يقرأ ملفات EPUB بشكل صحيح. بدونهما، تعود الأداة لاستخدام قارئzipfileالموجود في المكتبة القياسية.python-docxيقرأ ملفات DOCX وstriprtfيقرأ ملفات RTF.- أداة
ebook-convertمن Calibre مطلوبة لملفات MOBI وAZW. ocrmypdfيقوم بعملية OCR (التعرف الضوئي على الحروف) للكتب الممسوحة ضوئياً، والتي لا تحتوي على طبقة نصية على الإطلاق.
على Ubuntu 24.04، يتوقف أمر pip3 install pypdf البسيط عند هذا:
error: externally-managed-environmentهذا لا يعني أن pip معطل. تقوم Ubuntu وDebian بتعريف Python الخاص بالنظام على أنه مُدار بواسطة apt، لذا يرفض pip الكتابة فيه. هناك حلان يعملان. sudo apt install poppler-utils يثبت ملفاً ثنائياً ولا يحتاج إلى pip على الإطلاق، وpdftotext يغطي معظم ملفات PDF النصية بمفرده. بالنسبة لمستخرجات Python، أنشئ بيئة افتراضية (virtual environment) وابدأ تشغيل الوكيل من داخلها، بحيث يكون python3 الذي تستدعيه المهارة هو المفسر الذي يحتوي على الحزم.
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يُعرّف المستودع الإضافات pdf وepub وdocx وrtf وtechnical وall، حيث technical هو docling. تظهر صفحة تثبيت المشروع أيضاً pip install "book-to-skill[pdf,epub,docx]"، لكن هذا الاسم غير منشور على PyPI اعتباراً من أغسطس 2026، لذا ثبته من نسختك المحلية كما هو موضح أعلاه.
اترك docling خارج التثبيت حتى تحتاج إليه لكتاب معين. فهو يسحب حزمة تعلم آلي (machine learning stack)، لذا تحقق من مساحة القرص المتوفرة على خطتك الصغيرة قبل تثبيته.
تشغيله على مجلد مستندات، بما في ذلك الوضع غير التفاعلي (headless)
يقبل الأمر ملفاً، أو مجلداً، أو نمط glob بين علامتي اقتباس، أو عدة مسارات دفعة واحدة، متبوعاً باسم مهارة اختياري. يعمل الأمر مع أي محتوى تضعه في دليل واحد، بما في ذلك مجموعة RFC (طلبات التعليقات، وهي المستندات التي تحدد بروتوكولات الإنترنت).
/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ضع نمط glob بين علامتي اقتباس حتى لا يقوم الـshell بتوسيع النمط قبل أن يراه محرك المهارة. توجيه الأمر إلى دليل مهارة موجود يدمج المصادر الجديدة في تلك المهارة بدلاً من إنشاء مهارة ثانية.
يطلب منك التشغيل التفاعلي الإجابة على بعض الأسئلة. هل المادة تقنية أم كثيفة النصوص؟ هذا يحدد المستخرج (extractor). هل تريد عمقاً مرجعياً أم عمقاً دراسياً؟ هذا يحدد الميزانية لكل فصل. ما هو اسم المهارة، وفي أي جذر مهارات يجب أن توضع؟ كما يطبع الأمر تقديراً لعدد الرموز (tokens) والوقت المستغرق قبل البدء، وينتظر تأكيدك.
في التشغيل غير التفاعلي (headless)، لا يوجد مستخدم للإجابة على هذه الأسئلة. تعمل المهارات التي يستدعيها المستخدم في claude -p: ضع أمر slash في سلسلة المطالبة (prompt) وسيقوم Claude Code بتوسيعها قبل بدء التشغيل. لذا، أجب على الأسئلة في نفس المطالبة.
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 بالموافقة المسبقة على الأدوات التي يحتاجها التشغيل، لأن طلب الإذن في بيئة لا تحتوي على طرفية يعني أن التشغيل لن يكتمل أبداً. إضافة --output-format json تضع total_cost_usd في النتيجة، وهو تقدير من جانب العميل وليس فاتورتك الفعلية.
تجمع عملية الاستخراج كل مصدر في دليل عمل مؤقت تحت /tmp قبل أن يقرأه أي نموذج، وتقوم الخطوة الأخيرة من التشغيل بحذف ذلك الدليل. يتم تخطي المصدر الذي يفشل في الاستخراج لضمان استمرار الدفعة، مما يعني أن التشغيل قد يبلغ عن نجاحه بعد قراءة ملفات أقل مما قدمته. قارن قائمة الملفات في التقرير النهائي بما هو موجود في المجلد. الفصل المفقود يعني عادةً مصدراً مفقوداً.
امنح التشغيل خادماً تشعر بالراحة في تسليمه إلى وكيل (agent). يغطي تشغيل Claude Code بأمان على خادم VPS جانب الأذونات المتعلق بذلك.
أين يذهب المخرج ليجده وكيل البرمجة الخاص بك
تستقر المهارة المُنشأة في جذر المهارات. هناك اثنان منها يهمانك.
~/.claude/skills/<skill-name>/هو مسار شخصي، ومتاح في كل مشروع على ذلك الجهاز..claude/skills/<skill-name>/يعيش داخل المستودع وينتقل معه.
داخل أي منهما ستحصل على SKILL.md، وهو دليل chapters/ يحتوي على ملف واحد لكل فصل، بالإضافة إلى الملفات الداعمة. اسم الدليل هو الأمر، لذا فإن ~/.claude/skills/platform-handbook/ يمنحك /platform-handbook، ويمكنك إتباعه بموضوع أو سؤال مباشر.
اختر الجذر بناءً على الترخيص بدلاً من سهولة الوصول. المهارة المبنية من كتاب اشتريته تنتمي إلى دليلك الشخصي. المهارة المبنية من وثائق كتبها فريقك تنتمي إلى المستودع، مما يحوّل مشاركة مهارة واحدة عبر عدة مستودعات إلى المشكلة التالية التي يجب حلها.
تزداد تكلفة واحدة مع كل مهارة تضيفها. يبقى وصف كل مهارة في قائمة المهارات حتى يتمكن النموذج من اتخاذ قرار باستخدامها، ويتم اقتطاع نص الوصف المجمّع عند 1,536 حرفاً لكل إدخال، كما أن للقائمة ككل ميزانية محددة. عشر مهارات من كتب تعني عشرة أوصاف تتنافس على هذه المساحة. بالنسبة للمهارات التي تستدعيها بالاسم دائماً، أضف سطراً واحداً إلى الترويسة (frontmatter) المُنشأة:
---
name: platform-handbook
description: Frameworks and chapter index from the internal platform handbook.
disable-model-invocation: true
---مع disable-model-invocation: true يظل الوصف خارج السياق تماماً، وتظل المهارة تُحمّل بالكامل عند كتابة /platform-handbook. أنت تتخلى عن الاكتشاف التلقائي وتحصل على نافذة سياق أكثر هدوءاً.
الترخيص: تغطي رخصة MIT المحوّل، لا الكتاب
كن دقيقاً في هذا الأمر، لأن الفشل هنا ليس تقنياً.
- تغطي رخصة MIT كود المحوّل وتعريف مهارته. لا تذكر الرخصة شيئاً عن المستند الذي تغذيه به.
- تشغيل المحوّل على كتاب اشتريته، على عتاد تتحكم به، يعني أنك تدون ملاحظات من نسختك الخاصة.
- نشر النتيجة يعتبر توزيعاً، ورخصة MIT الخاصة بالأداة لا تمنحك أي حق في توزيع أي شيء مشتق من كتاب شخص آخر.
- المخرجات هي عمل مشتق. لا تزال الأطر وهيكلية الفصول تتشكل بناءً على المصدر، ويظل العمل المشتق خاضعاً لحقوق الطبع والنشر الخاصة بالمصدر.
- المهارة التي تُبنى من مواد لا يمكنك إعادة توزيعها يجب أن تبقى على الجهاز الذي بناها. لا تضعها في مستودع عام. ولا في سوق مشترك للفريق.
- انشر عندما يكون المصدر ملكك أو مرخصاً بشكل مفتوح: مثل الوثائق التي كتبها فريقك، أو المعايير التي تسمح شروطها بإعادة التوزيع.
صُممت الأداة حول هذا المبدأ. فهي لا تشحن أي محتوى كتاب، وتتم عملية الاستخراج محلياً، وتطلب خطوة النشر تحديد مستوى رؤية المستودع كسؤال منفصل يقبل فقط الكلمة المجردة public أو private بدلاً من استنتاج إحداهما. تعامل مع هذا الطلب كقرار ترخيص، لأنه كذلك بالفعل.
تحمل الكتيبات الداخلية مشكلة ثانية. فهي تحتوي على بيانات اعتماد أكثر مما يعترف به أي شخص، ويقوم المحوّل بتحويل ملف PDF لا يفتحه أحد إلى ملف يقرأه وكيلك عند الطلب. راجع الملفات المُنشأة مرة واحدة قبل رفعها (commit)، واطلع على إبقاء الأسرار بعيداً عن وكلاء الذكاء الاصطناعي.
ما تكلفة التحويل الواحد؟
الأرقام أدناه هي قياسات المشروع المنشورة وليست قياساتنا.
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
}
]عبر 4 كتاباً قام المشروع بقياسها، تراوحت تكلفة التحويل الواحد بين 0.88 و 1.42 دولار أمريكي، بينما بلغت تكلفة كتاب Pro Git 1.23. تم قياس هذه الأرقام باستخدام نموذج Claude Sonnet 4.5، مع احتساب عدد الرموز (tokens) من tiktoken باستخدام cl100k_base، وهي منشورة في docs/performance.md الخاص بالمشروع اعتباراً من أغسطس 2026. رقمك الخاص سيتغير بناءً على النموذج الذي تستخدمه وأسعاره.
يوثق المشروع أيضاً أن عدد الرموز المطلوبة للإجابة على سؤال واحد من المهارة أقل بـ 24 إلى 51 مرة مقارنة بإدراج الكتاب كاملاً في السياق. اعتبر هذا مؤشراً على حجم التوفير وليس وعداً دقيقاً، لأن الأمر يعتمد على الكتاب والسؤال. تظل النقطة الهيكلية ثابتة في كلتا الحالتين: يتم دفع تكلفة التحويل مرة واحدة، بينما يتم دفع تكلفة إدراج السياق في كل محادثة تحتاج إلى الكتاب.
لماذا لا ننسخ محتوى ملف PDF أو نبني فهرس RAG؟
يعمل النسخ بشكل جيد، وهو الحل الأمثل لسؤال واحد حول مستند واحد. لكنه يتوقف عن كونه حلاً مناسباً عندما تحتاج إلى الكتاب نفسه يوم الثلاثاء ومرة أخرى يوم الجمعة، لأنك تدفع تكلفة معالجته بحجمه الكامل في كل مرة.
يعمل الاسترجاع، أو ما يُعرف بـ RAG (توليد معزز بالاسترجاع)، على البحث وقت الاستعلام وإرجاع الفقرات التي تطابق كلماتك. هذا الأسلوب قوي عندما تحتاج إلى جملة دقيقة. لكنه ضعيف عندما تكون المعلومة المفيدة عبارة عن إطار عمل موزع على فصل كامل، حيث لا توجد فقرة واحدة تحتوي عليه. تقوم المهارة (Skill) بهذا الاستخراج مرة واحدة، وقت التحويل، وتخزن البنية بدلاً من الفقرات.
الحد الصادق: المهارة المولّدة هي ملخص فاقد للبيانات كتبه نموذج ذكاء اصطناعي. إنها أداة مساعدة للدراسة، ويبقى المصدر هو المرجع الأساسي. عندما تحمل الصياغة الدقيقة ثقلاً قانونياً أو بروتوكولياً، احتفظ بملف PDF واقتبس منه. يتناول الرابط مقارنة المهارات بخوادم MCP وملفات القواعد مواضع استخدام كل نهج.
أنماط الفشل، والرسائل التي ستراها
ملف PDF ممسوح ضوئياً لا ينتج أي شيء. يتحقق المستخرج من الصفحات الأولى بحثاً عن طبقة نصية ويتوقف مع عرض توضيح بدلاً من معالجة 400 صفحة من الصور. نفّذ ocrmypdf input.pdf output.pdf أولاً، ثم مرّر ملف المخرجات إليه.
يرفض pip التثبيت. يرجع error: externally-managed-environment على Ubuntu 24.04 إلى حماية apt لنظام Python الخاص بالنظام. استخدم البيئة الافتراضية المذكورة أعلاه، أو ثبّت poppler-utils وتجاوز pip تماماً.
تظهر الفصول بشكل خاطئ. يبحث كشف الفصول عن عناوين صريحة مثل Chapter 7 ومتغيراتها اللغوية. الكتاب الذي يستخدم عناوين أقسام مجردة أو أرقاماً رومانية يؤدي إلى تقسيم سيئ، والحل هو تحديد أماكن بدء الفصول يدوياً بدلاً من الاعتماد على التخمين.
الأمر غير موجود. يعني غياب /book-to-skill من الإكمال التلقائي أن دليل المهارات أُنشئ بعد بدء جلستك. أعد تشغيل الوكيل.
يستغرق Docling وقتاً طويلاً جداً. بمعدل 1.5 ثانية تقريباً لكل صفحة، يستغرق الأمر دقائق من وقت المعالج لكتاب طويل، وعلى خادم مشترك يتنافس هذا التشغيل مع كل ما تستضيفه. أجب بـ "text-heavy" عندما يسأل التشغيل عن نوع المحتوى، أو مرّر --mode text عند تشغيل scripts/extract.py بنفسك. --mode technical هو الخيار الذي يحدد docling.
يختفي المصدر بهدوء. يتم تخطي الملف الذي لا يمكن قراءته حتى تتمكن الدفعة من الانتهاء. يبلغ التشغيل بعد ذلك عن نجاحه مع عدد مصادر أقل مما قدمته له، والمكان الوحيد الذي يظهر فيه ذلك هو جرد الملفات في التقرير النهائي.
طبّق النمط نفسه يدوياً
الأداة هي مجرد وسيلة للراحة. الهيكلية هي الجزء القابل للنقل، ويمكن لأي محرّر نصوص بناء هذه الهيكلية لأي مادة مرجعية تمتلكها.
- اكتب ملف إدخال واحداً واحتفظ به بالقرب من رموز 4,000 التي تستهدفها الأداة المحوّلة. ضع المفاهيم المسمّاة فيه بصياغاتها الدقيقة، بالإضافة إلى فهرس يسرد كل ملف تفصيلي والمواضيع التي يحتويها ذلك الملف.
- قسّم المادة إلى ملفات بحجم يقارب 1,000 رمزاً تقريباً، بحيث يغطي كل ملف موضوعاً واحداً، وسمِّ الملفات بأسماء تعبّر عن محتواها بوضوح.
- صف كل ملف من هذه الملفات داخل ملف الإدخال، في الجملة التي تحدد متى يجب قراءته.
الخطوة 3 هي التي يتجاهلها معظم الناس، وهي التي تجعل هذا النمط فعالاً. يختار الوكيل الملفات التي سيفتحها من خلال قراءة الفهرس، لذا فإن أي ملف لا يصفه الفهرس هو ملف لن يفتحه الوكيل أبداً. الفهرس هو المنتج النهائي، بينما ملفات الفصول هي مجرد مخزن للبيانات.
حافظ على ملف الإدخال ضمن ميزانية الضغط، وستصمد الهيكلية بأكملها خلال جلسة العمل الطويلة. تنطبق هذه القاعدة سواء كانت الأداة المحوّلة هي من أنشأت الملفات أو كنت أنت من فعل ذلك.
FAQ
هل يمكنني نشر مهارة مبنية من كتاب اشتريته؟
لا، إلا إذا كانت رخصة ذلك الكتاب تسمح بإعادة التوزيع. تغطي رخصة MIT الخاصة بالمحوّل كود المحوّل نفسه، وليس المادة التي تغذيها به، وتُعتبر المهارة الناتجة عملاً مشتقاً من الكتاب. احتفظ بها في ~/.claude/skills/ على جهازك الخاص. النشر مقبول للوثائق التي كتبتها بنفسك أو للمصادر ذات الرخص المفتوحة، وتطلب الأداة تحديد مستوى رؤية المستودع كسؤال مستقل، حيث تقبل فقط public أو private، ليكون القرار متعمداً.
هل أحتاج إلى docling، أم أن pdftotext كافٍ؟
pdftotext من poppler-utils كافٍ للنصوص العادية وهو سريع جداً. ثبّت docling عندما تكمن قيمة الكتاب في جداوله وقوائم الكود، لأن مستخرج النصوص البسيط يتجاهل هذه العناصر تماماً. المقايضة هنا هي السرعة: يقيس المشروع أداء docling بحوالي 1.5 ثانية لكل صفحة، لذا فإن دليلاً مكوناً من 300 صفحة سيستغرق عدة دقائق من وقت المعالج على خادم VPS.
لماذا يفشل pip مع رسالة externally-managed-environment على خادم VPS الخاص بي؟
تُصنّف توزيعة Ubuntu 24.04 وإصدارات Debian الحالية نسخة Python الخاصة بالنظام على أنها مُدارة بواسطة apt، لذا يرفض pip التثبيت فيها ويطبع error: externally-managed-environment. أنشئ بيئة افتراضية باستخدام python3 -m venv ~/.venvs/book-to-skill، وقم بتفعيلها، ثم ثبّت المستخرجات هناك، وابدأ تشغيل الوكيل الخاص بك من نفس الصدفة (shell). تستدعي المهارة python3، لذا فهي تستخدم أي مفسر موجود في مسار PATH الخاص بك، والذي أصبح الآن هو المفسر الموجود داخل البيئة الافتراضية.
لماذا لا تظهر المهارة التي أنشأتها كأمر slash؟
هناك سببان. يأتي اسم الأمر من اسم المجلد، لذا يجب أن تكون المهارة موجودة في ~/.claude/skills/<name>/SKILL.md أو .claude/skills/<name>/SKILL.md، مع كتابة SKILL.md بهذا الشكل تماماً. إذا كان المسار صحيحاً، أعد تشغيل الوكيل. يلتقط Claude Code التعديلات داخل مجلدات المهارات التي يراقبها بالفعل، لكن مجلد المهارات الذي يتم إنشاؤه بعد بدء الجلسة لا يكون خاضعاً للمراقبة على الإطلاق.