تدريج الـ Skill: نموذج الدلاء الأربعة الذي يُبقي 80+ skill خارج السياق
الكشف التدريجي يعني أن 80 skill يمكن أن تكلّف 3,200 رمز metadata، أو صفرًا. إليك كيف نصنّف كل skill في مستودع Statnive ضمن دائم التشغيل أو قابل للاستدعاء التلقائي أو يدوي فقط أو fork — واختبار السؤال الواحد الذي نستخدمه لاتّخاذ القرار.
لماذا لا يجب أن يعني المزيد من الـ skills سياقًا أقلّ
يحمّل إعداد Claude Code لـ Statnive أكثر من 80 skill تغطّي إدارة المنتج، وبناء الـ backend، وQA، وتدقيق الأمن، وأنماط خاصّة بـ WordPress، وحزم الإصدار، والمزيد. الإطار الذي نبني عليه (jaan.to) يشحن 141. قراءة ساذجة: المزيد من الـ skills، حمل سياق أكثر، مساحة أقلّ للعمل الفعلي.
الحساب الفعلي أكثر إثارة. 80 skill يمكن أن تكلّف 3,200 رمز من metadata دائمة، أو صفرًا، حسب كيفية ضبط كل واحدة. الفرق هو نموذج التدريج رباعي الدلاء الذي يعرّفه نظام skill في Claude Code، واختبار سؤال واحد لاختيار الدلو الصحيح.
يمرّ هذا المقال عبر الدلاء الأربعة كلّها مع توزيع skills الفعلي لـ Statnive، والاختبار الذي نستخدمه لاتّخاذ القرار، والثلاثة أشياء التي أخطأنا فيها قبل أن نصيب.
الكشف التدريجي: الآلية الكامنة
قبل أن يصبح نموذج التدريج منطقيًا، يجب أن تكون آلية التحميل كذلك. يستخدم Claude Code ثلاث طبقات من الكشف التدريجي للـ skills:
| الطبقة | ما يُحمَّل | متى | الكلفة |
|---|---|---|---|
| 1 — Metadata | YAML frontmatter name + description | دائمًا عند بدء التشغيل | ~30-50 رمز لكل skill |
| 2 — Body | محتوى SKILL.md الكامل | عندما يُستدعى الـ skill | توصي Anthropic بـ ≤ 500 سطر / ~5K رمز |
| 3 — موارد مجمَّعة | نصوص ونماذج ومراجع مُشار إليها | فقط عند الوصول | صفر كلفة أساسية |
هذه هي الرافعة التي يستخدمها نموذج التدريج. طبقة metadata هي الشيء الوحيد الذي يكون دائمًا في السياق. كلّ شيء آخر عند الطلب.
لإطار بـ 141 skill، هذا يعني 4,200-14,100 رمز من الحمل الدائم للـ metadata وحدها، يتدرّج خطّيًا مع عدد skills. أكبر إذا كانت الأوصاف مطنبة. أصغر — أو صفر — إذا أخبرت بعض skills بتخطّي سجلّ metadata تمامًا.
يُبلَّغ عن خطأ موثَّق (قضية Claude Code GitHub #14882) أن بعض skills الـ plugin قد تستهلك جسمها الكامل عند بدء التشغيل بدلًا من مجرّد frontmatter. نراقب هذا في مخرج /context لدينا. إذا أظهر سطر metadata الـ skill أرقامًا أعلى بكثير من ~50 رمزًا × عدد skills القابلة للاستدعاء التلقائي لديك، فأنت تصطدم به.
الدلاء الأربعة
كل skill في مستودع Statnive يندرج ضمن واحد من أربعة دلاء. الحقل المعرِّف في frontmatter لكلّ منها:
الدلو 1 — دائم التشغيل (frontmatter افتراضي)
---
name: simplify
description: Review changed code for reuse, quality, efficiency. Auto-fixes issues.
---
هذه هي skills سير العمل الأساسية التي يجب أن يوجّه إليها النموذج تلقائيًا. frontmatter قياسي — لا أعلام خاصّة. يُحمَّل metadata عند بدء التشغيل؛ ويُحمَّل الجسم عند الاستدعاء.
أمثلة Statnive: simplify وstatnive-release وstatnive-release-zip. تُطلَق على معظم العمل المرتبط بالإصدار.
الكلفة لكل skill: ~40 رمز من metadata في السياق بشكل دائم.
الدلو 2 — قابل للاستدعاء التلقائي (frontmatter افتراضي، وصف موجز)
نفس الإعداد كـ«دائم التشغيل» من منظور Claude Code. التمييز تحريري: هذه skills مجال تُطلَق فقط عندما تتطابق كلماتها المحفّزة. الانضباط في إبقاء الوصف موجَّهًا للمحفّزات وقصيرًا.
---
name: wp-rest-api
description: Use when building REST endpoints in WordPress plugins.
---
وصف سيّء (لا يزال يعمل، يكلّف أكثر):
description: A comprehensive skill for working with the WordPress REST API,
including endpoint registration, controller patterns, schema validation,
authentication, response shaping, and CPT/taxonomy exposure...
وصف جيّد (أعلاه): 13 رمزًا. وصف سيّء: 38 رمزًا. عبر 60+ skill قابلة للاستدعاء التلقائي، الفرق هو نحو 1500 رمز من توفيرات metadata الدائمة.
أمثلة Statnive: wp-rest-api وwp-plugin-development وwp-performance وreact-best-practices وwp-block-development وكلّ skills التخطيط jaan-to:*.
الكلفة لكل skill: ~30-50 رمز من metadata في السياق بشكل دائم.
الدلو 3 — يدوي فقط (disable-model-invocation: true)
---
name: statnive-emergency-rollback
description: Emergency-only rollback procedure for a botched deploy.
disable-model-invocation: true
---
الـ skill موجود، slash command يعمل (/statnive-emergency-rollback)، لكن metadata لا يدخل أبدًا في سجلّ <available_skills>. لا يعرف Claude بوجوده ما لم يستدعه المستخدم صراحةً.
الكلفة لكل skill: 0 رمز. هذا هو الدلو السحري.
متى يُستخدم: مسارات عمل نادرة، عمليات مدمّرة، أي شيء لا تريد للنموذج أن يوجّه إليه تلقائيًا. إذا كان وضع علامة skill كيدوي فقط سيمنع مسار عمل من الاكتمال، فهو ينتمي إلى الدلوَين 1 أو 2 بدلًا من ذلك.
أمثلة Statnive: التراجع الطارئ، جراحة قاعدة بيانات يدوية، نصوص ترحيل لمرّة واحدة، أي شيء يوجد «تحسّبًا» لكنّه يجب ألّا يُطلَق انتهازيًا.
نضع علامة على نحو نصف skills لدينا بـ disable-model-invocation: true. عبر 80+ skill، هذا ~1800 رمز من metadata الأساسية مستردّة — وتحسّنت جودة التوجيه على skills القابلة للاستدعاء التلقائي المتبقّية فعلًا، لأن Claude لم يكن يختار بين متشابهات قريبة.
الدلو 4 — Fork / Subagent (context: fork)
---
name: simplify
description: Review changed code for reuse, quality, efficiency. Auto-fixes issues.
context: fork
---
يشتغل وضع fork الـ skill في سياق subagent معزول بسجلّ محادثته الخاصّ ونافذته الخاصّة 200K. يبقى مخرج العمل خارج نافذة السياق الرئيسية. يعود ملخّص فقط.
لمسارات العمل القائمة بذاتها مثل مراجعات الكود وتدقيقات الأمن والبحث متعدّد الخطوات، هذا تحويلي. توثّق Anthropic عودة subagents بـ ~500-1000 رمز من 10,000+ من العمل الداخلي — نحو انخفاض 37% في السياق الرئيسي على المهامّ المعقّدة حيث قام الـ subagent بقراءة ومعالجة جوهرية.
أمثلة Statnive: simplify (ثلاثة وكلاء مراجعة متوازين، يعيدون ملخّصًا)، jaan-to:backend-pr-review، jaan-to:sec-audit-remediate، jaan-to:detect-dev. أي شيء يقرأ ملفات كثيرة ويعيد حكمًا.
الكلفة لكل skill: ~40 رمز من metadata، لكن العمل ذاته يحدث في عزل.
اختبار السؤال الواحد
تبدو الدلاء الأربعة كأربعة قرارات. هي حقًا واحد: هل تحتاج المحادثة الرئيسية إلى رؤية العمل الوسيط للـ skill؟
| الإجابة | الدلو |
|---|---|
| نعم — يكتب الـ skill كودًا ستواصل الجلسة الرئيسية تحريره | دائم التشغيل أو قابل للاستدعاء التلقائي |
| لا — يعيد الـ skill حكمًا أو ملخّصًا أو تقريرًا | Fork / subagent |
| ربّما — لكنّه يجب ألّا يُطلَق تلقائيًا أبدًا (نادر، مدمّر، غريب) | يدوي فقط |
إذا «لا»، اضبط context: fork. سياقك الرئيسي يبقى نظيفًا وتستطيع استخدام Haiku 4.5 (1$/5$ لكل MTok) لعمل الـ subagent المكثّف للقراءة بينما تستخدم الجلسة الرئيسية Sonnet أو Opus. هذا ربح كلفة 3× فوق ربح السياق.
إذا «نعم»، يذهب إلى الدلوَين 1 أو 2. الاختيار بين دائم التشغيل والقابل للاستدعاء التلقائي تحريري: ما مدى ثقة Claude في تشغيل هذا من إشارات اللغة الطبيعية؟ المحفّزات القويّة وغير الغامضة تذهب إلى القابل للاستدعاء التلقائي. مسارات العمل التي يجب أن يأخذها النموذج بعين الاعتبار في معظم الجلسات تذهب إلى دائم التشغيل.
إذا كان الـ skill موجودًا لكنّه يجب ألّا يُطلَق تلقائيًا أبدًا، ضع علامة عليه «يدوي فقط» واسترِدّ كلفة metadata الخاصّة به.
التوزيع الفعلي لـ skills في Statnive
إليك تفصيلنا الحالي عبر ~85 skill:
| الدلو | العدد | إجمالي كلفة metadata | ملاحظات |
|---|---|---|---|
| دائم التشغيل | 8 | ~320 رمزًا | الإصدار، simplify، تخطيط sprint، مراجعة PR |
| قابل للاستدعاء التلقائي | 38 | ~1520 رمزًا | skills مجال بكلمات محفّزة قويّة |
| يدوي فقط | 32 | 0 رمز | slash-command-only |
| Fork / subagent | 7 | ~280 رمزًا | مراجعات، تدقيقات، اكتشافات |
| إجمالي كلفة metadata | 85 | ~2120 رمزًا | نحو 1% من السياق |
دون تدريج — لو كانت كل الـ 85 افتراضية — لكنّا ندفع نحو 3400 رمز من metadata دائمة. وحدها skills الـ 32 اليدوية تُوفّر ~1280 رمزًا. تبدو صغيرة بمعزل؛ تهمّ عند تكديسها مع قصّ CLAUDE.md وMCP Tool Search.
حدود الجسم: لماذا 500 سطر هو الرقم الصحيح
جانب metadata حمل دائم. جانب الجسم حمل لكل استدعاء — ومهمّ بنفس القدر للتحكّم.
توصي Anthropic بإبقاء كل SKILL.md تحت 500 سطر (~5K رمز). تدفع الأبحاث على التحسين القاطع هذا إلى سقف صارم بـ 600 سطر لكل جسم skill، مع أي شيء فوق ذلك يتطلّب استخراج المراجع: اسحب القوالب والقوائم الطويلة ومقارنات حُزَم متعدّدة وكتالوجات الأنماط المضادّة من SKILL.md إلى ملفات منفصلة مُشار إليها عبر مؤشّرات واضحة.
يبدو النمط هكذا:
.claude/skills/wp-plugin-development/
├── SKILL.md # 380 lines — execution core only
└── references/
├── activation-deactivation-patterns.md # Loaded only when needed
├── settings-api-patterns.md
├── nonce-and-capability-checklist.md
└── release-packaging-checklist.md
نواة التنفيذ تبقى مضغوطة وحتمية. تُحمَّل المراجع عند الطلب، مُكلّفةً صفرًا حتى يُوصَل إليها. أعدنا بناء ثلاثة من أثقل skills لدينا بهذه الطريقة وقطعنا ~12,000 رمز من ميزانيات الاستدعاء النموذجية.
الحقل الآخر للتحكّم بالجسم الذي يستحقّ الاستخدام:
allowed-tools: ["Read", "Grep", "Glob"]
يقيّد هذا أي أدوات يستطيع الـ skill الوصول إليها، مما يقلّل حمل الرموز ومساحة سطح التنفيذ. skill يقرأ كودًا فقط لا ينبغي أن يحصل على Write أو Bash أو وصول إلى أدوات MCP — تضييق مجموعة الأدوات يضيّق الـ schema المحقون عند إطلاق الـ skill، ويزيل فئات كاملة من السلوك العرضي.
ما أخطأناه في المرّات الثلاث الأولى
تحفّظات صادقة، نفس النمط الذي يتّبعه باقي السلسلة:
- بدأنا بأوصاف مطنبة. كان لدى موجتنا الأولى من skills أوصاف بـ 60+ رمز محسَّنة للقرّاء البشر. كانت تعمل، لكنّها كلّفت 2× ما كانت بحاجة إليه. قطعت الدورة الأولى ~1400 رمز من metadata عبر دلو القابل للاستدعاء التلقائي.
- كان لدينا ثلاثة skills تفعل أشياء متشابهة. كان دلو القابل للاستدعاء التلقائي يحتوي على
pm-roadmap-addوpm-roadmap-updateوpm-sprint-planبمحفّزات متداخلة. أصبح التوجيه يشبه رمي العملة. دمجنا ووضّحنا المحفّزات. ارتفعت دقّة التوجيه؛ انخفضت كلفة metadata. - كان لدينا skills ثقيلة لا تستخدم وضع fork. اشتغل
simplifyأصلاً inline. كان يقرأ 30+ ملفًا، يشغّل ثلاث تمريرات مراجعة، ويعيد تقريرًا 2000 رمز — كل ذلك العمل الداخلي يلوّث السياق الرئيسي. التحوّل إلىcontext: forkقطع استخدام السياق الرئيسي النموذجي بـ ~9000 رمز لكل جلسة إصدار.
خطوة القياس
نفس باقي السلسلة: /context هو التشخيص. السطر الذي تراقبه لتدريج skill هو الذي يُظهر عدد رموز metadata الـ skill. الأهداف التي نستخدمها:
| المصدر | الهدف | السقف الصارم |
|---|---|---|
| metadata الـ Skill | ≤ 2500 رمز | 5000 |
| عدد skills القابلة للاستدعاء التلقائي | ≤ 60 | — |
| أي جسم SKILL.md منفرد | ≤ 500 سطر / ~5K رمز | 600 سطر / ~8K رمز |
إذا كان سطر metadata الـ skill لديك أعلى بكثير من 5K رمز ولديك أقلّ من 100 skill، فلديك على الأرجح إمّا أوصاف مطنبة (مشكلة الدلو 2) أو خطأ التحميل الذي ذكرناه سابقًا (مشكلة الدلو 1).
كيف يتّصل هذا ببقيّة Statnive
نشغّل 248 اختبار وحدة PHP على كل commit. تجتاز الإصدارات 22 بوابة إصدار قبل أن يُشحن أي إصدار. الـ skills التي تنسّق كل ذلك — statnive-release وsimplify وwp-plugin-development ومولّدات QA — تتلاءم في نحو 2100 رمز من metadata دائمة. يحدث العمل، يبقى السياق نظيفًا، ويبقى الفريق صغيرًا.
نموذج الدلاء الأربعة ليس تمرينًا أكاديميًا. إنه السبب في قدرتنا على شحن plugin تحليلات WordPress تحت ميزانية tracker بـ 5KB دون فريق من خمسة أشخاص خلفه.
جرّب Statnive
تحليلات WordPress بمنطق الخصوصية أولاً، مبنية بفريق يشغّل /context أكثر من /help. ثبّت Statnive مجانًا من WordPress.org — بياناتك تبقى على خادمك، ومكتبة skills لدينا تبقى تحت ميزانية رموزها بسلاسة.