رفتن به محتوا

ساختِ پلاگین

پلاگین‌ها به تو امکان می‌دهند Claude Code را با قابلیت‌های سفارشی گسترش بدهی که می‌توان آن‌ها را بین پروژه‌ها و تیم‌ها به اشتراک گذاشت. این راهنما ساختنِ پلاگین‌های خودت را با skills، agentها، hooks و سرورهای MCP پوشش می‌دهد.

دنبالِ نصبِ پلاگین‌های موجود هستی؟ به کشف و نصب پلاگین‌ها سر بزن. برای مشخصاتِ فنیِ کامل، به مرجع پلاگین‌ها نگاه کن.

کِی از پلاگین استفاده کنیم و کِی از پیکربندیِ مستقل

Section titled “کِی از پلاگین استفاده کنیم و کِی از پیکربندیِ مستقل”

Claude Code دو راه برای افزودنِ skill، agent و hook سفارشی پشتیبانی می‌کند:

رویکردنامِ skillهامناسبِ
مستقل (دایرکتوریِ .claude/)/helloورک‌فلوهای شخصی، سفارشی‌سازی‌های مخصوصِ یک پروژه، آزمایش‌های سریع
پلاگین‌ها (دایرکتوری‌های خودبسنده با skills، agentها، hooks یا یک manifestِ .claude-plugin/plugin.json)/plugin-name:helloاشتراک با هم‌تیمی‌ها، توزیع در جامعه، نسخه‌های منتشرشده، استفاده‌ی مجدد بین پروژه‌ها

وقتی از پیکربندیِ مستقل استفاده کن که:

  • داری Claude Code را برای یک پروژه‌ی واحد سفارشی می‌کنی
  • پیکربندی شخصی است و نیازی به اشتراک‌گذاری ندارد
  • پیش از بسته‌بندیِ skillها یا hooks، داری با آن‌ها آزمایش می‌کنی
  • نام‌های کوتاهِ skill مثل /hello یا /deploy می‌خواهی

وقتی از پلاگین استفاده کن که:

  • می‌خواهی قابلیتی را با تیم یا جامعه‌ات به اشتراک بگذاری
  • به همان skillها/agentها در چندین پروژه نیاز داری
  • کنترلِ نسخه و به‌روزرسانیِ آسان برای افزونه‌هایت می‌خواهی
  • داری از طریقِ یک marketplace توزیع می‌کنی
  • با skillهای namespace‌دار مثل /my-plugin:hello مشکلی نداری (namespacing از تداخلِ بینِ پلاگین‌ها جلوگیری می‌کند)

این شروعِ سریع تو را در ساختنِ یک پلاگین با یک skillِ سفارشی همراهی می‌کند. یک manifest (فایلِ پیکربندی‌ای که پلاگینت را تعریف می‌کند) می‌سازی، یک skill اضافه می‌کنی، و آن را به‌صورتِ محلی با پرچمِ --plugin-dir آزمایش می‌کنی.

دایرکتوریِ پلاگین را بساز

هر پلاگین در دایرکتوریِ خودش زندگی می‌کند که شاملِ skillها، agentها یا hooksِ توست، و به‌صورتِ اختیاری در کنارِ یک manifestِ .claude-plugin/plugin.json. همین حالا یکی بساز:

Terminal window
mkdir my-first-plugin

manifestِ پلاگین را بساز

فایلِ manifest در .claude-plugin/plugin.json هویتِ پلاگینت را تعریف می‌کند: نام، توضیح و نسخه‌اش. Claude Code از این متادیتا برای نمایشِ پلاگینت در مدیریتِ پلاگین استفاده می‌کند.

دایرکتوریِ .claude-plugin را داخلِ پوشه‌ی پلاگینت بساز:

Terminal window
mkdir my-first-plugin/.claude-plugin

سپس my-first-plugin/.claude-plugin/plugin.json را با این محتوا بساز:

{
"name": "my-first-plugin",
"description": "A greeting plugin to learn the basics",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}
فیلدکاربرد
nameشناسه‌ی یکتا و namespaceِ skill. skillها با این پیشوند می‌آیند (مثلاً /my-first-plugin:hello).
descriptionهنگامِ مرور یا نصبِ پلاگین‌ها در مدیریتِ پلاگین نمایش داده می‌شود.
versionاختیاری. اگر تنظیم شود، کاربران فقط وقتی به‌روزرسانی می‌گیرند که این فیلد را بالا ببری. اگر حذف شود و پلاگینت از طریقِ git توزیع شود، از commit SHA استفاده می‌شود و هر commit یک نسخه‌ی جدید به‌حساب می‌آید. به مدیریتِ نسخه نگاه کن.
authorاختیاری. برای انتساب مفید است.

برای فیلدهای بیشتری مثل homepage، repository و license، به اسکیمای کاملِ manifest نگاه کن.

یک skill اضافه کن

skillها در دایرکتوریِ skills/ زندگی می‌کنند. هر skill پوشه‌ای است که یک فایلِ SKILL.md دارد. نامِ پوشه نامِ skill می‌شود، با پیشوندِ namespaceِ پلاگین (hello/ در پلاگینی به نامِ my-first-plugin این skill را می‌سازد: /my-first-plugin:hello).

یک دایرکتوریِ skill در پوشه‌ی پلاگینت بساز:

Terminal window
mkdir -p my-first-plugin/skills/hello

سپس my-first-plugin/skills/hello/SKILL.md را با این محتوا بساز:

---
description: Greet the user with a friendly message
disable-model-invocation: true
---
Greet the user warmly and ask how you can help them today.

پلاگینت را آزمایش کن

Claude Code را با پرچمِ --plugin-dir اجرا کن تا پلاگینت را بارگذاری کند:

Terminal window
claude --plugin-dir ./my-first-plugin

وقتی Claude Code بالا آمد، skillِ جدیدت را امتحان کن:

Terminal window
/my-first-plugin:hello

خواهی دید که Claude با یک سلام پاسخ می‌دهد. /help را اجرا کن تا skillت را زیرِ namespaceِ پلاگین فهرست‌شده ببینی.

آرگومان‌های skill را اضافه کن

با پذیرفتنِ ورودیِ کاربر، skillت را پویا کن. جای‌نمای $ARGUMENTS هر متنی را که کاربر بعد از نامِ skill می‌دهد ثبت می‌کند.

فایلِ SKILL.md را به‌روز کن:

---
description: Greet the user with a personalized message
---
# Hello Skill
Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.

/reload-plugins را اجرا کن تا تغییرات اعمال شوند، سپس skill را با نامِ خودت امتحان کن:

Terminal window
/my-first-plugin:hello Alex

Claude تو را با نامت سلام می‌کند. برای اطلاعاتِ بیشتر درباره‌ی پاس‌دادنِ آرگومان به skillها، به Skills نگاه کن.

با موفقیت یک پلاگین با این اجزای کلیدی ساختی و آزمایش کردی:

  • manifestِ پلاگین (.claude-plugin/plugin.json): متادیتای پلاگینت را توصیف می‌کند
  • دایرکتوریِ skillها (skills/): skillهای سفارشیِ تو را در خود دارد
  • آرگومان‌های skill ($ARGUMENTS): ورودیِ کاربر را برای رفتارِ پویا ثبت می‌کند

توسعه‌ی پلاگین در دایرکتوریِ skillها

Section titled “توسعه‌ی پلاگین در دایرکتوریِ skillها”

به‌جای پاس‌دادنِ --plugin-dir در هر بار اجرا، می‌توانی یک پلاگین را در دایرکتوریِ skillهایت نگه داری و کاری کنی که Claude Code خودکار بارگذاری‌اش کند. claude plugin init یکی را scaffold می‌کند:

Terminal window
claude plugin init my-tool

این کار ~/.claude/skills/my-tool/ را با یک manifestِ .claude-plugin/plugin.json و یک SKILL.mdِ آغازین می‌سازد. در نشستِ بعدی به‌صورتِ my-tool@skills-dir بارگذاری می‌شود، بدونِ هیچ marketplace یا مرحله‌ی نصب.

برای قواعدِ بارگذاریِ خودکار، دامنه‌ی شخصی در برابرِ پروژه‌ای، الزامِ workspace-trust و نحوه‌ی به‌روزرسانی یا حذفِ یکی، به پلاگین‌های دایرکتوریِ skill نگاه کن.

مرورِ کلیِ ساختارِ پلاگین

Section titled “مرورِ کلیِ ساختارِ پلاگین”

یک پلاگین با یک skill ساختی، ولی پلاگین‌ها می‌توانند خیلی بیشتر داشته باشند: agentهای سفارشی، hooks، سرورهای MCP، سرورهای LSP و monitorهای پس‌زمینه.

دایرکتوریمحلکاربرد
.claude-plugin/ریشه‌ی پلاگینmanifestِ plugin.json را در خود دارد (اختیاری اگر اجزا از محل‌های پیش‌فرض استفاده کنند)
skills/ریشه‌ی پلاگینskillها به‌صورتِ دایرکتوری‌های <name>/SKILL.md
commands/ریشه‌ی پلاگینskillها به‌صورتِ فایل‌های Markdownِ تخت. برای پلاگین‌های جدید از skills/ استفاده کن
agents/ریشه‌ی پلاگینتعریف‌های agentِ سفارشی
hooks/ریشه‌ی پلاگینمدیریت‌کننده‌های رویداد در hooks.json
.mcp.jsonریشه‌ی پلاگینپیکربندی‌های سرورِ MCP
.lsp.jsonریشه‌ی پلاگینپیکربندی‌های سرورِ LSP برای هوشمندیِ کد
monitors/ریشه‌ی پلاگینپیکربندی‌های monitorِ پس‌زمینه در monitors.json
bin/ریشه‌ی پلاگینفایل‌های اجرایی که تا وقتی پلاگین فعال است به PATHِ ابزارِ Bash اضافه می‌شوند
settings.jsonریشه‌ی پلاگینتنظیماتِ پیش‌فرض که هنگامِ فعال‌بودنِ پلاگین اعمال می‌شوند

پلاگینی که دقیقاً یک skill عرضه می‌کند می‌تواند SKILL.md را به‌جای ساختنِ دایرکتوریِ skills/ مستقیماً در ریشه‌ی پلاگین قرار دهد. Claude Code آن را به‌صورتِ یک skillِ واحد بارگذاری می‌کند و از فیلدِ name در frontmatter به‌عنوانِ نامِ فراخوانی استفاده می‌کند. برای پلاگین‌هایی که ممکن است به بیش از یک skill رشد کنند، از چیدمانِ skills/ استفاده کن.

توسعه‌ی پلاگین‌های پیچیده‌تر

Section titled “توسعه‌ی پلاگین‌های پیچیده‌تر”

وقتی با پلاگین‌های پایه راحت شدی، می‌توانی افزونه‌های پیچیده‌تری بسازی.

پلاگین‌ها می‌توانند Agent Skills را در خود داشته باشند تا قابلیت‌های Claude را گسترش دهند. skillها model-invoked هستند: Claude بر اساسِ کانتکستِ کار خودکار از آن‌ها استفاده می‌کند.

یک دایرکتوریِ skills/ در ریشه‌ی پلاگینت اضافه کن که پوشه‌های Skill حاویِ فایل‌های SKILL.md دارند:

my-plugin/
├── .claude-plugin/
│ └── plugin.json
└── skills/
└── code-review/
└── SKILL.md

هر SKILL.md شاملِ frontmatterِ YAML و دستورالعمل‌هاست. یک description بگذار تا Claude بداند کِی از skill استفاده کند:

---
description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.
---
When reviewing code, check for:
1. Code organization and structure
2. Error handling
3. Security concerns
4. Test coverage

پس از نصبِ پلاگین، /reload-plugins را اجرا کن تا Skillها بارگذاری شوند. برای راهنماییِ کاملِ نگارشِ Skill شاملِ افشای تدریجی و محدودیت‌های ابزار، به Agent Skills نگاه کن.

افزودنِ سرورهای LSP به پلاگینت

Section titled “افزودنِ سرورهای LSP به پلاگینت”

پلاگین‌های LSP (پروتکلِ سرورِ زبان) به Claude هوشمندیِ کدِ هم‌زمان (real-time) می‌دهند. اگر به پشتیبانی از زبانی نیاز داری که پلاگینِ رسمیِ LSP ندارد، می‌توانی با افزودنِ یک فایلِ .lsp.json به پلاگینت، خودت یکی بسازی:

{
"go": {
"command": "gopls",
"args": ["serve"],
"extensionToLanguage": {
".go": "go"
}
}
}

کاربرانی که پلاگینت را نصب می‌کنند باید باینریِ سرورِ زبان را روی دستگاهشان نصب داشته باشند.

برای گزینه‌های کاملِ پیکربندیِ LSP، به سرورهای LSP نگاه کن.

افزودنِ monitorهای پس‌زمینه به پلاگینت

Section titled “افزودنِ monitorهای پس‌زمینه به پلاگینت”

monitorهای پس‌زمینه به پلاگینت امکان می‌دهند لاگ‌ها، فایل‌ها یا وضعیتِ بیرونی را در پس‌زمینه رصد کند و به محضِ رسیدنِ رویدادها به Claude اطلاع دهد. Claude Code وقتی پلاگین فعال است هر monitor را خودکار راه می‌اندازد، پس لازم نیست به Claude بگویی رصد را شروع کند.

یک فایلِ monitors/monitors.json در ریشه‌ی پلاگین با آرایه‌ای از ورودی‌های monitor اضافه کن:

[
{
"name": "error-log",
"command": "tail -F ./logs/error.log",
"description": "Application error log"
}
]

هر خطِ stdout از command در طولِ نشست به‌صورتِ یک اعلان به Claude تحویل داده می‌شود. برای اسکیمای کامل، شاملِ تریگرِ when و جای‌گذاریِ متغیر، به Monitors نگاه کن.

عرضه‌ی تنظیماتِ پیش‌فرض با پلاگینت

Section titled “عرضه‌ی تنظیماتِ پیش‌فرض با پلاگینت”

پلاگین‌ها می‌توانند یک فایلِ settings.json در ریشه‌ی پلاگین داشته باشند تا هنگامِ فعال‌بودنِ پلاگین، پیکربندیِ پیش‌فرض اعمال شود. در حالِ حاضر فقط کلیدهای agent و subagentStatusLine پشتیبانی می‌شوند.

تنظیمِ agent یکی از agentهای سفارشیِ پلاگین را به‌عنوانِ thread اصلی فعال می‌کند و پرامپتِ سیستمی، محدودیت‌های ابزار و مدلِ آن را اعمال می‌کند. این کار به یک پلاگین اجازه می‌دهد رفتارِ پیش‌فرضِ Claude Code را هنگامِ فعال‌شدن تغییر دهد.

{
"agent": "security-reviewer"
}

این مثال agentِ security-reviewer تعریف‌شده در دایرکتوریِ agents/ِ پلاگین را فعال می‌کند. تنظیماتِ settings.json بر settingsِ اعلام‌شده در plugin.json اولویت دارند. کلیدهای ناشناخته بی‌سروصدا نادیده گرفته می‌شوند.

سازمان‌دهیِ پلاگین‌های پیچیده

Section titled “سازمان‌دهیِ پلاگین‌های پیچیده”

برای پلاگین‌هایی با اجزای زیاد، ساختارِ دایرکتوریت را بر اساسِ کارکرد سازمان‌دهی کن. برای چیدمان‌های کاملِ دایرکتوری و الگوهای سازمان‌دهی، به ساختارِ دایرکتوریِ پلاگین نگاه کن.

پلاگین‌هایت را به‌صورتِ محلی آزمایش کن

Section titled “پلاگین‌هایت را به‌صورتِ محلی آزمایش کن”

از پرچمِ --plugin-dir برای آزمایشِ پلاگین‌ها در حینِ توسعه استفاده کن. این کار پلاگینت را بدونِ نیاز به نصب مستقیماً بارگذاری می‌کند.

Terminal window
claude --plugin-dir ./my-plugin

این پرچم آرشیوِ .zipِ دایرکتوریِ پلاگین را هم می‌پذیرد، که به Claude Code نسخه‌ی v2.1.128 یا جدیدتر نیاز دارد.

Terminal window
claude --plugin-dir ./my-plugin.zip

وقتی یک پلاگینِ --plugin-dir نامی یکسان با یک پلاگینِ نصب‌شده‌ی marketplace دارد، نسخه‌ی محلی برای آن نشست اولویت می‌گیرد. این به تو امکان می‌دهد تغییراتِ پلاگینی را که از قبل نصب کرده‌ای آزمایش کنی، بدونِ اینکه اول حذفش کنی. استثنا پلاگین‌هایی هستند که تنظیماتِ مدیریت‌شده آن‌ها را اجباراً فعال یا اجباراً غیرفعال می‌کنند: --plugin-dir نمی‌تواند آن‌ها را override کند.

همان‌طور که تغییراتی در پلاگینت می‌دهی، /reload-plugins را اجرا کن تا به‌روزرسانی‌ها بدونِ راه‌اندازیِ مجدد اعمال شوند. این کار پلاگین‌ها، skillها، agentها، hooks، سرورهای MCPِ پلاگین و سرورهای LSPِ پلاگین را دوباره بارگذاری می‌کند. اجزای پلاگینت را آزمایش کن:

  • skillهایت را با /plugin-name:skill-name امتحان کن
  • بررسی کن که agentها در /agents ظاهر شوند
  • مطمئن شو hooks همان‌طور که انتظار می‌رود کار می‌کنند

برای آزمایشِ پلاگینی که از قبل به‌صورتِ آرشیوِ .zip بسته‌بندی و روی یک URL میزبانی شده — مثلِ یک artifactِ buildِ CI — به‌جای آن از --plugin-url استفاده کن. Claude Code آرشیو را هنگامِ راه‌اندازی واکشی می‌کند و فقط برای همان نشست بارگذاری‌اش می‌کند. اگر واکشی شکست بخورد یا آرشیو نامعتبر باشد، Claude Code یک خطای بارگذاریِ پلاگین گزارش می‌دهد و بدونِ آن بالا می‌آید. همان ملاحظاتِ اعتماد که برای هر منبعِ پلاگین صدق می‌کند اینجا هم برقرار است: این پرچم را فقط به آرشیوهایی نشانه برو که خودت کنترل می‌کنی یا به آن‌ها اعتماد داری.

برای بارگذاریِ چند پلاگین، پرچم را برای هر URL تکرار کن:

Terminal window
claude --plugin-url https://example.com/my-plugin.zip --plugin-url https://example.com/other.zip

یا URLهای جداشده با فاصله را به‌صورتِ یک آرگومانِ نقل‌قول‌شده پاس بده:

Terminal window
claude --plugin-url "https://example.com/my-plugin.zip https://example.com/other.zip"

عیب‌یابیِ مشکلاتِ پلاگین

Section titled “عیب‌یابیِ مشکلاتِ پلاگین”

اگر پلاگینت آن‌طور که انتظار می‌رود کار نمی‌کند:

  1. ساختار را بررسی کن: مطمئن شو دایرکتوری‌هایت در ریشه‌ی پلاگین هستند، نه داخلِ .claude-plugin/
  2. اجزا را جداگانه آزمایش کن: هر skill، agent و hook را جدا بررسی کن
  3. از ابزارهای اعتبارسنجی و دیباگ استفاده کن: برای دستورهای CLI و تکنیک‌های عیب‌یابی به ابزارهای دیباگ و توسعه نگاه کن

پلاگین‌هایت را به اشتراک بگذار

Section titled “پلاگین‌هایت را به اشتراک بگذار”

وقتی پلاگینت آماده‌ی اشتراک شد:

  1. مستندات اضافه کن: یک README.md با دستورالعملِ نصب و استفاده بگذار
  2. یک راهبردِ نسخه‌بندی انتخاب کن: تصمیم بگیر که یک versionِ صریح تنظیم کنی یا به git commit SHA تکیه کنی. به مدیریتِ نسخه نگاه کن
  3. یک marketplace بساز یا استفاده کن: برای نصب از طریقِ marketplaceهای پلاگین توزیع کن
  4. با دیگران آزمایش کن: قبل از توزیعِ گسترده‌تر، از اعضای تیم بخواه پلاگین را آزمایش کنند

وقتی پلاگینت در یک marketplace قرار گرفت، دیگران می‌توانند با استفاده از دستورالعملِ کشف و نصب پلاگین‌ها نصبش کنند. برای نگه‌داشتنِ پلاگین به‌صورتِ داخلی در تیمت، marketplace را در یک مخزن خصوصی میزبانی کن.

پلاگینت را به marketplaceِ جامعه ارسال کن

Section titled “پلاگینت را به marketplaceِ جامعه ارسال کن”

Anthropic دو marketplaceِ عمومی برای پلاگین‌های Claude Code نگه‌داری می‌کند:

  • claude-plugins-official: مجموعه‌ای گزیده از پلاگین‌ها که توسطِ Anthropic نگه‌داری می‌شود. اولین باری که Claude Code را به‌صورتِ تعاملی راه می‌اندازی خودکار ثبت می‌شود. یک اسکریپتِ غیرتعاملی که پیش از آن اولین اجرا اجرا می‌شود باید آن را صریحاً با claude plugin marketplace add anthropics/claude-plugins-official اضافه کند.
  • claude-community: marketplaceِ عمومیِ جامعه که ارسال‌های شخصِ ثالث پس از بررسی به آن می‌رسند. کاربران آن را با /plugin marketplace add anthropics/claude-plugins-community اضافه می‌کنند و از آن به‌صورتِ @claude-community نصب می‌کنند.

برای ارسالِ پلاگینت جهتِ بررسیِ marketplaceِ جامعه، از یکی از فرم‌های درونِ‌برنامه استفاده کن:

فرمِ claude.ai به یک سازمانِ Team یا Enterprise و دسترسیِ مدیریتِ directory نیاز دارد؛ Ownerهای سازمان به‌صورتِ پیش‌فرض این دسترسی را دارند. نویسندگانِ مستقلی که بخشی از سازمانِ Team یا Enterprise نیستند می‌توانند به‌جای آن از فرمِ Console استفاده کنند.

پیش از ارسال، claude plugin validate را به‌صورتِ محلی اجرا کن. خطِ لوله‌ی بررسی همان بررسی را روی هر ارسال اجرا می‌کند، به‌همراهِ غربالگریِ ایمنیِ خودکار.

پلاگین‌های تأییدشده در کاتالوگِ anthropics/claude-plugins-community به یک commit SHAِ مشخص pin می‌شوند، و CI با push‌کردنِ commitهای جدید به مخزنت، این pin را خودکار بالا می‌برد. کاتالوگِ عمومی هر شب از خطِ لوله‌ی بررسی همگام می‌شود، پس ممکن است بینِ تأیید و ظاهرشدنِ پلاگینت در marketplace.json تأخیری باشد. برای بررسیِ اینکه پلاگینت هنوز قابلِ‌نصب است یا نه، نامش را در کاتالوگِ جامعه جست‌وجو کن.

marketplaceِ رسمی، claude-plugins-official، جداگانه گزینش می‌شود. Anthropic به صلاحدیدِ خودش تصمیم می‌گیرد کدام پلاگین‌ها را بگنجاند. فرایندِ درخواستی وجود ندارد، و فرمِ ارسال پلاگین‌ها را به marketplaceِ رسمی اضافه نمی‌کند.

اگر Anthropic پلاگینت را در marketplaceِ رسمی فهرست کند، CLIِ تو می‌تواند کاربرانِ Claude Code را به نصبش ترغیب کند. به پلاگینت را از CLIِ خودت پیشنهاد بده نگاه کن.

تبدیلِ پیکربندی‌های موجود به پلاگین

Section titled “تبدیلِ پیکربندی‌های موجود به پلاگین”

اگر از قبل skill یا hook در دایرکتوریِ .claude/ داری، می‌توانی آن‌ها را برای اشتراک و توزیعِ آسان‌تر به یک پلاگین تبدیل کنی.

ساختارِ پلاگین را بساز

یک دایرکتوریِ پلاگینِ جدید بساز:

Terminal window
mkdir -p my-plugin/.claude-plugin

فایلِ manifest را در my-plugin/.claude-plugin/plugin.json بساز:

{
"name": "my-plugin",
"description": "Migrated from standalone configuration",
"version": "1.0.0"
}

فایل‌های موجودت را کپی کن

پیکربندی‌های موجودت را به دایرکتوریِ پلاگین کپی کن:

Terminal window
# Copy commands
cp -r .claude/commands my-plugin/
# Copy agents (if any)
cp -r .claude/agents my-plugin/
# Copy skills (if any)
cp -r .claude/skills my-plugin/

hooks را مهاجرت بده

اگر در تنظیماتت hook داری، یک دایرکتوریِ hooks بساز:

Terminal window
mkdir my-plugin/hooks

my-plugin/hooks/hooks.json را با پیکربندیِ hooksت بساز. شیءِ hooks را از .claude/settings.json یا settings.local.jsonِ خودت کپی کن، چون فرمت یکسان است. این command ورودیِ hook را به‌صورتِ JSON روی stdin می‌گیرد، پس از jq برای استخراجِ مسیرِ فایل استفاده کن:

{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]
}
]
}
}

پلاگینِ مهاجرت‌داده‌شده‌ات را آزمایش کن

پلاگینت را بارگذاری کن تا مطمئن شوی همه‌چیز کار می‌کند:

Terminal window
claude --plugin-dir ./my-plugin

هر جزء را آزمایش کن: commandهایت را اجرا کن، بررسی کن agentها در /agents ظاهر شوند، و مطمئن شو hooks درست تریگر می‌شوند.

هنگامِ مهاجرت چه چیزی تغییر می‌کند

Section titled “هنگامِ مهاجرت چه چیزی تغییر می‌کند”
مستقل (.claude/)پلاگین
فقط در یک پروژه در دسترس استمی‌توان از طریقِ marketplaceها به اشتراک گذاشت
فایل‌ها در .claude/commands/فایل‌ها در plugin-name/commands/
hooks در settings.jsonhooks در hooks/hooks.json
باید برای اشتراک دستی کپی کنیبا /plugin install نصب می‌شود

حالا که سیستمِ پلاگینِ Claude Code را می‌فهمی، اینجا مسیرهای پیشنهادی برای اهدافِ مختلف آمده است:

برای توسعه‌دهندگانِ پلاگین

Section titled “برای توسعه‌دهندگانِ پلاگین”
  • ساخت و توزیعِ یک marketplace: پلاگین‌هایت را بسته‌بندی و به اشتراک بگذار
  • مرجع پلاگین‌ها: مشخصاتِ فنیِ کامل
  • در اجزای خاصِ پلاگین عمیق‌تر شو:
    • Skills: جزئیاتِ توسعه‌ی skill
    • Subagents: پیکربندی و قابلیت‌های agent
    • Hooks: مدیریتِ رویداد و خودکارسازی
    • MCP: یکپارچه‌سازیِ ابزارِ بیرونی