Get started
CLI
CLI
CLI पैकेज: clawhub, bin: clawhub.
इसे npm या pnpm से वैश्विक रूप से इंस्टॉल करें:
npm i -g clawhub# orpnpm add -g clawhubफिर इसे सत्यापित करें:
clawhub --helpclawhub loginclawhub whoamiवैश्विक फ़्लैग
--workdir <dir>: कार्यशील डायरेक्टरी (डिफ़ॉल्ट: cwd; कॉन्फ़िगर होने पर Clawdbot कार्यक्षेत्र पर वापस जाता है)--dir <dir>: workdir के अंतर्गत इंस्टॉल डायरेक्टरी (डिफ़ॉल्ट:skills)--site <url>: ब्राउज़र लॉगिन के लिए आधार URL (डिफ़ॉल्ट:https://clawhub.ai)--registry <url>: API आधार URL (डिफ़ॉल्ट: खोजा गया, अन्यथाhttps://clawhub.ai)--no-input: प्रॉम्प्ट अक्षम करें
Env समकक्ष:
CLAWHUB_SITE(विरासतCLAWDHUB_SITE)CLAWHUB_REGISTRY(विरासतCLAWDHUB_REGISTRY)CLAWHUB_WORKDIR(विरासतCLAWDHUB_WORKDIR)
HTTP प्रॉक्सी
CLI कॉर्पोरेट प्रॉक्सी या प्रतिबंधित नेटवर्क के पीछे मौजूद सिस्टम के लिए मानक HTTP प्रॉक्सी एनवायरनमेंट वेरिएबल्स का सम्मान करता है:
HTTPS_PROXY/https_proxyHTTP_PROXY/http_proxyNO_PROXY/no_proxy
जब इनमें से कोई भी वेरिएबल सेट होता है, CLI आउटबाउंड अनुरोधों को निर्दिष्ट
प्रॉक्सी के माध्यम से रूट करता है। HTTPS_PROXY का उपयोग HTTPS अनुरोधों के
लिए, और HTTP_PROXY का उपयोग सामान्य HTTP के लिए किया जाता है। विशिष्ट होस्ट
या डोमेन के लिए प्रॉक्सी को बायपास करने हेतु NO_PROXY / no_proxy का
सम्मान किया जाता है।
यह उन सिस्टमों पर आवश्यक है जहां सीधे आउटबाउंड कनेक्शन अवरुद्ध होते हैं (जैसे Docker कंटेनर, केवल-प्रॉक्सी इंटरनेट वाला Hetzner VPS, कॉर्पोरेट फ़ायरवॉल)।
उदाहरण:
export HTTPS_PROXY=http://proxy.example.com:3128export NO_PROXY=localhost,127.0.0.1clawhub search "my query"जब कोई प्रॉक्सी वेरिएबल सेट नहीं होता, व्यवहार अपरिवर्तित रहता है (सीधे कनेक्शन)।
कॉन्फ़िग फ़ाइल
आपका API टोकन + कैश की गई registry URL संग्रहीत करती है।
- macOS:
~/Library/Application Support/clawhub/config.json - Linux/XDG:
$XDG_CONFIG_HOME/clawhub/config.jsonया~/.config/clawhub/config.json - Windows:
%APPDATA%\\clawhub\\config.json - विरासत फ़ॉलबैक: यदि
clawhub/config.jsonअभी मौजूद नहीं है लेकिनclawdhub/config.jsonमौजूद है, तो CLI विरासत पथ का पुनः उपयोग करता है - ओवरराइड:
CLAWHUB_CONFIG_PATH(विरासतCLAWDHUB_CONFIG_PATH)
कमांड
login / auth login
- डिफ़ॉल्ट: ब्राउज़र को
<site>/cli/authपर खोलता है और loopback callback के माध्यम से पूरा करता है। - Headless:
clawhub login --token clh_... - Remote/headless interactive:
clawhub login --deviceएक कोड प्रिंट करता है और तब तक प्रतीक्षा करता है जब तक आप उसे<site>/cli/deviceपर अधिकृत करते हैं।
whoami
- संग्रहीत टोकन को
/api/v1/whoamiके माध्यम से सत्यापित करता है।
token
- संग्रहीत API टोकन को stdout पर प्रिंट करता है।
- स्थानीय लॉगिन टोकन को CI secret setup कमांड में पाइप करने के लिए उपयोगी है।
star <skill> / unstar <skill>
- आपके highlights में Skill जोड़ता/हटाता है।
POST /api/v1/stars/<slug>औरDELETE /api/v1/stars/<slug>कॉल करता है।--yesपुष्टि छोड़ देता है।
search <query...>
/api/v1/search?q=...कॉल करता है।- आउटपुट में Skill slug, owner handle, display name, और relevance score शामिल होते हैं।
- Search download popularity से पहले exact slug/name token matches को प्राथमिकता देता है।
mapजैसा standalone slug tokenamapके अंदर substring की तुलना मेंpersonal-mapसे अधिक मज़बूती से मेल खाता है। - Popularity एक छोटा ranking prior है, शीर्ष स्थान की गारंटी नहीं।
- यदि कोई Skill दिखना चाहिए लेकिन नहीं दिखता, तो metadata का नाम बदलने से पहले owner-visible moderation diagnostics जांचने के लिए logged in रहते हुए
clawhub inspect @owner/slugचलाएं।
explore
/api/v1/skills?limit=...&sort=createdAtके माध्यम से नवीनतम Skills सूचीबद्ध करता है (createdAtdesc के अनुसार sorted)।- फ़्लैग:
--limit <n>(1-200, डिफ़ॉल्ट: 25)--sort newest|updated|rating|downloads|trending(डिफ़ॉल्ट: newest)। Legacy install sort aliases compatibility के लिए अभी भी काम करते हैं।--json(मशीन-पठनीय आउटपुट)
- आउटपुट:
<slug> v<version> <age> <summary>(summary 50 chars तक truncated)।
inspect @owner/slug
- इंस्टॉल किए बिना Skill metadata और version files fetch करता है।
--version <version>: किसी विशिष्ट version का निरीक्षण करें (डिफ़ॉल्ट: latest)।--tag <tag>: tagged version का निरीक्षण करें (जैसेlatest)।--versions: version history सूचीबद्ध करें (पहला page)।--limit <n>: सूचीबद्ध करने के लिए अधिकतम versions (1-200)।--files: चयनित version के लिए files सूचीबद्ध करें।--file <path>: raw file content fetch करें (केवल text files; 200KB limit)।--json: मशीन-पठनीय आउटपुट।
install @owner/slug
- नामित owner और Skill के लिए latest version resolve करता है।
/api/v1/downloadके माध्यम से zip डाउनलोड करता है।<workdir>/<dir>/<slug>में extract करता है।- pinned Skills को overwrite करने से मना करता है; पहले
clawhub unpin <skill>चलाएं। - लिखता है:
<workdir>/.clawhub/lock.json(विरासत.clawdhub)<skill>/.clawhub/origin.json(विरासत.clawdhub)
uninstall <skill>
<workdir>/<dir>/<slug>हटाता है और lockfile entry डिलीट करता है।- logged in होने पर best-effort telemetry भेजता है ताकि current install counts निष्क्रिय किए जा सकें।
- Interactive: पुष्टि मांगता है।
- Non-interactive (
--no-input):--yesआवश्यक है।
list
<workdir>/.clawhub/lock.jsonपढ़ता है (विरासत.clawdhub)।clawhub pinसे frozen Skills के बगल मेंpinnedदिखाता है, optional reason सहित।
pin <skill>
- इंस्टॉल किए गए Skill को lockfile में pinned के रूप में चिह्नित करता है।
--reason <text>दर्ज करता है कि Skill frozen क्यों है।- Pinned Skills को
update --allद्वारा छोड़ा जाता है और directupdate <skill>द्वारा reject किया जाता है। - Pinned Skills
install --forceको भी reject करते हैं ताकि local bytes गलती से replace न हो सकें।
unpin <skill>
- इंस्टॉल किए गए Skill से lockfile pin हटाता है ताकि भविष्य के updates उसे modify कर सकें।
update [@owner/slug] / update --all
- local files से fingerprint compute करता है।
- यदि fingerprint किसी known version से match करता है: कोई prompt नहीं।
- यदि fingerprint match नहीं करता:
- डिफ़ॉल्ट रूप से मना करता है
--forceसे overwrite करता है (या interactive होने पर prompt)
- Pinned Skills कभी भी
--forceद्वारा updated नहीं होते। update <skill>pinned Skills के लिए fast fail करता है और आपको पहलेclawhub unpin <skill>चलाने को कहता है।update --allpinned slugs को छोड़ता है और क्या frozen रहा इसका summary print करता है।
skill publish <path>
- local bundle fingerprint की ClawHub से तुलना करता है और content पहले से published होने पर successfully exit करता है।
- नए Skills डिफ़ॉल्ट रूप से
1.0.0होते हैं; बदले हुए Skills डिफ़ॉल्ट रूप से next patch version पर जाते हैं। --version <version>स्पष्ट रूप से version चुनता है और content किसी existing version से match करने पर भी publish करता है।--dry-runupload किए बिना publish resolve करता है;--jsonमशीन-पठनीय result print करता है।--owner <handle>org/user publisher handle के अंतर्गत publish करता है जब actor के पास publisher access हो।--migrate-ownerexisting Skill को--ownerपर move करता है और साथ में नया version publish करता है। दोनों publishers पर admin/owner access आवश्यक है।- Owner और review behavior
docs/publishing.mdमें समझाया गया है। - Skill publish करने का अर्थ है कि वह ClawHub पर
MIT-0के अंतर्गत release होता है। - Published Skills attribution के बिना use, modify, और redistribute करने के लिए free हैं।
- ClawHub paid Skills या per-Skill pricing support नहीं करता।
- Legacy alias:
publish <path>।
clawhub skill publish ./my-skill --dry-runclawhub skill publish ./my-skillclawhub skill publish ./my-skill --version 2.0.0GitHub Actions
ClawHub का reusable
skill-publish.yml
workflow एक skill_path के लिए, या root (डिफ़ॉल्ट: skills) के अंतर्गत हर immediate Skill
folder के लिए skill publish कॉल करता है। यह unchanged Skills को छोड़ता है और वही
automatic patch-version behavior उपयोग करता है।
Token के बिना preview करने के लिए dry_run: true सेट करें। वास्तविक publishes के लिए
clawhub_token secret आवश्यक है।
sync
- current workdir, configured Skills directory, और किसी भी
--root <dir>folders को local Skill folders के लिए scan करता है जिनमेंSKILL.mdयाskill.mdहो। - हर local Skill fingerprint की ClawHub से तुलना करता है और केवल नए या बदले हुए Skills publish करता है।
- नए Skills
1.0.0के रूप में publish होते हैं; बदले हुए Skills डिफ़ॉल्ट रूप से next patch version publish करते हैं। update batches के लिए जिन्हें बड़ा semver step लेना चाहिए,--bump minor|majorका उपयोग करें। --dry-runupload किए बिना publish plan दिखाता है;--jsonमशीन-पठनीय plan print करता है।--allहर नए या बदले हुए Skill को prompt किए बिना publish करता है। बिना--allके, interactive terminals आपको publish करने के लिए Skills चुनने देते हैं।--owner <handle>org/user publisher handle के अंतर्गत publish करता है जब actor के पास publisher access हो।syncकेवल one-way publish है। यह install, update, download, या install/download telemetry report नहीं करता।
clawhub sync --all --dry-runclawhub sync --allclawhub sync --root ./skills --owner openclaw --bump minorscan --slug <slug>
clawhub loginआवश्यक है।POST /api/v1/skills/-/scanके माध्यम से ClawHub ClawScan चलाता है, फिर scan terminal होने तक poll करता है।- Scans asynchronous होते हैं और पूरा होने में समय लग सकता है। queued रहते समय, terminal spinner current prioritized scan position और कितने scans आगे हैं दिखाता है।
- Published scans के लिए ownership या publisher management access आवश्यक है। Moderators/admins वही backend
clawhub-adminके माध्यम से उपयोग कर सकते हैं। --updateकेवल--slugके साथ valid है; यह successful published scan results को selected version पर वापस लिखता है।--output <file.zip>full report archive डाउनलोड करता है जिसमेंmanifest.json,clawscan.json,skillspector.json,static-analysis.json,virustotal.json, औरREADME.mdशामिल हैं।--jsonautomation के लिए full poll response print करता है।- Local path scans अब support नहीं किए जाते। नया version upload करें, फिर उस submitted version के stored scan results retrieve करने के लिए
scan downloadउपयोग करें।
clawhub scan --slug gifgrepclawhub scan --slug gifgrep --version 1.2.3clawhub scan --slug gifgrep --update --output report.zipscan download <name>
clawhub loginआवश्यक है।- submitted Skill या Plugin version के लिए stored scan report ZIP डाउनलोड करता है, उन versions सहित जिन्हें ClawHub security checks ने block या hide किया था।
- Skill downloads Skill slug का उपयोग करते हैं और डिफ़ॉल्ट रूप से
--kind skillहोते हैं। - Plugin downloads package name का उपयोग करते हैं और
--kind pluginआवश्यक करते हैं। --versionआवश्यक है ताकि authors वही exact submitted version inspect कर सकें जिसे ClawHub ने block किया।--output <file.zip>destination path चुनता है।
clawhub scan download gifgrep --version 1.2.3clawhub scan download @scope/demo --version 2.0.0 --kind plugin --output report.zipGitHub Actions
ClawHub Skill repos और catalog repos के लिए
/.github/workflows/skill-publish.yml
पर एक official reusable workflow भेजता है।
Typical catalog setup:
name: Skill Publish on: pull_request: workflow_dispatch: jobs: dry-run: if: github.event_name == 'pull_request' uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1 with: owner: nvidia dry_run: true publish: if: github.event_name == 'workflow_dispatch' uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1 with: owner: nvidia dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}नोट्स:
- catalog repos के लिए
rootडिफ़ॉल्ट रूप सेskillsहोता है। - एक Skill folder process करने के लिए
skill_path: skills/review-helperpass करें। ownerCLI--ownerflag से map होता है; authenticated user के रूप में publish करने के लिए इसे छोड़ दें।- V1 Skill publishing
clawhub_tokenउपयोग करता है; GitHub OIDC trusted publishing अभी package-only है।
delete <skill>
--versionके बिना, किसी skill को soft-delete करें (owner, moderator, या admin)।DELETE /api/v1/skills/{slug}को कॉल करता है।- owner द्वारा शुरू किए गए soft deletes slug को 30 दिनों के लिए आरक्षित रखते हैं; command expiry time प्रिंट करता है।
--version <version>किसी owned non-latest version को fail-closed, version-specific route के जरिए स्थायी रूप से delete करता है। Deleted versions restore या republish नहीं किए जा सकते। मौजूदा latest version delete करने से पहले replacement publish करें। Platform staff इस version-only flow के लिए ownership bypass नहीं करते।--reason <text>whole-skill soft-delete और audit log पर moderation note रिकॉर्ड करता है।--note <text>--reasonका alias है।--yesconfirmation छोड़ देता है।
undelete <skill>
- hidden skill restore करें (owner, moderator, या admin)।
- कोई version undelete नहीं है; स्थायी रूप से deleted versions restore नहीं किए जा सकते।
POST /api/v1/skills/{slug}/undeleteको कॉल करता है।--reason <text>skill और audit log पर moderation note रिकॉर्ड करता है।--note <text>--reasonका alias है।--yesconfirmation छोड़ देता है।
hide <skill>
- किसी skill को hide करें (owner, moderator, या admin)।
deleteका alias।
unhide <skill>
- किसी skill को unhide करें (owner, moderator, या admin)।
undeleteका alias।
skill rename <skill> <new-name>
- किसी owned skill का नाम बदलें और पिछले slug को redirect alias के रूप में रखें।
POST /api/v1/skills/{slug}/renameको कॉल करता है।--yesconfirmation छोड़ देता है।
skill merge <source> <target>
- एक owned skill को दूसरे owned skill में merge करें।
- source slug सार्वजनिक listing बंद कर देता है और target के लिए redirect alias बन जाता है।
POST /api/v1/skills/{sourceSlug}/mergeको कॉल करता है।--yesconfirmation छोड़ देता है।
transfer
- ownership transfer workflow।
- user handles पर transfers एक pending request बनाते हैं जिसे recipient accept करता है।
- org/publisher handles पर transfers तुरंत तभी apply होते हैं जब actor के पास current owner और destination publisher, दोनों पर admin access हो।
- Subcommands:
transfer request <skill> <handle> [--message "..."] [--yes]transfer list [--outgoing]transfer accept <skill> [--yes]transfer reject <skill> [--yes]transfer cancel <skill> [--yes]
- Endpoints:
POST /api/v1/skills/{slug}/transferPOST /api/v1/skills/{slug}/transfer/acceptPOST /api/v1/skills/{slug}/transfer/rejectPOST /api/v1/skills/{slug}/transfer/cancelGET /api/v1/transfers/incomingGET /api/v1/transfers/outgoing
package explore [query...]
- unified package catalog को
GET /api/v1/packagesऔरGET /api/v1/packages/searchके जरिए browse या search करता है। - इसे plugins और अन्य package-family entries के लिए उपयोग करें; top-level
searchskill search surface ही रहता है। - Flags:
--family skill|code-plugin|bundle-plugin--official--executes-code--target <target>,--os <os>,--arch <arch>,--libc <libc>--requires-browser,--requires-desktop,--requires-native-deps--requires-external-service,--external-service <name>--binary <name>,--os-permission <name>--artifact-kind legacy-zip|npm-pack--npm-mirror--limit <n>(1-100, default: 25)--json
Examples:
clawhub package explore --family code-pluginclawhub package explore --family code-plugin --os darwin --requires-desktopclawhub package explore --family code-plugin --artifact-kind npm-packclawhub package explore --npm-mirrorclawhub package explore episodic-claw --family code-pluginpackage inspect <name>
- install किए बिना package metadata fetch करता है।
- इसे plugin metadata, compatibility, verification, source, और version/file inspection के लिए उपयोग करें।
--version <version>: किसी specific version को inspect करें (default: latest)।--tag <tag>: tagged version को inspect करें (जैसेlatest)।--versions: version history list करें (पहला page)।--limit <n>: list करने के लिए max versions (1-100)।--files: selected version के लिए files list करें।--file <path>: raw file content fetch करें (केवल text files; 200KB limit)।--json: machine-readable output।
package download <name>
- package version को
GET /api/v1/packages/{name}/versions/{version}/artifactके जरिए resolve करता है। - resolver के
downloadUrlसे artifact download करता है। - सभी artifacts के लिए ClawHub SHA-256 verify करता है।
- ClawPack npm-pack artifacts के लिए, npm
sha512integrity, npm shasum, और tarball केpackage.jsonname/version को भी verify करता है। - Legacy ZIP versions legacy ZIP route के जरिए download होते हैं।
- Flags:
--version <version>: specific version download करें।--tag <tag>: tagged version download करें (default:latest)।-o, --output <path>: output file या directory।--force: existing output file overwrite करें।--json: machine-readable output।
Examples:
clawhub package download @openclaw/example-plugin --tag latestclawhub package download @openclaw/example-plugin --version 1.2.3 -o artifacts/package verify <file>
- local artifact के लिए ClawHub SHA-256, npm
sha512integrity, और npm shasum compute करता है। --packageके साथ, ClawHub से expected metadata resolve करता है और local file की published artifact metadata से तुलना करता है।- direct digest flags के साथ, network lookup के बिना verify करता है।
- Flags:
--package <name>: expected artifact metadata resolve करने के लिए package name।--version <version>या--tag <tag>: expected package version।--sha256 <hex>: expected ClawHub SHA-256।--npm-integrity <sri>: expected npm integrity।--npm-shasum <sha1>: expected npm shasum।--json: machine-readable output।
Examples:
clawhub package verify ./example-plugin-1.2.3.tgz --package @openclaw/example-plugin --version 1.2.3clawhub package verify ./example-plugin-1.2.3.tgz --sha256 <hex>package validate <source>
- local plugin package folder के विरुद्ध ClawHub CLI का bundled Plugin Inspector चलाता है।
- local OpenClaw checkout locate या import किए बिना, default रूप से offline/static validation करता है।
- Hard compatibility errors non-zero exit करते हैं। Warning-only findings print होते हैं लेकिन zero exit करते हैं।
- Flags:
--out <dir>: Plugin Inspector reports इस directory में लिखें।--openclaw <path>: explicit local OpenClaw checkout के विरुद्ध inspect करें।--runtime: runtime capture enable करें; plugin code import करता है।--allow-execute: isolated workspace में runtime capture allow करें।--no-mock-sdk: runtime capture के दौरान mocked OpenClaw SDK disable करें।--json: machine-readable output।
Example:
clawhub package validate ./example-pluginअगर validation कोई package, manifest, SDK import, या artifact finding report करता है, तो Plugin validation fixes देखें, फिर command दोबारा चलाएं।
package delete <name>
--versionके बिना, package और सभी releases को soft-delete करता है।--version <version>किसी owned non-latest release को fail-closed, version-specific route के जरिए स्थायी रूप से delete करता है। Deleted versions restore या republish नहीं किए जा सकते। मौजूदा latest version delete करने से पहले replacement publish करें। इस version-only flow के लिए package owner या org publisher admin आवश्यक है; platform staff package ownership bypass नहीं करते।- Whole-package soft-delete के लिए package owner, org publisher owner/admin, platform moderator, या platform admin आवश्यक है।
- Flags:
--version <version>: एक non-latest version स्थायी रूप से delete करें।--yes: confirmation छोड़ दें।--json: machine-readable output।
Example:
clawhub package delete @openclaw/example-plugin --yesclawhub package delete @openclaw/example-plugin --version 1.2.3 --yespackage undelete <name>
- soft-deleted package और releases को restore करता है।
- कोई version undelete नहीं है; स्थायी रूप से deleted versions restore नहीं किए जा सकते।
- package owner, org publisher owner/admin, platform moderator, या platform admin आवश्यक है।
POST /api/v1/packages/{name}/undeleteको कॉल करता है।- Flags:
--yes: confirmation छोड़ दें।--json: machine-readable output।
Example:
clawhub package undelete @openclaw/example-plugin --yespackage transfer <name>
- package को दूसरे publisher को transfer करता है।
- current package owner और destination publisher, दोनों पर admin access आवश्यक है, जब तक कि platform admin द्वारा perform न किया गया हो।
- Scoped package names matching scope owner को ही transfer होने चाहिए।
POST /api/v1/packages/{name}/transferको कॉल करता है।- Flags:
--to <owner>: destination publisher handle।--reason <text>: optional audit reason।--json: machine-readable output।
Example:
clawhub package transfer @openclaw/example-plugin --to openclawpackage report
- moderators को package report करने के लिए authenticated command।
POST /api/v1/packages/{name}/reportको कॉल करता है।- Reports package-level होते हैं, optionally किसी version से जुड़े होते हैं, और review के लिए moderators को visible हो जाते हैं।
- Reports अपने-आप packages hide नहीं करते या downloads block नहीं करते।
- Flags:
--version <version>: report से attach करने के लिए optional package version।--reason <text>: required report reason।--json: machine-readable output।
Example:
clawhub package report @openclaw/example-plugin --version 1.2.3 --reason "suspicious native payload"package moderation-status
- package moderation visibility check करने के लिए owner command।
GET /api/v1/packages/{name}/moderationको कॉल करता है।- current package scan state, open report count, latest release manual moderation state, download block state, और moderation reasons दिखाता है।
- Flags:
--json: machine-readable output।
Example:
clawhub package moderation-status @openclaw/example-pluginpackage readiness <name>
- check करता है कि package future OpenClaw consumption के लिए ready है या नहीं।
GET /api/v1/packages/{name}/readinessको कॉल करता है।- official status, ClawPack availability, artifact digest, source provenance, OpenClaw compatibility, host targets, environment metadata, और scan state के लिए blockers report करता है।
- Flags:
--json: machine-readable output।
Example:
clawhub package readiness @openclaw/example-pluginpackage migration-status <name>
- ऐसे package के लिए operator-oriented migration status दिखाता है जो bundled OpenClaw plugin को replace कर सकता है।
package readinessजैसा ही computed readiness endpoint कॉल करता है, लेकिन migration-focused status, latest version, official-package state, checks, और blockers print करता है।- Flags:
--json: machine-readable output।
Example:
clawhub package migration-status @openclaw/example-pluginpublisher create <handle>
- authenticated user के owned org publisher को create करता है।
- handle को lowercase में normalize किया जाता है और
@के साथ या बिना pass किया जा सकता है। - नए बनाए गए org publishers default रूप से trusted/official नहीं होते।
- अगर handle पहले से किसी existing publisher, user, या reserved route द्वारा used है तो fail होता है।
clawhub publisher create opik --display-name "Opik"package publish <source>
POST /api/v1/packagesके ज़रिए code plugin या bundle plugin प्रकाशित करता है।<source>स्वीकार करता है:- स्थानीय फ़ोल्डर पथ:
./my-plugin - स्थानीय ClawPack npm-pack tarball:
./my-plugin-1.2.3.tgz - GitHub repo:
owner/repoयाowner/repo@ref - GitHub URL:
https://github.com/owner/repo
- स्थानीय फ़ोल्डर पथ:
- Metadata
package.json,openclaw.plugin.json, और वास्तविक OpenClaw bundle markers जैसे.codex-plugin/plugin.json,.claude-plugin/plugin.json, और.cursor-plugin/plugin.jsonसे अपने-आप पहचाना जाता है। .tgzस्रोतों को ClawPack माना जाता है। CLI सटीक npm-pack bytes अपलोड करता है और निकाली गईpackage/सामग्री का उपयोग केवल validation और metadata prefill के लिए करता है।- Code-plugin फ़ोल्डरों को अपलोड से पहले ClawPack npm tarball में पैक किया जाता है ताकि OpenClaw installs सटीक artifact सत्यापित कर सकें। Bundle-plugin फ़ोल्डर अब भी extracted-file publish path का उपयोग करते हैं।
- GitHub स्रोतों के लिए, source attribution repo, resolved commit, ref, और subpath से अपने-आप भरा जाता है।
- स्थानीय फ़ोल्डरों के लिए, जब origin remote GitHub की ओर इंगित करता है, तो source attribution स्थानीय git से अपने-आप पहचाना जाता है।
- बाहरी code plugins को
openclaw.compat.pluginApiऔरopenclaw.build.openclawVersionस्पष्ट रूप से घोषित करने होंगे। Top-levelpackage.json.versionpublish validation के लिए fallback के रूप में उपयोग नहीं किया जाता। --dry-runअपलोड किए बिना resolved publish payload का पूर्वावलोकन करता है।--jsonCI के लिए machine-readable output देता है।--owner <handle>तब user या org publisher handle के अंतर्गत प्रकाशित करता है जब actor के पास publisher access हो।- Scoped package names चुने गए owner से मेल खाने चाहिए।
docs/publishing.mdदेखें। - मौजूदा flags (
--family,--name,--version,--source-repo,--source-commit,--source-ref,--source-path) अब भी overrides के रूप में काम करते हैं। - Private GitHub repos के लिए
GITHUB_TOKENआवश्यक है।
clawhub package publish ./plugin.tgz --owner openclawअनुशंसित स्थानीय flow
पहले --dry-run का उपयोग करें ताकि live release बनाने से पहले आप resolved package metadata और
source attribution की पुष्टि कर सकें:
npm packclawhub package publish ./my-plugin-1.2.3.tgz --family code-plugin --dry-runclawhub package publish ./my-plugin-1.2.3.tgz --family code-pluginस्थानीय फ़ोल्डर flow
Code plugins के लिए, folder publish package folder से ClawPack artifact बनाता और अपलोड करता है:
clawhub package publish ./my-plugin --family code-plugin --dry-runclawhub package publish ./my-plugin --family code-plugin--family code-plugin के लिए न्यूनतम package.json
बाहरी code plugins को package.json में थोड़ी OpenClaw metadata चाहिए।
यह न्यूनतम manifest सफल publish के लिए पर्याप्त है:
{ "name": "@myorg/openclaw-my-plugin", "version": "1.0.0", "type": "module", "openclaw": { "extensions": ["./index.ts"], "compat": { "pluginApi": ">=2026.3.24-beta.2" }, "build": { "openclawVersion": "2026.3.24-beta.2" } }}आवश्यक fields:
openclaw.compat.pluginApiopenclaw.build.openclawVersion
नोट्स:
package.json.versionआपका package release version है, लेकिन इसे OpenClaw compatibility/build validation के लिए fallback के रूप में उपयोग नहीं किया जाता।openclaw.hostTargetsऔरopenclaw.environmentवैकल्पिक metadata हैं। ClawHub मौजूद होने पर उन्हें दिखा सकता है, लेकिन publish के लिए वे आवश्यक नहीं हैं।openclaw.compat.minGatewayVersionऔरopenclaw.build.pluginSdkVersionवैकल्पिक extras हैं, यदि आप अधिक विस्तृत compatibility metadata प्रकाशित करना चाहते हैं।- यदि आप पुराने
clawhubCLI release का उपयोग कर रहे हैं, तो publish करने से पहले upgrade करें ताकि local preflight checks अपलोड से पहले चलें। - यदि validation कोई remediation code रिपोर्ट करता है, तो Plugin validation fixes देखें।
GitHub Actions
ClawHub plugin repos के लिए
/.github/workflows/package-publish.yml
पर एक official reusable workflow भी भेजता है।
सामान्य caller setup:
name: Package Publish on: pull_request: workflow_dispatch: push: tags: - "v*" jobs: dry-run: if: github.event_name == 'pull_request' uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0 with: dry_run: true publish: if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/') permissions: contents: read id-token: write uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0 with: dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}नोट्स:
- Reusable workflow default रूप से
sourceको caller repo पर सेट करता है। - Monorepos के लिए,
source_pathपास करें ताकि workflow plugin package folder प्रकाशित करे, उदाहरण के लिएsource_path: extensions/codex। - Reusable workflow को stable tag या full commit SHA पर pin करें।
@mainसे release publishing न चलाएँ। pull_requestकोdry_run: trueउपयोग करना चाहिए ताकि CI non-polluting रहे।- वास्तविक publishes को trusted events जैसे
workflow_dispatchया tag pushes तक सीमित रखना चाहिए। - Secret के बिना trusted publishing केवल
workflow_dispatchपर काम करती है; tag pushes को अब भीclawhub_tokenचाहिए। - पहले publish, untrusted packages, या break-glass publishes के लिए
clawhub_tokenउपलब्ध रखें। - Workflow JSON result को artifact के रूप में अपलोड करता है और उसे workflow outputs के रूप में expose करता है।
package trusted-publisher get <name>
- किसी package के लिए GitHub Actions trusted publisher config दिखाता है।
- Config सेट करने के बाद repository, workflow filename, और optional environment pin की पुष्टि करने के लिए इसका उपयोग करें।
- Flags:
--json: machine-readable output।
उदाहरण:
clawhub package trusted-publisher get @openclaw/example-pluginpackage trusted-publisher set <name>
- मौजूदा package के लिए GitHub Actions trusted publisher config जोड़ता या बदलता है।
- Package पहले सामान्य manual या token-authenticated
clawhub package publishके माध्यम से बनाया जाना चाहिए। - Config सेट होने के बाद, भविष्य में supported GitHub Actions publishes long-lived ClawHub token के बिना OIDC/trusted publishing का उपयोग कर सकते हैं।
--repository <repo>owner/repoहोना चाहिए।--workflow-filename <file>.github/workflows/में workflow file name से मेल खाना चाहिए।--environment <name>वैकल्पिक है। Configure होने पर, OIDC claim में GitHub Actions environment बिल्कुल मेल खाना चाहिए।- यह command चलने पर ClawHub configured GitHub repository को verify करता है। Public repositories को public GitHub metadata के माध्यम से verify किया जा सकता है। Private repositories के लिए ClawHub को उस repository तक GitHub access चाहिए, उदाहरण के लिए भविष्य में ClawHub GitHub App installation या किसी अन्य authorized GitHub integration के माध्यम से।
- Flags:
--repository <repo>: GitHub repository, उदाहरण के लिएopenclaw/example-plugin।--workflow-filename <file>: workflow file name, उदाहरण के लिएpackage-publish.yml।--environment <name>: optional exact-match GitHub Actions environment।--json: machine-readable output।
उदाहरण:
clawhub package trusted-publisher set @openclaw/example-plugin \ --repository openclaw/example-plugin \ --workflow-filename package-publish.yml \ --environment releasepackage trusted-publisher delete <name>
- किसी package से trusted publisher config हटाता है।
- यदि workflow, repository, या environment pin को disabled या re-created करना हो, तो इसे rollback के रूप में उपयोग करें।
- भविष्य के वास्तविक publishes को सामान्य authenticated publishing का उपयोग करना होगा, जब तक config फिर से सेट न हो।
- Flags:
--json: machine-readable output।
उदाहरण:
clawhub package trusted-publisher delete @openclaw/example-pluginInstall telemetry
- Logged in होने पर
clawhub install <slug>के बाद भेजा जाता है, जब तकCLAWHUB_DISABLE_TELEMETRY=1सेट न हो। - Reporting best-effort है। Telemetry उपलब्ध न होने पर install commands fail नहीं होते।
- विवरण:
docs/telemetry.md।