- يُضاف إلى موجّه النظام قسم موجز بعنوان Available skills: سطر واحد لكل
مهارة (
- name: description) وجملة واحدة تطلب من النموذج استدعاءload_skillقبل تنفيذ مهمة تغطيها مهارة. - تُسجَّل الأداة
load_skill(مدخلها{ name }) تلقائيًا. وهي تُعيد المحتوى الكامل للمهارة نتيجةً للأداة. - نصوص المهارات ليست في الموجّه إلى أن تُحمَّل. فالوكيل الذي له عشرون مهارة طويلة يدفع نحو سطر واحد لكل مهارة في كل طلب، ولا يدفع تكلفة النص الكامل إلا في التشغيلات التي تستخدمه.
المهارات في الشيفرة
defineSkill({ name, description, content }) تتحقق من مدخلاتها. يجب أن يطابق name
النمط ^[a-z0-9][a-z0-9-_]{0,63}$؛ ويجب ألا يكون description وcontent
فارغين. والأخطاء تبيّن موضع الخلل وطريقة إصلاحه.
واجهة المنفّذ الكاملة تقبل الخيار نفسه:
load_skill، فإن تمرير skills يرمي خطأ:
أعد تسمية أداتك أو احذف الخيار.
المهارات من القرص
loadSkills(dir) تقرأ ملفات المهارات، فيستطيع غير المطوّرين تعديلها دون
لمس الشيفرة. تُدعم بنيتان ويمكن الجمع بينهما في مجلد واحد:
descriptionمطلوب.nameاختياري وقيمته الافتراضية اسم المجلد (في بنيةSKILL.md) أو اسم الملف دون.md.- المجلدات التي ليس فيها
SKILL.mdتُتجاهل. - تُعاد المهارات مرتبة بالاسم، فتكون الموجّهات حتمية.
- الأخطاء تذكر الملف والمشكلة: وصف مفقود، أو YAML غير صالح، أو اسم غير صالح، أو مجلد تتعذر قراءته، أو مهارتان بالاسم نفسه (ويُسرد المساران كلاهما).
اختبار المهارات
استخدمmockModel للتحقق من أن النموذج يرى الأوصاف دون
النصوص الكاملة إلى أن يحمّل مهارة: موجّه النظام في الطلب الأول يسرد المهارات،
والطلب الذي يلي استدعاء load_skill يحتوي النص الكامل في نتيجة الأداة.