[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KC60C9B0AT8KYHWSGVSAR2":3,"skill-same:01M6KC60C9B0AT8KYHWSGVSAR2":84},{"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":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M6KC60C9B0AT8KYHWSGVSAR2","refine",null,"Take a backlog item from idea to approved spec via Clarify → Research → Spec. Stops at spec; build takes it from there. Also preps for overnight.","charleshall888\u002Fcortex-command","charleshall888","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47426470?v=4","01M6KC1Z9S8HWSA07QDH85FYNE","Charlie Hall","01M6KC1ZDQNJX8EWA7KG5RK5E8",2,"MIT","https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Fplugins\u002Fcortex-core\u002Fskills\u002Frefine\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34],"spec","research","clarify","take","build","idea","backlog","via","it","at","for","2026-11-10 10:12:30",false,"---\nname: refine\ndescription: Take a backlog item from idea to approved spec via Clarify → Research → Spec. Stops at spec; build takes it from there. Also preps for overnight.\nargument-hint: \"\u003Ctopic>\"\n---\n\n# Refine\n\nClarify → Research → Spec. Ends at `status: refined` with a linked spec, ready for `\u002Fcortex-core:build`. Between phases, announce and continue without asking. Stop to ask only at the `\u003C!-- pause: -->` markers here and in the references.\n\n\u003C!-- pause: refine-empty-topic-prompt question -->\nTopic: $ARGUMENTS. Empty → ask for one first.\n\n## 1. Start\n\n```bash\ncortex-refine start \u003Cinput>\n```\n\nUse the fields it returns as they are. Keep `backend`, `lifecycle_slug`, and `backlog_filename_slug` for the whole run — every write-back needs them.\n\n- `ready` → continue. `needs-slug` (Context B: no matching item) → make a short kebab slug, announce it, re-run with `--lifecycle-slug`. Exit 2 → several items match; the candidates are on stderr, let the user pick. Exit 70 → report the error and stop.\n- `epic_research` \u002F `epic_spec` set → read them as background, show any `warning`, add a `## Epic Reference` link section to `research.md` and a preamble note to `spec.md`. Never copy epic content in — it covers every child ticket.\n- `resume`: `complete` → announce and skip to §5. Re-run only if the user asks; that overwrites the spec and resets `status: in_progress`. `research` → a spec exists without research: warn that overnight needs both, skip Clarify, run Research. `spec` → resume at Spec. `clarify` → start there.\n\n## 2. Clarify\n\nFollow `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fclarify.md`; carry its §5 outputs forward.\n\nWrite complexity and criticality back right away (Context A only). Every backlog write here uses this **3-arm routing** on `backend`: `cortex-backlog` → `cortex-update-item {backlog-filename-slug} --complexity {value} --criticality {value}`; `none` → skip and say so in one line; external → try per `backlog.instructions`, and show the values if it fails. Exit 2 → the ambiguous-slug rule in `${CLAUDE_SKILL_DIR}\u002F..\u002Fbuild\u002Freferences\u002Fbacklog-writeback.md`.\n\n**Stop at `simple`** — no lifecycle needed. Say so and hand back to direct implementation (dev rule 4). Continue only at `moderate` or `complex`.\n\n## 3. Research\n\nFollow `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fresearch-phase.md`. Then re-check the tier against Clarify's rubric. Only if it changed: `cortex-lifecycle-event complexity-override --feature \u003Cfeature> --from \u003Cold> --to \u003Cnew> --reason \"{tag}: \u003Cone line>\"`. The reason points to the argument in `research.md`; the tag is optional, one of `reversibility:` \u002F `exposure:` \u002F `consequence:` \u002F `other:`.\n\n## 4. Spec\n\nReconcile first. The lifecycle state still holds pre-Clarify defaults, and specify.md §3b's critical-review check reads the reconciled values:\n\n```bash\n# Context A — reads values from backlog frontmatter\ncortex-refine reconcile-clarify --backend {resolved} --lifecycle-slug {lifecycle-slug} --backlog-slug {backlog-filename-slug} --criticality-reason \"{tag}: {why}\" --tier-reason \"{tag}: {why}\"\n# Context B — passes Clarify's computed values\ncortex-refine reconcile-clarify --backend {resolved} --lifecycle-slug {lifecycle-slug} --complexity {value} --criticality {value} --criticality-reason \"{tag}: {why}\" --tier-reason \"{tag}: {why}\"\n```\n\nThe `--*-reason` flags are optional one-liners reusing Clarify's reasoning. Omit them rather than use placeholders.\n\nThen follow `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fspecify.md` in full; its orchestrator-review path is `${CLAUDE_SKILL_DIR}\u002F..\u002Fbuild\u002Freferences\u002Forchestrator-review.md`.\n\nThe spec-approve verb does the approval write-back itself (same 3-arm routing). Pass it `--backend {resolved}`, `--backlog-file {backlog-filename-slug}` (`\"\"` in Context B), `--spec-path cortex\u002Flifecycle\u002F{lifecycle-slug}\u002Fspec.md`, `--no-emit-transition` (refine stops at spec), and areas: `--areas a b` to set, `--clear-areas` to empty, omit to keep. Areas name the main subsystem changed (standard names: `overnight-runner`, `backlog`, `skills`, `lifecycle`, `hooks`, `report`, `tests`, `docs`); 4+ with no main one → clear.\n\n## 5. Finish\n\n```bash\ncortex-lifecycle-stage-artifacts --phase refine --feature {lifecycle-slug} --commit-subject \"Refine {feature}: research and spec\"\n```\n\nUse `Refine {feature}: cancelled at spec approval` when `spec.md` is absent. `config_disabled` → show `message`. `nothing_staged` → nothing to do. `staged` → the verb committed; show `commit.sha`, or on `failed` show `commit.message` and stop.\n\nAnnounce the item, lifecycle directory, artifacts, fields written (`complexity`, `criticality`, `status: refined`, `spec`, `areas`), and that `\u002Fcortex-core:build {lifecycle-slug}` is next.\n","# Refine\n\nClarify → Research → Spec. Ends at `status: refined` with a linked spec, ready for `\u002Fcortex-core:build`. Between phases, announce and continue without asking. Stop to ask only at the `\u003C!-- pause: -->` markers here and in the references.\n\n\u003C!-- pause: refine-empty-topic-prompt question -->\nTopic: $ARGUMENTS. Empty → ask for one first.\n\n## 1. Start\n\n```bash\ncortex-refine start \u003Cinput>\n```\n\nUse the fields it returns as they are. Keep `backend`, `lifecycle_slug`, and `backlog_filename_slug` for the whole run — every write-back needs them.\n\n- `ready` → continue. `needs-slug` (Context B: no matching item) → make a short kebab slug, announce it, re-run with `--lifecycle-slug`. Exit 2 → several items match; the candidates are on stderr, let the user pick. Exit 70 → report the error and stop.\n- `epic_research` \u002F `epic_spec` set → read them as background, show any `warning`, add a `## Epic Reference` link section to `research.md` and a preamble note to `spec.md`. Never copy epic content in — it covers every child ticket.\n- `resume`: `complete` → announce and skip to §5. Re-run only if the user asks; that overwrites the spec and resets `status: in_progress`. `research` → a spec exists without research: warn that overnight needs both, skip Clarify, run Research. `spec` → resume at Spec. `clarify` → start there.\n\n## 2. Clarify\n\nFollow `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fclarify.md`; carry its §5 outputs forward.\n\nWrite complexity and criticality back right away (Context A only). Every backlog write here uses this **3-arm routing** on `backend`: `cortex-backlog` → `cortex-update-item {backlog-filename-slug} --complexity {value} --criticality {value}`; `none` → skip and say so in one line; external → try per `backlog.instructions`, and show the values if it fails. Exit 2 → the ambiguous-slug rule in `${CLAUDE_SKILL_DIR}\u002F..\u002Fbuild\u002Freferences\u002Fbacklog-writeback.md`.\n\n**Stop at `simple`** — no lifecycle needed. Say so and hand back to direct implementation (dev rule 4). Continue only at `moderate` or `complex`.\n\n## 3. Research\n\nFollow `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fresearch-phase.md`. Then re-check the tier against Clarify's rubric. Only if it changed: `cortex-lifecycle-event complexity-override --feature \u003Cfeature> --from \u003Cold> --to \u003Cnew> --reason \"{tag}: \u003Cone line>\"`. The reason points to the argument in `research.md`; the tag is optional, one of `reversibility:` \u002F `exposure:` \u002F `consequence:` \u002F `other:`.\n\n## 4. Spec\n\nReconcile first. The lifecycle state still holds pre-Clarify defaults, and specify.md §3b's critical-review check reads the reconciled values:\n\n```bash\n# Context A — reads values from backlog frontmatter\ncortex-refine reconcile-clarify --backend {resolved} --lifecycle-slug {lifecycle-slug} --backlog-slug {backlog-filename-slug} --criticality-reason \"{tag}: {why}\" --tier-reason \"{tag}: {why}\"\n# Context B — passes Clarify's computed values\ncortex-refine reconcile-clarify --backend {resolved} --lifecycle-slug {lifecycle-slug} --complexity {value} --criticality {value} --criticality-reason \"{tag}: {why}\" --tier-reason \"{tag}: {why}\"\n```\n\nThe `--*-reason` flags are optional one-liners reusing Clarify's reasoning. Omit them rather than use placeholders.\n\nThen follow `${CLAUDE_SKILL_DIR}\u002Freferences\u002Fspecify.md` in full; its orchestrator-review path is `${CLAUDE_SKILL_DIR}\u002F..\u002Fbuild\u002Freferences\u002Forchestrator-review.md`.\n\nThe spec-approve verb does the approval write-back itself (same 3-arm routing). Pass it `--backend {resolved}`, `--backlog-file {backlog-filename-slug}` (`\"\"` in Context B), `--spec-path cortex\u002Flifecycle\u002F{lifecycle-slug}\u002Fspec.md`, `--no-emit-transition` (refine stops at spec), and areas: `--areas a b` to set, `--clear-areas` to empty, omit to keep. Areas name the main subsystem changed (standard names: `overnight-runner`, `backlog`, `skills`, `lifecycle`, `hooks`, `report`, `tests`, `docs`); 4+ with no main one → clear.\n\n## 5. Finish\n\n```bash\ncortex-lifecycle-stage-artifacts --phase refine --feature {lifecycle-slug} --commit-subject \"Refine {feature}: research and spec\"\n```\n\nUse `Refine {feature}: cancelled at spec approval` when `spec.md` is absent. `config_disabled` → show `message`. `nothing_staged` → nothing to do. `staged` → the verb committed; show `commit.sha`, or on `failed` show `commit.message` and stop.\n\nAnnounce the item, lifecycle directory, artifacts, fields written (`complexity`, `criticality`, `status: refined`, `spec`, `areas`), and that `\u002Fcortex-core:build {lifecycle-slug}` is next.\n",{"name":5,"description":7,"argument-hint":40},"\u003Ctopic>","main","3aac0752f0f020bd953cfed5bd29244d1c8f5f4f","plugins\u002Fcortex-core\u002Fskills\u002Frefine",0,"https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command","https:\u002F\u002Fgithub.com\u002Fcharleshall888","2026-10-28 20:32:05",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add charleshall888\u002Fcortex-command --skill refine",{"tool":54,"command":55},"bunx","bunx skills add charleshall888\u002Fcortex-command --skill refine",{"tool":57,"command":58},"pnpm","pnpm dlx skills add charleshall888\u002Fcortex-command --skill refine","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Fplugins\u002Fcortex-core\u002Fskills\u002Frefine\u002FSKILL.md",true,[62,68,72,76,80],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"references\u002Fclarify-critic.md","REFERENCE","参考文档",3914,"https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Fplugins\u002Fcortex-core\u002Fskills\u002Frefine\u002Freferences\u002Fclarify-critic.md",{"path":69,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fclarify.md",3594,"https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Fplugins\u002Fcortex-core\u002Fskills\u002Frefine\u002Freferences\u002Fclarify.md",{"path":73,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fresearch-phase.md",1455,"https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Fplugins\u002Fcortex-core\u002Fskills\u002Frefine\u002Freferences\u002Fresearch-phase.md",{"path":77,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fsize-pin.txt",6,"https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Fplugins\u002Fcortex-core\u002Fskills\u002Frefine\u002Freferences\u002Fsize-pin.txt",{"path":81,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fspecify.md",7744,"https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Fplugins\u002Fcortex-core\u002Fskills\u002Frefine\u002Freferences\u002Fspecify.md",[85,100,110,123,135,147],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":35},"01M6KCB4DH17601DR5QA7WYG28","over-cap-no-marker","Synthetic fixture with 501 lines and no size-budget marker.","https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill_size_budget\u002Fover-cap-no-marker\u002FSKILL.md",[],[92,93,94,95,96,97,98,99],"over cap no marker","cap","marker","fixture","Budget","synthetic","with","size",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":35},"01M6KCB0P08NTQBZVYP6Q0J74M","invalid-marker","Synthetic fixture exercising the invalid-marker failure path.","https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill_size_budget\u002Finvalid-marker\u002FSKILL.md",[],[107,94,108,109,97,95],"invalid","invalid marker","path",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":35},"01M6KCAXS26V6DS7FTG7Z3D08V","boundary-29-char-reason","Synthetic fixture with marker rationale at the regex boundary (29 chars, just under min).","https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill_size_budget\u002Fboundary-29-char-reason\u002FSKILL.md",[],[117,118,119,97,120,33,94,98,121,95,122],"reason","boundary 29 char reason","boundary","rationale","regex","just",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":35},"01M6KCARRB8SCQJNQTCCZY7WS9","valid-with-inputs","A skill that declares one input variable and uses it in the body.","https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fcontracts\u002Fvalid-with-inputs\u002FSKILL.md",[],[130,98,131,132,32,133,134],"valid with inputs","valid","operate","STRING","input",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":35},"01M6KCAP369CPN1N3G8ZG95D6J","valid-minimal","A minimal skill with only the required fields present.","https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fcontracts\u002Fvalid-minimal\u002FSKILL.md",[],[142,143,131,98,144,145,146],"minimal","valid minimal","present","only","minimal skill",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":35},"01M6KCAJJXSZJ9JQM730JWFSMF","invalid-undeclared-variable","A skill whose body uses a variable not declared in inputs.","https:\u002F\u002Fgithub.com\u002Fcharleshall888\u002Fcortex-command\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fcontracts\u002Finvalid-undeclared-variable\u002FSKILL.md",[],[107,154,133],"invalid undeclared variable"]