[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JGV8J3ZRFGCXR2W3Q9ZWYK":3,"skill-same:01M6JGV8J3ZRFGCXR2W3Q9ZWYK":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":27,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":56,"updatedAt":57,"install":58,"resources":70},"01M6JGV8J3ZRFGCXR2W3Q9ZWYK","release-prep",null,"Pre-release verification + go\u002Fno-go checklist for publishing @anvilkit packages. Detects the release surface (main workspace fixed-group vs components submodule), runs changeset status and the check:all release gates, enforces this repo's publish gotchas (version.ts drift, ui peer ranges, never-publish canvas-templates, bundle\u002Fapi-snapshot), then hands the exact publish command to the user. Use when asked to \"prep a release\", \"check release readiness\", \"\u002Frelease-prep\", or before cutting a version. Does NOT commit or publish.","ancyloce\u002Fanvilkit-studio","ancyloce","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103255835?v=4","01M6JGS0GSF9KTQE3VS6HA5FZ2","Ancyloce","01M6JGS0NK83XM8EJYT39C39CD",2,"MIT","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frelease-prep\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"release prep","release","prep","never","for","true","gates","drift","main","peer","publishing","canvas","version","use","repo","changeset","Bash","api","commit","components","2026-11-10 10:12:30",false,"---\nname: release-prep\ndescription: >-\n  Pre-release verification + go\u002Fno-go checklist for publishing @anvilkit packages.\n  Detects the release surface (main workspace fixed-group vs components submodule),\n  runs changeset status and the check:all release gates, enforces this repo's\n  publish gotchas (version.ts drift, ui peer ranges, never-publish canvas-templates,\n  bundle\u002Fapi-snapshot), then hands the exact publish command to the user. Use when\n  asked to \"prep a release\", \"check release readiness\", \"\u002Frelease-prep\", or before\n  cutting a version. Does NOT commit or publish.\ndisable-model-invocation: true\nallowed-tools:\n  - Bash\n  - Read\n  - Grep\n  - Glob\n  - Agent\n---\n\n# release-prep\n\nGets a release green and produces a **go\u002Fno-go** report with the exact publish command —\nthen stops. Publishing to npm is irreversible and outward-facing; the user runs the final\n`changeset publish` \u002F version bump themselves. Never `git commit`, push, or publish from\nthis skill.\n\n## Step 1 — Identify the release surface\n\nThere are two independent surfaces; confirm which one (or both) is being released:\n\n- **Main workspace** (`\u002F`) — changesets `fixed` group bump together:\n  `core, ir, schema, validator, utils, ui, plugin-ai-copilot, plugin-asset-manager,\n  plugin-export-html, plugin-export-react, plugin-version-history`.\n  Release path: `pnpm release` (= `changeset version && build && changeset publish`).\n  `demo` is in `ignore`.\n- **Components submodule** (`packages\u002Fextensions\u002Fcomponents\u002F`) — separate workspace + changeset config.\n  Each `@anvilkit\u002F\u003Cslug>` versions independently. **Changesets are often orphaned here** —\n  if `changeset version` no-ops, bump the component `package.json` `version` directly to\n  republish.\n\n```bash\npnpm changeset:status                              # main workspace pending bumps\ncd packages\u002Fextensions\u002Fcomponents && pnpm exec changeset status   # components workspace\n```\n\n## Step 2 — Run the release gates\n\n```bash\npnpm check:all                 # per-package release gates (api-snapshot, size, build, test)\npnpm publint                   # package.json exports validation\npnpm size                      # size-limit gzip budgets\n```\n\nIf `check:all` fails, **do not hand-classify** — delegate to the triager agent, which knows\nthis repo's pre-existing-vs-regression patterns:\n\n```\nAgent(subagent_type: \"release-gate-triager\",\n      prompt: \"check:all failed during release-prep. Triage each failure as pre-existing\n               vs regression and report a go\u002Fno-go per changed package.\")\n```\n\nOnly regressions block the release; the triager flags known-benign noise (phantom\nconcurrency oversubscription, stale api-snapshot paths after a reorg, known budget overflow).\n\n## Step 3 — Enforce the publish gotchas (this repo's tripwires)\n\nCheck each before declaring go:\n\n1. **`@anvilkit\u002Fcanvas-templates` — NEVER publish it.** It has no `private: true` guard;\n   publishing triggers a \"missing package name\" error. Explicitly exclude it from any\n   `changeset publish` \u002F release run.\n2. **`CORE_VERSION` drift.** `packages\u002Fcore\u002Fsrc\u002Fversion.ts` must equal `core`'s\n   `package.json` version, or `\u003CStudio>` rejects plugins at runtime (mount-test timeouts).\n   Verify they match after `changeset version`:\n   ```bash\n   grep -n \"CORE_VERSION\\|version\" packages\u002Fcore\u002Fsrc\u002Fversion.ts\n   ```\n3. **`@anvilkit\u002Fui` peer ranges.** Core pins `ui` exactly (`workspace:*`). Every publishable\n   package's `ui` peer range must cover the version about to ship, or consumers hit ERESOLVE.\n4. **Bundle budget on bump.** A version-string bump can push a package over its gzip budget\n   (e.g. `plugin-export-react` ~409 B over). Fix order: trim `version.ts`, then bump the\n   size-limit budget — don't bump the budget blindly.\n5. **api-snapshot drift** is usually benign stale paths after a reorg (3 sites: exports map,\n   typedoc `entryPoints`, the snapshot). The triager will confirm.\n\n## Step 4 — Go\u002Fno-go report\n\nOutput:\n- **Surface(s)**: main workspace \u002F components \u002F both\n- **Pending bumps**: package → semver level (from changeset status)\n- **Gate results**: pass, or regressions with file:line (pre-existing noise listed separately)\n- **Gotcha checklist**: each of the 5 above marked ✓ \u002F ✗\n- **Verdict**: GO \u002F NO-GO\n- **Next command for the user to run** (do not run it yourself), e.g.:\n  - main: `pnpm release`\n  - components: `cd packages\u002Fextensions\u002Fcomponents && pnpm release`  *(or the direct `package.json`\n    version bump if changesets are orphaned)*\n\nStop here. The user executes the publish and all commits.\n","# release-prep\n\nGets a release green and produces a **go\u002Fno-go** report with the exact publish command —\nthen stops. Publishing to npm is irreversible and outward-facing; the user runs the final\n`changeset publish` \u002F version bump themselves. Never `git commit`, push, or publish from\nthis skill.\n\n## Step 1 — Identify the release surface\n\nThere are two independent surfaces; confirm which one (or both) is being released:\n\n- **Main workspace** (`\u002F`) — changesets `fixed` group bump together:\n  `core, ir, schema, validator, utils, ui, plugin-ai-copilot, plugin-asset-manager,\n  plugin-export-html, plugin-export-react, plugin-version-history`.\n  Release path: `pnpm release` (= `changeset version && build && changeset publish`).\n  `demo` is in `ignore`.\n- **Components submodule** (`packages\u002Fextensions\u002Fcomponents\u002F`) — separate workspace + changeset config.\n  Each `@anvilkit\u002F\u003Cslug>` versions independently. **Changesets are often orphaned here** —\n  if `changeset version` no-ops, bump the component `package.json` `version` directly to\n  republish.\n\n```bash\npnpm changeset:status                              # main workspace pending bumps\ncd packages\u002Fextensions\u002Fcomponents && pnpm exec changeset status   # components workspace\n```\n\n## Step 2 — Run the release gates\n\n```bash\npnpm check:all                 # per-package release gates (api-snapshot, size, build, test)\npnpm publint                   # package.json exports validation\npnpm size                      # size-limit gzip budgets\n```\n\nIf `check:all` fails, **do not hand-classify** — delegate to the triager agent, which knows\nthis repo's pre-existing-vs-regression patterns:\n\n```\nAgent(subagent_type: \"release-gate-triager\",\n      prompt: \"check:all failed during release-prep. Triage each failure as pre-existing\n               vs regression and report a go\u002Fno-go per changed package.\")\n```\n\nOnly regressions block the release; the triager flags known-benign noise (phantom\nconcurrency oversubscription, stale api-snapshot paths after a reorg, known budget overflow).\n\n## Step 3 — Enforce the publish gotchas (this repo's tripwires)\n\nCheck each before declaring go:\n\n1. **`@anvilkit\u002Fcanvas-templates` — NEVER publish it.** It has no `private: true` guard;\n   publishing triggers a \"missing package name\" error. Explicitly exclude it from any\n   `changeset publish` \u002F release run.\n2. **`CORE_VERSION` drift.** `packages\u002Fcore\u002Fsrc\u002Fversion.ts` must equal `core`'s\n   `package.json` version, or `\u003CStudio>` rejects plugins at runtime (mount-test timeouts).\n   Verify they match after `changeset version`:\n   ```bash\n   grep -n \"CORE_VERSION\\|version\" packages\u002Fcore\u002Fsrc\u002Fversion.ts\n   ```\n3. **`@anvilkit\u002Fui` peer ranges.** Core pins `ui` exactly (`workspace:*`). Every publishable\n   package's `ui` peer range must cover the version about to ship, or consumers hit ERESOLVE.\n4. **Bundle budget on bump.** A version-string bump can push a package over its gzip budget\n   (e.g. `plugin-export-react` ~409 B over). Fix order: trim `version.ts`, then bump the\n   size-limit budget — don't bump the budget blindly.\n5. **api-snapshot drift** is usually benign stale paths after a reorg (3 sites: exports map,\n   typedoc `entryPoints`, the snapshot). The triager will confirm.\n\n## Step 4 — Go\u002Fno-go report\n\nOutput:\n- **Surface(s)**: main workspace \u002F components \u002F both\n- **Pending bumps**: package → semver level (from changeset status)\n- **Gate results**: pass, or regressions with file:line (pre-existing noise listed separately)\n- **Gotcha checklist**: each of the 5 above marked ✓ \u002F ✗\n- **Verdict**: GO \u002F NO-GO\n- **Next command for the user to run** (do not run it yourself), e.g.:\n  - main: `pnpm release`\n  - components: `cd packages\u002Fextensions\u002Fcomponents && pnpm release`  *(or the direct `package.json`\n    version bump if changesets are orphaned)*\n\nStop here. The user executes the publish and all commits.\n",{"name":5,"description":7,"allowed-tools":44,"disable-model-invocation":49},[35,45,46,47,48],"Read","Grep","Glob","Agent",true,"e4eeaefbd56226a251b228f1beb87a293ab3140a",".claude\u002Fskills\u002Frelease-prep",1,"https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio","http:\u002F\u002Fanvilkit.aiiua.com\u002F","https:\u002F\u002Fgithub.com\u002Fancyloce","🧙‍♂️  Front-end mage with a secret back-end talent. \r\n🔮  Fluent in React, Vue, Go, and Rust.\r\n📚  Book addict and  🎵  music lover. Let's create some  ✨ magic","2026-11-01 10:38:50",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":49},[60,63,66],{"tool":61,"command":62},"npx","npx skills add ancyloce\u002Fanvilkit-studio --skill release-prep",{"tool":64,"command":65},"bunx","bunx skills add ancyloce\u002Fanvilkit-studio --skill release-prep",{"tool":67,"command":68},"pnpm","pnpm dlx skills add ancyloce\u002Fanvilkit-studio --skill release-prep","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frelease-prep\u002FSKILL.md",[],[72,103,127,147,153,164],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":83,"publishedAt":39},"01M6JGVQAQWDRDT2CAQ2VH7D9V","react-doctor","Use when finishing a feature, fixing a bug, before committing React code, or when the user types `\u002Fdoctor`, asks to scan, triage, or clean up React diagnostics. Covers lint, accessibility, bundle size, architecture. Includes a regression check and a full local-triage workflow that fetches the canonical playbook.","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002Fpackages\u002Fruntime\u002Fcore\u002F.claude\u002Fskills\u002Freact-doctor\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[84,85,86,87,88,89,90,91,92,93,94,32,95,96,97,98,99,100,101,102],"react","doctor","react doctor","workflow","architecture","lint","code","playbook","regression","bundle size","check","regression check","up","clean","scan","local","feature","types","size",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":39},"01M6JGVJ7H21GFHTJ57RBWC6C1","review-remediate","Use for the review-then-fix-everything loop on a package or diff — deliver a grounded review report immediately (no scoping questions, no plan-approval), then remediate every finding as tracked numbered items, gating each batch on typecheck\u002Flint\u002Ftest\u002Fbuild plus an independent Codex pass until clean. Trigger on \"review and fix \u003Cpackage>\", \"remediate the review\", \"review-fix-verify\", or when the user wants a deep review followed by autonomous remediation. Distinct from gstack `review` (pre-landing PR review) and `code-review` (diff only) — this reviews from scratch AND fixes to green.","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Freview-remediate\u002FSKILL.md",[],[110,111,112,113,114,115,116,117,32,118,119,97,120,121,122,123,124,23,125,126],"review","review remediate","pr review","pr","package","autonomous","fix","landing","diff","only","green","deep","as","trigger","reviews","fixes","review report",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":39},"01M6JGVDZD39P3Q97XGQPTTKQN","review-fixes","Close out an EXISTING code-review findings report — one subagent per finding, each with a regression test — then regenerate EN\u002Fzh\u002Fja\u002Fko docs, run all gates, and verify no stale or unexported symbols remain. Trigger on \"\u002Freview-fixes\", \"fix all N review findings\", \"close the review findings\", or when the user hands over a findings report to remediate. Distinct from review-remediate, which produces the review itself first — this skill starts from a report that already exists.","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Freview-fixes\u002FSKILL.md",[],[110,125,134,135,90,136,137,138,139,92,116,140,141,142,25,123,143,144,145,146],"review fixes","test","code-review","first","verify","subagent","regression test","en","zh","with","review findings","which","Existing",{"skillNo":148,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":152,"publishedAt":39},"01M6JGV33MBTTHMZ1SNJZHAA6H","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Freact-doctor\u002FSKILL.md",[151],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},[84,85,86,87,88,89,90,91,92,93,94,32,95,96,97,98,99,100,101,102],{"skillNo":154,"name":155,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":161,"publishedAt":39},"01M6JGV1KQAFYH6ZQ864ZBCVVH","pre-refactor","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fpre-refactor\u002FSKILL.md",[158],{"categoryNo":159,"categoryName":160,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000007","代码审查",[162,163],"refactor","pre refactor",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":178,"publishedAt":39},"01M6JGTX3NW0PFBVP05G0VCEQB","phase-execute","Autonomous phase runner for numbered plans (docs\u002Fplans\u002F*, docs\u002Fprd\u002F*):\nscoped gates per task, full gate only at phase boundaries, checkpoint to\n.claude\u002Fstate\u002Fphase-run.json after every task so a run resumes at the\nexact next task, edit-guard.mjs against concurrent writers, explicit E2E\nservers, flaky quarantine, deliverables report at phase end. Use for\n\"execute phase X of \u003Cplan>\", \"drive the next phase\", \"phase-execute\n\u003Cplan>\", \"resume the phase\", or \"dry-run phase X\".","https:\u002F\u002Fgithub.com\u002Fancyloce\u002Fanvilkit-studio\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fphase-execute\u002FSKILL.md",[170,173],{"categoryNo":171,"categoryName":172,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":174,"categoryName":175,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[179,180,181,35,182,183,184,185,186,187,115,119,188,189,190,191,192,193,194,23],"execute","phase execute","run","plan","advance","run phase","read","write","edit","runner","milestone","next","full","end","dry","at"]