لا تحتاج إلى أن تكون مبرمجًا لتكتب مهارة. في أبسط صورها يكفي مجلد وفيه ملف نصي واحد. لكن الفرق بين مهارة تعمل جيدًا ومهارة لا تُفعَّل أبدًا يكمن في الغالب في جملة واحدة: الوصف. في هذا المقال نكتب من الصفر مهارة صغيرة لكنها حقيقية.
الخطوة 1: أنشئ المجلد وملف SKILL.md
بحسب مواصفات Agent Skills، المهارة مجلد يحتوي على الأقل على ملف SKILL.md. وفي أول الملف مقدمة YAML (frontmatter)، وفيها حقلان إلزاميان:
- name: 64 حرفًا على الأكثر. أحرف صغيرة وأرقام وشرطات فقط. لا يجوز أن يبدأ بشرطة أو ينتهي بها، ولا أن يحتوي على شرطتين متتاليتين، ويجب أن يطابق اسم المجلد. كما تنص وثائق Claude على أنه لا يجوز استخدام الكلمتين "anthropic" و"claude" في الاسم.
- description: لا يجوز أن يكون فارغًا، وحده الأقصى 1,024 حرفًا. يجب أن يشرح ما تفعله المهارة ومتى تُستخدم.
وهناك حقول اختيارية أيضًا (license وcompatibility وmetadata وallowed-tools التجريبي)، لكن معظم المهارات لا تحتاج إليها.
الخطوة 2: اكتب الوصف بعناية
لماذا الوصف مهم إلى هذا الحد؟ لأن الوكيل لا يقرأ عند البدء من كل مهارة إلا اسمها ووصفها. وبتعبير agentskills.io يقع "العبء كله" في التفعيل على الوصف. وإذا لم يشرح الوصف متى ينفع العمل، فلن يمدّ الوكيل يده إلى تلك المهارة.
يمكن تلخيص توصيات المصادر هكذا:
- اكتب ما تفعله ومتى تُستخدم معًا.
- توصي وثائق Claude بكتابة الوصف بصيغة الغائب لأنه يُضاف إلى موجّه النظام ("تعالج ملفات Excel"، وليس "أستطيع مساعدتك").
- توصي agentskills.io بأن تُذكر صراحةً الحالات التي لا يسمّي فيها المستخدم المجال باسمه.
- اجعله قصيرًا: بضع جمل، وفقرة قصيرة على الأكثر. يقتطع Claude Code الوصف في القائمة عند 1,536 حرفًا، لذا ينبغي أن تكون أهم حالة استخدام في البداية.
الخطوة 3: اجعل المتن قصيرًا والسكربت ذكيًا
لنتخيل مثالًا مهارةً تتوافق مع قاعدة الكتابة في هذه المدونة: ألا يبقى في النص شرطة طويلة (em dash) ولا شرطة متوسطة (en dash). ليكن هيكل المجلد هكذا:
tire-denetimi/
├── SKILL.md
└── scripts/
└── tire_bul.py
وهذا هو ملف SKILL.md كله:
---
name: tire-denetimi
description: يجد استخدام الشرطة الطويلة (U+2014) والشرطة المتوسطة (U+2013) في مقالات المدونة ويقترح تصحيحها. يُستخدم عندما يجهّز المستخدم مقالًا بصيغة Markdown للنشر، أو عندما يقول "افحص الشرطات" أو "هل يتوافق مع قواعد الكتابة"، أو حتى دون ذكر الاسم إذا طلب فحصًا أخيرًا قبل النشر.
---
# فحص الشرطات
1. شغّل الأمر `python scripts/tire_bul.py <dosya.md>`.
2. لكل سطر في المخرجات، اقترح استبدال الشرطة بنقطة أو فاصلة أو نقطتين أو قوسين.
3. لا تغيّر المعنى. اسأل المستخدم عن الأسطر التي لست متأكدًا منها.
4. في النهاية أبلغ بعدد الأسطر التي صحّحتها في جملة واحدة.
تنظر وثائق Claude إلى نافذة السياق على أنها "مورد مشترك"، وتوصي بإضافة المعلومات التي لا يعرفها النموذج أصلًا فقط. يجب أن يبقى المتن أقل من 500 سطر. وينبغي نقل النصوص المرجعية الطويلة إلى ملفات منفصلة، مع الإحالة إليها من SKILL.md بمستوى واحد فقط.
وقاعدة السكربتات واضحة أيضًا: "حلّ المشكلة، ولا ترمِ الكرة". أي أن السكربت يجب أن يعالج حالات الخطأ بنفسه، لا أن يُكتب بمنطق "ليفشل، وسيجد Claude طريقة". وعند تشغيل السكربت لا تدخل السياقَ الشيفرةُ نفسها، بل مخرجاتها فقط. وهذا يجعل السكربت أوثق من التعليمات في الأعمال المتكررة التي لا تحتمل الخطأ.
الخطوة 4: اختبر، ثم اختبر مرة أخرى
يوصي دليل Claude لأفضل الممارسات بإعداد سيناريوهات تقييم قبل كتابة وثيقة طويلة، وتتضمن قائمة التحقق قبل النشر ثلاثة تقييمات على الأقل واختبارًا منفصلًا على نماذج Haiku وSonnet وOpus. والسبب بسيط: التعليمات التي تعمل بلا عيب على Opus قد تحتاج إلى تفاصيل أكثر مع Haiku.
ولاختبار التفعيل تقترح agentskills.io شيئًا ملموسًا: حضّر نحو 20 رسالة مستخدم نموذجية. ينبغي أن تفعّل المهارة من 8 إلى 10 منها، وألا تفعّلها من 8 إلى 10. وأثمن الأمثلة السلبية هي التي "تخطئ بفارق ضئيل"، أي الرسائل التي تتشارك الكلمات نفسها لكنها تطلب عملًا آخر. ولأن سلوك النموذج لا يكون هو نفسه في كل مرة، يُنصح بتشغيل كل رسالة عدة مرات (3 للبداية) ومراقبة نسبة التفعيل.
| وصف سيئ | وصف جيد |
|---|---|
| "يساعد في ملفات PDF." | يذكر ما يفعله ومتى يُستخدم |
| تفاصيل تقنية فقط | يصف نية المستخدم |
| يشمل كل شيء | يذكر أيضًا ما لا يفعله |
والتثبيت بسيط كذلك: في Claude Code يكفي أن تضع المجلد تحت ~/.claude/skills/ (شخصي) أو في مجلد .claude/skills/ بالمشروع. يراقب Claude Code هذه المجلدات ويلتقط التغييرات في الجلسة نفسها دون إعادة تشغيل. أما في claude.ai فيمكنك رفع المهارة من الإعدادات بصيغة zip.
أي عمل متكرر عندك كانت مهارتك الأولى ستؤتمته؟