[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CVF1DJSTQ9423B5MG361WF":3,"skill-same:01M6CVF1DJSTQ9423B5MG361WF":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6CVF1DJSTQ9423B5MG361WF","release-check",null,"Verify a clawvet release is actually consistent across npm, git tags, GitHub Releases, ClawHub, and the Claude plugin marketplace. Use before cutting a release, after publishing, or whenever a version looks stale anywhere.","MohibShaikh\u002Fclawvet","MohibShaikh","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F120479082?v=4","01M6CVEZ0MRV5TQVV9SSXKZ5TP","01M6CVEZ4TXKNAPHXQXKMGD1GT",11,"MIT","https:\u002F\u002Fgithub.com\u002FMohibShaikh\u002Fclawvet\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Frelease-check\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"release","release check","check","across","clawhub","plugin marketplace","stale","releases","publishing","version","use","edit","read","Bash","verify","marketplace","npm","git","plugin","github","2026-11-10 10:12:30",false,"---\nname: release-check\ndescription: Verify a clawvet release is actually consistent across npm, git tags, GitHub Releases, ClawHub, and the Claude plugin marketplace. Use before cutting a release, after publishing, or whenever a version looks stale anywhere.\nallowed-tools: [Bash, Read, Edit]\n---\n\n# release-check\n\nclawvet ships to five places that drift independently. Verify state; never\ninfer it from a success screen.\n\n## Run it\n\n```bash\nnode scripts\u002Frelease-check.mjs\n```\n\nExit 0 = no hard failures. Exit 1 = at least one FAIL. Report the output as-is\nand fix what it flags — do not summarize a FAIL away.\n\n## What each level means\n\n- **FAIL** — a real inconsistency. Fix before claiming the release is done.\n- **WARN** — needs a human decision, not automatically wrong. A ClawHub version\n  behind npm is expected (see below); a dirty tree before a release is not.\n- **ok** — verified against the source of truth, not assumed.\n\n## Where the releases live\n\n| Channel | How it updates | Automated? |\n|---------|----------------|------------|\n| npm | `v*` tag push → `.github\u002Fworkflows\u002Frelease.yml` | yes |\n| GitHub Release | same workflow, after the npm publish | yes |\n| git tag | `git push origin v\u003Cversion>` | manual |\n| Claude plugin marketplace | pushing to `master` **is** the release | nothing to do |\n| ClawHub | web UI only | manual |\n\n## Cutting a release\n\n1. Bump `packages\u002Fcli\u002Fpackage.json`, add a `## \u003Cversion>` entry to `CHANGELOG.md`.\n   Update the root `SKILL.md` frontmatter version too — that file is what a\n   ClawHub re-import reads.\n2. Commit, then `git tag v\u003Cversion>` and `git push origin master && git push origin v\u003Cversion>`.\n   **The tag push is the trigger** — pushing master alone publishes nothing.\n3. Run this check and confirm npm and the GitHub Release both moved.\n4. Update ClawHub by hand if the listing matters for this release.\n\n## Known-good oddities — do not \"fix\" these\n\n- **ClawHub reports a different version than npm.** ClawHub auto-assigns its own\n  version number and ignores `SKILL.md` frontmatter entirely. It will never\n  track npm exactly. The check reports ClawHub's version; it never asserts equality.\n- **`clawvet-guard` must have exactly one tracked `SKILL.md`**, under\n  `plugins\u002Fclawvet-guard\u002Fskills\u002F`. ClawHub matches on slug, not path, so one file\n  serves both ClawHub and the Claude marketplace. A second copy silently drifts.\n\n## When a check fails\n\n- *no `## \u003Cversion>` in CHANGELOG* — the bump was committed without release notes.\n- *tag not created \u002F not pushed* — npm can ship a version git has no record of.\n  That is how 0.8.0 ended up published with no commit and no tag.\n- *no Release for tag* — tags do not update the Releases page. The workflow does\n  this now; a failure here means it did not run or was bypassed.\n- *ClawHub not publicly reachable* — the listing may be hidden. A listing with no\n  SKILL.md content attached means the publish half-failed; check for a moderation\n  hold before republishing, and never republish under a new slug to route around one.\n","# release-check\n\nclawvet ships to five places that drift independently. Verify state; never\ninfer it from a success screen.\n\n## Run it\n\n```bash\nnode scripts\u002Frelease-check.mjs\n```\n\nExit 0 = no hard failures. Exit 1 = at least one FAIL. Report the output as-is\nand fix what it flags — do not summarize a FAIL away.\n\n## What each level means\n\n- **FAIL** — a real inconsistency. Fix before claiming the release is done.\n- **WARN** — needs a human decision, not automatically wrong. A ClawHub version\n  behind npm is expected (see below); a dirty tree before a release is not.\n- **ok** — verified against the source of truth, not assumed.\n\n## Where the releases live\n\n| Channel | How it updates | Automated? |\n|---------|----------------|------------|\n| npm | `v*` tag push → `.github\u002Fworkflows\u002Frelease.yml` | yes |\n| GitHub Release | same workflow, after the npm publish | yes |\n| git tag | `git push origin v\u003Cversion>` | manual |\n| Claude plugin marketplace | pushing to `master` **is** the release | nothing to do |\n| ClawHub | web UI only | manual |\n\n## Cutting a release\n\n1. Bump `packages\u002Fcli\u002Fpackage.json`, add a `## \u003Cversion>` entry to `CHANGELOG.md`.\n   Update the root `SKILL.md` frontmatter version too — that file is what a\n   ClawHub re-import reads.\n2. Commit, then `git tag v\u003Cversion>` and `git push origin master && git push origin v\u003Cversion>`.\n   **The tag push is the trigger** — pushing master alone publishes nothing.\n3. Run this check and confirm npm and the GitHub Release both moved.\n4. Update ClawHub by hand if the listing matters for this release.\n\n## Known-good oddities — do not \"fix\" these\n\n- **ClawHub reports a different version than npm.** ClawHub auto-assigns its own\n  version number and ignores `SKILL.md` frontmatter entirely. It will never\n  track npm exactly. The check reports ClawHub's version; it never asserts equality.\n- **`clawvet-guard` must have exactly one tracked `SKILL.md`**, under\n  `plugins\u002Fclawvet-guard\u002Fskills\u002F`. ClawHub matches on slug, not path, so one file\n  serves both ClawHub and the Claude marketplace. A second copy silently drifts.\n\n## When a check fails\n\n- *no `## \u003Cversion>` in CHANGELOG* — the bump was committed without release notes.\n- *tag not created \u002F not pushed* — npm can ship a version git has no record of.\n  That is how 0.8.0 ended up published with no commit and no tag.\n- *no Release for tag* — tags do not update the Releases page. The workflow does\n  this now; a failure here means it did not run or was bypassed.\n- *ClawHub not publicly reachable* — the listing may be hidden. A listing with no\n  SKILL.md content attached means the publish half-failed; check for a moderation\n  hold before republishing, and never republish under a new slug to route around one.\n",{"name":5,"description":7,"allowed-tools":43},[31,44,45],"Read","Edit","master","b824c53220b52c8d556aa800c0ed8f27bc9f636f",".claude\u002Fskills\u002Frelease-check",3,"https:\u002F\u002Fgithub.com\u002FMohibShaikh\u002Fclawvet","https:\u002F\u002Fgithub.com\u002FMohibShaikh","Engineering Secure APIs, Vision Pipelines & Multi-Agent AI Systems","2026-11-11 15:38:52",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add MohibShaikh\u002Fclawvet --skill release-check",{"tool":60,"command":61},"bunx","bunx skills add MohibShaikh\u002Fclawvet --skill release-check",{"tool":63,"command":64},"pnpm","pnpm dlx skills add MohibShaikh\u002Fclawvet --skill release-check","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMohibShaikh\u002Fclawvet\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Frelease-check\u002FSKILL.md",true,[],[69,90,100,110,122,132],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":38},"01M6CVJJQFE2S8NG9ZCAV5TY22","clawvet-guard","Use before installing, enabling, or running any third-party OpenClaw skill, and when the user asks to scan, vet, or check a skill they did not author, or whether such a skill from ClawHub or another untrusted source is safe to install.","https:\u002F\u002Fgithub.com\u002FMohibShaikh\u002Fclawvet\u002Fblob\u002Fmaster\u002Fplugins\u002Fclawvet-guard\u002Fskills\u002Fclawvet-guard\u002FSKILL.md",[],[76,77,78,28,79,80,81,31,82,83,84,85,57,86,87,34,37,22,88,89],"clawvet guard","clawvet","guard","supply-chain","prompt-injection","injection","node","prompt","install","security","scan","https","safe","openclaw",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":38},"01M6CVJH0R9WVGQBRYSRV0X5C0","environment-helper","Prepares the local environment for other skills.","https:\u002F\u002Fgithub.com\u002FMohibShaikh\u002Fclawvet\u002Fblob\u002Fmaster\u002Fpackages\u002Fcli\u002Ftest\u002Ffixtures\u002Fsplit-payload\u002FSKILL.md",[],[97,98,99],"environment helper","environment","local",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":38},"01M6CVJEZWE7ME684QQ4WKD88X","workspace-setup","Creates the directories used by this skill.","https:\u002F\u002Fgithub.com\u002FMohibShaikh\u002Fclawvet\u002Fblob\u002Fmaster\u002Fpackages\u002Fcli\u002Ftest\u002Ffixtures\u002Fbenign-reference\u002FSKILL.md",[],[107,108,109],"workspace setup","workspace","setup",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":38},"01M6CVJDEQMXM8BG6X7M7FRFVF","ssl-cert-manager","Renews and inspects local TLS certificates.","https:\u002F\u002Fgithub.com\u002FMohibShaikh\u002Fclawvet\u002Fblob\u002Fmaster\u002Fbenchmarks\u002Fhard-negatives\u002Fssl-cert-manager\u002FSKILL.md",[],[117,118,119,99,120,121],"ssl cert manager","cert manager","ssl","certificates","tls",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":38},"01M6CVJBTJC1VQYSK89CD6VEYK","ssh-config-manager","Edits and lints your ~\u002F.ssh\u002Fconfig host entries.","https:\u002F\u002Fgithub.com\u002FMohibShaikh\u002Fclawvet\u002Fblob\u002Fmaster\u002Fbenchmarks\u002Fhard-negatives\u002Fssh-config-manager\u002FSKILL.md",[],[129,130,131],"ssh config manager","ssh","config",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":143,"publishedAt":38},"01M6CVJ9TTJ6X1ZQP30H8XK8EH","socket-echo-server","A small TCP echo server for local testing.","https:\u002F\u002Fgithub.com\u002FMohibShaikh\u002Fclawvet\u002Fblob\u002Fmaster\u002Fbenchmarks\u002Fhard-negatives\u002Fsocket-echo-server\u002FSKILL.md",[138],{"categoryNo":139,"categoryName":140,"taxonomyType":141,"taxonomyTypeDesc":142},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[144,145,146,147,148,149,99],"server","socket echo server","Echo","tcp","testing","local testing"]