[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71KCDTNHFER4ZSYE6S758AB":3,"skill-same:01M71KCDTNHFER4ZSYE6S758AB":68},{"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":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":67},"01M71KCDTNHFER4ZSYE6S758AB","cancel",null,"Use when stopping an active curdx-flow execution loop or removing spec state.","mugsun\u002Fcurdx-flow","mugsun","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F100790155?v=4","01M6KJSAN2W4WRPDFBKTJTDDQ2","Mugsun","01M71K65VJXA4C1KPJAHZ6ZVHC",4,"MIT","https:\u002F\u002Fgithub.com\u002Fmugsun\u002Fcurdx-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fcurdx-flow\u002Fskills\u002Fcancel\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36],"spec","state","flow","execution","Bash","loop","read","use","active","name","true","path","when","2026-11-10 10:12:30",false,"---\nname: cancel\ndescription: Use when stopping an active curdx-flow execution loop or removing spec state.\nargument-hint: \"[spec-name-or-path]\"\nallowed-tools: \"Read Bash Agent AskUserQuestion\"\ndisable-model-invocation: true\n---\n\n\n# Cancel Execution\n\nYou are canceling the active execution loop, cleaning up state files, and removing the spec directory.\n\n**This is a destructive operation. You MUST get explicit user confirmation via `AskUserQuestion` before deleting anything.**\n\n## Multi-Directory Resolution\n\nThis command uses the plugin runtime for multi-root spec discovery:\n\n```bash\ncurdx-flow specs resolve [name-or-path]\ncurdx-flow specs find \u003Cname>\n```\n\n## Determine Target Spec\n\n1. If `$ARGUMENTS` contains input:\n   - If starts with `.\u002F` or `\u002F`: treat as full path, validate it exists\n   - Otherwise: treat as spec name, use `curdx-flow specs find \"$input\"` to search\n2. If no argument provided:\n   - Use `curdx-flow specs resolve` to get active spec path from `.current-spec`\n3. If no active spec and no argument, inform user there's nothing to cancel and STOP. Do not proceed.\n\n### Handle Disambiguation\n\nIf spec name exists in multiple roots (exit code 2 from find):\n\n```\nMultiple specs named '$name' found:\n1. .\u002Fspecs\u002F$name\n2. .\u002Fpackages\u002Fapi\u002Fspecs\u002F$name\n\nSpecify: \u002Fcurdx-flow:cancel .\u002Fpackages\u002Fapi\u002Fspecs\u002F$name\n```\n\nDo NOT automatically select one. User must specify the full path.\n\n## Check State\n\n1. Check if `$spec_path\u002F.curdx-state.json` exists (where `$spec_path` is the resolved full path)\n2. Read state if present (for the summary shown to the user during confirmation)\n\n## Gather Confirmation Context\n\nBefore asking the user to confirm, gather a short summary so the prompt is informative:\n\n```bash\n# Count tracked artifacts and any modified files inside the spec dir\nfind \"$spec_path\" -maxdepth 2 -type f -name '*.md' | wc -l         # artifact count\nfind \"$spec_path\" -type f | wc -l                                   # total file count\n```\n\nIf `.curdx-state.json` exists, capture:\n- `phase`\n- `taskIndex \u002F totalTasks`\n- `globalIteration`\n\n## MANDATORY: Confirm With User\n\nUse `AskUserQuestion` with a single question containing:\n\n- **question**: `Permanently delete spec '$spec_name' at '$spec_path'? This removes the spec directory and all its files. This cannot be undone.`\n- **header**: `Confirm delete`\n- **options**:\n  1. `Delete` — proceed with full cleanup. Include in the description: `phase=\u003Cphase>, progress=\u003CtaskIndex>\u002F\u003CtotalTasks>, files=\u003Ctotal file count>`.\n  2. `Cancel` — abort, change nothing. Description: `Keep the spec directory and state file intact.`\n\nIf the user picks `Cancel` (or any \"Other\" answer that isn't a clear confirmation), output:\n\n```\nCancellation aborted. Nothing was deleted.\nSpec preserved at: $spec_path\n```\n\nand STOP. Do not run any `rm` command.\n\nOnly proceed to the Cleanup section if the user explicitly chose `Delete`.\n\n## Cleanup\n\nAfter confirmation:\n\n1. Delete state file:\n   ```bash\n   rm -f \"$spec_path\u002F.curdx-state.json\"\n   ```\n\n2. Remove spec directory:\n   ```bash\n   rm -rf \"$spec_path\"\n   ```\n\n3. Clear current spec marker:\n   ```bash\n   rm -f .\u002Fspecs\u002F.current-spec\n   ```\n\n4. Update Spec Index (removes deleted spec from index):\n   ```bash\n   node \"${CLAUDE_PLUGIN_ROOT}\u002Fhooks\u002Fscripts\u002Fupdate-spec-index.mjs\" --quiet\n   ```\n\nQuote every `$spec_path` use in the `rm` commands. Never run `rm -rf` against an unquoted variable or a path you have not just confirmed with the user.\n\n## Output\n\n```\nCanceled execution for spec: $spec_name\n\nLocation: $spec_path\nState before cancellation:\n- Phase: \u003Cphase>\n- Progress: \u003CtaskIndex>\u002F\u003CtotalTasks> tasks\n- Iterations: \u003CglobalIteration>\n\nCleanup:\n- [x] Removed .curdx-state.json\n- [x] Removed spec directory ($spec_path)\n- [x] Cleared current spec marker\n\nThe spec and all its files have been permanently removed.\n\nTo start a new spec:\n- Run \u002Fcurdx-flow:new \u003Cname>\n- Or \u002Fcurdx-flow:start \u003Cname> \u003Cgoal>\n```\n\n## If No Active Loop\n\nIf there's no `.curdx-state.json` but the spec directory exists, still confirm with the user first (same `AskUserQuestion`, mentioning that there's no active state — only the directory). On `Delete`, run the same cleanup and report:\n\n```\nNo active execution loop found for spec: $spec_name\n\nLocation: $spec_path\nCleanup:\n- [x] Removed spec directory ($spec_path)\n- [x] Cleared current spec marker\n\nThe spec has been removed.\n\nTo start a new spec:\n- Run \u002Fcurdx-flow:new \u003Cname>\n- Or \u002Fcurdx-flow:start \u003Cname> \u003Cgoal>\n```\n","# Cancel Execution\n\nYou are canceling the active execution loop, cleaning up state files, and removing the spec directory.\n\n**This is a destructive operation. You MUST get explicit user confirmation via `AskUserQuestion` before deleting anything.**\n\n## Multi-Directory Resolution\n\nThis command uses the plugin runtime for multi-root spec discovery:\n\n```bash\ncurdx-flow specs resolve [name-or-path]\ncurdx-flow specs find \u003Cname>\n```\n\n## Determine Target Spec\n\n1. If `$ARGUMENTS` contains input:\n   - If starts with `.\u002F` or `\u002F`: treat as full path, validate it exists\n   - Otherwise: treat as spec name, use `curdx-flow specs find \"$input\"` to search\n2. If no argument provided:\n   - Use `curdx-flow specs resolve` to get active spec path from `.current-spec`\n3. If no active spec and no argument, inform user there's nothing to cancel and STOP. Do not proceed.\n\n### Handle Disambiguation\n\nIf spec name exists in multiple roots (exit code 2 from find):\n\n```\nMultiple specs named '$name' found:\n1. .\u002Fspecs\u002F$name\n2. .\u002Fpackages\u002Fapi\u002Fspecs\u002F$name\n\nSpecify: \u002Fcurdx-flow:cancel .\u002Fpackages\u002Fapi\u002Fspecs\u002F$name\n```\n\nDo NOT automatically select one. User must specify the full path.\n\n## Check State\n\n1. Check if `$spec_path\u002F.curdx-state.json` exists (where `$spec_path` is the resolved full path)\n2. Read state if present (for the summary shown to the user during confirmation)\n\n## Gather Confirmation Context\n\nBefore asking the user to confirm, gather a short summary so the prompt is informative:\n\n```bash\n# Count tracked artifacts and any modified files inside the spec dir\nfind \"$spec_path\" -maxdepth 2 -type f -name '*.md' | wc -l         # artifact count\nfind \"$spec_path\" -type f | wc -l                                   # total file count\n```\n\nIf `.curdx-state.json` exists, capture:\n- `phase`\n- `taskIndex \u002F totalTasks`\n- `globalIteration`\n\n## MANDATORY: Confirm With User\n\nUse `AskUserQuestion` with a single question containing:\n\n- **question**: `Permanently delete spec '$spec_name' at '$spec_path'? This removes the spec directory and all its files. This cannot be undone.`\n- **header**: `Confirm delete`\n- **options**:\n  1. `Delete` — proceed with full cleanup. Include in the description: `phase=\u003Cphase>, progress=\u003CtaskIndex>\u002F\u003CtotalTasks>, files=\u003Ctotal file count>`.\n  2. `Cancel` — abort, change nothing. Description: `Keep the spec directory and state file intact.`\n\nIf the user picks `Cancel` (or any \"Other\" answer that isn't a clear confirmation), output:\n\n```\nCancellation aborted. Nothing was deleted.\nSpec preserved at: $spec_path\n```\n\nand STOP. Do not run any `rm` command.\n\nOnly proceed to the Cleanup section if the user explicitly chose `Delete`.\n\n## Cleanup\n\nAfter confirmation:\n\n1. Delete state file:\n   ```bash\n   rm -f \"$spec_path\u002F.curdx-state.json\"\n   ```\n\n2. Remove spec directory:\n   ```bash\n   rm -rf \"$spec_path\"\n   ```\n\n3. Clear current spec marker:\n   ```bash\n   rm -f .\u002Fspecs\u002F.current-spec\n   ```\n\n4. Update Spec Index (removes deleted spec from index):\n   ```bash\n   node \"${CLAUDE_PLUGIN_ROOT}\u002Fhooks\u002Fscripts\u002Fupdate-spec-index.mjs\" --quiet\n   ```\n\nQuote every `$spec_path` use in the `rm` commands. Never run `rm -rf` against an unquoted variable or a path you have not just confirmed with the user.\n\n## Output\n\n```\nCanceled execution for spec: $spec_name\n\nLocation: $spec_path\nState before cancellation:\n- Phase: \u003Cphase>\n- Progress: \u003CtaskIndex>\u002F\u003CtotalTasks> tasks\n- Iterations: \u003CglobalIteration>\n\nCleanup:\n- [x] Removed .curdx-state.json\n- [x] Removed spec directory ($spec_path)\n- [x] Cleared current spec marker\n\nThe spec and all its files have been permanently removed.\n\nTo start a new spec:\n- Run \u002Fcurdx-flow:new \u003Cname>\n- Or \u002Fcurdx-flow:start \u003Cname> \u003Cgoal>\n```\n\n## If No Active Loop\n\nIf there's no `.curdx-state.json` but the spec directory exists, still confirm with the user first (same `AskUserQuestion`, mentioning that there's no active state — only the directory). On `Delete`, run the same cleanup and report:\n\n```\nNo active execution loop found for spec: $spec_name\n\nLocation: $spec_path\nCleanup:\n- [x] Removed spec directory ($spec_path)\n- [x] Cleared current spec marker\n\nThe spec has been removed.\n\nTo start a new spec:\n- Run \u002Fcurdx-flow:new \u003Cname>\n- Or \u002Fcurdx-flow:start \u003Cname> \u003Cgoal>\n```\n",{"name":5,"description":7,"allowed-tools":42,"argument-hint":43,"disable-model-invocation":44},"Read Bash Agent AskUserQuestion","[spec-name-or-path]",true,"main","7357746802ae7a84cafa93b9dbffd138817b0290","plugins\u002Fcurdx-flow\u002Fskills\u002Fcancel",0,"https:\u002F\u002Fgithub.com\u002Fmugsun\u002Fcurdx-flow","https:\u002F\u002Fcurdx.org","https:\u002F\u002Fgithub.com\u002Fmugsun","📮 bydongxin@gmail.com","🧑‍💻 AI Builder & Software Engineer\r\n🚀 Turning ideas into software.          \r\n\r\n","2026-08-19 15:19:29",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":44},[57,60,63],{"tool":58,"command":59},"npx","npx skills add mugsun\u002Fcurdx-flow --skill cancel",{"tool":61,"command":62},"bunx","bunx skills add mugsun\u002Fcurdx-flow --skill cancel",{"tool":64,"command":65},"pnpm","pnpm dlx skills add mugsun\u002Fcurdx-flow --skill cancel","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmugsun\u002Fcurdx-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fcurdx-flow\u002Fskills\u002Fcancel\u002FSKILL.md",[],[69,78,95,108,121,130],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":76,"publishedAt":37},"01M71KDR5EJP6G4VWFCHNJ35PT","help","Fixture help skill","https:\u002F\u002Fgithub.com\u002Fmugsun\u002Fcurdx-flow\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fruntime-readiness\u002Fclaude-code-plugin-like\u002Fskills\u002Fhelp\u002FSKILL.md",[75],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[71,77],"fixture",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":37},"01M71KDNAVB000W3MZB1W7CMD8","verification-before-completion","Use when checking fixes, phase exits, completion evidence, or mock-heavy tests before claiming success.","https:\u002F\u002Fgithub.com\u002Fmugsun\u002Fcurdx-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fcurdx-flow\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[85,86,87,88,36,89,90,91,92,93,31,94,25],"verification","verification before completion","only","false","tasks","phase","evidence","fixes","tests","mock",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":102,"publishedAt":37},"01M71KDKFE975GFYRDC21H1NEE","triage","Use when a large feature should be decomposed into dependency-aware specs.","https:\u002F\u002Fgithub.com\u002Fmugsun\u002Fcurdx-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fcurdx-flow\u002Fskills\u002Ftriage\u002FSKILL.md",[101],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[97,103,34,104,105,30,106,33,28,36,31,107],"goal","feature","write","dependency","EPIC",{"skillNo":109,"name":89,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":114,"publishedAt":37},"01M71KDH7XFQJPKYZ0H9JDNSA5","Use when a spec has design.md and needs implementation tasks.","https:\u002F\u002Fgithub.com\u002Fmugsun\u002Fcurdx-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fcurdx-flow\u002Fskills\u002Ftasks\u002FSKILL.md",[113],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[89,115,24,33,116,31,117,118,119,36,28,30,105,120,34],"implementation","task","standard","design","auto","edit",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":128,"publishedAt":37},"01M71KDEV9G51MCXDQWPJH7QST","switch","Use when changing the active spec by name or path.","https:\u002F\u002Fgithub.com\u002Fmugsun\u002Fcurdx-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fcurdx-flow\u002Fskills\u002Fswitch\u002FSKILL.md",[127],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[123,28,129,34,31,36,32,33,30,24,105,35],"by name",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":137,"publishedAt":37},"01M71KDDJFRV09YZ08B3WJ39SC","status","Use when inspecting curdx-flow specs, active state, progress, or index status.","https:\u002F\u002Fgithub.com\u002Fmugsun\u002Fcurdx-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fcurdx-flow\u002Fskills\u002Fstatus\u002FSKILL.md",[136],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[132,34,31,36,28,25,138,32,139,30,26,140],"progress","update","index"]