الـ plugins هي أعلى مستوى من آليات التوسعة في Claude Code. بتجمع skills و subagents و hooks و MCP servers وإعدادات LSP في حزمة واحدة قابلة للتثبيت. الفريق بيثبّت plugin واحد وكل حاجة بتتضبط فورًا — مفيش setup يدوي لكل مكوّن. الموديول ده بيغطي هيكل الـ plugin، صيغة الـ manifest، طرق التوزيع، وإزاي تبني واحد بنفسك.
هيكل الـ Plugin
الـ plugin هو مجلد بهيكل محدد. الملف الوحيد المطلوب هو .claude-plugin/plugin.json، الـ manifest اللي بيعرّف هوية الـ plugin. كل حاجة تانية اختيارية بس بتتبع conventions اللي Claude Code بيتعرّف عليها:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Required manifest
├── skills/ # SKILL.md files
│ └── my-skill/
│ └── SKILL.md
├── agents/ # Subagent definitions
│ └── specialist.md
├── commands/ # Legacy command files (also work)
│ └── my-command.md
├── hooks/
│ └── hooks.json # Plugin-scoped hooks
├── .mcp.json # MCP server configs
├── .lsp.json # LSP server configs
├── settings.json # Default settings
└── bin/
└── helper.sh
الـ manifest بيعرّف الـ plugin والـ metadata بتاعه:
{
"name": "pr-review",
"description": "Complete PR review workflow with security and test coverage checks",
"version": "1.0.0",
"author": {
"name": "Your Name"
},
"repository": "https://github.com/you/pr-review",
"license": "MIT"
}
أوامر الـ plugin والـ skills اللي بيوفّرها بتكون namespaced كـ plugin-name:command-name عشان ما يحصلش تعارض مع إعدادات المشروع. شغّلها بالاسم الكامل، زي /pr-review:check-security.
ميزات الـ Manifest
الـ manifest بيدعم عدة خصائص قوية لضبط سلوك الـ plugin. خاصية userConfig بتعلن عن خيارات قابلة للتخصيص من المستخدم. الحقول المعلّمة بـ sensitive: true بتتخزّن في الـ system keychain بدل الإعدادات النصية:
{
"name": "my-plugin",
"version": "1.0.0",
"userConfig": {
"apiKey": {
"description": "API key for the integration",
"sensitive": true
},
"region": {
"description": "Deployment region",
"default": "us-east-1"
}
}
}
الـ plugins بتاخد مجلد بيانات دائم عن طريق ${CLAUDE_PLUGIN_DATA} (من version 2.1.78). ده بيفضل موجود بين الجلسات، فمناسب للـ caches وملفات الحالة والـ databases. استخدم ${CLAUDE_PLUGIN_ROOT} عشان تشير لمسارات نسبية من مجلد تثبيت الـ plugin — ضروري للـ hooks وإعدادات الـ MCP:
{
"hooks": {
"PostToolUse": [
{
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/audit.js"
}
]
}
]
}
}
دعم LSP بيضيف تكامل language server protocol في الوقت الفعلي. حط ملف .lsp.json في root الـ plugin عشان تضبط language servers بتوفّر تشخيصات فورية، go-to-definition، وبحث عن symbols وأنت بتشتغل:
{
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"extensionToLanguage": {
".ts": "typescript",
".tsx": "typescriptreact"
}
}
}
التوزيع والتطوير
جرّب الـ plugin محليًا بـ flag الـ --plugin-dir قبل ما توزّعه. ده بيحمّل الـ plugin للجلسة دي بس — بدون تثبيت:
claude --plugin-dir ./my-plugin
# Test multiple plugins simultaneously:
claude --plugin-dir ./my-plugin --plugin-dir ./another-plugin
استخدم /reload-plugins عشان تعمل hot-reload لملفات الـ plugin خلال التطوير من غير ما تعيد تشغيل الجلسة. ده بيعيد قراءة كل الـ manifests والـ skills والـ agents والـ hooks وإعدادات الـ MCP فورًا.
توزيع الـ plugins بيتبع نموذج marketplace. الـ marketplace الرسمي من Anthropic هو claude-plugins-official. ضيف marketplaces تانية بـ /plugin marketplace add owner/repo-name. ثبّت plugins بـ /plugin install plugin-name أو claude plugin install plugin-name@marketplace:
# Install from official marketplace
/plugin install pr-review
# Install from GitHub
/plugin install github:username/my-plugin
# Install from local path (for testing)
/plugin install ./path/to/plugin
لبيئات المؤسسات، ملف managed-mcp.json بيتحكم في أي MCP servers الـ plugins تقدر تستخدمها. إعدادات deniedPlugins وenabledPlugins وextraKnownMarketplaces وstrictKnownMarketplaces في الـ managed policy بتتحكم في أي plugins و marketplaces مسموح بيها على مستوى المؤسسة. الـ subagents بتاعة الـ plugins عندها frontmatter محدود — ما يقدروش يعرّفوا hooks أو mcpServers أو permissionMode عشان يمنعوا privilege escalation.
أوامر دورة الحياة المفيدة تشمل claude plugin list وclaude plugin enable وclaude plugin disable وclaude plugin uninstall وclaude plugin validate. الـ marketplaces تقدر تجيب plugins من GitHub أو git URLs أو مسارات محلية أو npm أو مصادر تانية مدعومة.
نمط الـ inline plugin (source: 'settings' من version 2.1.80) بيخلّيك تعرّف plugin مباشرة في ملف إعدادات من غير ما تحتاج repo منفصل. ده مفيد للأدوات الداخلية الصغيرة اللي ما تستاهلش repo كامل:
{
"pluginMarketplaces": [
{
"name": "internal-tools",
"source": "settings",
"plugins": [
{
"name": "code-standards",
"source": "./local-plugins/code-standards"
}
]
}
]
}