الوحدة 12 — Plugins وmarketplaces: تعبئة أدواتك ومشاركتها
بنت الوحدات السابقة على انفراد ما يصنع قيمة Claude Code في فريق: skills، وسب-agents، وhooks، وخوادم MCP. تعيش كلّ لبنة في ركنها. وتَجمع الوحدة الختاميّة كلّ ذلك: الـplugin حزمة واحدة تُوحّد الكلّ، وتحمل نسخة، وتُثبَّت بأمر واحد، وتُوزَّع عبر marketplace. هي الصيغة المفضّلة حالما يتخطّى الفريق شخصَين.
Plugin أم تهيئة قائمة بذاتها؟
ابقَ على .claude/ قائمًا بذاته حين يكون المحتوى خاصًّا بمستودع واحد. انتقل إلى plugin حين تكون اللبنة قابلة لإعادة الاستعمال بين المشاريع، أو تحتاج نسخًا مستقلّة، أو يجب تثبيتها لدى فرق أخرى، أو تجمع عدّة مكوّنات (skill + سب-agent + hooks + خادم MCP).
يُتيح الـplugin تعبئة كلّ شيء: skills، وسب-agents، وworkflows، وhooks، وخوادم MCP، وخوادم LSP، وmonitors، وثيمات، وأنماط خرج، وملفّات تنفيذيّة. يعرض ذلك تحت namespace (kiosque-tools:deploy) يمنع التصادم.
تشريح plugin
الـplugin مجلّد يحمل manifest وحيدًا على المسار .claude-plugin/plugin.json. تعيش بقيّة المكوّنات في جذر الـplugin، لا داخل .claude-plugin/. اختلاط شائع: وضع agents/ أو hooks/ داخل .claude-plugin/ — عندئذٍ لا يجدها Claude Code.
البنية المرجعيّة:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # manifest (اختياريّ إن كانت كلّ الأشياء في مواقعها الافتراضيّة)
├── skills/ # <nom>/SKILL.md لكلّ skill
│ └── deploy/SKILL.md
├── commands/ # skills بملفّات .md مسطّحة (متوافقة؛ فضِّل skills/)
├── agents/ # سب-agents (.md مع frontmatter)
│ └── revieweur.md
├── workflows/ # سير عمل ديناميكيّ
├── hooks/
│ └── hooks.json # hooks الـplugin
├── .mcp.json # خوادم MCP يُوفّرها الـplugin
├── .lsp.json # خوادم LSP
├── monitors/monitors.json # monitors في الخلفيّة
├── bin/ # ملفّات تنفيذيّة تُضاف إلى PATH حين يُفعَّل الـplugin
└── settings.json # إعدادات افتراضيّة (تُقرأ فقط المفاتيح `agent` و`subagentStatusLine`)
يمكن لـplugin لا يعرض سوى skill واحدة أن يضع SKILL.md مباشرةً في جذر الـplugin، بلا مجلّد skills/. لكلّ ما يكبر، استخدم skills/<nom>/SKILL.md.
الـmanifest plugin.json
name وحده إلزاميّ، والـmanifest نفسه اختياريّ: بدونه، يكتشف Claude Code المكوّنات في مواقعها الافتراضيّة ويشتقّ الاسم من المجلّد. manifest أدنى:
{
"name": "kiosque-tools",
"displayName": "Kiosque Tools",
"version": "1.0.0",
"description": "أدوات Kiosque الداخليّة: مراجعة، اختبارات، نشر.",
"author": { "name": "فريق Kiosque", "email": "dev@kiosque.example" }
}
مقتطف من الحقول الموثَّقة:
| الحقل | الدور |
|---|---|
name | معرّف kebab-case، يُستخدم namespace (kiosque-tools:deploy) |
displayName / description | تُعرَض في /plugin |
version | semver؛ يُثبِّت التثبيت |
author، homepage، repository، license، keywords | بيانات وصفيّة للاكتشاف |
defaultEnabled | false = يُثبَّت معطَّلًا (opt-in) |
skills، commands، agents، workflows، hooks، mcpServers، lspServers | مسارات مخصّصة إلى المكوّنات |
dependencies | plugins أخرى مطلوبة، بقيود semver |
userConfig، channels | تهيئة المستخدم، قنوات المراسلة |
experimental.themes، experimental.monitors | مكوّنات ذات مخطّط قابل للتطوّر |
الحقول غير المعروفة في الجذر تُتَجاهَل — مفيد للتعايش مع package.json من npm.
ثلاثة متغيّرات بيئة رئيسة
${CLAUDE_PLUGIN_ROOT}— المسار المطلق لمجلّد التثبيت. للسكربتات والملفّات التنفيذيّة المُعبَّأة.${CLAUDE_PLUGIN_DATA}— مجلّد دائم ينجو من التحديثات (~/.claude/plugins/data/{id}/). للتبعيّات المُثبَّتة عند أوّل استعمال.${CLAUDE_PROJECT_DIR}— جذر المشروع.
الثلاثة مُصدَّرة إلى عمليّات hooks وMCP وLSP، ومُستبدَلة في محتوى skills وagents، وأوامر الـhooks/monitors، وcommand/args/env لخادم MCP stdio، وurl/headers لـHTTP.
التطوير والاختبار وإعادة التحميل
أربعة أوامر تُنظِّم التطوير.
- الإطلاق الأوّل:
claude plugin init <nom>يُنشئ plugin في~/.claude/skills/<nom>/مع manifest وSKILL.md بدائيّ، يُحمَّل في الجلسة التالية. - الاختبار المحلّيّ:
claude --plugin-dir ./mon-pluginيُحمِّل الـplugin للجلسة. يقبل التراكم لعدّة plugins. إن تصادم الاسم مع plugin مُثبَّت، تسبق النسخة المحلّيّة. - إعادة التحميل:
/reload-pluginsيُطبِّق التغييرات (skills، وسب-agents، وhooks، وMCP، وLSP) دون إعادة تشغيل.--forceيقبل إبطال ذاكرة الـprompt. - الت حقّق:
claude plugin validate ./mon-plugin --strictفي CI.
في الجلسة، يفتح /plugin مدير الـplugins: تبويبات Installed وDiscover وErrors، ومفضّلات (زرّ f)، وترشيح بالاسم.
Marketplaces: العثور والتوزيع
نادرًا ما يُثبَّت plugin عبر --plugin-dir في الإنتاج؛ يأتي من marketplace، كتالوج plugins يُضاف مرّةً ثمّ تُثبَّت منه المُدخلات وفق الحاجة.
Marketplaces الرسميّة وإضافة المصادر
marketplaceان عامّان تديرهما Anthropic: claude-plugins-official (مسجَّل تلقائيًّا في أوّل جلسة تفاعليّة) و**claude-community** (تقديمات طرف ثالث بعد المراجعة، تُضاف بـ /plugin marketplace add anthropics/claude-plugins-community).
أربعة مصادر ممكنة للإضافة:
/plugin marketplace add owner/repo # GitHub
/plugin marketplace add https://gitlab.com/entreprise/plugins.git # Git (https:// + .git)
/plugin marketplace add ./ma-marketplace # مسار محلّيّ
/plugin marketplace add https://exemple.com/marketplace.json # JSON بعيد
اختصار: /plugin market. لاستهداف فرع: .../plugins.git#v1.0.0.
تثبيت plugin
/plugin install kiosque-tools@ma-marketplace
يُقتَرح ثلاثة نطاقات: User (كلّ مشاريعك)، وProject (مشترك، يُضاف إلى .claude/settings.json تحت الإدارة الإصداريّة)، وLocal (لك وحدك). منذ v2.1.221، يُفعِّل التثبيت أحيانًا الـplugin في الجلسة الحاليّة؛ وإلّا يوضّح الإشعار Run /reload-plugins to activate.
للتوزيع الداخليّ، استضِف الـmarketplace في مستودع خاصّ؛ يستخدم Claude Code اعتماداتك في Git للاستنساخ. يستطيع المديرون فرض marketplace عبر managed settings (extraKnownMarketplaces).