Skip to content

प्लगइन संदर्भ मैनुअल (Plugin Reference Manual): प्लगइन क्या है और इसे कैसे लिखें

📚 सीरीज़ नेविगेशन: पिछला लेख 37 चेकपॉइंट्स / Checkpoints था, जिसने Claude Code के "ऑटो-सेव + रिवाइंड" मैकेनिज्म को समझाया। यह लेख कॉन्फ़िगरेशन सीरीज़ को एक अंतिम 'कंटेनर' — प्लगइन (Plugin) के साथ समेटेगा। लेख 24 में, हमने कवर किया था कि प्लगइन कैसे स्थापित करें और उपयोग करें, और यह लेख आपको सिखाएगा कि अपना खुद का प्लगइन कैसे बनाएं

जब आप कस्टम कमांड, Skill, Hook, MCP और Subagent (यानी, हमने लेख 20-36 में जो कुछ भी कवर किया है) से परिचित हो जाते हैं, तो आपको एक समस्या का सामना करना पड़ेगा: आप उन्हें दूसरों के साथ कैसे साझा करते हैं?

आपने एक शानदार "कोड रिव्यू Skill" लिखा है, एक "ऑटो-डिप्लॉय Hook" को कॉन्फ़िगर किया है, और "डेटाबेस को क्वेरी करने के लिए एक MCP" स्थापित किया है। ये आपके प्रोजेक्ट में .claude/ डायरेक्टरी में फैले हुए हैं। अब, आपका एक सहकर्मी कहता है, "यह बहुत अच्छा है, मुझे भी यह चाहिए।" आप क्या करेंगे? क्या आप उन्हें अपनी .claude/ डायरेक्टरी कॉपी करने के लिए कहेंगे? यदि वे केवल Review Skill और Hook चाहते हैं, लेकिन MCP नहीं, तो क्या होगा? यदि आप भविष्य में इन कॉन्फ़िगरेशन को अपडेट करते हैं, तो वे उन्हें कैसे सिंक (sync) करेंगे?

यही वह जगह है जहाँ प्लगइन (Plugin) काम आता है।

आधिकारिक दस्तावेज़ में प्लगइन की सबसे स्पष्ट परिभाषा:

प्लगइन Claude Code क्षमताओं — जैसे skills, commands, subagents, और hooks — को एक साझा करने योग्य (shareable), पुन: प्रयोज्य (reusable) पैकेज में बंडल करने का एक तरीका है।

दूसरे शब्दों में, प्लगइन कोई नई "क्षमता" नहीं है, यह एक "कंटेनर (container)" है। यह आपके द्वारा पहले से लिखे गए Skills, Hooks और Commands को एक साथ बंडल करता है, एक नाम और विवरण (description) जोड़ता है, और उन्हें एक पैकेज में बदल देता है जिसे अन्य लोग एक क्लिक के साथ स्थापित, अनइंस्टॉल और अपडेट कर सकते हैं।

इस लेख को पढ़ने के बाद, आपको मिलेगा:

  • प्लगइन की फ़ोल्डर संरचना (folder structure) का एक स्पष्ट दृश्य (मुख्य रूप से plugin.json + skills/ + commands/ + hooks/ आदि)
  • plugin.json फ़ाइल का विस्तृत विवरण (यह क्या है, इसमें क्या जाता है, और नेमस्पेस (namespaces) कैसे काम करते हैं)
  • अपने प्लगइन को स्थानीय (locally) रूप से कैसे टेस्ट करें और इसे गिटहब (GitHub) या एनपीएम (npm) पर कैसे प्रकाशित (publish) करें
  • एक साधारण प्लगइन बनाने और स्थापित करने का एक हैंड्स-ऑन (hands-on) अभ्यास

01 प्लगइन की संरचना: बस एक डायरेक्टरी और एक JSON फ़ाइल

एक प्लगइन बनाने के लिए आपको किसी जटिल टूल की आवश्यकता नहीं है; यह सिर्फ एक नियमित डायरेक्टरी है जिसमें विशिष्ट संरचना (specific structure) होती है।

आधिकारिक तौर पर, एक प्लगइन में निम्नलिखित फ़ाइलें और डायरेक्टरीज़ हो सकती हैं:

text
my-plugin/
├── plugin.json       # (आवश्यक) प्लगइन का मेटाडेटा (Metadata)
├── README.md         # (अनुशंसित) उपयोगकर्ता दस्तावेज़
├── skills/           # (वैकल्पिक) Skill फ़ोल्डर (SKILL.md के साथ)
├── commands/         # (वैकल्पिक) कस्टम स्लैश कमांड (.md फ़ाइलें)
├── hooks/            # (वैकल्पिक) हुक स्क्रिप्ट (उदा., pre-commit.sh)
├── agents/           # (वैकल्पिक) सब-एजेंट परिभाषाएँ (.md फ़ाइलें)
└── mcp.json          # (वैकल्पिक) MCP सर्वर कॉन्फ़िगरेशन

क्या यह संरचना परिचित लगती है? हाँ, यह लगभग वैसा ही है जैसा आपकी .claude/ डायरेक्टरी प्रोजेक्ट में दिखती है

अंतर केवल इतना है:

  1. यह आपके प्रोजेक्ट में नहीं है, बल्कि एक अलग डायरेक्टरी में है जिसे आप साझा करने का इरादा रखते हैं।
  2. इसमें plugin.json नामक एक नई फ़ाइल है, जो इस प्लगइन का 'पहचान पत्र (ID card)' है।

आप इस डायरेक्टरी में जो भी Skills या Commands डालते हैं, वे बिल्कुल वैसे ही लिखे जाते हैं जैसे आप उन्हें अपने प्रोजेक्ट के लिए लिखते हैं। कोई नया सिंटैक्स (syntax) सीखने की आवश्यकता नहीं है।

💡 सारांश: प्लगइन बनाना आपकी .claude/ डायरेक्टरी की सामग्री (contents) को एक नए फ़ोल्डर में ले जाने और एक plugin.json फ़ाइल जोड़ने जितना आसान है।


02 plugin.json को समझना: प्लगइन का पहचान पत्र

plugin.json वह फ़ाइल है जो एक सामान्य डायरेक्टरी को प्लगइन बनाती है। इसके बिना, Claude Code इसे प्लगइन के रूप में नहीं पहचानेगा।

यहाँ एक मानक (standard) plugin.json का उदाहरण दिया गया है:

json
{
  "name": "my-cool-plugin",
  "version": "1.0.0",
  "description": "यह प्लगइन मेरे कुछ कूल वर्कफ़्लो को बंडल करता है।",
  "author": "आपका नाम",
  "dependencies": {
    "some-other-plugin": "^1.2.0"
  },
  "configSchema": {
    "api_key": {
      "type": "string",
      "description": "सेवा के लिए API कुंजी",
      "required": true
    },
    "enable_feature_x": {
      "type": "boolean",
      "default": false
    }
  }
}

आइए मुख्य फ़ील्ड्स को समझें:

  • name (आवश्यक): प्लगइन का नाम। यह अद्वितीय (unique) होना चाहिए, क्योंकि यह प्लगइन का नेमस्पेस (namespace) बन जाएगा (लेख 36 में चर्चा की गई थी)। यदि आपके प्लगइन का नाम my-plugin है और इसमें review नामक एक Skill है, तो उपयोगकर्ता इसे /my-plugin:review टाइप करके कॉल करेंगे।
  • version (आवश्यक): संस्करण संख्या (Version number), आमतौर पर SemVer (जैसे 1.0.0) का पालन करती है। जब आप प्लगइन अपडेट करते हैं, तो इसे बढ़ाना याद रखें।
  • description: प्लगइन क्या करता है, इसका संक्षिप्त विवरण।
  • dependencies (वैकल्पिक): यदि आपका प्लगइन किसी अन्य प्लगइन पर निर्भर करता है, तो आप इसे यहाँ सूचीबद्ध कर सकते हैं। Claude Code इंस्टॉल करते समय उन्हें भी हैंडल करेगा।
  • configSchema (वैकल्पिक): यह बहुत शक्तिशाली है। यदि आपके प्लगइन (या उसके Skills/MCPs) को उपयोगकर्ता से कुछ इनपुट (जैसे API कुंजी) की आवश्यकता है, तो आप इसे यहाँ परिभाषित कर सकते हैं। जब उपयोगकर्ता आपका प्लगइन स्थापित करता है, तो Claude Code स्वचालित रूप से उन्हें इन कॉन्फ़िगरेशन (configurations) को भरने के लिए संकेत (prompt) देगा।

कॉन्फ़िगरेशन (Config) का उपयोग कैसे करें?

यदि आपने configSchema में एक api_key परिभाषित किया है, तो आप अपने Skills, Commands, या Hooks में उस कॉन्फ़िगरेशन मान तक कैसे पहुँचते हैं?

आधिकारिक दस्तावेज़ कहता है:

प्लगइन कॉन्फ़िगरेशन मान रनटाइम पर पर्यावरण चर (environment variables) के रूप में उपलब्ध कराए जाते हैं, जो प्लगइन नाम और कॉन्फ़िगरेशन कुंजी से पहले होते हैं।

प्रारूप (Format) यह है: PLUGIN_<PLUGIN_NAME>_<CONFIG_KEY> (सभी अपरकेस)।

उदाहरण के लिए, यदि आपके प्लगइन का नाम my-plugin है और कॉन्फ़िगरेशन कुंजी api_key है, तो पर्यावरण चर (environment variable) होगा:

bash
PLUGIN_MY_PLUGIN_API_KEY

आप अपने शेल हुक (shell hooks) में इस वेरिएबल को $PLUGIN_MY_PLUGIN_API_KEY के रूप में पढ़ सकते हैं, या इसे अपने SKILL.md में (यदि टेम्प्लेटिंग समर्थित है) के रूप में उपयोग कर सकते हैं।

💡 सारांश: plugin.json प्लगइन का मेटाडेटा (metadata) है, जो इसका नाम (नेमस्पेस), संस्करण, और उपयोगकर्ता कॉन्फ़िगरेशन (configSchema) को परिभाषित करता है; कॉन्फ़िगरेशन मान पर्यावरण चर (environment variables) के माध्यम से प्लगइन की स्क्रिप्ट को पास किए जाते हैं।


03 प्लगइन का परीक्षण और प्रकाशन (Publishing)

एक बार जब आप अपना प्लगइन फ़ोल्डर बना लेते हैं, तो आप इसे कैसे स्थापित और परीक्षण करते हैं?

1. स्थानीय परीक्षण (Local Testing)

अपने प्लगइन को गिटहब (GitHub) या एनपीएम (npm) पर धकेलने से पहले, आपको इसे स्थानीय रूप से (locally) टेस्ट करना चाहिए। लेख 24 में, हमने सीखा था कि claude plugin install का उपयोग कैसे करें। स्थानीय परीक्षण के लिए, आप बस प्लगइन फ़ोल्डर का पथ (path) पास करते हैं:

bash
claude plugin install /path/to/your/my-plugin

Claude Code उस डायरेक्टरी से प्लगइन को पढ़ेगा और स्थापित करेगा। यदि आपने configSchema परिभाषित किया है, तो यह आपसे मान (values) भी मांगेगा। स्थापना के बाद, आप यह देखने के लिए / टाइप कर सकते हैं कि क्या आपके प्लगइन के कमांड दिखाई देते हैं (उदा., /my-plugin:my-command)।

यदि आप अपने स्थानीय प्लगइन फ़ोल्डर में कोई बदलाव करते हैं, तो वे तुरंत प्रभावी (immediately effective) हो सकते हैं (फ़ाइलें कैसे लिंक की जाती हैं, इस पर निर्भर करता है), या आपको उन्हें रीफ्रेश करने के लिए प्लगइन को पुनः स्थापित (reinstall) / अपडेट करने की आवश्यकता हो सकती है।

2. GitHub के माध्यम से प्रकाशित (Publish) करना

प्लगइन साझा करने का सबसे आसान तरीका इसे GitHub रिपॉजिटरी में धकेलना (pushing) है।

  1. अपने प्लगइन फ़ोल्डर के लिए एक नया GitHub रिपॉजिटरी (उदा., my-claude-plugin) बनाएं।
  2. फ़ाइलों (plugin.json, skills/, आदि) को रूट (root) में कमिट (commit) और पुश (push) करें।
  3. अपने दोस्तों (या किसी और) को यह कमांड दें:
bash
claude plugin install https://github.com/your-username/my-claude-plugin

Claude Code रिपॉजिटरी को क्लोन (clone) करेगा और प्लगइन स्थापित करेगा। यह सबसे आम तरीका है, खासकर आंतरिक टीम टूल (internal team tools) के लिए।

3. npm के माध्यम से प्रकाशित (Publish) करना (वैकल्पिक)

चूँकि Claude Code एक npm पैकेज है, प्लगइन्स को npm के माध्यम से भी वितरित (distributed) किया जा सकता है।

  1. अपने प्लगइन फ़ोल्डर में एक package.json जोड़ें (हाँ, plugin.json के अतिरिक्त)।
  2. इसे प्रकाशित (publish) करने के लिए npm publish का उपयोग करें।
  3. उपयोगकर्ता इसे इस प्रकार स्थापित कर सकते हैं:
bash
claude plugin install npm:your-package-name

यह सार्वजनिक (public), व्यापक रूप से उपयोग किए जाने वाले प्लगइन्स के लिए अधिक उपयुक्त है। अधिकांश कस्टम वर्कफ़्लो के लिए, GitHub मार्ग बहुत आसान है।


04 अभ्यास: 5 मिनट में अपना खुद का "हैलो वर्ल्ड" प्लगइन बनाना

आइए एक बहुत ही सरल प्लगइन बनाएं और इसे स्थानीय रूप से (locally) स्थापित करें।

चरण 1: प्लगइन फ़ोल्डर बनाएं

कहीं भी (उदा., आपके डेस्कटॉप पर या किसी टूल डायरेक्टरी में) एक नया फ़ोल्डर बनाएं:

bash
mkdir -p ~/hello-plugin/commands
cd ~/hello-plugin

चरण 2: plugin.json बनाएं

~/hello-plugin/plugin.json बनाएं:

json
{
  "name": "hello-world",
  "version": "1.0.0",
  "description": "मेरा पहला कस्टम प्लगइन",
  "author": "Me"
}

चरण 3: एक कमांड जोड़ें

~/hello-plugin/commands/say-hi.md बनाएं:

markdown
---
description: एक दोस्ताना अभिवादन (friendly greeting)
---

उपयोगकर्ता से हिंदी में बहुत दोस्ताना और उत्साही तरीके से नमस्ते कहें।

चरण 4: प्लगइन स्थापित (Install) करें

कोई भी अन्य प्रोजेक्ट फ़ोल्डर खोलें (जहाँ आप सामान्य रूप से Claude Code का उपयोग करते हैं), और प्लगइन को स्थानीय पथ (local path) से स्थापित करें:

bash
claude plugin install ~/hello-plugin

आपको एक सफलता संदेश देखना चाहिए।

चरण 5: इसका परीक्षण (Test) करें

उसी प्रोजेक्ट फ़ोल्डर में, Claude Code प्रारंभ करें:

bash
claude

इनपुट बॉक्स में, / टाइप करें। आपको मेनू में अपना प्लगइन कमांड देखना चाहिए: /hello-world:say-hi (ध्यान दें कि प्लगइन नाम hello-world कैसे एक नेमस्पेस बन गया)।

इसे चुनें या टाइप करें और एंटर दबाएं। Claude आपको हिंदी में एक बहुत ही उत्साही अभिवादन (greeting) देना चाहिए!


05 सारांश

प्लगइन्स कोई जादुई नई क्षमता नहीं हैं; वे केवल एक वितरण तंत्र (distribution mechanism) हैं। वे आपके द्वारा पहले ही सीखे गए कस्टम कॉन्फ़िगरेशन (Skills, Commands, Hooks, आदि) को लेते हैं और उन्हें दूसरों के साथ साझा करना आसान बनाते हैं।

मुख्य टेकअवे (Key Takeaways):

  • प्लगइन संरचना: एक डायरेक्टरी जिसमें plugin.json और परिचित .claude/ फ़ोल्डर संरचना (जैसे skills/, commands/) शामिल है।
  • plugin.json: आवश्यक मेटाडेटा फ़ाइल; name वह नेमस्पेस (namespace) बन जाता है जो कमांड टकराव (collisions) को रोकता है।
  • साझा करना: आप स्थानीय पथों (local paths), GitHub URL, या npm से प्लगइन्स स्थापित कर सकते हैं।
  • कॉन्फ़िगरेशन: आप configSchema का उपयोग करके उपयोगकर्ताओं से इनपुट मांग सकते हैं, जिसे बाद में पर्यावरण चर (environment variables) के माध्यम से एक्सेस किया जाता है।

एक बार जब आप प्लगइन्स बनाने में सहज हो जाते हैं, तो आप अपनी टीम के सर्वोत्तम अभ्यासों (best practices) को बंडल करना शुरू कर सकते हैं — कोडिंग मानक (standards), परिनियोजन स्क्रिप्ट (deployment scripts), समीक्षा प्रॉम्प्ट (review prompts) — एक ही "कंपनी प्लगइन" में, जिसे हर नया कर्मचारी काम के पहले दिन स्थापित कर सकता है। यह वह जगह है जहाँ Claude Code वास्तव में एक व्यक्तिगत उपकरण (personal tool) से टीम-स्तरीय (team-level) एजेंट प्लेटफ़ॉर्म (agent platform) में बदल जाता है।


अगला लेख 39 "प्रैक्टिस (Practice): स्क्रैच से शुरू करना" है — यह इस सीरीज़ का अंतिम लेख है। अब तक, आपने Claude Code की हर सुविधा, कमांड, और कॉन्फ़िगरेशन को अलग-अलग सीखा है। अंतिम लेख में, हम इन सभी को एक वास्तविक दुनिया (real-world), एंड-टू-एंड (end-to-end) उदाहरण में एक साथ लाएंगे: हम एक खाली फ़ोल्डर से शुरू करेंगे, एक प्रोजेक्ट को इनिशियलाइज़ (initialize) करेंगे, सब-एजेंट्स (subagents) का उपयोग करेंगे, चेकपॉइंट्स (checkpoints) के साथ डिबग करेंगे, और अंत में इसे गिट (git) में कमिट (commit) करेंगे। यह सब कुछ एक साथ जोड़ने का समय है!


अनुशंसित पठन