@zhuan-ai/zhuanspec 2.16.0 → 2.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +17 -0
- package/dist/commands/progress.d.ts +12 -0
- package/dist/commands/progress.js +43 -2
- package/dist/core/corrections/select-candidates.d.ts +58 -0
- package/dist/core/corrections/select-candidates.js +357 -0
- package/dist/core/hooks/collect-knowledge.js +14 -5
- package/dist/core/hooks/post-archive.js +25 -13
- package/dist/core/hooks/record-progress.d.ts +1 -0
- package/dist/core/hooks/record-progress.js +16 -0
- package/dist/core/hooks/summarize.js +18 -19
- package/dist/core/init.d.ts +5 -0
- package/dist/core/init.js +165 -7
- package/dist/core/templates/agents-template.d.ts +1 -1
- package/dist/core/templates/agents-template.js +6 -21
- package/dist/core/templates/slash-command-templates.js +72 -46
- package/dist/utils/phase-utils.js +5 -0
- package/package.json +22 -20
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const agentsTemplate = "# ZhuanSpec \u4F7F\u7528\u8BF4\u660E\n\n\u9762\u5411\u4F7F\u7528 ZhuanSpec \u8FDB\u884C\u89C4\u8303\u9A71\u52A8\u5F00\u53D1\u7684 AI \u7F16\u7A0B\u52A9\u624B\u7684\u8BF4\u660E\u6587\u6863\u3002\n\n---\n\n## \u26A1 \u4E09\u6761\u94C1\u5F8B\uFF08\u4E0D\u53EF\u8FDD\u53CD\uFF09\n\n> \u4E09\u6761\u94C1\u5F8B\u662F ZhuanSpec \u5DE5\u4F5C\u6D41\u7684\u6838\u5FC3\u7EA6\u675F\uFF0C\u4EFB\u4F55\u60C5\u51B5\u4E0B\u90FD\u5FC5\u987B\u9075\u5B88\u3002\n\n| \u94C1\u5F8B | \u542B\u4E49 | \u8FDD\u53CD\u540E\u679C |\n|------|------|---------|\n| **No Spec, No Code** | \u6CA1\u6709\u6587\u6863\u4E0D\u51C6\u5199\u4EE3\u7801 | Propose \u9636\u6BB5\u4EA7\u51FA spec \u624D\u80FD\u8FDB\u5165 Apply |\n| **Spec is Truth** | \u6587\u6863\u4E0E\u4EE3\u7801\u51B2\u7A81\u65F6\uFF0C\u9519\u7684\u4E00\u5B9A\u662F\u4EE3\u7801 | \u5F52\u6863\u65F6\u5F3A\u5236\u6821\u9A8C Spec-Code \u4E00\u81F4\u6027 |\n| **Reverse Sync** | \u53D1\u73B0\u504F\u5DEE\u5148\u4FEE Spec\uFF0C\u518D\u4FEE\u4EE3\u7801 | Apply \u9636\u6BB5\u6BCF\u5B8C\u6210\u4E00\u4E2A Task \u505A\u504F\u5DEE\u68C0\u6D4B |\n\n### \u94C1\u5F8B\u6267\u884C\u673A\u5236\n\n**\u94C1\u5F8B\u4E00\u6267\u884C**\uFF1A\n- Propose \u9636\u6BB5\u521B\u5EFA\u63D0\u6848\u540E\uFF0C\u5FC5\u987B\u7B49\u5F85\u7528\u6237\u660E\u786E\u6279\u51C6\uFF08\u56DE\u590D\"Plan Approved\"\u6216\u9009\u62E9\"\u6279\u51C6\uFF0C\u8FDB\u5165\u5B9E\u65BD\u9636\u6BB5\"\uFF09\u624D\u80FD\u8FDB\u5165 Apply\n- \u81EA\u52A8\u9A8C\u8BC1\u901A\u8FC7\u540E\uFF0C\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\uFF08AskUserQuestion\uFF09\u5F39\u51FA\u786E\u8BA4\u5BF9\u8BDD\u6846\n- \u672A\u6279\u51C6\u524D\uFF0CPreToolUse Hook \u963B\u65AD\u6240\u6709\u4EE3\u7801\u4FEE\u6539\u64CD\u4F5C\n\n**\u94C1\u5F8B\u4E8C\u6267\u884C**\uFF1A\n- Archive \u9636\u6BB5\u524D\uFF0C\u5FC5\u987B\u9A8C\u8BC1\u5F52\u6863\u5185\u5BB9\u4E0E\u4EE3\u7801\u5B9E\u73B0\u4E00\u81F4\n- \u5982\u4E0D\u4E00\u81F4\uFF0C\u5FC5\u987B\u5148\u66F4\u65B0\u5F52\u6863\u5185\u5BB9\uFF0C\u518D\u5B8C\u6210\u5F52\u6863\n- PreArchive Hook \u68C0\u67E5 Spec-Code \u4E00\u81F4\u6027\n\n**\u94C1\u5F8B\u4E09\u6267\u884C**\uFF1A\n- Apply \u9636\u6BB5\u6BCF\u6B21 Write/Edit \u64CD\u4F5C\u524D\uFF0CPreToolUse Hook \u68C0\u6D4B\u504F\u79BB\n- **\u504F\u79BB\u68C0\u6D4B\u89E6\u53D1\u673A\u5236**\uFF1A\n - \u63D0\u6848\u8303\u56F4\u5916\u6587\u4EF6\u4FEE\u6539\u65F6\u81EA\u52A8\u89E6\u53D1\n - \u7528\u6237\u8F93\u5165\u7EA0\u6B63\u5173\u952E\u8BCD\uFF08\"\u4E0D\u5BF9\"\u3001\"\u9519\u4E86\"\u3001\"\u8FD9\u91CC\u5E94\u8BE5\u662F\"\u7B49\uFF09\u65F6\u81EA\u52A8\u89E6\u53D1\n - \u901A\u8FC7\u8BFB\u53D6 `progress.json` \u7684 `phase` \u5B57\u6BB5\u5224\u65AD\u5F53\u524D\u9636\u6BB5\n- \u5982\u679C\u4FEE\u6539\u6587\u4EF6\u4E0D\u5728\u63D0\u6848\u8303\u56F4\u5185\uFF0C\u89E6\u53D1\u504F\u79BB\u5904\u7406\u6D41\u7A0B\uFF1A\n 1. \u5F39\u51FA\u9009\u9879\u5F0F\u4EA4\u4E92\uFF1A\u66F4\u65B0\u63D0\u6848\u540E\u7EE7\u7EED / Bug\u4FEE\u590D\u8C41\u514D / \u53D6\u6D88\u4FEE\u6539\n 2. \u7528\u6237\u9009\u62E9\"\u66F4\u65B0\u63D0\u6848\u540E\u7EE7\u7EED\" \u2192 AI \u8FDB\u5165 Propose \u6A21\u5F0F \u2192 \u81EA\u52A8\u66F4\u65B0 proposal.md \u548C tasks.md \u2192 `zhuanspec validate --auto-fix` \u2192 \u8FD4\u56DE Apply \u6267\u884C\u539F\u4FEE\u6539\n 3. \u7528\u6237\u9009\u62E9\"Bug\u4FEE\u590D\u8C41\u514D\" \u2192 \u6807\u8BB0\u4E3A Bug \u4FEE\u590D \u2192 \u5141\u8BB8\u4FEE\u6539\uFF0C\u8DF3\u8FC7\u63D0\u6848\u6D41\u7A0B\n 4. \u7528\u6237\u9009\u62E9\"\u53D6\u6D88\" \u2192 \u4E0D\u6267\u884C\u4FEE\u6539 \u2192 \u7EE7\u7EED\u539F\u4EFB\u52A1\n- **\u504F\u79BB\u4FEE\u6B63\u6D41\u7A0B**\uFF08\u7528\u6237\u7EA0\u6B63\u65F6\uFF09\uFF1A\n 1. \u5148\u4FEE\u6539 spec \u6587\u4EF6\uFF0C\u5B9E\u65F6\u540C\u6B65\u7528\u6237\u786E\u8BA4\n 2. \u7528\u6237\u786E\u8BA4\u540E\u4FEE\u6539\u4EE3\u7801\uFF0C\u5B8C\u6210\u540E\u9A8C\u8BC1\n 3. \u7528\u6237\u786E\u8BA4\u65E0\u8BEF\u540E\u89E6\u53D1\u77E5\u8BC6\u6C89\u6DC0\n\n### AI \u81EA\u7531\u5EA6\u63A7\u5236\u77E9\u9635\n\n| \u9636\u6BB5 | \u81EA\u7531\u5EA6 | \u5141\u8BB8\u884C\u4E3A | \u7981\u6B62\u884C\u4E3A |\n|------|--------|---------|---------|\n| **Propose** | \u9AD8 | \u63A2\u7D22\u4EE3\u7801\u3001\u8BBE\u8BA1\u65B9\u6848\u3001\u63D0\u95EE\u6F84\u6E05 | \u7F16\u5199\u4EFB\u4F55\u4EE3\u7801 |\n| **Apply** | \u96F6 | \u4E25\u683C\u6309 tasks.md \u65BD\u5DE5 | \u8D85\u51FA\u63D0\u6848\u8303\u56F4\u4FEE\u6539\u3001\u81EA\u884C\u6DFB\u52A0\u4EFB\u52A1 |\n| **Review** | \u4E2D | \u9A8C\u8BC1\u5B9E\u73B0\u3001\u751F\u6210\u6D4B\u8BD5\u3001\u5BA1\u67E5\u4EE3\u7801 | \u4FEE\u6539\u529F\u80FD\u4EE3\u7801 |\n| **Archive** | \u4F4E | \u5408\u5E76\u89C4\u8303\u3001\u751F\u6210\u6458\u8981 | \u4FEE\u6539\u5DF2\u5F52\u6863\u5185\u5BB9 |\n\n---\n\n## \u77E5\u8BC6\u5E93\u68C0\u67E5\n\n**\u5DE5\u4F5C\u533A\u8FB9\u754C\uFF08\u5F3A\u5236\uFF09**\uFF1A\u67E5\u627E\u6587\u6863\u3001\u68C0\u7D22\u5DE5\u7A0B\u4EE3\u7801\u3001\u8BFB\u53D6 `.llm-wiki`\u3001\u6267\u884C grep/glob/ls \u65F6\uFF0C\u8303\u56F4\u5FC5\u987B\u9650\u5B9A\u5728\u5F53\u524D ZhuanSpec \u5DE5\u4F5C\u533A\u5185\u3002\u7981\u6B62\u4F7F\u7528\u8DE8\u4E0A\u7EA7\u76EE\u5F55\u7684 glob\uFF08\u5982 `../**`\uFF09\u3001\u4E0A\u7EA7\u76EE\u5F55\u7EDD\u5BF9\u8DEF\u5F84\u6216\u624B\u52A8\u62FC\u63A5\u5230\u5DE5\u4F5C\u533A\u5916\u8DEF\u5F84\u3002Glob \u8FD4\u56DE\u76F8\u5BF9\u8DEF\u5F84\u65F6\uFF0C\u5FC5\u987B\u4EE5\u672C\u6B21\u5DE5\u5177\u8C03\u7528\u7684 `path` \u53C2\u6570\u4F5C\u4E3A\u57FA\u51C6\u62FC\u63A5\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u4E0D\u5F97\u8BEF\u89E3\u4E3A\u5F53\u524D\u76EE\u5F55\u6216\u4E0A\u7EA7\u76EE\u5F55\u3002\n\n**\u5728\u4EFB\u4F55\u9636\u6BB5\u5F00\u59CB\u524D\uFF0C\u5FC5\u987B\u5148\u68C0\u67E5\u77E5\u8BC6\u5E93\uFF1B\u5728\u9700\u8981\u68C0\u7D22\u5DE5\u7A0B\u4EE3\u7801\u524D\uFF0C\u5FC5\u987B\u5148\u68C0\u67E5 `.llm-wiki/`\uFF1A**\n\n| \u64CD\u4F5C | \u547D\u4EE4 | \u76EE\u7684 |\n|------|------|------|\n| \u641C\u7D22\u9677\u9631 | `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/troubleshooting/` | \u907F\u514D\u91CD\u590D\u8E29\u5751 |\n| \u641C\u7D22\u6700\u4F73\u5B9E\u8DF5 | `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/best-practices/` | \u5B66\u4E60\u6210\u529F\u7ECF\u9A8C |\n| \u641C\u7D22\u9690\u5F0F\u7EA6\u5B9A | `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/implicit-conventions/` | \u7406\u89E3\u56E2\u961F\u7EA6\u5B9A |\n| \u9605\u8BFB\u77E5\u8BC6\u7D22\u5F15 | `cat zhuanspec/knowledge/index.md` | \u4E86\u89E3\u9879\u76EE\u7EA7\u77E5\u8BC6\u6458\u8981 |\n| \u68C0\u67E5 llm-wiki | `cat [service]/.llm-wiki/index.md` | \u4ECE\u5404\u5DE5\u7A0B\u670D\u52A1\u76EE\u5F55\u8BFB\u53D6 llmwiki \u68C0\u7D22\u6307\u5F15\u4E0E token |\n| \u8BED\u4E49\u68C0\u7D22\u529F\u80FD | `llmwiki query -e --token <token> \"[\u5173\u952E\u8BCD]\"` | \u4F18\u5148\u505A\u529F\u80FD/\u5B9E\u73B0\u4F4D\u7F6E\u7684\u5411\u91CF\u68C0\u7D22\uFF0Ctoken \u6765\u81EA `[service]/.llm-wiki/index.md` |\n| \u7ED3\u679C\u5339\u914D\u8BB0\u5F55 | `append [service]/.llm-wiki/result.log` | \u6BCF\u6B21 llmwiki query \u540E\u5224\u65AD\u7ED3\u679C\u662F\u5426\u5339\u914D\u5F53\u524D\u8BF7\u6C42\u8BC9\u6C42\uFF0C\u5E76\u8BB0\u5F55\u5224\u65AD\u7ED3\u8BBA |\n| \u77E5\u8BC6\u70B9\u5B9A\u4F4D | `llmwiki knowledge points \"[\u5173\u952E\u8BCD]\"` | \u4F18\u5148\u5B9A\u4F4D\u914D\u7F6E\u7C7B\u3001\u6570\u636E\u6A21\u578B\u7C7B\u3001\u5173\u952E\u77E5\u8BC6\u70B9 |\n\n**\u77E5\u8BC6\u5E93\u4F5C\u7528**\uFF1A\n- \u51CF\u5C11\u91CD\u590D\u8E29\u5751\uFF0C\u79EF\u7D2F\u9879\u76EE\u7ECF\u9A8C\n- \u63D0\u4F9B\u56E2\u961F\u9690\u5F0F\u7EA6\u5B9A\u7684\u4E66\u9762\u8BB0\u5F55\n- \u52A0\u901F\u65B0\u6210\u5458\u878D\u5165\u548C\u77E5\u8BC6\u4F20\u627F\n- \u5728\u9879\u76EE\u63D0\u4F9B `.llm-wiki/` \u65F6\uFF0C\u4F18\u5148\u901A\u8FC7 llmwiki \u7F29\u5C0F\u4EE3\u7801\u5B9A\u4F4D\u8303\u56F4\uFF0C\u53EA\u6709\u672A\u547D\u4E2D\u65F6\u624D\u9000\u56DE grep/glob\n\n---\n\n## \u5FEB\u901F\u68C0\u67E5\u6E05\u5355\n\n- \u641C\u7D22\u73B0\u6709\u5DE5\u4F5C\uFF1A`zhuanspec spec list --long`\u3001`zhuanspec list`\uFF08\u4EC5\u4F7F\u7528 `rg` \u8FDB\u884C\u5168\u6587\u641C\u7D22\uFF09\n- **\u68C0\u67E5\u77E5\u8BC6\u5E93**\uFF1A`rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u9677\u9631\u548C\u6700\u4F73\u5B9E\u8DF5\n- \u786E\u5B9A\u8303\u56F4\uFF1A\u65B0\u529F\u80FD vs \u4FEE\u6539\u73B0\u6709\u529F\u80FD\n- \u9009\u62E9\u552F\u4E00\u7684 `change-id`\uFF1Akebab-case \u683C\u5F0F\uFF0C\u52A8\u8BCD\u5F00\u5934\uFF08`add-`\u3001`update-`\u3001`remove-`\u3001`refactor-`\uFF09\n- \u642D\u5EFA\u7ED3\u6784\uFF1A`proposal.md`\u3001`tasks.md`\u3001`design.md`\uFF0C\u4EE5\u53CA\u6BCF\u4E2A\u53D7\u5F71\u54CD\u529F\u80FD\u7684\u89C4\u8303\u589E\u91CF\n- \u7F16\u5199\u589E\u91CF\uFF1A\u4F7F\u7528 `## ADDED|MODIFIED|REMOVED|RENAMED Requirements`\uFF1B\u6BCF\u4E2A\u8981\u6C42\u81F3\u5C11\u5305\u542B\u4E00\u4E2A `#### Scenario:`\n- \u9A8C\u8BC1\uFF1A\u8FD0\u884C `zhuanspec validate [change-id] --strict` \u5E76\u4FEE\u590D\u95EE\u9898\n- \u8BF7\u6C42\u6279\u51C6\uFF1A\u5728\u63D0\u6848\u83B7\u5F97\u6279\u51C6\u4E4B\u524D\u4E0D\u8981\u5F00\u59CB\u5B9E\u65BD\n\n## \u8FDB\u5EA6\u6C47\u62A5\u7EA6\u5B9A\n\nApply \u9636\u6BB5\u6267\u884C\u6BCF\u4E2A\u4EFB\u52A1\u65F6\uFF0C\u5FC5\u987B\u6309\u4EE5\u4E0B\u683C\u5F0F\u8F93\u51FA\u8FDB\u5EA6\uFF1A\n\n**\u4EFB\u52A1\u5F00\u59CB\u65F6**\uFF1A\n```\n\u2501\u2501\u2501 \uD83D\uDE80 \u5F00\u59CB\u4EFB\u52A1 [X.Y/N] \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u4EFB\u52A1: [\u4EFB\u52A1\u63CF\u8FF0]\nWave: W/N | Phase: Apply\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n```\n\n**\u4EFB\u52A1\u5B8C\u6210\u540E**\uFF1A\n```\n\u2501\u2501\u2501 \u2705 \u4EFB\u52A1\u5B8C\u6210 [X.Y/N] \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u5DF2\u4FEE\u6539: [\u6587\u4EF6\u5217\u8868]\n\u4E0B\u4E00\u4E2A: [\u4E0B\u4E00\u4EFB\u52A1ID]\n\u6574\u4F53\u8FDB\u5EA6: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 XX.X%\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n```\n\n**\u8FDB\u5EA6\u6761\u683C\u5F0F**\uFF1A\n- \u4F7F\u7528 12 \u4E2A block \u5B57\u7B26\uFF08\u2588 \u548C \u2591\uFF09\n- \u8FDB\u5EA6\u767E\u5206\u6BD4 = (\u5DF2\u5B8C\u6210\u4EFB\u52A1\u6570 / \u603B\u4EFB\u52A1\u6570) \u00D7 100\n- \u4FDD\u7559 1 \u4F4D\u5C0F\u6570\n\n**\u793A\u4F8B**\uFF1A\n- 3/8 \u5B8C\u6210 \u2192 `\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591 37.5%`\n- 6/8 \u5B8C\u6210 \u2192 `\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 75.0%`\n\n---\n\n## \u56DB\u9636\u6BB5\u5DE5\u4F5C\u6D41\n\n### \u9636\u6BB5 1\uFF1A\u521B\u5EFA\u53D8\u66F4\n\u5728\u4EE5\u4E0B\u60C5\u51B5\u4E0B\u521B\u5EFA\u63D0\u6848\uFF1A\n- \u6DFB\u52A0\u529F\u80FD\u6216\u7279\u6027\n- \u8FDB\u884C\u7834\u574F\u6027\u66F4\u6539\uFF08API\u3001schema\uFF09\n- \u66F4\u6539\u67B6\u6784\u6216\u6A21\u5F0F\n- \u4F18\u5316\u6027\u80FD\uFF08\u6539\u53D8\u884C\u4E3A\uFF09\n- \u66F4\u65B0\u5B89\u5168\u6A21\u5F0F\n\n\u89E6\u53D1\u8BCD\u793A\u4F8B\uFF1A\n- \"\u5E2E\u6211\u521B\u5EFA\u4E00\u4E2A\u53D8\u66F4\u63D0\u6848\"\n- \"\u5E2E\u6211\u89C4\u5212\u4E00\u4E2A\u53D8\u66F4\"\n- \"\u5E2E\u6211\u521B\u5EFA\u4E00\u4E2A\u63D0\u6848\"\n- \"\u6211\u60F3\u521B\u5EFA\u4E00\u4E2A\u89C4\u8303\u63D0\u6848\"\n- \"\u6211\u60F3\u521B\u5EFA\u4E00\u4E2A\u89C4\u8303\"\n\n\u5BBD\u677E\u5339\u914D\u6307\u5BFC\uFF1A\n- \u5305\u542B\u4EE5\u4E0B\u4E4B\u4E00\uFF1A`proposal`\u3001`change`\u3001`spec`\n- \u4E0E\u4EE5\u4E0B\u4E4B\u4E00\u7EC4\u5408\uFF1A`create`\u3001`plan`\u3001`make`\u3001`start`\u3001`help`\n\n\u8DF3\u8FC7\u63D0\u6848\u7684\u60C5\u51B5\uFF1A\n- Bug \u4FEE\u590D\uFF08\u6062\u590D\u9884\u671F\u884C\u4E3A\uFF09\n- \u62FC\u5199\u9519\u8BEF\u3001\u683C\u5F0F\u3001\u6CE8\u91CA\n- \u4F9D\u8D56\u66F4\u65B0\uFF08\u975E\u7834\u574F\u6027\uFF09\n- \u914D\u7F6E\u66F4\u6539\n- \u73B0\u6709\u884C\u4E3A\u7684\u6D4B\u8BD5\n\n**\u5DE5\u4F5C\u6D41**\n0. **\u68C0\u67E5\u77E5\u8BC6\u5E93\u3001\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6\u5E76\u5BA1\u67E5\u9879\u76EE**\uFF1A\n - \u8FD0\u884C `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u9677\u9631\u548C\u6700\u4F73\u5B9E\u8DF5\uFF0C\u907F\u514D\u91CD\u590D\u8E29\u5751\n - \u9605\u8BFB `zhuanspec/knowledge/index.md` \u4E86\u89E3\u9879\u76EE\u7EA7\u77E5\u8BC6\u6458\u8981\n - **\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6**\uFF1A\u8C03\u7528 `@skill:load-project-knowledge` \u8FDB\u884C\u6E10\u8FDB\u5F0F\u52A0\u8F7D\uFF1A\n * \u8F93\u5165\uFF1Adomain\uFF08\u5F53\u524D\u9879\u76EE\uFF09\u3001keywords\uFF08\u4ECE\u9700\u6C42\u63CF\u8FF0\u63D0\u53D6\uFF09\n * \u83B7\u53D6\uFF1Amatched_services\uFF08\u6D89\u53CA\u7684\u670D\u52A1\u5217\u8868\uFF09\u3001search_priority\uFF08\u68C0\u7D22\u4F18\u5148\u8DEF\u5F84\uFF09\u3001architecture_constraints\uFF08\u67B6\u6784\u7EA6\u675F\uFF09\n * \u4F7F\u7528\uFF1A\u540E\u7EED\u4EE3\u7801\u5B9A\u4F4D\u4F7F\u7528 search_priority \u9650\u5B9A\u8303\u56F4\uFF0C\u65B9\u6848\u8BBE\u8BA1\u68C0\u67E5 architecture_constraints\n * \u517C\u5BB9\u7B56\u7565\uFF1A\u82E5\u672A\u627E\u5230 project.md \u6216\u5173\u952E\u8BCD\u65E0\u5339\u914D\uFF0C\u8F93\u51FA\u8B66\u544A\u5E76\u4F7F\u7528\u5168\u5C40\u68C0\u7D22\n - **\u68C0\u7D22\u5DE5\u7A0B\u4EE3\u7801\u524D\u5FC5\u987B\u5148\u68C0\u67E5 `.llm-wiki/`**\uFF1A\n * \u82E5\u5DF2\u5B9A\u4F4D\u5230\u6D89\u53CA\u670D\u52A1\uFF0C\u4F18\u5148\u9605\u8BFB\u5404\u5DE5\u7A0B\u670D\u52A1\u76EE\u5F55\u4E0B\u7684 `[service]/.llm-wiki/index.md`\uFF0C\u4E25\u683C\u6309\u7167\u5176\u4E2D\u7684\u5F15\u5BFC\u6267\u884C\u68C0\u7D22\n * `llmwiki query -e --token <token> \"[\u5173\u952E\u8BCD]\"` \u4E2D\u7684 `<token>` \u5FC5\u987B\u6765\u81EA\u5BF9\u5E94\u670D\u52A1\u7684 `[service]/.llm-wiki/index.md`\n * \u529F\u80FD/\u5B9E\u73B0\u5B9A\u4F4D\u4F18\u5148\u4F7F\u7528 `llmwiki query -e --token <token> \"[\u5173\u952E\u8BCD]\"` \u505A\u8BED\u4E49\u68C0\u7D22\n * \u6BCF\u6B21\u6267\u884C `llmwiki query` \u540E\uFF0C\u5FC5\u987B\u5224\u65AD\u67E5\u8BE2\u7ED3\u679C\u662F\u5426\u4E0E\u5F53\u524D\u8BF7\u6C42\u8BC9\u6C42\u5339\u914D\uFF0C\u5E76\u5C06\u5173\u952E\u8BCD\u3001\u670D\u52A1\u3001\u5339\u914D/\u4E0D\u5339\u914D\u7ED3\u8BBA\u3001\u7B80\u8981\u539F\u56E0\u8BB0\u5F55\u5230\u5BF9\u5E94\u670D\u52A1\u7684 `[service]/.llm-wiki/result.log`\n * \u67E5\u627E\u914D\u7F6E\u7C7B\u3001\u6570\u636E\u6A21\u578B\u7C7B\u3001\u914D\u7F6E\u9879\u5F52\u5C5E\u65F6\uFF0C\u4F18\u5148\u4F7F\u7528 `llmwiki knowledge points \"[\u5173\u952E\u8BCD]\"`\n * \u4EC5\u5F53\u5BF9\u5E94\u670D\u52A1\u7684 `.llm-wiki/` \u4E0D\u5B58\u5728\u3001llmwiki \u65E0\u7ED3\u679C\u3001\u7ED3\u679C\u4E0E\u5F53\u524D\u8BF7\u6C42\u8BC9\u6C42\u4E0D\u5339\u914D\u3001\u6216\u7ED3\u679C\u660E\u663E\u504F\u5DEE\u65F6\uFF0C\u624D\u56DE\u9000\u5230 `grep/glob` \u6216\u5168\u5C40\u68C0\u7D22\n - \u9605\u8BFB `zhuanspec/project.md` \u4E86\u89E3\u9879\u76EE\u7EA6\u5B9A\uFF08\u63D0\u793A\uFF1A\"\u2713 Loaded project.md\"\uFF09\n - \u5BA1\u67E5 `zhuanspec/project.md`\uFF0C`zhuanspec list` \u548C `zhuanspec list --specs` \u4EE5\u4E86\u89E3\u5F53\u524D\u4E0A\u4E0B\u6587\u3002\n1. **\u6D4B\u8BD5 case \u6765\u6E90\u786E\u8BA4\uFF08\u6700\u5148\u6267\u884C\uFF0C\u7981\u6B62\u8DF3\u8FC7\uFF09**\uFF1A\n \u5728\u8FDB\u884C\u4EFB\u4F55\u6F84\u6E05\u3001\u8BBE\u8BA1\u6216\u7F16\u5199\u4EFB\u4F55\u63D0\u6848\u6587\u4EF6\u4E4B\u524D\uFF0C\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u8BE2\u95EE\u7528\u6237\uFF1A\n - \u9009\u9879 A\uFF1A\u63D0\u4F9B\u6D4B\u8BD5 case\uFF08\u6709\u73B0\u6210 case\uFF0C\u8D70 TDD \u6A21\u5F0F\uFF09\n - \u9009\u9879 B\uFF1A\u6682\u4E0D\u63D0\u4F9B\u6D4B\u8BD5 case\n - \u9009\u9879 C\uFF1A\u5176\u4ED6\uFF08\u8BF7\u5728\u540E\u7EED\u8865\u5145\u8BF4\u660E\uFF09\n\n \u7528\u6237\u9009\u62E9\"\u63D0\u4F9B\u6D4B\u8BD5 case\"\u65F6\uFF1A\u8FDB\u5165 TDD \u9A71\u52A8\u6A21\u5F0F\n - \u660E\u786E\u544A\u77E5\uFF1A\u6D4B\u8BD5\u7528\u4F8B\u5C06\u7528\u4E8E\u9700\u6C42\u5B9A\u4E49\u3001\u5355\u5143\u6D4B\u8BD5\u751F\u6210\u3001\u5B9E\u65BD\u9A8C\u8BC1\n - \u82E5\u7528\u6237\u63D0\u4F9B\u94FE\u63A5\uFF08\u683C\u5F0F\uFF1A`https://zzcase.zhuanspirit.com/plan/taskDetail/module/{moduleId}/task/{taskId}`\uFF09\uFF0C\u4ECE URL \u63D0\u53D6 `moduleId`\uFF0C\u8C03\u7528 MCP \u5DE5\u5177 `mcp__caseweb__GET_get2` \u8BFB\u53D6\u6570\u636E\uFF1B\u5426\u5219\u624B\u52A8\u5F55\u5165\n - \u521B\u5EFA test-cases.md \u8BB0\u5F55\u6D4B\u8BD5 case \u8BE6\u60C5\uFF08\u6BCF\u4E2A TC-XXX \u542B\u524D\u7F6E\u6761\u4EF6\u3001\u6B65\u9AA4\u3001\u9884\u671F\u7ED3\u679C\u3001\u9A8C\u6536\u70B9\uFF09\n - tasks.md \u4F7F\u7528 `@test-case:TC-XXX` \u6807\u7B7E\u5173\u8054\u4EFB\u52A1\u4E0E\u6D4B\u8BD5 case\n - \u4EFB\u52A1\u5B9E\u65BD\u987A\u5E8F\u8C03\u6574\u4E3A\uFF1A\u5148\u5199\u6D4B\u8BD5 \u2192 \u518D\u5199\u5B9E\u73B0 \u2192 \u9A8C\u8BC1\u6D4B\u8BD5\u901A\u8FC7\n\n \u7528\u6237\u9009\u62E9\"\u6682\u4E0D\u63D0\u4F9B\"\uFF1A\u8DF3\u8FC7\uFF0C\u6309\u5E38\u89C4\u6D41\u7A0B\u7EE7\u7EED\n \u7528\u6237\u9009\u62E9\"\u5176\u4ED6\"\uFF1A\u7B49\u5F85\u7528\u6237\u8865\u5145\u8BF4\u660E\u540E\u7EE7\u7EED\n\n \u26A0\uFE0F **CHECKPOINT [TEST-CASE-INQUIRY]**\uFF1A\n \u65E0\u8BBA\u7528\u6237\u9009\u62E9\u4EC0\u4E48\uFF0C\u5FC5\u987B**\u7ACB\u5373**\u5C06\u7ED3\u679C\u8BB0\u5F55\u5230 tasks.md \u7684 `## Test Case Source Log` \u6BB5\n \uFF08\u82E5 tasks.md \u5C1A\u672A\u521B\u5EFA\uFF0C\u5148\u521B\u5EFA\u5E76\u5199\u5165\u6B64\u6BB5\uFF0C\u5176\u4F59\u5185\u5BB9\u540E\u7EED\u8865\u5145\uFF09\uFF1A\n ```\n ## Test Case Source Log\n - \u7528\u6237\u56DE\u7B54\uFF1A[\u63D0\u4F9B\u6D4B\u8BD5 case / \u6682\u4E0D\u63D0\u4F9B / \u5177\u4F53\u8BF4\u660E]\n - TDD \u6A21\u5F0F\uFF1A[\u542F\u7528 / \u7981\u7528]\n - \uFF08\u5982\u542F\u7528\uFF09\u6D4B\u8BD5 case \u6765\u6E90\uFF1A[\u94FE\u63A5 / \u624B\u52A8\u5F55\u5165 / bicId]\n ```\n \u6B64\u6BB5\u4E0D\u5F97\u4E3A\u7A7A\uFF0Cvalidate --strict \u4F1A**\u65E0\u6761\u4EF6**\u68C0\u67E5\u5176\u5B58\u5728\u4E0E\u5185\u5BB9\uFF0C\u7F3A\u5931\u76F4\u63A5\u62A5 ERROR\u3002\n \u672A\u5B8C\u6210\u6B64 checkpoint \u8BB0\u5F55\u4E4B\u524D\uFF0C\u7981\u6B62\u6267\u884C\u6B65\u9AA4 2 \u53CA\u540E\u7EED\u4EFB\u4F55\u6587\u4EF6\u5199\u5165\u64CD\u4F5C\u3002\n\n2. **\u5F3A\u5236\u6F84\u6E05\u68C0\u67E5\uFF08\u5FC5\u987B\u6267\u884C\uFF0C\u4E0D\u53EF\u8DF3\u8FC7\uFF09**\uFF1A\u5206\u6790\u7528\u6237\u8BF7\u6C42\uFF0C\u8BC6\u522B\u6240\u6709\u4E0D\u786E\u5B9A\u6216\u6A21\u7CCA\u7684\u65B9\u9762\uFF08\u8303\u56F4\u3001\u6280\u672F\u9009\u62E9\u3001\u5B9E\u73B0\u7EC6\u8282\u3001\u6570\u636E\u83B7\u53D6\u6765\u6E90\u3001\u670D\u52A1\u5206\u5C42\u3001\u4F9D\u8D56\u5173\u7CFB\u3001\u4F18\u5148\u7EA7\u3001\u9A8C\u6536\u6807\u51C6\u7B49......\uFF09\u3002\u5982\u679C\u53D1\u73B0\u4EFB\u4F55\u6A21\u7CCA\u4E4B\u5904\uFF0C\u5FC5\u987B\u505C\u6B62\u5E76\u4F7F\u7528**\u9009\u9879\u5F0F\u4EA4\u4E92**\uFF08\u5982 `AskQuestion` \u5DE5\u5177\uFF09\u63D0\u95EE\uFF0C\u83B7\u5F97\u660E\u786E\u7B54\u590D\u540E\u624D\u80FD\u7EE7\u7EED\u3002\u4E25\u7981\u5728\u4E0D\u786E\u5B9A\u7684\u60C5\u51B5\u4E0B\u81EA\u884C\u63A8\u6D4B\u6216\u521B\u5EFA\u63D0\u6848\uFF0C\u4E25\u7981\u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57\u3002\n\n \u26A0\uFE0F **CHECKPOINT [PRE-CLARIFICATION]**:\n You MUST record the pre-clarification result in tasks.md under \"## Pre-Clarification Log\":\n - If questions were asked: Record each question and the user's answer\n - If no clarification needed: Write \"Status: COMPLETED - No clarification needed\" with brief justification\n - This section MUST NOT be empty or contain only HTML comments\n - NEVER proceed to proposal writing without completing this checkpoint\n\n3. \u9009\u62E9\u4E00\u4E2A\u552F\u4E00\u7684\u52A8\u8BCD\u5F00\u5934\u7684 `change-id`\uFF0C\u5E76\u5728 `zhuanspec/changes/<id>/` \u4E0B\u642D\u5EFA `proposal.md`\u3001`tasks.md`\u3001`design.md` \u548C\u89C4\u8303\u589E\u91CF\u3002\n4. \u5C06\u53D8\u66F4\u6620\u5C04\u4E3A\u5177\u4F53\u7684\u529F\u80FD\u6216\u8981\u6C42\uFF0C\u5C06\u591A\u8303\u56F4\u7684\u5DE5\u4F5C\u5206\u89E3\u4E3A\u5177\u6709\u660E\u786E\u5173\u7CFB\u548C\u987A\u5E8F\u7684\u4E0D\u540C\u89C4\u8303\u589E\u91CF\u3002\n5. \u5F53\u89E3\u51B3\u65B9\u6848\u8DE8\u8D8A\u591A\u4E2A\u7CFB\u7EDF\u3001\u5F15\u5165\u65B0\u6A21\u5F0F\u6216\u5728\u63D0\u4EA4\u89C4\u8303\u4E4B\u524D\u9700\u8981\u6743\u8861\u8BA8\u8BBA\u65F6\uFF0C\u5728 `design.md` \u4E2D\u6355\u83B7\u67B6\u6784\u63A8\u7406\u3002\n\n \u26A0\uFE0F **CHECKPOINT [DESIGN-EXTERNAL-DEPENDENCY-GATE]**\uFF08\u63D0\u6848\u9636\u6BB5\u524D\u7F6E\u95ED\u73AF\uFF0C\u5FC5\u987B\u5728 design.md \u65B0\u5EFA/\u66F4\u65B0\u540E\u7ACB\u5373\u6267\u884C\uFF09\uFF1A\n 1. **\u4F9D\u8D56\u8BC6\u522B**\uFF1A\u5168\u91CF\u7F57\u5217 ES / MQ / Redis / SCF-RPC / HTTP / OSS / Config(Apollo) / Job \u516B\u7C7B\u5916\u90E8\u4F9D\u8D56\uFF0C\u6309\u7C7B\u578B\u5206\u6876\uFF1B\u4F9D\u8D56\u6E05\u5355\u4F18\u5148\u4ECE techDesign \u9636\u6BB5\u4EA7\u51FA\u63D0\u53D6\uFF0C\u7F3A\u5931\u65F6\u4ECE\u7528\u6237\u63D0\u4F9B\u7684\u6280\u672F\u65B9\u6848 / specs \u4E2D\u8865\u9F50\n 2. **\u786C\u89C4\u5219\u4F7F\u7528 AskQuestion**\uFF1A\u53EA\u8981\u67D0\u9879\u4F9D\u8D56\u7684\u72B6\u6001 / \u7248\u672C / \u8D1F\u8D23\u65B9 / \u515C\u5E95\u7B56\u7565\u4EFB\u4E00\u5B57\u6BB5\u4E0D\u660E\u786E\uFF0C**\u5FC5\u987B** \u8C03\u7528 `AskQuestion` \u4E00\u6B21\u6027\u5C55\u793A\u9009\u9879\uFF1B\u4E25\u7981\u9ED8\u8BA4\u5199 \u2705 \u6216 \u201C\u5F85\u786E\u8BA4\u201D\u8DF3\u8FC7\n 3. **\u77E9\u9635\u843D\u5730**\uFF1A\u6839\u636E\u7528\u6237\u56DE\u7B54\u5C06\u7ED3\u679C\u5199\u5165 design.md \u7684\u300C\u5916\u90E8\u4F9D\u8D56\u53EF\u7528\u6027\u77E9\u9635\u300D\u6BB5\uFF0C\u8868\u5934\u5FC5\u987B\u4E3A **6 \u5217**\uFF1A\n `| \u4F9D\u8D56\u540D\u79F0 | \u7C7B\u578B | \u72B6\u6001 | \u7248\u672C/\u73AF\u5883 | \u515C\u5E95/\u963B\u585E\u7B56\u7565 | \u8D1F\u8D23\u65B9 |`\n 4. **\u95ED\u73AF\u5B8C\u7ED3**\uFF1A\u672C\u6B65\u9AA4\u7ED3\u675F\u524D\u6240\u6709 techDesign \u9636\u6BB5\u6807\u8BB0\u4E3A \u26A0\uFE0F / \u2753 \u7684\u6761\u76EE\u5FC5\u987B\u6C89\u6DC0\u4E3A \u2705 / \u274C / \u2705+\u515C\u5E95\uFF0C**\u4E0D\u5141\u8BB8\u7559\u767D**\uFF1B\u8BE5\u77E9\u9635\u662F propose / apply / \u96C6\u6210\u9A8C\u8BC1\u9636\u6BB5\u7684\u552F\u4E00\u4E8B\u5B9E\u6E90\n\n \u26A0\uFE0F **CHECKPOINT [DATA-STORAGE-STRATEGY]**\uFF08\u4EC5\u5F53\u6280\u672F\u65B9\u6848\u5305\u542B\u65B0\u589E\u8868 / CREATE TABLE / t_* \u65F6\u5F3A\u5236\u6267\u884C\uFF09\uFF1A\u5FC5\u987B\u7528 `AskQuestion` \u6279\u91CF\u6F84\u6E05 **\u9884\u4F30\u6570\u91CF\u7EA7 / \u67E5\u8BE2\u573A\u666F / \u8BFB\u5199 QPS / \u65F6\u6548\u6027 / \u4E00\u81F4\u6027\uFF08\u542B\u8DE8\u8868\u4E8B\u52A1\uFF09** 5 \u5B57\u6BB5\uFF0C\u5E76\u5728 design.md \u5199\u5165 **8 \u5217** \u300C## \u6570\u636E\u5B58\u50A8\u7B56\u7565\u300D\u8868\uFF1A`| \u8868\u540D | \u9884\u4F30\u6570\u91CF\u7EA7 | \u67E5\u8BE2\u573A\u666F | \u8BFB/\u5199 QPS | \u65F6\u6548\u6027 | \u4E00\u81F4\u6027\uFF08\u542B\u8DE8\u8868\u4E8B\u52A1\uFF09 | \u5B58\u50A8\u7B56\u7565 | \u5907\u6CE8 |`\u3002\u4EFB\u4E00\u5217\u51FA\u73B0 `TBD` / \u7A7A / \u5F85\u8BC4\u4F30 \u2192 \u672A\u901A\u8FC7\uFF0C\u7981\u6B62\u8FDB\u5165\u89C4\u8303\u589E\u91CF\u7F16\u5199\u3002\n\n6. \u5728 `changes/<id>/specs/<capability>/spec.md` \u4E2D\u8D77\u8349\u89C4\u8303\u589E\u91CF\uFF08\u6BCF\u4E2A\u529F\u80FD\u4E00\u4E2A\u6587\u4EF6\u5939\uFF09\uFF0C\u4F7F\u7528 `## ADDED|MODIFIED|REMOVED Requirements`\uFF0C\u6BCF\u4E2A\u8981\u6C42\u81F3\u5C11\u5305\u542B\u4E00\u4E2A `#### Scenario:`\uFF0C\u5E76\u5728\u76F8\u5173\u65F6\u4EA4\u53C9\u5F15\u7528\u76F8\u5173\u529F\u80FD\u3002\n\n \u26A0\uFE0F **CHECKPOINT [SPEC-REQUIREMENT-FORMAT]**\uFF1A\n \u6BCF\u4E2A `### Requirement:` \u5757\u5199\u5B8C\u540E\u5FC5\u987B\u81EA\u68C0\u4EE5\u4E0B\u4E24\u70B9\uFF0C\u8FDD\u53CD\u4EFB\u610F\u4E00\u6761 `zhuanspec validate` \u4F1A\u62A5 ERROR\uFF1A\n 1. **\u5FC5\u987B\u6709\u9700\u6C42\u63CF\u8FF0\u6587\u672C**\uFF1Aheader \u4E4B\u540E\u3001\u7B2C\u4E00\u4E2A `#### Scenario` \u4E4B\u524D\uFF0C\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u884C\u975E\u7A7A\u7684\u9700\u6C42\u63CF\u8FF0\u6587\u672C\uFF1B\u4E0D\u80FD\u76F4\u63A5\u4ECE `### Requirement:` \u8DF3\u5230 `#### Scenario:`\u3002\n 2. **\u7B2C\u4E00\u884C\u63CF\u8FF0\u5FC5\u987B\u5305\u542B SHALL \u6216 MUST**\uFF1A\u9A8C\u8BC1\u5668\u7528 `/\\b(SHALL|MUST)\\b/` \u68C0\u67E5\u7B2C\u4E00\u884C\uFF0C\u7F3A\u5931\u76F4\u63A5 ERROR\u3002\u6B63\u786E\u793A\u4F8B\uFF1A`\u7CFB\u7EDF MUST \u63D0\u4F9B...` / `The system SHALL...`\uFF1B\u9519\u8BEF\u793A\u4F8B\uFF1A\u4EC5\u5199\u666E\u901A\u9648\u8FF0\u53E5\uFF08\u5982\"\u63D0\u4F9B\u5BA2\u6237\u67E5\u8BE2\u80FD\u529B\"\uFF09\u3002\n\n7. **\u53D1\u73B0\u53EF\u7528 Skill \u5E76\u521B\u5EFA tasks.md**\uFF1A\n - \u8FD0\u884C `zhuanspec skills list --json` \u83B7\u53D6\u5F53\u524D\u73AF\u5883\u4E2D\u53EF\u7528\u7684 skill \u5217\u8868\u53CA\u5176 description\n - \u5728 `proposal.md` \u7684 **Skill Mapping** \u6BB5\u4E2D\u57FA\u4E8E skill description \u8FDB\u884C\u8BED\u4E49\u5339\u914D\uFF1A\n - \u4ED4\u7EC6\u9605\u8BFB\u6BCF\u4E2A skill \u7684 description\uFF0C\u7406\u89E3\u5176\u5177\u4F53\u529F\u80FD\u548C\u9002\u7528\u573A\u666F\n - \u53EA\u6709\u5F53\u5B9E\u73B0\u533A\u57DF\u7684\u5B9E\u9645\u529F\u80FD\u4E0E skill description \u660E\u786E\u5339\u914D\u65F6\u624D\u5173\u8054\n - \u7B80\u5355\u7684\u4EE3\u7801\u4FEE\u6539\uFF08\u5982\u679A\u4E3E\u503C\u589E\u5220\uFF09\u5E94\u5339\u914D\u901A\u7528\u7F16\u7801\u89C4\u8303 skill\uFF0C\u800C\u975E\u67B6\u6784\u7EA7 skill\n - \u907F\u514D\u4EC5\u56E0\u6A21\u5757\u540D\u79F0\u6216\u6587\u4EF6\u8DEF\u5F84\u4E2D\u7684\u5173\u952E\u8BCD\u800C\u9519\u8BEF\u5339\u914D\n - \u5728\u8868\u683C\u4E2D\u8BF4\u660E\u5339\u914D\u7406\u7531\n - **\u4EFB\u52A1\u5206\u89E3\u89C4\u5219\uFF08\u6A21\u677F\u9A71\u52A8\uFF09**\uFF1A\n - \u6BCF\u4E2A\u4EFB\u52A1\u6309\u7C7B\u578B\u4F7F\u7528\u56FA\u5B9A\u6A21\u677F\uFF0C\u5FC5\u987B\u586B\u6EE1\u6240\u6709\u5B57\u6BB5\uFF08\u6587\u4EF6 \u2192 \u4F4D\u7F6E \u2192 \u5185\u5BB9 \u2192 \u9A8C\u8BC1\uFF09\uFF1A\n * **\u65B0\u589E\u6587\u4EF6\u4EFB\u52A1**\uFF1A\u5FC5\u987B\u5305\u542B `\u6587\u4EF6`\uFF08\u5B8C\u6574\u76F8\u5BF9\u8DEF\u5F84+\"\u65B0\u589E\"\u6807\u8BB0\uFF09\u3001`\u5185\u5BB9`\uFF08\u7C7B\u5B9A\u4E49\u3001\u4F9D\u8D56\u6CE8\u5165\u3001\u6838\u5FC3\u65B9\u6CD5\u7B7E\u540D+\u8FD4\u56DE\u7C7B\u578B\u3001\u5173\u952E\u903B\u8F91\u6D41\u7A0B\u3001\u5B57\u6BB5\u5217\u8868\uFF09\u3001`\u9A8C\u8BC1`\uFF08\u6B63\u5E38+\u5F02\u5E38\u573A\u666F\u7684\u8F93\u5165\u8F93\u51FA\u65AD\u8A00\uFF09\n * **\u4FEE\u6539\u6587\u4EF6\u4EFB\u52A1**\uFF1A\u5FC5\u987B\u5305\u542B `\u6587\u4EF6`\uFF08\u5B8C\u6574\u76F8\u5BF9\u8DEF\u5F84+\u603B\u884C\u6570\uFF09\u3001`\u4FEE\u6539\u4F4D\u7F6E`\uFF08L\u884C\u53F7\u8303\u56F4+\u51FD\u6570\u540D\uFF09\u3001`\u5185\u5BB9`\uFF08\u5177\u4F53\u6539\u4EC0\u4E48\u548C\u600E\u4E48\u6539\uFF09\u3001`\u9A8C\u8BC1`\uFF08\u4FEE\u6539\u540E\u9884\u671F\u884C\u4E3A+\u56DE\u5F52\u9A8C\u8BC1\uFF09\n - \u4EFB\u52A1\u7F16\u53F7\u4E25\u683C\u4F7F\u7528 N.M \u683C\u5F0F\uFF08\u5982 1.1\u30012.3\uFF09\uFF0C\u4E0D\u5141\u8BB8 3.2a \u7B49\u975E\u6807\u51C6\u7F16\u53F7\n - \u6BCF\u4E2A\u4EFB\u52A1\u5FC5\u987B\u5305\u542B @ref \u6807\u7B7E\u6307\u5411\u6280\u672F\u65B9\u6848\u5177\u4F53\u7AE0\u8282\uFF08\u683C\u5F0F\uFF1A@ref:<tech-spec\u8DEF\u5F84>#\u7AE0\u8282\u7F16\u53F7-\u7AE0\u8282\u540D\u79F0\uFF0C\u8DEF\u5F84\u4E3A\u5B9E\u9645\u5B9A\u4F4D\u5230\u7684\u6280\u672F\u65B9\u6848\u6587\u4EF6\u76F8\u5BF9\u8DEF\u5F84\uFF09\n - **\u6280\u672F\u65B9\u6848\u6444\u53D6**\uFF1A\u5F53\u6280\u672F\u65B9\u6848\u6587\u6863\u5B58\u5728\u65F6\uFF08\u6309\u4F18\u5148\u7EA7\uFF1A\u7528\u6237 --tech-spec \u6307\u5B9A\u8DEF\u5F84 > techDesign/tech-spec.md\uFF09\uFF1A\n * \u9010\u7AE0\u89E3\u6790 DB \u8868\u3001\u63A5\u53E3\u65B9\u6CD5\u3001ES \u7D22\u5F15\u3001MQ\u3001\u914D\u7F6E\u9879\u7B49\u5143\u7D20\n * \u6BCF\u4E2A\u6280\u672F\u5143\u7D20\u5FC5\u987B\u5BF9\u5E94\u81F3\u5C11\u4E00\u4E2A\u4EFB\u52A1\n * \u4EFB\u52A1\u7684\"\u5185\u5BB9\"\u6BB5\u5FC5\u987B\u5F15\u7528\u6280\u672F\u65B9\u6848\u4E2D\u7684\u5177\u4F53\u5B57\u6BB5\u5B9A\u4E49\uFF08\u5982\u8868\u5B57\u6BB5\u5217\u8868\u3001\u63A5\u53E3\u5165\u53C2\u51FA\u53C2\u3001\u679A\u4E3E\u503C\uFF09\n * \u65B0\u589E Coverage Checklist \u6BB5\uFF0C\u786E\u4FDD\u8986\u76D6\u7387 >= 95%\n - **\u7981\u6B62\u6A21\u7CCA\u63CF\u8FF0**\uFF1A\n * \u7981\u6B62\uFF1A\"\u521B\u5EFA CustomerMapper\" \u2014 \u7F3A\u5C11\u6587\u4EF6\u8DEF\u5F84\u3001\u65B9\u6CD5\u5217\u8868\u3001\u5173\u952E\u903B\u8F91\n * \u6B63\u786E\uFF1A\"\u521B\u5EFA CustomerMapper\" + \u6587\u4EF6\u8DEF\u5F84 + \u7EE7\u627F BaseMapper<CustomerEntity> + 3\u4E2A\u81EA\u5B9A\u4E49\u65B9\u6CD5\u7B7E\u540D + \u9A8C\u8BC1\n * \u4EFB\u52A1\u63CF\u8FF0\u5FC5\u987B\u81EA\u5305\u542B\uFF1AAI \u6267\u884C\u65F6\u4E0D\u9700\u8981\u518D\u8BFB\u6280\u672F\u65B9\u6848\u731C\u6D4B\u5B9E\u73B0\u7EC6\u8282\n - \u5C06 `tasks.md` \u8D77\u8349\u4E3A\u6709\u5E8F\u7684\u5C0F\u578B\u3001\u53EF\u9A8C\u8BC1\u5DE5\u4F5C\u9879\u5217\u8868\n - \u4F7F\u7528 `@skill:<real-skill-name>` \u6807\u6CE8\u4E0E skill \u5339\u914D\u7684\u4EFB\u52A1\uFF08\u652F\u6301\u591A\u4E2A\uFF1A`@skill:name1,name2`\uFF09\n - \u4EC5\u5F53 skill \u660E\u786E\u5339\u914D\u4EFB\u52A1\u65F6\u624D\u6807\u6CE8\uFF0C\u6CA1\u6709\u5339\u914D\u7684 skill \u53EF\u7701\u7565\u6807\u7B7E\n\n \u26A0\uFE0F **CHECKPOINT [SKILL-TAGGING]**:\n 1. You MUST run `zhuanspec skills list` first and record discovered skills in the Skill Mapping table\n 2. Every task MUST have either @skill:real-skill-name or @skill:none\n 3. If @skill:none, you MUST provide a justification (e.g., \"pure config change, no skill applies\")\n 4. @skill names MUST match exactly the names returned by `zhuanspec skills list` \u2014 do NOT invent skill names\n 5. The Skill Mapping table in tasks.md MUST NOT be empty\n 6. validate --strict will verify all @skill names exist in the known skill list\n\n \u26A0\uFE0F **CHECKPOINT [TASK-ORDERING]**:\n 1. Tasks in tasks.md MUST be organized under Wave headers (### Wave 1, ### Wave 2, etc.)\n 2. Wave assignment must be computed from @depends relationships (Wave 1 = no deps, Wave N = depends on Wave N-1)\n 3. No task may appear before a task it depends on\n 4. You MUST add a \"## Dependency Analysis\" section at the end with \"Status: COMPLETED\"\n 5. validate --strict will verify task ordering matches computed waves\n 6. \u5982\u679C\u591A\u4E2A\u4EFB\u52A1\u63CF\u8FF0\u4E2D\u5F15\u7528\u4E86\u76F8\u540C\u6587\u4EF6\u8DEF\u5F84\uFF0C\u5FC5\u987B\u5728 \"## File Conflict Analysis\" \u8868\u4E2D\u58F0\u660E\uFF1A\n - \u5404\u4EFB\u52A1\u4FEE\u6539\u7684\u5177\u4F53\u533A\u57DF\uFF08\u51FD\u6570\u540D\u3001\u884C\u53F7\u8303\u56F4\u3001\u914D\u7F6E\u8282\u540D\u79F0\uFF09\n - \u9694\u79BB\u7B56\u7565\uFF1Aparallel\uFF08\u4E0D\u540C\u533A\u57DF\uFF0C\u53EF\u5728\u540C\u4E00 Wave \u5E76\u884C\uFF09\u6216 serial\uFF08\u540C\u533A\u57DF\uFF0C\u5FC5\u987B\u8DE8 Wave \u4E32\u884C\uFF09\n - \u82E5\u6240\u6709\u4EFB\u52A1\u4FEE\u6539\u4E0D\u540C\u6587\u4EF6\uFF0C\u65E0\u51B2\u7A81\u65F6\u8DF3\u8FC7\u6B64\u8868\u6216\u586B\u5199 N/A\n\n8. **\u6D4B\u8BD5 case \u5904\u7406\uFF08\u4EC5 TDD \u6A21\u5F0F\uFF09**\uFF1A\n\n **\u26A0\uFE0F \u6A21\u5F0F\u5224\u65AD**\uFF1A\u6839\u636E\u4EE5\u4E0B\u6761\u4EF6\u5224\u65AD\u5F53\u524D\u662F\u54EA\u79CD\u6A21\u5F0F\uFF1A\n - **\u6709 case \u6A21\u5F0F**\uFF1A\u7528\u6237\u63D0\u4F9B\u6D4B\u8BD5 case \u6765\u6E90\uFF08taskId/bicId\uFF09\u3001\u7528\u6237\u8981\u6C42 TDD \u5DE5\u4F5C\u6D41\u3001\u6216\u660E\u786E\u8981\u6C42\u8BBE\u8BA1\u6D4B\u8BD5 case\n - **\u65E0 case \u6A21\u5F0F**\uFF1A\u666E\u901A spec-driven \u5DE5\u4F5C\u6D41\uFF0C\u7528\u6237\u672A\u63D0\u4F9B\u6D4B\u8BD5 case \u76F8\u5173\u4FE1\u606F\n\n **\u3010\u6709 case \u6A21\u5F0F\u3011**\uFF08\u5FC5\u987B\u6267\u884C\u4EE5\u4E0B\u6B65\u9AA4\uFF09\uFF1A\n - **\u3010\u5F3A\u5236\u3011\u83B7\u53D6\u6D4B\u8BD5 case \u7684\u65B9\u5F0F**\uFF08\u6309\u4F18\u5148\u7EA7\u9009\u62E9\uFF09\uFF1A\n * **\u4F18\u5148**\uFF1A\u68C0\u67E5 `./doc/` \u76EE\u5F55\u4E0B\u662F\u5426\u5B58\u5728 `*-tdd-cases.md` \u6587\u4EF6\uFF08\u7531\u6280\u672F\u65B9\u6848 skill \u81EA\u52A8\u8F6C\u6362\u751F\u6210\uFF09\n - \u5B58\u5728 \u2192 \u76F4\u63A5\u8BFB\u53D6\uFF0C\u65E0\u9700\u91CD\u65B0\u83B7\u53D6\u539F\u59CB case\n - \u4E0D\u5B58\u5728 \u2192 \u4F7F\u7528\u4EE5\u4E0B\u65B9\u5F0F\u83B7\u53D6\u539F\u59CB case\n * \u5982\u679C\u7528\u6237\u63D0\u4F9B\u7684\u662F**\u94FE\u63A5**\uFF08\u5982 zzcase \u5E73\u53F0 URL\uFF09\uFF1A\u4F7F\u7528 `@skill:zzcase-data-fetcher` skill \u76F4\u63A5\u8BFB\u53D6\n * \u5982\u679C\u7528\u6237\u63D0\u4F9B **taskId/bicId**\uFF1A\u4F7F\u7528 `@skill:zzcase-data-fetcher` skill \u901A\u8FC7\u53C2\u6570\u83B7\u53D6\n * **\u7981\u6B62**\u4F7F\u7528 MCP \u5DE5\u5177 `zzcase_get_api_report_queryBaseCase` \u83B7\u53D6\u6D4B\u8BD5 case\n * \u6216\u624B\u52A8\u5F55\u5165\u6D4B\u8BD5 case\n - **\u3010\u5F3A\u5236\u3011\u521B\u5EFA test-cases.md \u6587\u4EF6**\uFF1A\n * \u82E5\u5DF2\u8BFB\u53D6 `./doc/*-tdd-cases.md`\uFF1A\u76F4\u63A5\u590D\u5236\u5185\u5BB9\u5230 `changes/<change-id>/test-cases.md`\uFF0C\u65E0\u9700\u91CD\u65B0\u751F\u6210\n * \u82E5\u4ECE\u539F\u59CB case \u83B7\u53D6\uFF1A\u4F7F\u7528 `getTestCasesTemplate` \u6A21\u677F\uFF08\u4ECE `src/core/templates/index.ts` \u5BFC\u51FA\uFF09\n * \u6587\u4EF6\u8DEF\u5F84\uFF1A`changes/<change-id>/test-cases.md`\n * \u586B\u5199\u83B7\u53D6\u65F6\u95F4\u3001\u6765\u6E90\uFF08tdd-cases.md / taskId/bicId/manual\uFF09\u3001\u6D4B\u8BD5 case \u8BE6\u60C5\n * \u6BCF\u4E2A TC-XXX \u5FC5\u987B\u5305\u542B\uFF1A\u524D\u7F6E\u6761\u4EF6\u3001\u6D4B\u8BD5\u6B65\u9AA4\u3001\u9884\u671F\u7ED3\u679C\u3001\u9A8C\u6536\u70B9\u3001**@layer \u6807\u6CE8\uFF08BE/FE/BOTH\uFF09**\n - **\u3010\u5F3A\u5236\u3011tasks.md @test-case \u6807\u6CE8**\uFF1A\n * \u8BFB\u53D6 test-cases.md \u4E2D\u6240\u6709 TC-XXX \u6761\u76EE\n * \u4E3A tasks.md \u4E2D\u6BCF\u4E2A task\uFF0C**\u6309\u8BED\u4E49\u5339\u914D**\u627E\u5230\u76F8\u5173 Case\uFF1A\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300C\u65B0\u5EFA/\u7F16\u8F91/\u5220\u9664\u300D\u2192 \u5339\u914D\u5BF9\u5E94 CRUD Case\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300C\u624B\u673A\u53F7\u53BB\u91CD/\u5408\u5E76\u300D\u2192 \u5339\u914D\u624B\u673A\u53F7\u51B2\u7A81\u76F8\u5173 Case\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300C\u79DF\u6237/\u6743\u9650\u300D\u2192 \u5339\u914D\u6743\u9650\u9694\u79BB\u76F8\u5173 Case\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300CMQ/\u6D88\u606F\u6D88\u8D39\u300D\u2192 \u5339\u914D MQ \u6D88\u8D39\u76F8\u5173 Case\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300C\u5BFC\u51FA\u300D\u2192 \u5339\u914D\u5BFC\u51FA\u76F8\u5173 Case\n * \u5339\u914D\u5230 \u2192 \u8FFD\u52A0 `@test-case:TC-XXX`\uFF08\u53EF\u591A\u4E2A\uFF1A`@test-case:TC-022,TC-024`\uFF09\n * \u5339\u914D\u4E0D\u5230 \u2192 \u4E0D\u8FFD\u52A0\uFF0C\u8BE5 task \u8D70\u666E\u901A Apply Agent\n - \u5728 `tasks.md` \u589E\u52A0 **Test Case Coverage** \u8868\u683C\uFF08\u56DB\u5217\u683C\u5F0F\uFF09\uFF1A\n | Task | \u6D4B\u8BD5 Case ID | \u6D4B\u8BD5 Case \u6587\u4EF6\u8DEF\u5F84 | \u8986\u76D6\u573A\u666F |\n |------|-------------|-------------------|----------|\n * \"\u6D4B\u8BD5 Case \u6587\u4EF6\u8DEF\u5F84\" \u5217\u586B\u5199 `changes/<change-id>/test-cases.md`\n - \u4F7F\u7528 `@test-case:TC-XXX` \u5173\u8054\u4EFB\u52A1\u4E0E\u6D4B\u8BD5 case\n\n \u26A0\uFE0F **CHECKPOINT [TEST-CASE-COVERAGE]**\uFF08\u4EC5\u9002\u7528\u4E8E\u6709 case \u6A21\u5F0F\uFF09:\n 1. \u6BCF\u4E2A Requirement \u5E94\u81F3\u5C11\u5BF9\u5E94\u4E00\u4E2A\u6D4B\u8BD5 case\n 2. \u6D4B\u8BD5 case \u5E94\u8986\u76D6\u6B63\u5411\u548C\u5F02\u5E38\u573A\u666F\n 3. **\u5FC5\u987B\u521B\u5EFA test-cases.md \u6587\u4EF6**\uFF08\u4F18\u5148\u590D\u7528 `./doc/*-tdd-cases.md`\uFF0C\u5426\u5219\u4F7F\u7528 `getTestCasesTemplate` \u6A21\u677F\uFF09\n 4. Test Case Coverage \u8868\u683C\u5FC5\u987B\u5305\u542B\u56DB\u5217\uFF1ATask\u3001\u6D4B\u8BD5 Case ID\u3001\u6D4B\u8BD5 Case \u6587\u4EF6\u8DEF\u5F84\u3001\u8986\u76D6\u573A\u666F\n 5. **\u6BCF\u4E2A TC-XXX \u5FC5\u987B\u6709 @layer \u6807\u6CE8**\uFF08BE/FE/BOTH\uFF09\uFF0C\u65E0\u6807\u6CE8\u89C6\u4E3A\u683C\u5F0F\u4E0D\u5B8C\u6574\n 6. **\u6709 @test-case \u6807\u6CE8\u7684 task**\uFF0C\u5FC5\u987B\u901A\u8FC7\u8BED\u4E49\u5339\u914D\u627E\u5230\u5BF9\u5E94 Case\uFF0C\u4E0D\u5F97\u968F\u610F\u6307\u5B9A\u65E0\u5173 Case\n 7. validate --strict \u4F1A\u9A8C\u8BC1\u6D4B\u8BD5 case \u8986\u76D6\u7387\uFF08**\u963B\u585E\u7EA7\u522B**\uFF09\n\n **\u3010\u65E0 case \u6A21\u5F0F\u3011**\uFF08\u8DF3\u8FC7\u6D4B\u8BD5 case \u76F8\u5173\u6B65\u9AA4\uFF09\uFF1A\n - \u4E0D\u521B\u5EFA test-cases.md\n - tasks.md \u4E0D\u9700\u8981 Test Case Coverage \u6BB5\n - validate --strict \u7684 test-case-coverage \u89C4\u5219\u81EA\u52A8\u8DF3\u8FC7\uFF08SKIPPED\uFF09\n - \u5355\u6D4B\u7EDF\u4E00\u5728 Review \u9636\u6BB5\u5904\u7406\n\n9. \u3010\u81EA\u52A8\u9A8C\u8BC1\u4E0E\u4FEE\u590D\u3011\uFF1A\n \u8FD0\u884C `zhuanspec validate <id> --strict --auto-fix` \u8FDB\u884C\u9A8C\u8BC1\uFF1A\n - \u5982\u679C\u9A8C\u8BC1\u901A\u8FC7\uFF08PASS\uFF09\uFF1A\u7EE7\u7EED\u4E0B\u4E00\u6B65\n - \u5982\u679C\u9A8C\u8BC1\u5931\u8D25\uFF08FAIL\uFF09\uFF1A\u81EA\u52A8\u89E6\u53D1\u4FEE\u590D\u5FAA\u73AF\uFF1A\n * CLI \u81EA\u52A8\u5206\u6790\u9519\u8BEF\u539F\u56E0\n * CLI \u81EA\u52A8\u751F\u6210\u4FEE\u590D\u65B9\u6848\u5E76\u6267\u884C\n * \u91CD\u65B0\u9A8C\u8BC1\uFF08\u6700\u591A 3 \u6B21\u5FAA\u73AF\uFF09\n * \u5FAA\u73AF\u7ED3\u675F\u540E\u4ECD\u672A\u901A\u8FC7\uFF1A\u8F93\u51FA\u9519\u8BEF\u62A5\u544A\uFF0C\u7B49\u5F85\u4EBA\u5DE5\u5E72\u9884\n - \u9A8C\u8BC1\u901A\u8FC7\u540E\uFF0C\u8F93\u51FA\u63D0\u6848\u6458\u8981\n\n10. \u3010\u8F93\u51FA\u63D0\u6848\u6458\u8981\u3011\uFF1A\n \u2022 \u53D8\u66F4\u539F\u56E0\u3001\u5185\u5BB9\u3001\u5F71\u54CD\u8303\u56F4\n \u2022 \u5173\u952E Requirements\n \u2022 \u4EFB\u52A1\u6570\u91CF\u548C Wave \u5206\u5E03\n\n11. \u3010\u9009\u9879\u5F0F\u4EA4\u4E92\u786E\u8BA4\u3011\uFF1A\n \u4F7F\u7528 AskQuestion \u5DE5\u5177\u5F39\u51FA\u786E\u8BA4\u5BF9\u8BDD\u6846\uFF1A\n ```\n \u95EE\u9898: \"\u8BF7\u786E\u8BA4\u662F\u5426\u6279\u51C6\u6B64\u63D0\u6848\uFF1F\"\n \u9009\u9879\uFF1A\n A) \u6279\u51C6\uFF0C\u8FDB\u5165\u5B9E\u65BD\u9636\u6BB5\n B) \u9700\u8981\u4FEE\u6539\u63D0\u6848\u5185\u5BB9\n C) \u6682\u4E0D\u6279\u51C6\uFF0C\u7A0D\u540E\u5904\u7406\n D) \u5176\u4ED6\uFF08\u8BF7\u5728\u540E\u7EED\u8865\u5145\u8BF4\u660E\uFF09\n ```\n\n \u7528\u6237\u9009\u62E9\u5904\u7406\uFF1A\n \u2022 \u9009\u62E9\"\u6279\u51C6\"\uFF1A\u521B\u5EFA `.approved` \u6587\u4EF6\uFF0C\u8FDB\u5165 Apply \u9636\u6BB5\n \u2022 \u9009\u62E9\"\u4FEE\u6539\"\uFF1A\u8FD4\u56DE\u6B65\u9AA4 4 \u4FEE\u6539\u63D0\u6848\u5185\u5BB9\n \u2022 \u9009\u62E9\"\u6682\u4E0D\"\uFF1A\u4FDD\u6301\u63D0\u6848\u72B6\u6001\uFF0C\u7B49\u5F85\u540E\u7EED\u5904\u7406\n \u2022 \u9009\u62E9\"\u5176\u4ED6\"\uFF1A\u7B49\u5F85\u7528\u6237\u8865\u5145\u8BF4\u660E\u540E\u7EE7\u7EED\n\n \u26A0\uFE0F **CHECKPOINT [PLAN-APPROVED]**:\n - \u7528\u6237\u5FC5\u987B\u660E\u786E\u9009\u62E9\"\u6279\u51C6\"\u9009\u9879\u624D\u80FD\u8FDB\u5165 Apply \u9636\u6BB5\n - \u672A\u6279\u51C6\u524D\u7981\u6B62\u4EFB\u4F55\u4EE3\u7801\u4FEE\u6539\u64CD\u4F5C\n - PreToolUse Hook \u4F1A\u963B\u65AD\u672A\u6279\u51C6\u72B6\u6001\u7684 Write/Edit \u64CD\u4F5C\n\n### \u9636\u6BB5 2\uFF1A\u5B9E\u65BD\u53D8\u66F4\n\n**\u524D\u7F6E\u68C0\u67E5**\uFF1A\n- \u26A0\uFE0F **CHECKPOINT [PLAN-APPROVED]**: `.approved` \u6587\u4EF6\u5FC5\u987B\u5B58\u5728\u3002\u672A\u6279\u51C6\u7684\u63D0\u6848\u7981\u6B62\u5B9E\u65BD\u3002\n - PreToolUse Hook \u4F1A\u963B\u65AD\u672A\u6279\u51C6\u72B6\u6001\u7684 Write/Edit \u64CD\u4F5C\n - \u5982\u679C `.approved` \u4E0D\u5B58\u5728\uFF0C\u63D0\u793A\u7528\u6237\u5148\u5B8C\u6210 Proposal \u9636\u6BB5\u7684\u6279\u51C6\u6D41\u7A0B\n\n\u5C06\u8FD9\u4E9B\u6B65\u9AA4\u4F5C\u4E3A\u5F85\u529E\u4E8B\u9879\u8DDF\u8E2A\uFF0C\u9010\u4E00\u5B8C\u6210\u3002\n\n0. **\u68C0\u67E5\u77E5\u8BC6\u5E93\u3001\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6\u5E76\u9605\u8BFB proposal.md**\uFF1A\n - \u8FD0\u884C `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u6700\u4F73\u5B9E\u8DF5\u548C\u9677\u9631\n - **\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6**\uFF1A\u8C03\u7528 `@skill:load-project-knowledge` \u8FDB\u884C\u6E10\u8FDB\u5F0F\u52A0\u8F7D\uFF1A\n * \u8F93\u5165\uFF1Adomain\uFF08\u5F53\u524D\u9879\u76EE\uFF09\u3001keywords\uFF08\u4ECE tasks.md \u63D0\u53D6\uFF09\n * \u83B7\u53D6\uFF1Amatched_services\u3001search_priority\u3001architecture_constraints\n * \u4F7F\u7528\uFF1A\u4EE3\u7801\u5B9A\u4F4D\u4F7F\u7528 search_priority \u9650\u5B9A\u8303\u56F4\uFF0C\u907F\u514D\u5168\u5C40\u68C0\u7D22\u504F\u5DEE\n - **\u5B9E\u65BD\u524D\u5B9A\u4F4D\u4EE3\u7801\u65F6\uFF0C\u5148\u68C0\u67E5 `.llm-wiki/`**\uFF1A\n * \u82E5\u5DF2\u5B9A\u4F4D\u5230\u6D89\u53CA\u670D\u52A1\uFF0C\u5148\u9605\u8BFB\u5BF9\u5E94\u670D\u52A1\u76EE\u5F55\u4E0B\u7684 `[service]/.llm-wiki/index.md`\n * `llmwiki query -e --token <token> \"[\u5173\u952E\u8BCD]\"` \u4E2D\u7684 `<token>` \u5FC5\u987B\u6765\u81EA\u5BF9\u5E94\u670D\u52A1\u7684 `[service]/.llm-wiki/index.md`\n * \u529F\u80FD/\u5B9E\u73B0\u5B9A\u4F4D\u4F18\u5148\u4F7F\u7528 `llmwiki query -e --token <token> \"[\u5173\u952E\u8BCD]\"`\n * \u6BCF\u6B21\u6267\u884C `llmwiki query` \u540E\uFF0C\u5FC5\u987B\u5224\u65AD\u67E5\u8BE2\u7ED3\u679C\u662F\u5426\u4E0E\u5F53\u524D\u8BF7\u6C42\u8BC9\u6C42\u5339\u914D\uFF0C\u5E76\u5C06\u5173\u952E\u8BCD\u3001\u670D\u52A1\u3001\u5339\u914D/\u4E0D\u5339\u914D\u7ED3\u8BBA\u3001\u7B80\u8981\u539F\u56E0\u8BB0\u5F55\u5230\u5BF9\u5E94\u670D\u52A1\u7684 `[service]/.llm-wiki/result.log`\n * \u914D\u7F6E\u7C7B\u3001\u6570\u636E\u6A21\u578B\u7C7B\u3001\u914D\u7F6E\u9879\u5F52\u5C5E\u4F18\u5148\u4F7F\u7528 `llmwiki knowledge points \"[\u5173\u952E\u8BCD]\"`\n * \u4EC5\u5F53\u5BF9\u5E94\u670D\u52A1\u7684 `.llm-wiki/` \u4E0D\u5B58\u5728\u3001llmwiki \u65E0\u7ED3\u679C\u3001\u7ED3\u679C\u4E0E\u5F53\u524D\u8BF7\u6C42\u8BC9\u6C42\u4E0D\u5339\u914D\u3001\u6216\u7ED3\u679C\u660E\u663E\u504F\u5DEE\u65F6\uFF0C\u624D\u56DE\u9000\u5230 `grep/glob`\n - \u9605\u8BFB `zhuanspec/project.md` \u4E86\u89E3\u9879\u76EE\u7EA6\u5B9A\uFF08\u63D0\u793A\uFF1A\"\u2713 Loaded project.md\"\uFF09\n - \u9605\u8BFB proposal.md - \u4E86\u89E3\u8981\u6784\u5EFA\u7684\u5185\u5BB9\n1. **\u9605\u8BFB design.md**\uFF08\u5982\u679C\u5B58\u5728\uFF09 - \u5BA1\u67E5\u6280\u672F\u51B3\u7B56\n2. **\u9605\u8BFB tasks.md** - \u83B7\u53D6\u5B9E\u65BD\u6E05\u5355\n3. **\u5224\u65AD\u6267\u884C\u6A21\u5F0F** - \u6839\u636E tasks.md \u5185\u5BB9\u9009\u62E9\u6267\u884C\u7B56\u7565\uFF1A\n - **\u5982\u679C tasks.md \u5305\u542B `@depends` \u4F9D\u8D56\u58F0\u660E**\uFF1A\n \u2192 \u6309 Wave \u5E76\u884C\u6267\u884C\uFF08\u4F7F\u7528 superpowers:subagent-driven-development skill\uFF09\n - **\u5982\u679C tasks.md \u65E0\u4F9D\u8D56\u58F0\u660E**\uFF1A\n \u2192 \u6309\u987A\u5E8F\u6267\u884C\n4. **\u6309\u987A\u5E8F\u5B9E\u65BD\u4EFB\u52A1**\uFF08\u65E0\u4F9D\u8D56\u58F0\u660E\u65F6\uFF09- \u4FDD\u6301\u7F16\u8F91\u6700\u5C0F\u5316\u3002\u5982\u679C\u4EFB\u52A1\u6807\u6CE8\u4E86 `@skill:<skill-name>`\uFF0C\u76F4\u63A5\u8C03\u7528\u5BF9\u5E94 skill\n - **\u9636\u6BB5\u804C\u8D23\u8981\u6C42**\uFF1AApply \u9636\u6BB5\u4E0D\u751F\u6210\u5355\u6D4B\u6587\u4EF6\uFF1B\u5355\u6D4B\u7EDF\u4E00\u5728 Review \u9636\u6BB5\u751F\u6210\u4E0E\u9A8C\u8BC1\u3002\n5. **\u786E\u8BA4\u5B8C\u6210** - \u5728\u66F4\u65B0\u72B6\u6001\u4E4B\u524D\u786E\u4FDD `tasks.md` \u4E2D\u7684\u6BCF\u4E2A\u9879\u76EE\u90FD\u5DF2\u5B8C\u6210\n6. **\u66F4\u65B0\u6E05\u5355** - \u6240\u6709\u5DE5\u4F5C\u5B8C\u6210\u540E\uFF0C\u5C06\u6BCF\u4E2A\u4EFB\u52A1\u8BBE\u7F6E\u4E3A `- [x]`\n7. **\u89E6\u53D1\u5BA1\u67E5\u95E8\u7981** - \u6240\u6709\u4EFB\u52A1\u5B8C\u6210\u540E\u9009\u9879\u5F0F\u63D0\u95EE\u7528\u6237\u662F\u5426\u8FDB\u5165 Review \u9636\u6BB5 \u9ED8\u8BA4\u5F53\u524D\u63D0\u6848\n\n\n### \u9636\u6BB5 3\uFF1AReview\n\n**\u68C0\u67E5\u77E5\u8BC6\u5E93\u3001project.md \u5E76\u6267\u884C\u5BA1\u67E5**\uFF1A\n- \u8FD0\u884C `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u5BA1\u67E5\u6700\u4F73\u5B9E\u8DF5\n- \u9605\u8BFB `zhuanspec/project.md` \u4E86\u89E3\u9879\u76EE\u7EA6\u5B9A\uFF08\u63D0\u793A\uFF1A\"\u2713 Loaded project.md\"\uFF09\n\n\u6309\u4E09\u8F68\u987A\u5E8F\u4E32\u884C\u5BA1\u67E5\uFF0C\u6700\u540E\u8FD0\u884C `zhuanspec review <change-id>` \u6C47\u603B\u7ED3\u8BBA\uFF1A\n\n**\u4E09\u8F68\u987A\u5E8F\u4E32\u884C\u673A\u5236\uFF08\u7981\u6B62\u5E76\u884C\uFF09**\uFF1A\n- \u7531\u4E3B Agent \u6309 2.1 \u2192 2.2 \u2192 2.3 \u987A\u5E8F\u9010\u8F68\u6267\u884C\uFF0C\u540E\u4E00\u8F68\u5FC5\u987B\u5728\u524D\u4E00\u8F68 PASS \u540E\u624D\u53EF\u542F\u52A8\u3002\n- **\u8F68\u9053 1\uFF1ASpec-Code \u4E00\u81F4\u6027**\uFF1A\u8FD0\u884C `zhuanspec validate <id> --strict`\uFF0C\u8F93\u51FA `spec-consistency-result.json`\u3002\u8FC7\u4E0D\u4E86\u65F6\u53EA\u4FEE\u4EE3\u7801\uFF0C\u7981\u6B62\u6539 spec\u3002\n- **\u8F68\u9053 2\uFF1AUnit Test\uFF08\u5FC5\u987B\u8C03\u7528 Skill\uFF09**\uFF1A\u4F7F\u7528 Skill \u5DE5\u5177\u8C03\u7528 `generate-mockito-unit-test`\uFF0C\u8F93\u51FA `unit-test-result.json`\uFF08\u767B\u8BB0 `newTestsGenerated` \u6216 `skipReason`\uFF0C\u5E76\u8BBE\u7F6E `schemaVersion: 2`\uFF09\u3002**\u7981\u6B62\u4EBA\u5DE5\u4EE3\u66FF Skill**\u3002\n- **\u8F68\u9053 3\uFF1ACode Review\uFF08\u5FC5\u987B\u8C03\u7528 Skill\uFF09**\uFF1A\u4F7F\u7528 Skill \u5DE5\u5177\u8C03\u7528 `code-review-expert`\uFF0C\u5B8C\u6574\u8DD1\u5B8C 0~11 \u6B65\uFF1B\u8F93\u51FA `code-review-result.json`\uFF0C\u5FC5\u987B\u767B\u8BB0 `skillReportPath` \u6307\u5411 Skill \u751F\u6210\u7684 `doc/code-review-*.md`\uFF0C\u5E76\u8BBE\u7F6E `schemaVersion: 2`\u3002**\u7981\u6B62\u4EBA\u5DE5\u901F\u5BA1/\u624B\u5DE5\u7F16\u9020 JSON**\u3002\n\n**\u6BCF\u8F68\u81EA\u95ED\u73AF**\uFF1A\n- \u6BCF\u8F68\u5185\u90E8\u72EC\u7ACB\u4FEE\u590D\u5FAA\u73AF\uFF08\u6700\u591A 3 \u8F6E\uFF09\n- \u53D1\u73B0\u95EE\u9898\u65F6\u5728\u672C\u8F68\u5185\u4FEE\u590D\u5E76\u91CD\u8DD1\uFF1B\u672C\u8F68\u672A PASS \u7981\u6B62\u542F\u52A8\u540E\u4E00\u8F68\n- \u8F93\u51FA\u72EC\u7ACB\u62A5\u544A\u6587\u4EF6\uFF08\u6309\u8F68\u9053\u987A\u5E8F\uFF09\uFF1A\n - `spec-consistency-result.json`\n - `unit-test-result.json`\n - `code-review-result.json`\uFF08\u542B `skillReportPath`\uFF09\n- \u4E09\u8F68\u5168\u90E8 PASS \u540E\uFF0C\u8FD0\u884C `zhuanspec review <id>` \u6C47\u603B\u751F\u6210 `review-report.md`\n\n**\u9A8C\u6536\u6807\u51C6**\uFF1A\n- review passed\n- critical = 0\n- \u5355\u6D4B\u901A\u8FC7\n- \u4E09\u8F68\u6309\u5E8F\u5168\u90E8 PASS\n\n### \u9636\u6BB5 4\uFF1A\u5F52\u6863\u53D8\u66F4\n\n**\u524D\u7F6E\u68C0\u67E5**\uFF1A\n- \u26A0\uFE0F **CHECKPOINT [REVIEW-PASSED]**: Review \u9636\u6BB5\u5FC5\u987B\u987A\u5E8F\u901A\u8FC7\uFF08\u4E09\u8F68\u6309\u5E8F\u5168\u90E8 PASS\uFF09\n - `review-report.md` \u5B58\u5728\u4E14\u663E\u793A passed\uFF0C\u82E5\u51FA\u73B0 \u26A0\uFE0F legacy schema \u8B66\u544A\u90E8\u5206\u8BF7\u5C3D\u5FEB\u8865\u9F50 `schemaVersion: 2` + \u65B0\u5B57\u6BB5\n - `spec-consistency-result.json`: passed\n - `unit-test-result.json`: tests passed\uFF08`newTestsGenerated` \u6216 `skipReason` \u5DF2\u767B\u8BB0\uFF0C\u65B0\u4EA7\u7269\u542B `schemaVersion: 2`\uFF09\n - `code-review-result.json`: critical = 0\uFF0C`skillReportPath` \u5BF9\u5E94\u7684 `doc/code-review-*.md` \u771F\u5B9E\u5B58\u5728\uFF0C\u65B0\u4EA7\u7269\u542B `schemaVersion: 2`\n\n**\u6B65\u9AA4**\uFF1A\n0. **\u68C0\u67E5\u77E5\u8BC6\u5E93**\uFF1A\u8FD0\u884C `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u662F\u5426\u6709\u9700\u8981\u6C89\u6DC0\u7684\u77E5\u8BC6\n1. **\u786E\u5B9A\u53D8\u66F4 ID**\uFF1A\u8FD0\u884C `zhuanspec list` \u786E\u8BA4\u8981\u5F52\u6863\u7684\u53D8\u66F4\n2. **\u9A8C\u8BC1 Review \u95E8\u7981**\uFF1A\u786E\u8BA4\u4E0A\u8FF0\u56DB\u4E2A\u7ED3\u679C\u6587\u4EF6\u5B58\u5728\u4E14\u5168\u90E8\u901A\u8FC7\n3. **\u8FD0\u884C\u5F52\u6863\u547D\u4EE4**\uFF1A\u6267\u884C `zhuanspec archive <id> --yes`\uFF08\u4EC5\u5DE5\u5177\u7C7B\u5DE5\u4F5C\u4F7F\u7528 `--skip-specs`\uFF09\n4. **\u9A8C\u8BC1\u5F52\u6863\u7ED3\u679C**\uFF1A\u8FD0\u884C `zhuanspec validate --strict` \u786E\u8BA4\u901A\u8FC7\n5. **\u77E5\u8BC6\u6C89\u6DC0\uFF08\u624B\u52A8\u8865\u5145\uFF09**\uFF1A\u8C03\u7528 `@skill:zhuanspec:knowledge` \u4ECE\u4F1A\u8BDD\u8BB0\u5FC6\u8865\u5145\u77E5\u8BC6\n - CLI \u5DF2\u81EA\u52A8\u4ECE\u53D8\u66F4\u76EE\u5F55\u63D0\u53D6\u7ED3\u6784\u5316\u77E5\u8BC6\n - AI \u9700\u4ECE\u4F1A\u8BDD\u8865\u5145\u9690\u5F0F\u7EA6\u5B9A\u3001\u8C03\u8BD5\u53D1\u73B0\u7B49\n6. **\u4F1A\u8BDD\u5206\u6790**\uFF1A\u8C03\u7528 `@skill:session-analytics` \u5206\u6790\u4F1A\u8BDD\u6307\u6807\u6570\u636E\n7. **\u8F93\u51FA\u53CD\u9988\u94FE\u63A5**\uFF1A\u544A\u77E5\u7528\u6237\u586B\u5199\u4F7F\u7528\u53CD\u9988\uFF1A\n \uD83D\uDCCB https://doc.weixin.qq.com/forms/AJ4AfQfgAAwACwAAwaVABsCNqDXIKn8sf\n\n## \u6267\u884C\u4EFB\u4F55\u4EFB\u52A1\u4E4B\u524D\n\n**\u77E5\u8BC6\u5E93\u68C0\u67E5\uFF1A**\n- [ ] \u641C\u7D22\u76F8\u5173\u9677\u9631\uFF1A`rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/troubleshooting/`\n- [ ] \u641C\u7D22\u6700\u4F73\u5B9E\u8DF5\uFF1A`rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/best-practices/`\n- [ ] \u9605\u8BFB\u77E5\u8BC6\u7D22\u5F15\uFF1A`cat zhuanspec/knowledge/index.md`\n\n**\u4E0A\u4E0B\u6587\u68C0\u67E5\u6E05\u5355\uFF1A**\n- [ ] \u5728 `specs/[capability]/spec.md` \u4E2D\u9605\u8BFB\u76F8\u5173\u89C4\u8303\n- [ ] \u68C0\u67E5 `changes/` \u4E2D\u7684\u5F85\u5904\u7406\u53D8\u66F4\u662F\u5426\u5B58\u5728\u51B2\u7A81\n- [ ] \u9605\u8BFB `zhuanspec/project.md` \u4E86\u89E3\u7EA6\u5B9A\u3001\u9879\u76EE\u7ED3\u6784\u548C\u76F8\u5173\u529F\u80FD\u6A21\u5757\uFF08\u6309\u9700\u52A0\u8F7D\uFF09\n- [ ] \u8FD0\u884C `zhuanspec list` \u67E5\u770B\u6D3B\u52A8\u53D8\u66F4\n- [ ] \u8FD0\u884C `zhuanspec list --specs` \u67E5\u770B\u73B0\u6709\u529F\u80FD\n\n**\u521B\u5EFA\u89C4\u8303\u4E4B\u524D\uFF1A**\n- **\u68C0\u67E5\u77E5\u8BC6\u5E93**\uFF1A`rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u9677\u9631\u548C\u6700\u4F73\u5B9E\u8DF5\n- \u59CB\u7EC8\u68C0\u67E5\u529F\u80FD\u662F\u5426\u5DF2\u5B58\u5728\n- \u4F18\u5148\u4FEE\u6539\u73B0\u6709\u89C4\u8303\u800C\u4E0D\u662F\u521B\u5EFA\u91CD\u590D\u9879\n- \u4F7F\u7528 `zhuanspec show [spec]` \u5BA1\u67E5\u5F53\u524D\u72B6\u6001\n- **\u5F3A\u5236\u6F84\u6E05\u8981\u6C42**\uFF1A\u5982\u679C\u8BF7\u6C42\u6709\u4EFB\u4F55\u4E0D\u660E\u786E\u3001\u6A21\u7CCA\u6216\u4E0D\u786E\u5B9A\u7684\u65B9\u9762\uFF0C\u5FC5\u987B\u505C\u6B62\u5E76\u4F7F\u7528**\u9009\u9879\u5F0F\u4EA4\u4E92**\u63D0\u95EE\u3002\u4E25\u7981\u5728\u4E0D\u786E\u5B9A\u7684\u60C5\u51B5\u4E0B\u81EA\u884C\u63A8\u6D4B\u3001\u5047\u8BBE\u6216\u7EE7\u7EED\u521B\u5EFA\u6587\u4EF6\u3002\u4E25\u7981\u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57\u56DE\u7B54\u3002\n\n## \u5F3A\u5236\u6F84\u6E05\u5DE5\u4F5C\u6D41\n\n> **\u6838\u5FC3\u539F\u5219**\uFF1A\u9047\u5230\u4EFB\u4F55\u6A21\u7CCA\u70B9\uFF0C\u5FC5\u987B\u6F84\u6E05\u3002\u4E25\u7981\u731C\u6D4B\u3001\u81C6\u6D4B\u3001\u81EA\u884C\u5047\u8BBE\u3002\n\n### \u6F84\u6E05\u95ED\u73AF\u673A\u5236\n\n\u5728\u521B\u5EFA\u4EFB\u4F55\u63D0\u6848\u6587\u4EF6\u4E4B\u524D\uFF0C\u5FC5\u987B\u6267\u884C\u4EE5\u4E0B\u6D41\u7A0B\uFF1A\n\n```\n\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 1. \u67E5\u9605\u73B0\u6709\u6765\u6E90 \u2502\n\u2502 \u2192 \u89C4\u8303\u3001\u9879\u76EE\u7EA6\u5B9A\u3001\u4EE3\u7801\u5E93\u3001\u4E0A\u4E0B\u6587\u6587\u4EF6 \u2502\n\u2502 \u2192 \u5C1D\u8BD5\u4ECE\u8FD9\u4E9B\u6765\u6E90\u786E\u5B9A\u4FE1\u606F \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 2. \u8BC6\u522B\u6A21\u7CCA\u70B9 \u2502\n\u2502 \u2192 \u5206\u6790\u7528\u6237\u8BF7\u6C42\uFF0C\u5217\u51FA\u4E0D\u786E\u5B9A\u7684\u65B9\u9762 \u2502\n\u2502 \u2192 \u6392\u9664\u53EF\u4EE5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\u7684\u65B9\u9762 \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 3. \u5224\u65AD\u63D0\u95EE\u7B56\u7565 \u2502\n\u2502 \u2192 \u5982\u679C\u4ECD\u6709\u6A21\u7CCA\u70B9\uFF1A\u5FC5\u987B\u63D0\u95EE \u2502\n\u2502 \u2192 \u5982\u679C\u5168\u90E8\u660E\u786E\uFF1A\u7EE7\u7EED\u521B\u5EFA \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 4. \u751F\u6210\u6F84\u6E05\u95EE\u9898 \u2502\n\u2502 \u2192 \u4F18\u5148\u68C0\u67E5 superpowers:brainstorming \u662F\u5426\u53EF\u7528 \u2502\n\u2502 \u2192 \u53EF\u7528\uFF1A\u8C03\u7528\u8BE5\u6280\u80FD\u751F\u6210\u9AD8\u8D28\u91CF\u95EE\u9898 \u2502\n\u2502 \u2192 \u4E0D\u53EF\u7528\uFF1A\u76F4\u63A5\u4F7F\u7528 AskUserQuestion \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 5. \u9009\u9879\u5F0F\u4EA4\u4E92 \u2502\n\u2502 \u2192 2-5 \u4E2A\u9884\u8BBE\u9009\u9879 + \"\u5176\u4ED6\"\u515C\u5E95 \u2502\n\u2502 \u2192 \u7B49\u5F85\u7528\u6237\u9009\u62E9 \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 6. \u5904\u7406\"\u5176\u4ED6\"\u9009\u9879 \u2502\n\u2502 \u2192 \u7528\u6237\u9009\u62E9\"\u5176\u4ED6\"\u540E\u9488\u5BF9\u6027\u8FFD\u95EE \u2502\n\u2502 \u2192 \u4ECD\u4F18\u5148\u4F7F\u7528\u9009\u9879\u5F0F \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 7. \u5F00\u59CB\u521B\u5EFA \u2502\n\u2502 \u2192 \u53EA\u6709\u5728\u6240\u6709\u6A21\u7CCA\u70B9\u90FD\u660E\u786E\u540E\u624D\u80FD\u521B\u5EFA\u63D0\u6848 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n### \u63D0\u95EE\u7B56\u7565\u9009\u62E9\n\n| \u6280\u80FD\u53EF\u7528\u6027 | \u63D0\u95EE\u65B9\u5F0F | \u8BF4\u660E |\n|-----------|---------|------|\n| superpowers:brainstorming \u53EF\u7528 | \u8C03\u7528\u6280\u80FD\u751F\u6210\u95EE\u9898 | \u9AD8\u8D28\u91CF\u3001\u7ED3\u6784\u5316\u7684\u6F84\u6E05\u95EE\u9898 |\n| superpowers:brainstorming \u4E0D\u53EF\u7528 | AskUserQuestion \u76F4\u63A5\u63D0\u95EE | \u9009\u9879\u5F0F\u4EA4\u4E92\uFF0C\u7B80\u6D01\u9AD8\u6548 |\n\n### Brainstorming \u8C03\u7528\u8FB9\u754C\n\n**\u9002\u7528\u573A\u666F**\uFF1A\n| \u573A\u666F\u7C7B\u578B | \u8C03\u7528\u65B9\u5F0F | \u8BF4\u660E |\n|----------|---------|------|\n| **\u590D\u6742\u6A21\u7CCA** | superpowers:brainstorming | \u8DE8\u6A21\u5757\u3001\u65B0\u67B6\u6784\u3001\u591A\u65B9\u6848\u9009\u62E9 |\n| **\u7B80\u5355\u6F84\u6E05** | AskUserQuestion \u76F4\u63A5\u63D0\u95EE | \u53C2\u6570\u8C03\u6574\u3001\u8303\u56F4\u8FB9\u754C\u3001\u5355\u4E00\u9009\u62E9 |\n| **\u5DF2\u5B8C\u6574\u9700\u6C42** | \u8DF3\u8FC7\u6F84\u6E05 | \u7528\u6237\u63D0\u4F9B\u5B8C\u6574\u9700\u6C42\u6587\u6863 |\n\n**\u8C03\u7528\u7EA6\u675F**\uFF1A\n- \u4EC5\u4F7F\u7528 brainstorming \u7684**\u6F84\u6E05\u63D0\u95EE\u80FD\u529B**\uFF08\u6B65\u9AA43\uFF1A\u9010\u4E00\u63D0\u95EE\u6F84\u6E05\uFF09\n- **\u4E0D\u8FDB\u5165\u5B8C\u6574\u8BBE\u8BA1\u6D41\u7A0B**\uFF08\u6B65\u9AA44-9\uFF1A\u65B9\u6848\u5BF9\u6BD4\u3001\u8BBE\u8BA1\u6587\u6863\uFF09\n- **\u4E0D\u89E6\u53D1 writing-plans skill**\uFF08\u5C5E\u4E8E Apply \u9636\u6BB5\uFF09\n- \u83B7\u5F97\u6F84\u6E05\u540E\u7ACB\u5373\u8FD4\u56DE ZhuanSpec \u63D0\u6848\u6D41\u7A0B\n\n### \u9009\u9879\u5F0F\u4EA4\u4E92\u683C\u5F0F\n\n**\u5FC5\u987B\u9075\u5B88**\uFF1A\n- \u6BCF\u4E2A\u95EE\u9898\u63D0\u4F9B 2-5 \u4E2A\u9884\u8BBE\u9009\u9879\n- \u672B\u5C3E\u5305\u542B\"\u5176\u4ED6\"\u9009\u9879\u4F5C\u4E3A\u515C\u5E95\n- \u7981\u6B62\u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57\n\n**\u793A\u4F8B**\uFF1A\n```json\n{\n \"questions\": [\n {\n \"id\": \"scope\",\n \"prompt\": \"\u60A8\u5E0C\u671B\u6539\u8FDB\u54EA\u4E9B\u65B9\u9762\uFF1F\",\n \"options\": [\n {\"id\": \"security\", \"label\": \"\u5B89\u5168\u6027\"},\n {\"id\": \"ux\", \"label\": \"\u7528\u6237\u4F53\u9A8C\"},\n {\"id\": \"performance\", \"label\": \"\u6027\u80FD\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ],\n \"allow_multiple\": true\n }\n ]\n}\n```\n\n### \u5E38\u89C1\u6A21\u7CCA\u70B9\u6E05\u5355\n\n| \u7C7B\u522B | \u9700\u6F84\u6E05\u7684\u60C5\u51B5 |\n|------|-------------|\n| **\u8303\u56F4** | \u8FB9\u754C\u4E0D\u660E\u786E\uFF08\"\u6539\u8FDB\u6027\u80FD\"\u3001\"\u4F18\u5316\u4EE3\u7801\"\uFF09 |\n| **\u6280\u672F** | \u591A\u79CD\u5B9E\u73B0\u65B9\u5F0F\u4F46\u672A\u6307\u5B9A\u504F\u597D |\n| **\u4F18\u5148\u7EA7** | \u591A\u4E2A\u9700\u6C42\u4F46\u672A\u8BF4\u660E\u987A\u5E8F |\n| **\u9A8C\u6536** | \u4E0D\u6E05\u695A\u5982\u4F55\u5224\u65AD\u5B8C\u6210 |\n| **\u5B9E\u73B0** | \u6570\u636E\u83B7\u53D6\u6765\u6E90\u3001\u670D\u52A1\u5206\u5C42\u3001\u4F9D\u8D56\u5173\u7CFB\u4E0D\u660E\u786E |\n| **\u4F4D\u7F6E** | \u4EE3\u7801\u6539\u52A8\u4F4D\u7F6E\u4E0D\u660E\u786E |\n\n### \u7981\u6B62\u884C\u4E3A\n\n| \u274C \u7981\u6B62 | \u539F\u56E0 |\n|--------|------|\n| \u81EA\u884C\u63A8\u6D4B\u7528\u6237\u610F\u56FE | \u8FDD\u53CD\u4E09\u6761\u94C1\u5F8B |\n| \u8DF3\u8FC7\u6F84\u6E05\u76F4\u63A5\u521B\u5EFA\u6587\u4EF6 | \u8FDD\u53CD No Spec, No Code |\n| \u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57 | \u6548\u7387\u4F4E\u3001\u4F53\u9A8C\u5DEE |\n\n---\n\n### \u4E0E\u4E09\u6761\u94C1\u5F8B\u7684\u5173\u7CFB\n\n| \u94C1\u5F8B | \u6F84\u6E05\u5DE5\u4F5C\u6D41\u4F53\u73B0 |\n|------|---------------|\n| **No Spec, No Code** | \u6F84\u6E05\u5B8C\u6210\u540E\u624D\u80FD\u521B\u5EFA\u63D0\u6848 |\n| **Spec is Truth** | \u6F84\u6E05\u7ED3\u679C\u5199\u5165 tasks.md \u7684\"\u6F84\u6E05\u65E5\u5FD7\" |\n| **Reverse Sync** | Apply \u9636\u6BB5\u504F\u79BB\u65F6\u91CD\u65B0\u8FDB\u5165\u6F84\u6E05\u6D41\u7A0B |\n\n### \u641C\u7D22\u6307\u5BFC\n- \u679A\u4E3E\u89C4\u8303\uFF1A`zhuanspec spec list --long`\uFF08\u6216\u4F7F\u7528 `--json` \u7528\u4E8E\u811A\u672C\uFF09\n- \u679A\u4E3E\u53D8\u66F4\uFF1A`zhuanspec list`\uFF08\u6216 `zhuanspec change list --json` - \u5DF2\u5F03\u7528\u4F46\u53EF\u7528\uFF09\n- \u663E\u793A\u8BE6\u7EC6\u4FE1\u606F\uFF1A\n - \u89C4\u8303\uFF1A`zhuanspec show <spec-id> --type spec`\uFF08\u4F7F\u7528 `--json` \u8FDB\u884C\u8FC7\u6EE4\uFF09\n - \u53D8\u66F4\uFF1A`zhuanspec show <change-id> --json --deltas-only`\n- \u5168\u6587\u641C\u7D22\uFF08\u4F7F\u7528 ripgrep\uFF09\uFF1A`rg -n \"Requirement:|Scenario:\" zhuanspec/specs`\n\n## \u5FEB\u901F\u5F00\u59CB\n\n### CLI \u547D\u4EE4\n\n```bash\n# \u57FA\u672C\u547D\u4EE4\nzhuanspec list # \u5217\u51FA\u6D3B\u52A8\u53D8\u66F4\nzhuanspec list --specs # \u5217\u51FA\u89C4\u8303\nzhuanspec show [item] # \u663E\u793A\u53D8\u66F4\u6216\u89C4\u8303\nzhuanspec validate [item] # \u9A8C\u8BC1\u53D8\u66F4\u6216\u89C4\u8303\nzhuanspec archive <change-id> [--yes|-y] # \u90E8\u7F72\u540E\u5F52\u6863\uFF08\u6DFB\u52A0 --yes \u7528\u4E8E\u975E\u4EA4\u4E92\u5F0F\u8FD0\u884C\uFF09\n\n# \u9879\u76EE\u7BA1\u7406\nzhuanspec init [path] # \u521D\u59CB\u5316 ZhuanSpec\nzhuanspec update [path] # \u66F4\u65B0\u8BF4\u660E\u6587\u4EF6\n\n# \u4EA4\u4E92\u6A21\u5F0F\nzhuanspec show # \u63D0\u793A\u9009\u62E9\nzhuanspec validate # \u6279\u91CF\u9A8C\u8BC1\u6A21\u5F0F\n\n# \u8C03\u8BD5\nzhuanspec show [change] --json --deltas-only\nzhuanspec validate [change] --strict\n```\n\n### \u547D\u4EE4\u6807\u5FD7\n\n- `--json` - \u673A\u5668\u53EF\u8BFB\u8F93\u51FA\n- `--type change|spec` - \u6D88\u9664\u9879\u76EE\u6B67\u4E49\n- `--strict` - \u5168\u9762\u9A8C\u8BC1\n- `--no-interactive` - \u7981\u7528\u63D0\u793A\n- `--skip-specs` - \u5F52\u6863\u65F6\u4E0D\u66F4\u65B0\u89C4\u8303\n- `--yes`/`-y` - \u8DF3\u8FC7\u786E\u8BA4\u63D0\u793A\uFF08\u975E\u4EA4\u4E92\u5F0F\u5F52\u6863\uFF09\n\n## \u76EE\u5F55\u7ED3\u6784\n\n```\nzhuanspec/\n\u251C\u2500\u2500 project.md # \u9879\u76EE\u7EA6\u5B9A\n\u251C\u2500\u2500 knowledge/ # \u9879\u76EE\u7EA7\u77E5\u8BC6\u5E93\n\u2502 \u251C\u2500\u2500 index.md # \u77E5\u8BC6\u7D22\u5F15\n\u2502 \u251C\u2500\u2500 troubleshooting/ # \u5E38\u89C1\u95EE\u9898\u4E0E\u9677\u9631\n\u2502 \u251C\u2500\u2500 best-practices/ # \u6700\u4F73\u5B9E\u8DF5\n\u2502 \u2514\u2500\u2500 implicit-conventions/ # \u9690\u5F0F\u7EA6\u5B9A\n\u251C\u2500\u2500 specs/ # \u5F53\u524D\u771F\u5B9E\u72B6\u6001 - \u5DF2\u6784\u5EFA\u7684\u5185\u5BB9\n\u2502 \u2514\u2500\u2500 [capability]/ # \u5355\u4E00\u805A\u7126\u7684\u529F\u80FD\n\u2502 \u251C\u2500\u2500 spec.md # \u8981\u6C42\u548C\u573A\u666F\n\u2502 \u2514\u2500\u2500 design.md # \u6280\u672F\u6A21\u5F0F\n\u251C\u2500\u2500 changes/ # \u63D0\u6848 - \u5E94\u8BE5\u66F4\u6539\u7684\u5185\u5BB9\n\u2502 \u251C\u2500\u2500 [change-name]/\n\u2502 \u2502 \u251C\u2500\u2500 proposal.md # \u539F\u56E0\u3001\u5185\u5BB9\u3001\u5F71\u54CD\n\u2502 \u2502 \u251C\u2500\u2500 tasks.md # \u5B9E\u65BD\u6E05\u5355\n\u2502 \u2502 \u251C\u2500\u2500 design.md # \u6280\u672F\u51B3\u7B56\uFF08\u5FC5\u9009\uFF1B\u77E5\u8BC6\u63D0\u53D6\u6765\u6E90\uFF09\n\u2502 \u2502 \u2514\u2500\u2500 specs/ # \u589E\u91CF\u53D8\u66F4\n\u2502 \u2502 \u2514\u2500\u2500 [capability]/\n\u2502 \u2502 \u2514\u2500\u2500 spec.md # ADDED/MODIFIED/REMOVED\n\u2502 \u2514\u2500\u2500 archive/ # \u5DF2\u5B8C\u6210\u7684\u53D8\u66F4\n```\n\n## \u521B\u5EFA\u53D8\u66F4\u63D0\u6848\n\n### \u51B3\u7B56\u6811\n\n```\n\u65B0\u8BF7\u6C42\uFF1F\n\u251C\u2500 \u4FEE\u590D\u6062\u590D\u89C4\u8303\u884C\u4E3A\u7684 Bug\uFF1F \u2192 \u76F4\u63A5\u4FEE\u590D\n\u251C\u2500 \u62FC\u5199\u9519\u8BEF/\u683C\u5F0F/\u6CE8\u91CA\uFF1F \u2192 \u76F4\u63A5\u4FEE\u590D\n\u251C\u2500 \u65B0\u529F\u80FD/\u80FD\u529B\uFF1F \u2192 \u521B\u5EFA\u63D0\u6848\n\u251C\u2500 \u7834\u574F\u6027\u66F4\u6539\uFF1F \u2192 \u521B\u5EFA\u63D0\u6848\n\u251C\u2500 \u67B6\u6784\u66F4\u6539\uFF1F \u2192 \u521B\u5EFA\u63D0\u6848\n\u2514\u2500 \u4E0D\u660E\u786E\uFF1F \u2192 \u521B\u5EFA\u63D0\u6848\uFF08\u66F4\u5B89\u5168\uFF09\n```\n\n### \u63D0\u6848\u7ED3\u6784\n\n1. **\u521B\u5EFA\u76EE\u5F55\uFF1A** `changes/[change-id]/`\uFF08kebab-case\uFF0C\u52A8\u8BCD\u5F00\u5934\uFF0C\u552F\u4E00\uFF09\n\n2. **\u7F16\u5199 proposal.md\uFF1A**\n```markdown\n# Change: [\u53D8\u66F4\u7684\u7B80\u8981\u63CF\u8FF0]\n\n## \u53D8\u66F4\u539F\u56E0\n[\u5173\u4E8E\u95EE\u9898/\u673A\u4F1A\u7684 1-2 \u53E5\u8BDD]\n\n## \u53D8\u66F4\u5185\u5BB9\n- [\u53D8\u66F4\u7684\u8981\u70B9\u5217\u8868]\n- [\u7528 **BREAKING** \u6807\u8BB0\u7834\u574F\u6027\u66F4\u6539]\n\n## \u5F71\u54CD\u8303\u56F4\n- Affected specs: [\u5217\u51FA\u529F\u80FD]\n- Affected code: [\u5173\u952E\u6587\u4EF6/\u7CFB\u7EDF]\n```\n\n3. **\u521B\u5EFA\u89C4\u8303\u589E\u91CF\uFF1A** `specs/[capability]/spec.md`\n```markdown\n## ADDED Requirements\n### \u9700\u6C42\uFF1ANew Feature\nThe system SHALL provide...\n\n#### \u573A\u666F\uFF1ASuccess case\n- **\u5F53** user performs action\n- **\u5219** expected result\n\n## MODIFIED Requirements\n### \u9700\u6C42\uFF1AExisting Feature\n[\u5B8C\u6574\u7684\u4FEE\u6539\u540E\u8981\u6C42]\n\n## REMOVED Requirements\n### \u9700\u6C42\uFF1AOld Feature\n**Reason**: [\u79FB\u9664\u539F\u56E0]\n**Migration**: [\u5982\u4F55\u5904\u7406]\n```\n\u5982\u679C\u591A\u4E2A\u529F\u80FD\u53D7\u5230\u5F71\u54CD\uFF0C\u5728 `changes/[change-id]/specs/<capability>/spec.md` \u4E0B\u521B\u5EFA\u591A\u4E2A\u589E\u91CF\u6587\u4EF6\u2014\u2014\u6BCF\u4E2A\u529F\u80FD\u4E00\u4E2A\u3002\n\n4. **\u521B\u5EFA tasks.md\uFF1A**\n\n\u5148\u8FD0\u884C `zhuanspec skills list --json` \u53D1\u73B0\u5F53\u524D\u73AF\u5883\u4E2D\u53EF\u7528\u7684 skill \u53CA\u5176 description\uFF0C\u7136\u540E\u57FA\u4E8E\u8BED\u4E49\u5339\u914D\u5728\u4EFB\u52A1\u4E2D\u6807\u6CE8\u771F\u5B9E skill \u540D\u79F0\uFF1A\n\n```markdown\n## 1. \u5B9E\u73B0\n- [ ] 1.1 \u521B\u5EFA\u6570\u636E\u5E93\u8868\u7ED3\u6784 @skill:java-db-schema-standards\n- [ ] 1.2 \u5B9E\u73B0 RPC \u63A5\u53E3 @skill:java-scf-rpc-usage-skill\n- [ ] 1.3 \u6DFB\u52A0\u524D\u7AEF\u7EC4\u4EF6 @skill:kf-fe-frontend-dev\n- [ ] 1.4 \u7F16\u5199\u6D4B\u8BD5 @skill:generate-mockito-unit-test-skill\n```\n> **@skill \u6807\u7B7E**\uFF1A\u521B\u5EFA tasks.md \u524D\uFF0C\u8FD0\u884C `zhuanspec skills list --json` \u53D1\u73B0\u53EF\u7528 skill \u53CA\u5176 description\u3002\u57FA\u4E8E skill description \u8FDB\u884C\u8BED\u4E49\u5339\u914D\uFF1A\n> - \u4ED4\u7EC6\u9605\u8BFB\u6BCF\u4E2A skill \u7684 description\uFF0C\u7406\u89E3\u5176\u5177\u4F53\u529F\u80FD\u548C\u9002\u7528\u573A\u666F\n> - \u53EA\u6709\u5F53\u4EFB\u52A1\u529F\u80FD\u4E0E skill description \u660E\u786E\u5339\u914D\u65F6\u624D\u6807\u6CE8\n> - \u7B80\u5355\u7684\u4EE3\u7801\u4FEE\u6539\uFF08\u5982\u589E\u5220\u679A\u4E3E\u503C\uFF09\u5E94\u5339\u914D\u901A\u7528\u7F16\u7801\u89C4\u8303 skill\uFF0C\u800C\u975E\u67B6\u6784\u7EA7 skill\n> - \u907F\u514D\u4EC5\u56E0\u6587\u4EF6\u540D\u6216\u8DEF\u5F84\u5173\u952E\u8BCD\u800C\u9519\u8BEF\u5339\u914D\n> - \u4F7F\u7528\u771F\u5B9E skill \u540D\u79F0\u6807\u6CE8\uFF0C\u652F\u6301\u591A\u4E2A skill\uFF08`@skill:name1,name2`\uFF09\n> - Apply \u9636\u6BB5 AI \u6839\u636E\u6807\u7B7E\u76F4\u63A5\u8C03\u7528\u5BF9\u5E94 skill\u3002\u65E0\u53EF\u7528 skill \u65F6\u53EF\u7701\u7565\u3002\n\n\u26A0\uFE0F **\u68C0\u67E5\u70B9 [Skill \u6807\u6CE8]**\uFF1A\n1. \u5FC5\u987B\u5148\u8FD0\u884C `zhuanspec skills list` \u5E76\u5728 Skill \u6620\u5C04\u8868\u4E2D\u8BB0\u5F55\u53D1\u73B0\u7684 skill\n2. \u6BCF\u4E2A\u4EFB\u52A1\u5FC5\u987B\u6807\u6CE8 @skill:\u771F\u5B9Eskill\u540D\u79F0 \u6216 @skill:none\n3. \u5982\u679C\u4F7F\u7528 @skill:none\uFF0C\u5FC5\u987B\u63D0\u4F9B\u7406\u7531\uFF08\u4F8B\u5982\uFF1A\"\u7EAF\u914D\u7F6E\u53D8\u66F4\uFF0C\u65E0\u9700 skill\"\uFF09\n4. @skill \u540D\u79F0\u5FC5\u987B\u4E0E `zhuanspec skills list` \u8FD4\u56DE\u7684\u540D\u79F0\u5B8C\u5168\u4E00\u81F4 \u2014\u2014 \u7981\u6B62\u865A\u6784 skill \u540D\u79F0\n5. tasks.md \u4E2D\u7684 Skill \u6620\u5C04\u8868\u4E0D\u80FD\u4E3A\u7A7A\n6. validate --strict \u4F1A\u9A8C\u8BC1\u6240\u6709 @skill \u540D\u79F0\u662F\u5426\u5B58\u5728\u4E8E\u5DF2\u77E5 skill \u5217\u8868\u4E2D\n\n\u26A0\uFE0F **\u68C0\u67E5\u70B9 [\u4EFB\u52A1\u6392\u5E8F]**\uFF1A\n1. tasks.md \u4E2D\u7684\u4EFB\u52A1\u5FC5\u987B\u6309\u6CE2\u6B21\u7EC4\u7EC7\uFF08### \u6CE2\u6B21 1, ### \u6CE2\u6B21 2 \u7B49\uFF09\n2. \u6CE2\u6B21\u5206\u914D\u5FC5\u987B\u6839\u636E @depends \u4F9D\u8D56\u5173\u7CFB\u8BA1\u7B97\uFF08\u6CE2\u6B21 1 = \u65E0\u4F9D\u8D56\uFF0C\u6CE2\u6B21 N = \u4F9D\u8D56\u6CE2\u6B21 N-1\uFF09\n3. \u4EFB\u52A1\u4E0D\u80FD\u51FA\u73B0\u5728\u5176\u4F9D\u8D56\u7684\u4EFB\u52A1\u4E4B\u524D\n4. \u5FC5\u987B\u5728\u6587\u4EF6\u672B\u5C3E\u6DFB\u52A0 \"## \u4F9D\u8D56\u5206\u6790\" \u7AE0\u8282\u5E76\u6807\u660E\"\u72B6\u6001\uFF1A\u5DF2\u5B8C\u6210\"\n5. validate --strict \u4F1A\u9A8C\u8BC1\u4EFB\u52A1\u6392\u5E8F\u662F\u5426\u4E0E\u8BA1\u7B97\u7684\u6CE2\u6B21\u5339\u914D\n\n## Subagent \u542F\u52A8\u524D\u4E0A\u4E0B\u6587\u51C6\u5907\n\n\u5728\u7F16\u6392\u5C42\u4E3A\u6BCF\u4E2A Subagent \u51C6\u5907\u4E0A\u4E0B\u6587\u65F6\uFF0C\u6309\u4E09\u7EA7\u7B56\u7565\u6CE8\u5165\uFF1A\n\n### L1 \u6838\u5FC3\uFF08\u5168\u91CF\u6CE8\u5165\uFF0C\u5FC5\u987B\u5B8C\u6574\uFF09\n1. \u89E3\u6790\u5F53\u524D\u4EFB\u52A1\u7684 @test-case \u6807\u6CE8 \u2192 \u4ECE test-cases.md \u4E2D\u63D0\u53D6\u5BF9\u5E94 TC \u5168\u6587\n2. \u89E3\u6790\u5F53\u524D\u4EFB\u52A1\u7684 @ref \u6807\u6CE8 \u2192 \u4ECE\u6280\u672F\u65B9\u6848\u6587\u6863\u4E2D\u63D0\u53D6\u5BF9\u5E94\u7AE0\u8282\uFF08\u6309\u4F18\u5148\u7EA7\u67E5\u627E\uFF1A\u7528\u6237 --tech-spec \u6307\u5B9A\u8DEF\u5F84 > techDesign/tech-spec.md\uFF09\n3. \u5B9A\u4F4D\u5F53\u524D\u4EFB\u52A1\u6240\u5C5E\u7684 capability \u2192 \u8BFB\u53D6 specs/<capability>/spec.md\n\n### L2 \u5173\u8054\uFF08\u5168\u91CF\u6CE8\u5165\uFF09\n4. design.md \u5168\u6587\n5. Rules + Knowledge\n6. \u5F53\u524D Wave \u5176\u4ED6\u4EFB\u52A1\u7684\u4E00\u53E5\u8BDD\u6458\u8981 + \u524D\u7F6E Wave \u5B8C\u6210\u7ED3\u679C\u6458\u8981\n\n### L3 \u80CC\u666F\uFF08\u6458\u8981 + \u6309\u9700\u8BFB\u53D6\uFF09\n7. \u6280\u672F\u65B9\u6848\u5176\u4ED6\u7AE0\u8282 \u2192 \u8F93\u51FA\u6E05\u5355\u5F0F\u6458\u8981\uFF08\u201C\u8FD8\u5305\u542B N \u5F20\u8868\uFF1Axxx, yyy, ...\uFF0C\u8BE6\u89C1\u6280\u672F\u65B9\u6848\u6587\u6863\u201D\uFF09\n8. \u5176\u4ED6 spec \u7684 Requirement \u6807\u9898\u5217\u8868 \u2192 \u8F93\u51FA\u6E05\u5355\uFF08\"\u53E6\u6709 M \u4E2A spec\uFF0C\u8BE6\u89C1 specs/ \u76EE\u5F55\"\uFF09\n\n### \u6700\u7EC8\u6821\u9A8C\n- L1+L2 \u603B\u884C\u6570 > 800 \u884C \u2192 \u5BF9 L2 \u4E2D design.md \u505A\u7AE0\u8282\u88C1\u526A\uFF08\u53EA\u4FDD\u7559\u5F53\u524D\u4EFB\u52A1\u76F8\u5173\u7AE0\u8282\uFF09\n- L1 \u4E0D\u5141\u8BB8\u88C1\u526A\n- L3 \u7684\u6458\u8981\u5FC5\u987B\u5305\u542B\u6240\u6709\u5143\u7D20\u540D\u79F0\uFF0C\u4E0D\u5141\u8BB8\u7528\"\u7B49\"\u6216\"...\"\u7701\u7565\n\n5. **\u57FA\u4E8E\u6280\u672F\u65B9\u6848\u9010\u7AE0\u6620\u5C04\u5230 design.md\uFF08\u5FC5\u9009\uFF09**\uFF1A\n\u6BCF\u4E2A\u63D0\u6848\u90FD\u5FC5\u987B\u521B\u5EFA `design.md`\uFF0C\u8BB0\u5F55\u6280\u672F\u51B3\u7B56\u548C\u67B6\u6784\u601D\u8003\u3002\n\n**\u7AE0\u8282\u6620\u5C04\u89C4\u5219**\uFF1A\n- **\u5FC5\u9009\u7AE0\u8282**\uFF08\u6240\u6709\u63D0\u6848\u5FC5\u987B\u5305\u542B\uFF09\uFF1A\u80CC\u666F/Background\u3001\u51B3\u7B56/Decision\u3001\u98CE\u9669/Risks\n- **\u6309\u9700\u7AE0\u8282**\uFF08\u4EC5\u5F53\u6280\u672F\u65B9\u6848\u6D89\u53CA\u65F6\u624D\u751F\u6210\uFF09\uFF1A\n - \u6280\u672F\u65B9\u6848\u6709\u5EFA\u8868 SQL / DDL \u2192 \u751F\u6210 \u6570\u636E\u6A21\u578B/Database Design \u7AE0\u8282\n - \u6280\u672F\u65B9\u6848\u6709\u63A5\u53E3\u5B9A\u4E49 / API / SCF / RPC \u2192 \u751F\u6210 \u63A5\u53E3\u8BBE\u8BA1/API Contract \u7AE0\u8282\n - \u6280\u672F\u65B9\u6848\u6709 ES / MQ / \u7F13\u5B58 \u2192 \u751F\u6210 \u57FA\u7840\u8BBE\u65BD/Infrastructure \u7AE0\u8282\n - \u6280\u672F\u65B9\u6848\u6709\u524D\u7AEF\u8BBE\u8BA1 \u2192 \u751F\u6210 \u524D\u7AEF\u8BBE\u8BA1/Frontend Design \u7AE0\u8282\n -...(\u6309\u7167\u63D0\u4F9B\u7684\u6280\u672F\u65B9\u6848\u8865\u5145 \u603B\u4E4B\u8981\u8986\u76D6\u5168)\n- \u6BCF\u4E2A\u6309\u9700\u7AE0\u8282\u7684\u5185\u5BB9\u4ECE\u6280\u672F\u65B9\u6848\u5BF9\u5E94\u7AE0\u8282\u6620\u5C04\u800C\u6765\n- \u65E0\u6280\u672F\u65B9\u6848\u6587\u6863\u65F6\uFF0C\u4EC5\u6821\u9A8C\u5FC5\u9009\u7AE0\u8282\uFF08\u5411\u540E\u517C\u5BB9\uFF09\n\n```markdown\n## \u80CC\u666F\n[\u80CC\u666F\u3001\u7EA6\u675F\u3001\u5229\u76CA\u76F8\u5173\u8005]\n\n## \u76EE\u6807 / \u975E\u76EE\u6807\n- Goals: [...]\n- Non-Goals: [...]\n\n## \u51B3\u7B56\n- Decision: [\u5185\u5BB9\u548C\u539F\u56E0]\n- Alternatives considered: [\u9009\u9879 + \u7406\u7531]\n\n## \u98CE\u9669 / \u6743\u8861\n- [\u98CE\u9669] \u2192 \u7F13\u89E3\u63AA\u65BD\n\n## \u6700\u4F73\u5B9E\u8DF5\n[\u5B9E\u65BD\u8FC7\u7A0B\u4E2D\u7684\u6700\u4F73\u5B9E\u8DF5\u5EFA\u8BAE]\n\n## \u9690\u5F0F\u7EA6\u5B9A\n[\u56E2\u961F\u7279\u6709\u7684\u9690\u5F0F\u7EA6\u5B9A\u6216\u9ED8\u8BA4\u884C\u4E3A]\n\n## \u8FC1\u79FB\u8BA1\u5212\n[\u6B65\u9AA4\u3001\u56DE\u6EDA]\n\n## \u5F85\u89E3\u51B3\u95EE\u9898\n- [...]\n```\n\n**\u91CD\u8981**\uFF1Adesign.md \u662F\u77E5\u8BC6\u63D0\u53D6\u7684\u4E3B\u8981\u6765\u6E90\uFF0C\u5F52\u6863\u65F6\u4F1A\u81EA\u52A8\u63D0\u53D6\u5176\u4E2D\u7684\u201C\u51B3\u7B56\u201D\u3001\u201C\u6700\u4F73\u5B9E\u8DF5\u201D\u3001\u201C\u9690\u5F0F\u7EA6\u5B9A\u201D\u6C89\u6DC0\u5230\u9879\u76EE\u77E5\u8BC6\u5E93\u3002\n- [...]\n```\n\n## \u89C4\u8303\u6587\u4EF6\u683C\u5F0F\n\n### \u5173\u952E\uFF1A\u573A\u666F\u683C\u5F0F\n\n**\u6B63\u786E**\uFF08\u4F7F\u7528 #### \u6807\u9898\uFF09\uFF1A\n```markdown\n#### \u573A\u666F\uFF1A\u7528\u6237\u767B\u5F55\u6210\u529F\n- **\u5F53** \u63D0\u4F9B\u4E86\u6709\u6548\u51ED\u636E\n- **\u5219** \u8FD4\u56DE JWT token\n```\n\n**\u9519\u8BEF**\uFF08\u4E0D\u8981\u4F7F\u7528\u9879\u76EE\u7B26\u53F7\u6216\u7C97\u4F53\uFF09\uFF1A\n```markdown\n- **\u573A\u666F\uFF1A\u7528\u6237\u767B\u5F55** \u274C\n**\u573A\u666F**\uFF1A\u7528\u6237\u767B\u5F55 \u274C\n### \u573A\u666F\uFF1A\u7528\u6237\u767B\u5F55 \u274C\n```\n\n\u6BCF\u4E2A\u8981\u6C42\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u573A\u666F\u3002\n\n### \u8981\u6C42\u63AA\u8F9E\n- \u5BF9\u89C4\u8303\u6027\u8981\u6C42\u4F7F\u7528 SHALL/MUST\uFF08\u9664\u975E\u6709\u610F\u975E\u89C4\u8303\u6027\uFF0C\u5426\u5219\u907F\u514D\u4F7F\u7528 should/may\uFF09\n\n### \u589E\u91CF\u64CD\u4F5C\n\n- `## ADDED Requirements` - \u65B0\u529F\u80FD\n- `## MODIFIED Requirements` - \u66F4\u6539\u7684\u884C\u4E3A\n- `## REMOVED Requirements` - \u5DF2\u5F03\u7528\u7684\u529F\u80FD\n- `## RENAMED Requirements` - \u540D\u79F0\u66F4\u6539\n\n\u6807\u9898\u4F7F\u7528 `trim(header)` \u5339\u914D - \u5FFD\u7565\u7A7A\u767D\u3002\n\n#### \u4F55\u65F6\u4F7F\u7528 ADDED vs MODIFIED\n- ADDED\uFF1A\u5F15\u5165\u4E00\u4E2A\u65B0\u7684\u529F\u80FD\u6216\u5B50\u529F\u80FD\uFF0C\u53EF\u4EE5\u72EC\u7ACB\u4F5C\u4E3A\u8981\u6C42\u3002\u5F53\u66F4\u6539\u662F\u6B63\u4EA4\u7684\uFF08\u4F8B\u5982\uFF0C\u6DFB\u52A0\"\u659C\u6760\u547D\u4EE4\u914D\u7F6E\"\uFF09\u800C\u4E0D\u662F\u6539\u53D8\u73B0\u6709\u8981\u6C42\u7684\u8BED\u4E49\u65F6\uFF0C\u4F18\u5148\u4F7F\u7528 ADDED\u3002\n- MODIFIED\uFF1A\u66F4\u6539\u73B0\u6709\u8981\u6C42\u7684\u884C\u4E3A\u3001\u8303\u56F4\u6216\u9A8C\u6536\u6807\u51C6\u3002\u59CB\u7EC8\u7C98\u8D34\u5B8C\u6574\u7684\u3001\u66F4\u65B0\u7684\u8981\u6C42\u5185\u5BB9\uFF08\u6807\u9898 + \u6240\u6709\u573A\u666F\uFF09\u3002\u5F52\u6863\u5668\u5C06\u7528\u60A8\u5728\u6B64\u5904\u63D0\u4F9B\u7684\u5185\u5BB9\u66FF\u6362\u6574\u4E2A\u8981\u6C42\uFF1B\u90E8\u5206\u589E\u91CF\u5C06\u4E22\u5931\u5148\u524D\u7684\u8BE6\u7EC6\u4FE1\u606F\u3002\n- RENAMED\uFF1A\u4EC5\u5728\u540D\u79F0\u66F4\u6539\u65F6\u4F7F\u7528\u3002\u5982\u679C\u60A8\u8FD8\u66F4\u6539\u884C\u4E3A\uFF0C\u8BF7\u4F7F\u7528 RENAMED\uFF08\u540D\u79F0\uFF09\u52A0\u4E0A MODIFIED\uFF08\u5185\u5BB9\uFF09\uFF0C\u5F15\u7528\u65B0\u540D\u79F0\u3002\n\n\u5E38\u89C1\u9677\u9631\uFF1A\u4F7F\u7528 MODIFIED \u6DFB\u52A0\u65B0\u5173\u6CE8\u70B9\u800C\u4E0D\u5305\u542B\u5148\u524D\u7684\u6587\u672C\u3002\u8FD9\u4F1A\u5728\u5F52\u6863\u65F6\u5BFC\u81F4\u8BE6\u7EC6\u4FE1\u606F\u4E22\u5931\u3002\u5982\u679C\u60A8\u6CA1\u6709\u660E\u786E\u66F4\u6539\u73B0\u6709\u8981\u6C42\uFF0C\u8BF7\u5728 ADDED \u4E0B\u6DFB\u52A0\u65B0\u8981\u6C42\u3002\n\n\u6B63\u786E\u7F16\u5199 MODIFIED \u8981\u6C42\uFF1A\n1) \u5728 `zhuanspec/specs/<capability>/spec.md` \u4E2D\u627E\u5230\u73B0\u6709\u8981\u6C42\u3002\n2) \u590D\u5236\u6574\u4E2A\u8981\u6C42\u5757\uFF08\u4ECE `### Requirement: ...` \u5230\u5176\u573A\u666F\uFF09\u3002\n3) \u5C06\u5176\u7C98\u8D34\u5230 `## MODIFIED Requirements` \u4E0B\u5E76\u7F16\u8F91\u4EE5\u53CD\u6620\u65B0\u884C\u4E3A\u3002\n4) \u786E\u4FDD\u6807\u9898\u6587\u672C\u5B8C\u5168\u5339\u914D\uFF08\u5FFD\u7565\u7A7A\u767D\uFF09\u5E76\u81F3\u5C11\u4FDD\u7559\u4E00\u4E2A `#### Scenario:`\u3002\n\nRENAMED \u793A\u4F8B\uFF1A\n```markdown\n## RENAMED Requirements\n- FROM: `### \u9700\u6C42\uFF1ALogin`\n- TO: `### \u9700\u6C42\uFF1AUser Authentication`\n```\n\n## \u6545\u969C\u6392\u9664\n\n### \u5E38\u89C1\u9519\u8BEF\n\n**\"\u53D8\u66F4\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u589E\u91CF\"**\n- \u68C0\u67E5 `changes/[name]/specs/` \u662F\u5426\u5B58\u5728 .md \u6587\u4EF6\n- \u9A8C\u8BC1\u6587\u4EF6\u5177\u6709\u64CD\u4F5C\u524D\u7F00\uFF08## ADDED Requirements\uFF09\n\n**\"\u8981\u6C42\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u573A\u666F\"**\n- \u68C0\u67E5\u573A\u666F\u662F\u5426\u4F7F\u7528 `#### Scenario:` \u683C\u5F0F\uFF084 \u4E2A\u4E95\u53F7\uFF09\n- \u4E0D\u8981\u5BF9\u573A\u666F\u6807\u9898\u4F7F\u7528\u9879\u76EE\u7B26\u53F7\u6216\u7C97\u4F53\n\n**\u9759\u9ED8\u573A\u666F\u89E3\u6790\u5931\u8D25**\n- \u9700\u8981\u7CBE\u786E\u683C\u5F0F\uFF1A`#### Scenario: Name`\n- \u4F7F\u7528\u4EE5\u4E0B\u547D\u4EE4\u8C03\u8BD5\uFF1A`zhuanspec show [change] --json --deltas-only`\n\n### \u9A8C\u8BC1\u63D0\u793A\n\n```bash\n# \u59CB\u7EC8\u4F7F\u7528\u4E25\u683C\u6A21\u5F0F\u8FDB\u884C\u5168\u9762\u68C0\u67E5\nzhuanspec validate [change] --strict\n\n# \u8C03\u8BD5\u589E\u91CF\u89E3\u6790\nzhuanspec show [change] --json | jq '.deltas'\n\n# \u68C0\u67E5\u7279\u5B9A\u8981\u6C42\nzhuanspec show [spec] --json -r 1\n```\n\n## \u7406\u60F3\u8DEF\u5F84\u811A\u672C\n\n```bash\n# 1) \u63A2\u7D22\u5F53\u524D\u72B6\u6001\nzhuanspec spec list --long\nzhuanspec list\n# \u53EF\u9009\u5168\u6587\u641C\u7D22\uFF1A\n# rg -n \"Requirement:|Scenario:\" zhuanspec/specs\n# rg -n \"^#|Requirement:\" zhuanspec/changes\n\n# 2) \u9009\u62E9\u53D8\u66F4 ID \u5E76\u642D\u5EFA\nCHANGE=add-two-factor-auth\nmkdir -p zhuanspec/changes/$CHANGE/{specs/auth}\nprintf \"## \u53D8\u66F4\u539F\u56E0\\n...\\n\\n## \u53D8\u66F4\u5185\u5BB9\\n- ...\\n\\n## \u5F71\u54CD\u8303\u56F4\\n- ...\\n\" > zhuanspec/changes/\\$CHANGE/proposal.md\nprintf \"## 1. \u5B9E\u73B0\n- [ ] 1.1 ...\n\" > zhuanspec/changes/$CHANGE/tasks.md\n\n# 3) \u6DFB\u52A0\u589E\u91CF\uFF08\u793A\u4F8B\uFF09\ncat > zhuanspec/changes/$CHANGE/specs/auth/spec.md << 'EOF'\n## ADDED Requirements\n### \u9700\u6C42\uFF1A\u53CC\u56E0\u7D20\u8BA4\u8BC1\n\u7528\u6237 MUST \u5728\u767B\u5F55\u65F6\u63D0\u4F9B\u7B2C\u4E8C\u4E2A\u8BA4\u8BC1\u56E0\u7D20\u3002\n\n#### \u573A\u666F\uFF1A\u9700\u8981 OTP\n- **\u5F53** \u63D0\u4F9B\u4E86\u6709\u6548\u51ED\u636E\n- **\u5219** \u9700\u8981 OTP \u6311\u6218\nEOF\n\n# 4) \u9A8C\u8BC1\nzhuanspec validate $CHANGE --strict\n```\n\n## \u591A\u529F\u80FD\u793A\u4F8B\n\n```\nzhuanspec/changes/add-2fa-notify/\n\u251C\u2500\u2500 proposal.md\n\u251C\u2500\u2500 tasks.md\n\u2514\u2500\u2500 specs/\n \u251C\u2500\u2500 auth/\n \u2502 \u2514\u2500\u2500 spec.md # ADDED: \u53CC\u56E0\u7D20\u8BA4\u8BC1\n \u2514\u2500\u2500 notifications/\n \u2514\u2500\u2500 spec.md # ADDED: OTP \u90AE\u4EF6\u901A\u77E5\n```\n\nauth/spec.md\n```markdown\n## ADDED Requirements\n### \u9700\u6C42\uFF1A\u53CC\u56E0\u7D20\u8BA4\u8BC1\n...\n```\n\nnotifications/spec.md\n```markdown\n## ADDED Requirements\n### \u9700\u6C42\uFF1AOTP \u90AE\u4EF6\u901A\u77E5\n...\n```\n\n## \u6700\u4F73\u5B9E\u8DF5\n\n### \u7B80\u5355\u4F18\u5148\n- \u9ED8\u8BA4\u65B0\u589E\u4EE3\u7801 <100 \u884C\n- \u5355\u6587\u4EF6\u5B9E\u73B0\uFF0C\u76F4\u5230\u8BC1\u660E\u4E0D\u8DB3\n- \u907F\u514D\u6CA1\u6709\u660E\u786E\u7406\u7531\u7684\u6846\u67B6\n- \u9009\u62E9\u65E0\u804A\u4F46\u7ECF\u8FC7\u9A8C\u8BC1\u7684\u6A21\u5F0F\n\n### \u590D\u6742\u6027\u89E6\u53D1\u6761\u4EF6\n\u4EC5\u5728\u4EE5\u4E0B\u60C5\u51B5\u4E0B\u6DFB\u52A0\u590D\u6742\u6027\uFF1A\n- \u6027\u80FD\u6570\u636E\u8868\u660E\u5F53\u524D\u89E3\u51B3\u65B9\u6848\u592A\u6162\n- \u5177\u4F53\u7684\u89C4\u6A21\u8981\u6C42\uFF08>1000 \u7528\u6237\uFF0C>100MB \u6570\u636E\uFF09\n- \u591A\u4E2A\u7ECF\u8FC7\u9A8C\u8BC1\u7684\u7528\u4F8B\u9700\u8981\u62BD\u8C61\n\n### \u6E05\u6670\u7684\u5F15\u7528\n- \u4F7F\u7528 `file.ts:42` \u683C\u5F0F\u8868\u793A\u4EE3\u7801\u4F4D\u7F6E\n- \u5C06\u89C4\u8303\u5F15\u7528\u4E3A `specs/auth/spec.md`\n- \u94FE\u63A5\u76F8\u5173\u53D8\u66F4\u548C PR\n\n### \u529F\u80FD\u547D\u540D\n- \u4F7F\u7528\u52A8\u8BCD-\u540D\u8BCD\uFF1A`user-auth`\u3001`payment-capture`\n- \u6BCF\u4E2A\u529F\u80FD\u5355\u4E00\u76EE\u7684\n- 10 \u5206\u949F\u53EF\u7406\u89E3\u6027\u89C4\u5219\n- \u5982\u679C\u63CF\u8FF0\u9700\u8981\"AND\"\uFF0C\u5219\u62C6\u5206\n\n### \u53D8\u66F4 ID \u547D\u540D\n- \u4F7F\u7528 kebab-case\uFF0C\u7B80\u77ED\u4E14\u63CF\u8FF0\u6027\uFF1A`add-two-factor-auth`\n- \u4F18\u5148\u4F7F\u7528\u52A8\u8BCD\u5F00\u5934\u7684\u524D\u7F00\uFF1A`add-`\u3001`update-`\u3001`remove-`\u3001`refactor-`\n- \u786E\u4FDD\u552F\u4E00\u6027\uFF1B\u5982\u679C\u5DF2\u4F7F\u7528\uFF0C\u8FFD\u52A0 `-2`\u3001`-3` \u7B49\n\n## \u5DE5\u5177\u9009\u62E9\u6307\u5357\n\n| \u4EFB\u52A1 | \u5DE5\u5177 | \u539F\u56E0 |\n|------|------|-----|\n| \u6309\u6A21\u5F0F\u67E5\u627E\u6587\u4EF6 | Glob | \u5FEB\u901F\u6A21\u5F0F\u5339\u914D |\n| \u641C\u7D22\u4EE3\u7801\u5185\u5BB9 | Grep | \u4F18\u5316\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u641C\u7D22 |\n| \u8BFB\u53D6\u7279\u5B9A\u6587\u4EF6 | Read | \u76F4\u63A5\u6587\u4EF6\u8BBF\u95EE |\n| \u63A2\u7D22\u672A\u77E5\u8303\u56F4 | Task | \u591A\u6B65\u9AA4\u8C03\u67E5 |\n\n## \u9519\u8BEF\u6062\u590D\n\n### \u53D8\u66F4\u51B2\u7A81\n1. \u8FD0\u884C `zhuanspec list` \u67E5\u770B\u6D3B\u52A8\u53D8\u66F4\n2. \u68C0\u67E5\u91CD\u53E0\u7684\u89C4\u8303\n3. \u4E0E\u53D8\u66F4\u6240\u6709\u8005\u534F\u8C03\n4. \u8003\u8651\u5408\u5E76\u63D0\u6848\n\n### \u9A8C\u8BC1\u5931\u8D25\n1. \u4F7F\u7528 `--strict` \u6807\u5FD7\u8FD0\u884C\n2. \u68C0\u67E5 JSON \u8F93\u51FA\u4EE5\u83B7\u53D6\u8BE6\u7EC6\u4FE1\u606F\n3. \u9A8C\u8BC1\u89C4\u8303\u6587\u4EF6\u683C\u5F0F\n4. \u786E\u4FDD\u573A\u666F\u683C\u5F0F\u6B63\u786E\n\n### \u7F3A\u5C11\u4E0A\u4E0B\u6587\n1. \u9996\u5148\u9605\u8BFB project.md\n2. \u68C0\u67E5\u76F8\u5173\u89C4\u8303\n3. \u5BA1\u67E5\u6700\u8FD1\u7684\u5F52\u6863\n4. \u8BF7\u6C42\u6F84\u6E05\n\n## \u5FEB\u901F\u53C2\u8003\n\n### \u9636\u6BB5\u6307\u793A\u5668\n- `changes/` - \u5DF2\u63D0\u8BAE\uFF0C\u5C1A\u672A\u6784\u5EFA\n- `specs/` - \u5DF2\u6784\u5EFA\u5E76\u90E8\u7F72\n- `archive/` - \u5DF2\u5B8C\u6210\u7684\u53D8\u66F4\n\n### \u6587\u4EF6\u7528\u9014\n- `proposal.md` - \u539F\u56E0\u548C\u5185\u5BB9\n- `tasks.md` - \u5B9E\u65BD\u6B65\u9AA4\n- `design.md` - \u6280\u672F\u51B3\u7B56\n- `spec.md` - \u8981\u6C42\u548C\u884C\u4E3A\n\n### CLI \u8981\u70B9\n```bash\nzhuanspec list # \u6B63\u5728\u8FDB\u884C\u4EC0\u4E48\uFF1F\nzhuanspec show [item] # \u67E5\u770B\u8BE6\u7EC6\u4FE1\u606F\nzhuanspec validate --strict # \u662F\u5426\u6B63\u786E\uFF1F\nzhuanspec archive <change-id> [--yes|-y] # \u6807\u8BB0\u5B8C\u6210\uFF08\u6DFB\u52A0 --yes \u7528\u4E8E\u81EA\u52A8\u5316\uFF09\n```\n\n\u8BB0\u4F4F\uFF1A\u89C4\u8303\u662F\u771F\u76F8\u3002\u53D8\u66F4\u662F\u63D0\u6848\u3002\u4FDD\u6301\u5B83\u4EEC\u540C\u6B65\u3002\n\n## \u4EFB\u52A1\u6267\u884C\u7F16\u6392\n\n\u5F53 apply \u6307\u4EE4\u4E2D\u5305\u542B `<execution_plan>`/task.md\u4E2D\u5305\u542B `@depends` \u65F6\uFF0C\u5FC5\u987B\u6309\u4EE5\u4E0B\u7B56\u7565\u6267\u884C\u4EFB\u52A1\uFF0C\u800C\u975E\u987A\u5E8F\u9010\u4E00\u6267\u884C\u3002\n\n### \u8C03\u5EA6\u89C4\u5219\n\n1. **\u6309 wave \u7F16\u53F7\u4ECE\u5C0F\u5230\u5927**\u4F9D\u6B21\u6267\u884C\uFF0Cwave \u4E4B\u95F4\u4E25\u683C\u4E32\u884C\n2. **\u540C\u4E00 wave \u5185\u7684\u591A\u4E2A task**\uFF1A\u4E3A\u6BCF\u4E2A task \u542F\u52A8\u72EC\u7ACB\u7684 subagent\uFF08Coding \u7C7B\u578B\uFF09\uFF0C\u4F46**\u6700\u5927\u5E76\u884C\u5EA6\u9650\u5236\u4E3A 3 \u4E2A subagent**\n3. **\u8D85\u8FC7 3 \u4E2A\u4EFB\u52A1\u7684 Wave**\uFF1A\u6309 batch \u62C6\u5206\u6267\u884C\uFF0C\u6BCF\u6279\u6700\u591A 3 \u4E2A subagent \u5E76\u884C\uFF0Cbatch \u95F4\u4E32\u884C\u7B49\u5F85\n4. **\u7B49\u5F85\u672C wave \u6240\u6709 subagent \u5B8C\u6210\u540E**\uFF0C\u624D\u542F\u52A8\u4E0B\u4E00 wave\n5. \u540C\u4E00 wave \u5185\u4EC5\u6709\u4E00\u4E2A task \u65F6\uFF0C\u542F\u52A8\u5355\u4E2A subagent \u6267\u884C\n6. **\u53C2\u8003 `<scheduling_summary>` \u4E2D\u7684\u5177\u4F53\u8C03\u5EA6\u6307\u4EE4**\uFF0C\u660E\u786E\u6BCF\u4E2A wave \u9700\u8981\u542F\u52A8\u7684 subagent \u6570\u91CF\u548C\u6267\u884C\u65B9\u5F0F\n7. **\u7F16\u8BD1\u5931\u8D25\u5904\u7406**\uFF1A\u5E76\u884C\u4EFB\u52A1\u7F16\u8BD1\u5931\u8D25\u65F6\uFF0C\u5148\u5C1D\u8BD5\u4FEE\u590D\uFF0C\u65E0\u6CD5\u4FEE\u590D\u5219\u6807\u8BB0\u4E3A BLOCKED\uFF0C\u7EE7\u7EED\u6267\u884C\u540C Wave \u5176\u4ED6\u4EFB\u52A1\n8. **Wave \u5B8C\u6210\u540E\u96C6\u6210\u6D4B\u8BD5**\uFF1A\u6BCF\u4E2A Wave \u5168\u90E8\u4EFB\u52A1\u5904\u7406\u5B8C\u6210\u540E\uFF0C\u8FDB\u5165\u96C6\u6210\u6D4B\u8BD5\u9636\u6BB5\uFF08\u8BE6\u89C1\u300CWave \u96C6\u6210\u9A8C\u8BC1\u300D\u7AE0\u8282\uFF09\n\n### \u8C03\u5EA6\u6307\u4EE4\u683C\u5F0F\n\n\u6267\u884C\u8BA1\u5212\u7684 `<wave>` \u5143\u7D20\u5305\u542B\u4EE5\u4E0B\u5C5E\u6027\u7528\u4E8E\u6307\u5BFC subagent \u8C03\u5EA6\uFF1A\n- `subagent_count`\uFF1A\u8BE5\u6CE2\u6B21\u9700\u8981\u542F\u52A8\u7684 subagent \u6570\u91CF\uFF08\u7B49\u4E8E wave \u5185\u7684\u4EFB\u52A1\u6570\uFF09\n- `execution_mode`\uFF1A\u6267\u884C\u6A21\u5F0F\uFF0C`parallel`\uFF08\u5E76\u884C\uFF09\u6216 `serial`\uFF08\u4E32\u884C\uFF09\n- `max_concurrency`\uFF1A\u6700\u5927\u5E76\u884C\u5EA6\u9650\u5236\uFF08\u9ED8\u8BA4 3\uFF09\n\n\u5F53 Wave \u5185\u4EFB\u52A1\u6570\u8D85\u8FC7 `max_concurrency` \u65F6\uFF0C`<wave>` \u5143\u7D20\u5305\u542B `<batch>` \u5B50\u5143\u7D20\uFF1A\n- `<batch number=\"1\" subagent_count=\"3\">` \u2014 \u6BCF\u6279\u6700\u591A 3 \u4E2A subagent \u5E76\u884C\n- batch \u4E4B\u95F4\u4E32\u884C\u6267\u884C\uFF0C\u524D\u4E00 batch \u5168\u90E8\u5B8C\u6210\u540E\u624D\u542F\u52A8\u4E0B\u4E00 batch\n\n`<scheduling_summary>` \u63D0\u4F9B\u4EBA\u7C7B\u53EF\u8BFB\u7684\u8C03\u5EA6\u6458\u8981\uFF0C\u683C\u5F0F\u5982\u4E0B\uFF1A\n```\nWave 1 \u2192 \u542F\u52A8 1 \u4E2A subagent \u6267\u884C\u8BE5\u6CE2\u6B21\u7684\u5355\u4E2A\u4EFB\u52A1\nWave 2 \u2192 \u542F\u52A8 1 \u4E2A subagent \u6267\u884C\u8BE5\u6CE2\u6B21\u7684\u5355\u4E2A\u4EFB\u52A1\nWave 3 \u2192 \u542F\u52A8 2 \u4E2A subagent \u5E76\u884C\u6267\u884C\u8BE5\u6CE2\u6B21\u7684 2 \u4E2A\u4EFB\u52A1\n```\n\nAI \u52A9\u624B\u5728\u6267\u884C\u65F6**\u5FC5\u987B**\u6309\u7167 `<scheduling_summary>` \u4E2D\u7684\u6307\u4EE4\u542F\u52A8\u5BF9\u5E94\u6570\u91CF\u7684 subagent\u3002\n\n### Subagent \u4E0A\u4E0B\u6587\u9694\u79BB\n\n\u6BCF\u4E2A subagent \u7684 prompt \u4E2D**\u4EC5\u5305\u542B**\uFF1A\n- \u5F53\u524D task \u7684\u63CF\u8FF0\u548C\u9A8C\u6536\u6807\u51C6\n- \u5F53\u524D task \u5173\u8054\u7684 `@skill` \u5185\u5BB9\uFF08\u901A\u8FC7 skill \u540D\u79F0\u89E6\u53D1\u52A0\u8F7D\uFF09\n- \u76F8\u5173\u7684 spec \u6587\u4EF6\u8DEF\u5F84\u548C\u5185\u5BB9\uFF08\u4EC5\u9650\u8BE5 task \u6D89\u53CA\u7684\u90E8\u5206\uFF09\n- \u524D\u5E8F wave \u7684\u5B8C\u6210\u6458\u8981\uFF08\u800C\u975E\u5B8C\u6574\u8F93\u51FA\uFF09\n\n**\u7981\u6B62**\u5411 subagent \u6CE8\u5165\uFF1A\n- \u5176\u4ED6 wave \u7684 task \u8BE6\u60C5\n- \u4E0D\u76F8\u5173\u7684 skill \u5185\u5BB9\n- \u5176\u4ED6 subagent \u7684\u5B8C\u6574\u8F93\u51FA\n\n### \u5B8C\u6210\u540C\u6B65\n\n- \u6BCF\u4E2A subagent \u5B8C\u6210\u540E\uFF0C\u63D0\u53D6\u7B80\u77ED\u7684**\u5B8C\u6210\u6458\u8981**\uFF08\u4FEE\u6539\u4E86\u54EA\u4E9B\u6587\u4EF6\u3001\u5173\u952E\u53D8\u66F4\u70B9\uFF09\n- \u5C06\u6458\u8981\u4F20\u9012\u7ED9\u540E\u7EED wave \u7684 subagent \u4F5C\u4E3A\u4E0A\u4E0B\u6587\n- \u5728 `tasks.md` \u4E2D\u5C06\u5BF9\u5E94\u4EFB\u52A1\u6807\u8BB0\u4E3A `[x]`\n\n### \u964D\u7EA7\u7B56\u7565\n\n\u5F53 AI \u5E73\u53F0\u4E0D\u652F\u6301 subagent \u65F6\uFF0C\u6309\u4EE5\u4E0B\u964D\u7EA7\u7B56\u7565\u6267\u884C\uFF1A\n1. \u4ECD\u6309 wave \u987A\u5E8F\u6267\u884C\u4EFB\u52A1\n2. \u6BCF\u4E2A task \u6267\u884C\u524D\uFF0C\u6E05\u7406\u4E0D\u76F8\u5173\u7684 skill \u4E0A\u4E0B\u6587\n3. \u6BCF\u4E2A task \u6267\u884C\u540E\uFF0C\u4EC5\u4FDD\u7559\u5B8C\u6210\u6458\u8981\uFF0C\u907F\u514D\u4E0A\u4E0B\u6587\u7D2F\u79EF\u81A8\u80C0\n\n---\n\n## Apply \u9636\u6BB5\u4E13\u7528 Agent\n\nApply \u9636\u6BB5\u4F7F\u7528\u4E24\u79CD\u4E13\u7528 Agent \u7C7B\u578B\u6267\u884C\u4EE3\u7801\u5B9E\u65BD\u4EFB\u52A1\uFF0C\u7531\u7F16\u6392 Agent\uFF08\u4E3B Agent\uFF09\u6839\u636E\u4EFB\u52A1\u6807\u6CE8\u9009\u62E9\u3002\n\n**Agent \u5B9A\u4E49\u6587\u4EF6\u8DEF\u5F84**\uFF08\u4F9B Claude/Cursor \u7B49\u5DE5\u5177\u6CE8\u518C\uFF09\uFF1A\n- `agents/zhuanspec/apply-agent.md` - \u666E\u901A\u4EE3\u7801\u5B9E\u65BD Agent\n- `agents/zhuanspec/tdd-apply-agent.md` - TDD \u6A21\u5F0F Agent\n\n### Agent \u7C7B\u578B\u9009\u62E9\u89C4\u5219\uFF08\u53CC\u6761\u4EF6\u5224\u5B9A\uFF09\n\n\u7F16\u6392 Agent \u5728\u4E3A\u6BCF\u4E2A\u4EFB\u52A1\u542F\u52A8 subagent \u524D\uFF0CMUST \u4E25\u683C\u6267\u884C\u4EE5\u4E0B\u53CC\u6761\u4EF6\u5224\u5B9A\uFF1A\n\n| \u6761\u4EF6 1\uFF1A@test-case | \u6761\u4EF6 2\uFF1A\u4EFB\u52A1\u7C7B\u578B | Agent \u7C7B\u578B | \u5B9A\u4E49\u6587\u4EF6 |\n|------|------|-----------|--------|\n| \u65E0 `@test-case` | \u2014\uFF08\u8DF3\u8FC7\uFF09 | `applyAgent` | `agents/zhuanspec/apply-agent.md` |\n| \u6709 `@test-case:TC-XXX` | \u9002\u5408 TDD\uFF08\u540E\u7AEF\u4E1A\u52A1\u903B\u8F91/\u63A5\u53E3\u5B9E\u73B0/\u590D\u6742\u67E5\u8BE2\uFF1B\u524D\u7AEF\u7EC4\u4EF6\u4EA4\u4E92/Hooks/\u8868\u5355\u6821\u9A8C/utils/services \u7B49\u53EF\u6D4B\u884C\u4E3A\uFF09 | `tddApplyAgent` | `agents/zhuanspec/tdd-apply-agent.md` |\n| \u6709 `@test-case:TC-XXX` | \u4E0D\u9002\u5408 TDD\uFF08DDL/\u914D\u7F6E/DTO/ES\u7D22\u5F15/Mapper XML/\u524D\u7AEF\u7EAF\u9759\u6001\u5C55\u793A\uFF09 | `applyAgent`\uFF08\u964D\u7EA7\uFF09 | `agents/zhuanspec/apply-agent.md` |\n\n**\u5224\u5B9A\u539F\u5219**\uFF1A\u6761\u4EF6 2 \u4F9D\u636E**\u662F\u5426\u5B58\u5728\u53EF\u6D4B\u8BD5\u884C\u4E3A**\uFF0C\u4E0E\u6280\u672F\u6808/\u524D\u540E\u7AEF\u65E0\u5173\u3002\u524D\u7AEF\u53EA\u8981\u5305\u542B\u72B6\u6001\u3001\u4EA4\u4E92\u3001Hooks\u3001\u8868\u5355\u6821\u9A8C\u3001utils\u3001services \u7B49\u53EF\u6D4B\u884C\u4E3A\u5373\u5C5E\u4E8E\u9002\u5408 TDD\u3002\n\n**\u4E0D\u9002\u5408 TDD \u7684\u4EFB\u52A1\u7C7B\u578B**\uFF1A\u5EFA\u8868/DDL\uFF08SQL \u811A\u672C\uFF09\u3001\u914D\u7F6E\u53D8\u66F4\uFF08yaml/properties/xml\uFF09\u3001\u7EAF DTO/Entity/Enum \u5B9A\u4E49\u3001ES \u7D22\u5F15\u6A21\u677F/JSON \u8D44\u6E90\u6587\u4EF6\u3001\u524D\u7AEF\u7EAF\u9759\u6001\u5C55\u793A\u7EC4\u4EF6\uFF08\u65E0 state / \u65E0\u4E8B\u4EF6 / \u65E0\u6570\u636E\u5904\u7406\uFF09\u3001Mapper XML/DAO \u63A5\u53E3\u5B9A\u4E49\u3002\n\n**\u9002\u5408 TDD \u7684\u524D\u7AEF\u4EFB\u52A1\u7C7B\u578B\uFF08\u8865\u5145\uFF09**\uFF1A\u7EC4\u4EF6\u4EA4\u4E92\u4E0E\u72B6\u6001\u7BA1\u7406\u3001\u81EA\u5B9A\u4E49 Hooks\u3001\u8868\u5355\u6821\u9A8C\u4E0E\u53D7\u63A7\u903B\u8F91\u3001\u524D\u7AEF utils/services\u3001store/reducer/selector\u3001\u6570\u636E\u683C\u5F0F\u5316\u4E0E\u7BA1\u9053\u3002\u524D\u7AEF\u542B\u72B6\u6001/\u4EA4\u4E92/Hooks/\u8868\u5355\u6821\u9A8C/utils/services \u7684\u4EFB\u52A1\u5C5E\u4E8E\u9002\u5408 TDD\uFF0C\u4E0D\u5F97\u4EE5\"\u524D\u7AEF\"\u4E3A\u7531\u964D\u7EA7\u3002\n\n**\u51B3\u7B56\u8BB0\u5F55\uFF08MANDATORY\uFF09**\uFF1A\u7F16\u6392 Agent MUST \u5728\u542F\u52A8\u6BCF\u4E2A subagent \u7684 prompt \u5F00\u5934\u6CE8\u5165 Agent \u9009\u62E9\u51B3\u7B56\uFF08Agent \u7C7B\u578B/@test-case \u6807\u6CE8/\u4EFB\u52A1\u7C7B\u578B\u5224\u5B9A/TDD \u9002\u7528\u6027\uFF09\uFF0Csubagent MUST \u5C06\u6B64\u51B3\u7B56\u4FE1\u606F\u539F\u6837\u5199\u5165\u4EFB\u52A1\u62A5\u544A\u3002\n\n### Agent \u4F7F\u7528\u65B9\u5F0F\n\n\u7F16\u6392 Agent\uFF08\u4E3B Agent\uFF09\u5728 Wave \u5E76\u884C\u6267\u884C\u65F6\uFF1A\n\n1. **\u9009\u62E9 Agent**\uFF1A\u6839\u636E\u4EFB\u52A1\u7684 `@test-case` \u6807\u6CE8\u548C\u4EFB\u52A1\u7C7B\u578B\uFF0C\u6309\u53CC\u6761\u4EF6\u89C4\u5219\u9009\u62E9\u5BF9\u5E94 Agent \u7C7B\u578B\n2. **\u52A0\u8F7D Agent \u5B9A\u4E49**\uFF1A\u8BFB\u53D6\u5BF9\u5E94 Agent \u5B9A\u4E49\u6587\u4EF6\u83B7\u53D6\u5B8C\u6574\u6307\u4EE4\n3. **\u6CE8\u5165\u4E0A\u4E0B\u6587**\uFF1A\n - \u5F53\u524D task \u7684\u5B8C\u6574\u63CF\u8FF0\n - \u76F8\u5173 spec \u6587\u4EF6\u5185\u5BB9\n - Rules \u548C Knowledge\uFF08\u8E29\u5751\u8B66\u544A\u3001\u6700\u4F73\u5B9E\u8DF5\uFF09\n - \u524D\u5E8F wave \u5B8C\u6210\u6458\u8981\n4. **\u542F\u52A8 Subagent**\uFF1A\u4F7F\u7528 Agent tool \u542F\u52A8 subagent\n5. **\u5904\u7406\u72B6\u6001\u62A5\u544A**\uFF1A\u6839\u636E Agent \u8FD4\u56DE\u7684 Status \u6267\u884C\u540E\u7EED\u64CD\u4F5C\n\n### Rules \u548C Knowledge \u6CE8\u5165\uFF08\u5173\u952E\uFF09\n\n\u7F16\u6392 Agent MUST \u5728\u6BCF\u4E2A subagent prompt \u4E2D\u6CE8\u5165\u4EE5\u4E0B\u4E0A\u4E0B\u6587\uFF1A\n\n**Rules \u52A0\u8F7D**\uFF08\u6839\u636E @skill \u9009\u62E9\u6027\u6CE8\u5165\uFF09\uFF1A\n- `api-design.md` - \u524D\u540E\u7AEF\u63A5\u53E3\u8BBE\u8BA1\u89C4\u8303\uFF08\u6D89\u53CA Controller/API \u65F6\uFF09\n- `dao-standards.md` - Java DAO \u5C42\u89C4\u8303\uFF08\u6D89\u53CA DAO \u65F6\uFF09\n- `coding-standards.md` - KF \u540E\u7AEF\u7F16\u7801\u89C4\u5219\uFF08\u6D89\u53CA Java \u4EE3\u7801\u65F6\uFF09\n- `java-db-schema-standards.md` - MySQL \u6570\u636E\u5E93\u5EFA\u8868\u6539\u8868\u89C4\u8303\n\n**Knowledge \u52A0\u8F7D**\uFF08MUST \u59CB\u7EC8\u6CE8\u5165\uFF09\uFF1A\n- `knowledge/index.md` - \u77E5\u8BC6\u7D22\u5F15\u6458\u8981\n- \u76F8\u5173 `best-practices/` \u5185\u5BB9\uFF08\u6700\u4F73\u5B9E\u8DF5\uFF09\n- \u76F8\u5173 `troubleshooting/` \u5185\u5BB9\uFF08\u8E29\u5751\u8B66\u544A\uFF09\n\n### \u72B6\u6001\u5904\u7406\u7B56\u7565\n\n| Status | \u5904\u7406\u65B9\u5F0F |\n|--------|--------|\n| **DONE** | \u7EE7\u7EED\u4E0B\u4E00\u4EFB\u52A1\uFF0C\u8BB0\u5F55\u5B8C\u6210\u6458\u8981 |\n| **DONE_WITH_CONCERNS** | \u8BC4\u4F30 concerns\uFF0C\u6B63\u786E\u6027\u95EE\u9898\u5148\u4FEE\u590D\uFF0C\u89C2\u5BDF\u6027\u95EE\u9898\u8BB0\u5F55\u540E\u7EE7\u7EED\u3002**MUST \u5C06 concerns \u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A\u7684 Concerns \u8FFD\u8E2A\u7AE0\u8282** |\n| **BLOCKED** | \u8BC4\u4F30 blocker \u7C7B\u578B\uFF1A\u63D0\u4F9B\u4E0A\u4E0B\u6587/\u6362\u66F4\u5F3A\u6A21\u578B/\u62C6\u5206\u4EFB\u52A1/\u4FEE\u6539\u8BA1\u5212\u3002**MUST \u5C06 blocker \u539F\u56E0\u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A** |\n| **NEEDS_CONTEXT** | \u63D0\u4F9B\u7F3A\u5931\u4FE1\u606F\u5E76\u91CD\u65B0\u542F\u52A8 subagent |\n\n### Subagent \u4E0A\u4E0B\u6587\u9694\u79BB\u89C4\u5219\n\n**\u5FC5\u987B\u6CE8\u5165**\uFF1A\n- \u5F53\u524D task \u7684\u5B8C\u6574\u63CF\u8FF0\u548C\u9A8C\u6536\u6807\u51C6\n- \u5F53\u524D task \u5173\u8054\u7684 `@skill` \u5185\u5BB9\n- \u76F8\u5173\u7684 spec \u6587\u4EF6\u8DEF\u5F84\u548C\u5185\u5BB9\uFF08\u4EC5\u9650\u8BE5 task \u6D89\u53CA\u7684\u90E8\u5206\uFF09\n- \u524D\u5E8F wave \u7684\u5B8C\u6210\u6458\u8981\uFF08\u800C\u975E\u5B8C\u6574\u8F93\u51FA\uFF09\n- Rules \u548C Knowledge \u4E0A\u4E0B\u6587\n- **\u82E5 task \u6709 `@test-case` \u6807\u6CE8**\uFF1A\u4ECE `test-cases.md` \u4E2D\u63D0\u53D6\u5BF9\u5E94 TC-XXX \u7684\u5B8C\u6574\u5185\u5BB9\uFF08\u542B @layer\u3001BE \u9A8C\u6536\u3001FE \u9A8C\u6536\uFF09\uFF0C\u6CE8\u5165\u7ED9 TDD Apply Agent\n- **design.md \u7684\u5C42\u95F4\u4F9D\u8D56\u89C4\u5219 + \u67B6\u6784\u7EA6\u675F**\uFF08\u6240\u6709 task \u5FC5\u987B\u6CE8\u5165\uFF0C\u786E\u4FDD Agent \u4E86\u89E3\u7981\u6B62\u7684\u8DE8\u5C42\u8C03\u7528\uFF09\n\n**\u7981\u6B62\u6CE8\u5165**\uFF1A\n- \u5176\u4ED6 wave \u7684 task \u8BE6\u60C5\n- \u4E0D\u76F8\u5173\u7684 skill \u5185\u5BB9\n- \u5176\u4ED6 subagent \u7684\u5B8C\u6574\u8F93\u51FA\n\n## Skill \u65AD\u6D41\u6062\u590D\n\n\u5982\u679C\u5728\u6267\u884C @skill \u8FC7\u7A0B\u4E2D\u9047\u5230\u5F02\u5E38\uFF1A\n1. \u8BB0\u5F55\u5F02\u5E38\u5230 progress.json \u7684 skillCalls\n2. \u6807\u8BB0 afterAction: 'skip-and-continue'\n3. \u7EE7\u7EED\u5F53\u524D\u4EFB\u52A1\u7684\u540E\u7EED\u5B9E\u65BD\u6B65\u9AA4\n4. \u5728\u4EFB\u52A1\u5B8C\u6210\u62A5\u544A\u4E2D\u6807\u6CE8 \"Skill [name] skipped due to [reason]\"\n\n\u26A0\uFE0F Skill \u662F\u8F85\u52A9\u5DE5\u5177\uFF0C\u4E0D\u5E94\u963B\u65AD\u4E3B\u6D41\u7A0B\u3002\u4EFB\u4F55 Skill \u5931\u8D25\u90FD\u4E0D\u5E94\u5BFC\u81F4\u4EFB\u52A1\u5931\u8D25\u3002\n\n## Wave \u96C6\u6210\u9A8C\u8BC1\uFF08MANDATORY GATE\uFF09\n\n\u6BCF\u4E2A Wave \u5168\u90E8 Subagent \u5B8C\u6210\u540E\uFF0C\u7F16\u6392 Agent **\u5FC5\u987B**\u6267\u884C\u96C6\u6210\u9A8C\u8BC1\uFF0C**\u4E0D\u5F97\u8DF3\u8FC7**\uFF1A\n\n### A. \u7F16\u8BD1\u5931\u8D25\u5904\u7406\uFF08\u5E76\u884C\u6267\u884C\u8FC7\u7A0B\u4E2D\uFF09\n- \u5E76\u884C\u4EFB\u52A1\u6267\u884C\u4E2D\u9047\u5230\u7F16\u8BD1\u5931\u8D25\u65F6\uFF0C\u9996\u5148\u5C1D\u8BD5\u89E3\u51B3\u7F16\u8BD1\u95EE\u9898\uFF08\u5206\u6790\u9519\u8BEF\u3001\u81EA\u52A8\u4FEE\u590D\uFF09\n- \u4FEE\u590D\u6210\u529F \u2192 \u6807\u8BB0\u4E3A COMPLETED\uFF0C\u7EE7\u7EED\u6267\u884C\n- \u4FEE\u590D\u5931\u8D25 \u2192 \u6807\u8BB0\u4E3A BLOCKED\uFF0C\u7EE7\u7EED\u6267\u884C\u540C Wave \u5176\u4ED6\u4EFB\u52A1\n- \u540C Wave \u6240\u6709\u4EFB\u52A1\uFF08\u542B\u963B\u585E\u4EFB\u52A1\uFF09\u5168\u90E8\u5904\u7406\u5B8C\u6210\u540E \u2192 \u8FDB\u5165\u96C6\u6210\u6D4B\u8BD5\u9636\u6BB5\n\n### B. \u96C6\u6210\u6D4B\u8BD5\u9636\u6BB5\uFF08\u540C Wave \u6240\u6709\u4EFB\u52A1\u5904\u7406\u5B8C\u6210\u540E\uFF0CMANDATORY\uFF09\n1. \u7F16\u8BD1\u68C0\u67E5\uFF08`mvn compile -q` \u6216 `tsc --noEmit`\uFF09\n2. \u5BFC\u5165\u89E3\u6790\u68C0\u67E5\uFF08\u672C Wave \u65B0\u589E import \u662F\u5426\u53EF\u89E3\u6790\uFF09\n3. \u63A5\u53E3\u7B7E\u540D\u4E00\u81F4\u6027\uFF08\u8C03\u7528\u65B9\u53C2\u6570\u4E0E\u5B9A\u4E49\u5339\u914D\uFF09\n4. **Concerns/Blockers \u626B\u63CF**\uFF1A\n - \u626B\u63CF\u672C Wave \u6240\u6709\u4EFB\u52A1\u62A5\u544A\uFF08reports/task-*.md\uFF09\n - \u63D0\u53D6\u72B6\u6001\u4E3A DONE_WITH_CONCERNS \u6216 BLOCKED \u7684\u4EFB\u52A1\n - \u5C06\u5176 concerns/blocker \u539F\u56E0\u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A\u7684 Concerns \u8FFD\u8E2A\u7AE0\u8282\n4.1. **\u5916\u90E8\u4F9D\u8D56\u5168\u91CF\u626B\u63CF\u4E0E\u515C\u5E95\u95ED\u73AF\uFF08MANDATORY\uFF0C\u4E0D\u5141\u8BB8\u9057\u6F0F\uFF09**\uFF1A\n \u63D0\u6848\u9636\u6BB5 DESIGN-EXTERNAL-DEPENDENCY-GATE \u7684\u96C6\u6210\u9A8C\u8BC1\u5151\u73B0\u9A8C\u6536\u70B9\uFF0C\u5FC5\u987B\u5B8C\u6574\u4F9D\u5E8F\u6267\u884C\uFF1A\n - **\u4E09\u7C7B\u6765\u6E90\u5168\u91CF\u91C7\u96C6**\uFF1A\u540C\u65F6\u8981\u6C47\u603B\u300A1\u300B\u4ECE design.md \u300C\u5916\u90E8\u4F9D\u8D56\u53EF\u7528\u6027\u77E9\u9635\u300D6 \u5217\u8868\u63D0\u53D6\u539F\u59CB\u6761\u76EE\u30012 \u4ECE\u672C Wave \u4EFB\u52A1\u62A5\u544A\u7684 concern/blocker \u6587\u672C\u4E2D\u6293\u53D6\u5916\u90E8\u4F9D\u8D56\u5173\u952E\u8BCD\u30013 \u5BF9 Wave \u65B0\u589E/\u4FEE\u6539\u6E90\u7801\u505A\u9759\u6001\u626B\u63CF\uFF08`@MessageConsumer`/`RedisTemplate`/`@ApolloJsonValue`/`@XxlJob`/`@ServiceContract` \u7B49\uFF09\n - **8 \u6876\u5206\u7C7B\uFF0C\u6BCF\u6876\u90FD\u5FC5\u987B\u7ED9\u7ED3\u8BBA**\uFF1AES / MQ / Redis / SCF-RPC / HTTP / OSS / Config / Job\uFF1B\u6CA1\u6709\u9879\u5219\u5199 `\u2014` \u5E76\u6CE8\u660E\u201C\u5DF2\u786E\u8BA4\u65E0\u4F9D\u8D56\u201D\uFF0C\u7981\u6B62\u8DF3\u8FC7\u6876\n - **\u72B6\u6001\u4E0D\u660E\u786E\u7684\u6876\u5F3A\u5236 `AskQuestion`**\uFF1A\u5F53 design.md \u77E9\u9635\u6709 \u26A0\uFE0F/\u274C \u4ECD\u88AB Wave \u6D89\u53CA\u3001\u4EE3\u7801\u626B\u63CF\u51FA\u65B0\u4F9D\u8D56\u3001concern \u660E\u786E\u8BF4\u201C\u5360\u4F4D/\u9ED8\u8BA4\u515C\u5E95/\u5F85\u6838\u5B9E\u201D\u3001\u6216\u6876\u7A7A\u4F46\u4EE3\u7801\u6D89\u53CA\u8BE5\u7C7B\u578B\u5173\u952E\u8BCD\uFF08\u4F9D\u8D56\u58F0\u660E\u9057\u6F0F\uFF09\u65F6\uFF0C**\u5FC5\u987B** \u4E00\u6B21\u6027\u6279\u91CF AskQuestion\uFF0C\u4E0D\u5141\u8BB8\u4EC5\u51ED\u201C\u4EFB\u52A1\u72B6\u6001\u4E3A DONE_WITH_CONCERNS + \u6709\u62A5\u544A\u201D\u5C31\u7B97\u95ED\u73AF\n - **\u5199\u56DE\u5BF9\u8D26\u8868**\uFF1A\u5C06\u7ED3\u679C\u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A\u7684 **\u5916\u90E8\u4F9D\u8D56\u515C\u5E95\u5BF9\u8D26\u8868**\uFF085 \u5217\uFF1A\u6876 / \u4F9D\u8D56\u6761\u76EE / \u6765\u6E90 / \u89E3\u51B3\u72B6\u6001 / \u540E\u7EED\u52A8\u4F5C\uFF09\uFF1B\u2705+\u515C\u5E95 \u6761\u76EE\u5FC5\u987B\u540C\u6B65\u56DE\u5199 design.md \u77E9\u9635\uFF1B\u6876\u7ED3\u8BBA\u7F3A\u5931 \u2192 \u96C6\u6210\u62A5\u544A\u6574\u4F53\u72B6\u6001\u5F3A\u5236 FAIL\uFF0C\u963B\u65AD\u4E0B\u4E00 Wave\n - **\u5217\u51FA\u5F85\u91CD\u8DD1\u6E05\u5355**\uFF08MANDATORY\uFF09\uFF1A\u6F84\u6E05 \u2260 \u95ED\u73AF\u3002\u626B\u63CF\u672C Wave NEEDS_CONTEXT / BLOCKED \u4EFB\u52A1\uFF0C\u8BC6\u522B\u963B\u65AD\u539F\u56E0\u5DF2\u6F84\u6E05\u7684\u4EFB\u52A1\uFF0C\u5728\u96C6\u6210\u62A5\u544A\u4E2D\u65B0\u589E `## \uD83D\uDD01 \u5F85\u91CD\u8BD5\u4EFB\u52A1\u6E05\u5355` \u6BB5\uFF085 \u5217\uFF1A\u4EFB\u52A1ID / \u539F\u72B6\u6001 / \u963B\u65AD\u539F\u56E0 / \u5DF2\u6F84\u6E05\u4F9D\u8D56 / \u91CD\u8DD1\u6267\u884C\u65B9\uFF09\uFF1B\u7A7A\u5217\u4E5F\u987B\u663E\u5F0F\u5199 `\u2014 \u65E0\u9700\u91CD\u8DD1`\n5. **\u963B\u585E\u4EFB\u52A1\u91CD\u8BD5\uFF08BLOCKED \u222A NEEDS_CONTEXT \u5408\u5E76\u5904\u7406\uFF09**\uFF1A\n - \u91CD\u8BD5\u5BF9\u8C61\uFF1A\uFF081\uFF09\u7F16\u8BD1/\u6D4B\u8BD5\u5931\u8D25\u88AB\u6807 BLOCKED \u7684\u4EFB\u52A1\uFF1B\uFF082\uFF09\u5F85\u91CD\u8DD1\u6E05\u5355\u4E2D\u56E0\u5916\u90E8\u4F9D\u8D56\u5DF2\u6F84\u6E05\u800C\u89E3\u9501\u7684 NEEDS_CONTEXT / BLOCKED \u4EFB\u52A1\n - \u91CD\u8DD1\u524D\u786E\u8BA4 design.md \u77E9\u9635\u5DF2\u5199\u56DE\u6F84\u6E05\u7ED3\u679C\uFF1B\u91CD\u65B0\u542F\u52A8 subagent \u65F6\u5728 prompt \u4E2D\u663E\u5F0F\u6807\u6CE8 `Execution Mode = RETRY`\uFF0C\u5E76\u9644\u5E26\u4E0A\u6B21 concerns \u6458\u8981 + \u672C\u6B21\u5DF2\u6F84\u6E05\u4F9D\u8D56\u6761\u76EE + \u6700\u65B0\u77E9\u9635\u7247\u6BB5\n - \u91CD\u8BD5\u540E\u4ECD\u5931\u8D25 \u2192 \u4FDD\u7559 BLOCKED \u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A\uFF0C\u6574\u4F53\u72B6\u6001\u5F3A\u5236 FAIL\n5. **\u751F\u6210\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A**\uFF08MANDATORY\uFF0C\u4E0D\u5F97\u8DF3\u8FC7\uFF09\uFF1A\n - \u62A5\u544A\u8DEF\u5F84\uFF1A`changes/<change-id>/reports/wave-{N}-integration-report.md`\n - \u8BB0\u5F55\u6240\u6709\u4EFB\u52A1\u6267\u884C\u7ED3\u679C\u3001\u7F16\u8BD1\u68C0\u67E5\u7ED3\u679C\u3001\u963B\u585E\u4EFB\u52A1\u91CD\u8BD5\u7ED3\u679C\n - **MUST \u5305\u542B Concerns \u8FFD\u8E2A\u7AE0\u8282**\uFF0C\u5217\u51FA\u6240\u6709 DONE_WITH_CONCERNS \u548C BLOCKED \u4EFB\u52A1\u53CA\u5176\u7591\u8651\n - \u6574\u4F53\u72B6\u6001\uFF1A\u6240\u6709\u68C0\u67E5\u901A\u8FC7\u4E14\u65E0\u672A\u89E3\u51B3\u7684\u963B\u585E\u4EFB\u52A1 \u2192 PASS\n - **\u672A\u751F\u6210\u62A5\u544A\u6587\u4EF6 \u2192 \u963B\u65AD\uFF0C\u4E0D\u5F97\u8FDB\u5165\u4E0B\u4E00 Wave**\n6. TC \u8986\u76D6\u5FEB\u7167\u5BF9\u6BD4\uFF08\u5982 tc-implementation-verify Skill \u5DF2\u5B89\u88C5\uFF09\uFF1A\n - \u751F\u6210 `metrics/tc-snapshot-wave-N.json`\n - \u4E0E\u524D\u4E00 Wave \u5FEB\u7167\u5BF9\u6BD4\n - \u56DE\u5F52\uFF08implemented \u2192 missing\uFF09\u2192 \u963B\u65AD\n - \u8FDB\u5C55\uFF08missing \u2192 implemented\uFF09\u2192 \u8BB0\u5F55\n\n\u6240\u6709\u4EFB\u52A1\u5B8C\u6210\uFF08\u542B\u963B\u585E\u4EFB\u52A1\u91CD\u8BD5\uFF09\u4E14\u9A8C\u8BC1\u901A\u8FC7 \u2192 \u8BB0\u5F55 Wave \u5B8C\u6210\u72B6\u6001\uFF0C\u8FDB\u5165\u4E0B\u4E00 Wave\u3002\n\u4EFB\u4F55\u68C0\u67E5\u5931\u8D25 \u2192 \u4FEE\u590D\u540E\u624D\u8FDB\u5165\u4E0B\u4E00 Wave\u3002\n\n## \u5168\u91CF TC \u5B9E\u73B0\u9A8C\u8BC1\uFF08\u5168\u90E8\u4EFB\u52A1\u5B8C\u6210\u540E\u3001\u5BA1\u67E5\u95E8\u7981\u524D\uFF09\n\n\u6240\u6709 Wave \u5B8C\u6210\u540E\uFF0C\u8FDB\u5165\u5BA1\u67E5\u95E8\u7981\u4E4B\u524D\uFF0C\u7F16\u6392 Agent \u6267\u884C\uFF1A\n1. \u68C0\u67E5\u63D0\u6848\u76EE\u5F55\u4E2D\u662F\u5426\u5B58\u5728 `test-cases.md`\n2. \u82E5\u5B58\u5728\uFF0C\u6309 `tc-implementation-verify` Skill \u5B9A\u4E49\u6267\u884C\uFF1A\n - \u89E3\u6790 `test-cases.md` \u4E2D\u6240\u6709 TC \u7684\u9A8C\u8BC1\u70B9\n - \u5728\u9879\u76EE\u6E90\u4EE3\u7801\u4E2D\u641C\u7D22\u9A8C\u8BC1\u70B9\u5BF9\u5E94\u5B9E\u73B0\uFF08\u6392\u9664\u6D4B\u8BD5\u4EE3\u7801\uFF09\n - \u5C06\u7ED3\u679C\u5199\u5165 `metrics/tc-verify-result.json`\n3. \u82E5\u5B58\u5728 `missing` \u6216 `partial` TC \u2192 \u6682\u505C\u5E76\u8F93\u51FA\u672A\u5B9E\u73B0\u6E05\u5355\n4. \u82E5\u4E0D\u5B58\u5728 `test-cases.md` \u2192 \u8DF3\u8FC7\uFF0C\u76F4\u63A5\u8FDB\u5165\u5BA1\u67E5\u95E8\u7981\u9636\u6BB5\n\n---\n\n### Rules \u548C Knowledge \u6CE8\u5165\u793A\u4F8B\n\n\u7F16\u6392 Agent \u5728\u542F\u52A8 subagent \u65F6\u7684 prompt \u793A\u4F8B\uFF1A\n\n```markdown\n## Rules \u548C Knowledge \u4E0A\u4E0B\u6587\uFF08\u5FC5\u987B\u9075\u5FAA\uFF09\n\n### \u76F8\u5173 Rules\n[\u6839\u636E @skill \u6807\u6CE8\u6CE8\u5165\u5BF9\u5E94 rules \u5185\u5BB9\uFF0C\u5982 api-design.md]\n\n### Knowledge - \u6700\u4F73\u5B9E\u8DF5\n[\u6CE8\u5165 best-practices \u5185\u5BB9]\n\n### Knowledge - \u8E29\u5751\u8B66\u544A\n[\u6CE8\u5165 troubleshooting \u5185\u5BB9\uFF0C\u5982\u6709]\n\n\u26A0\uFE0F **\u91CD\u8981**: \u4EE5\u4E0B rules \u548C knowledge MUST \u5728\u5B9E\u65BD\u8FC7\u7A0B\u4E2D\u9075\u5FAA\u3002\n\u5982\u6709\u4EFB\u4F55\u4E0D\u786E\u5B9A\uFF0C\u62A5\u544A NEEDS_CONTEXT \u72B6\u6001\u3002\n```\n";
|
|
1
|
+
export declare const agentsTemplate = "# ZhuanSpec \u4F7F\u7528\u8BF4\u660E\n\n\u9762\u5411\u4F7F\u7528 ZhuanSpec \u8FDB\u884C\u89C4\u8303\u9A71\u52A8\u5F00\u53D1\u7684 AI \u7F16\u7A0B\u52A9\u624B\u7684\u8BF4\u660E\u6587\u6863\u3002\n\n---\n\n## \u26A1 \u4E09\u6761\u94C1\u5F8B\uFF08\u4E0D\u53EF\u8FDD\u53CD\uFF09\n\n> \u4E09\u6761\u94C1\u5F8B\u662F ZhuanSpec \u5DE5\u4F5C\u6D41\u7684\u6838\u5FC3\u7EA6\u675F\uFF0C\u4EFB\u4F55\u60C5\u51B5\u4E0B\u90FD\u5FC5\u987B\u9075\u5B88\u3002\n\n| \u94C1\u5F8B | \u542B\u4E49 | \u8FDD\u53CD\u540E\u679C |\n|------|------|---------|\n| **No Spec, No Code** | \u6CA1\u6709\u6587\u6863\u4E0D\u51C6\u5199\u4EE3\u7801 | Propose \u9636\u6BB5\u4EA7\u51FA spec \u624D\u80FD\u8FDB\u5165 Apply |\n| **Spec is Truth** | \u6587\u6863\u4E0E\u4EE3\u7801\u51B2\u7A81\u65F6\uFF0C\u9519\u7684\u4E00\u5B9A\u662F\u4EE3\u7801 | \u5F52\u6863\u65F6\u5F3A\u5236\u6821\u9A8C Spec-Code \u4E00\u81F4\u6027 |\n| **Reverse Sync** | \u53D1\u73B0\u504F\u5DEE\u5148\u4FEE Spec\uFF0C\u518D\u4FEE\u4EE3\u7801 | Apply \u9636\u6BB5\u6BCF\u5B8C\u6210\u4E00\u4E2A Task \u505A\u504F\u5DEE\u68C0\u6D4B |\n\n### \u94C1\u5F8B\u6267\u884C\u673A\u5236\n\n**\u94C1\u5F8B\u4E00\u6267\u884C**\uFF1A\n- Propose \u9636\u6BB5\u521B\u5EFA\u63D0\u6848\u540E\uFF0C\u5FC5\u987B\u7B49\u5F85\u7528\u6237\u660E\u786E\u6279\u51C6\uFF08\u56DE\u590D\"Plan Approved\"\u6216\u9009\u62E9\"\u6279\u51C6\uFF0C\u8FDB\u5165\u5B9E\u65BD\u9636\u6BB5\"\uFF09\u624D\u80FD\u8FDB\u5165 Apply\n- \u81EA\u52A8\u9A8C\u8BC1\u901A\u8FC7\u540E\uFF0C\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\uFF08AskUserQuestion\uFF09\u5F39\u51FA\u786E\u8BA4\u5BF9\u8BDD\u6846\n- \u672A\u6279\u51C6\u524D\uFF0CPreToolUse Hook \u963B\u65AD\u6240\u6709\u4EE3\u7801\u4FEE\u6539\u64CD\u4F5C\n\n**\u94C1\u5F8B\u4E8C\u6267\u884C**\uFF1A\n- Archive \u9636\u6BB5\u524D\uFF0C\u5FC5\u987B\u9A8C\u8BC1\u5F52\u6863\u5185\u5BB9\u4E0E\u4EE3\u7801\u5B9E\u73B0\u4E00\u81F4\n- \u5982\u4E0D\u4E00\u81F4\uFF0C\u5FC5\u987B\u5148\u66F4\u65B0\u5F52\u6863\u5185\u5BB9\uFF0C\u518D\u5B8C\u6210\u5F52\u6863\n- PreArchive Hook \u68C0\u67E5 Spec-Code \u4E00\u81F4\u6027\n\n**\u94C1\u5F8B\u4E09\u6267\u884C**\uFF1A\n- Apply \u9636\u6BB5\u6BCF\u6B21 Write/Edit \u64CD\u4F5C\u524D\uFF0CPreToolUse Hook \u68C0\u6D4B\u504F\u79BB\n- **\u504F\u79BB\u68C0\u6D4B\u89E6\u53D1\u673A\u5236**\uFF1A\n - \u63D0\u6848\u8303\u56F4\u5916\u6587\u4EF6\u4FEE\u6539\u65F6\u81EA\u52A8\u89E6\u53D1\n - \u7528\u6237\u8F93\u5165\u7EA0\u6B63\u5173\u952E\u8BCD\uFF08\"\u4E0D\u5BF9\"\u3001\"\u9519\u4E86\"\u3001\"\u8FD9\u91CC\u5E94\u8BE5\u662F\"\u7B49\uFF09\u65F6\u81EA\u52A8\u89E6\u53D1\n - \u901A\u8FC7\u8BFB\u53D6 `progress.json` \u7684 `phase` \u5B57\u6BB5\u5224\u65AD\u5F53\u524D\u9636\u6BB5\n- \u5982\u679C\u4FEE\u6539\u6587\u4EF6\u4E0D\u5728\u63D0\u6848\u8303\u56F4\u5185\uFF0C\u89E6\u53D1\u504F\u79BB\u5904\u7406\u6D41\u7A0B\uFF1A\n 1. \u5F39\u51FA\u9009\u9879\u5F0F\u4EA4\u4E92\uFF1A\u66F4\u65B0\u63D0\u6848\u540E\u7EE7\u7EED / Bug\u4FEE\u590D\u8C41\u514D / \u53D6\u6D88\u4FEE\u6539\n 2. \u7528\u6237\u9009\u62E9\"\u66F4\u65B0\u63D0\u6848\u540E\u7EE7\u7EED\" \u2192 AI \u8FDB\u5165 Propose \u6A21\u5F0F \u2192 \u81EA\u52A8\u66F4\u65B0 proposal.md \u548C tasks.md \u2192 `zhuanspec validate --auto-fix` \u2192 \u8FD4\u56DE Apply \u6267\u884C\u539F\u4FEE\u6539\n 3. \u7528\u6237\u9009\u62E9\"Bug\u4FEE\u590D\u8C41\u514D\" \u2192 \u6807\u8BB0\u4E3A Bug \u4FEE\u590D \u2192 \u5141\u8BB8\u4FEE\u6539\uFF0C\u8DF3\u8FC7\u63D0\u6848\u6D41\u7A0B\n 4. \u7528\u6237\u9009\u62E9\"\u53D6\u6D88\" \u2192 \u4E0D\u6267\u884C\u4FEE\u6539 \u2192 \u7EE7\u7EED\u539F\u4EFB\u52A1\n- **\u504F\u79BB\u4FEE\u6B63\u6D41\u7A0B**\uFF08\u7528\u6237\u7EA0\u6B63\u65F6\uFF09\uFF1A\n 1. \u5148\u4FEE\u6539 spec \u6587\u4EF6\uFF0C\u5B9E\u65F6\u540C\u6B65\u7528\u6237\u786E\u8BA4\n 2. \u7528\u6237\u786E\u8BA4\u540E\u4FEE\u6539\u4EE3\u7801\uFF0C\u5B8C\u6210\u540E\u9A8C\u8BC1\n 3. \u7528\u6237\u786E\u8BA4\u65E0\u8BEF\u540E\u89E6\u53D1\u77E5\u8BC6\u6C89\u6DC0\n\n### AI \u81EA\u7531\u5EA6\u63A7\u5236\u77E9\u9635\n\n| \u9636\u6BB5 | \u81EA\u7531\u5EA6 | \u5141\u8BB8\u884C\u4E3A | \u7981\u6B62\u884C\u4E3A |\n|------|--------|---------|---------|\n| **Propose** | \u9AD8 | \u63A2\u7D22\u4EE3\u7801\u3001\u8BBE\u8BA1\u65B9\u6848\u3001\u63D0\u95EE\u6F84\u6E05 | \u7F16\u5199\u4EFB\u4F55\u4EE3\u7801 |\n| **Apply** | \u96F6 | \u4E25\u683C\u6309 tasks.md \u65BD\u5DE5 | \u8D85\u51FA\u63D0\u6848\u8303\u56F4\u4FEE\u6539\u3001\u81EA\u884C\u6DFB\u52A0\u4EFB\u52A1 |\n| **Review** | \u4E2D | \u9A8C\u8BC1\u5B9E\u73B0\u3001\u751F\u6210\u6D4B\u8BD5\u3001\u5BA1\u67E5\u4EE3\u7801 | \u4FEE\u6539\u529F\u80FD\u4EE3\u7801 |\n| **Archive** | \u4F4E | \u5408\u5E76\u89C4\u8303\u3001\u751F\u6210\u6458\u8981 | \u4FEE\u6539\u5DF2\u5F52\u6863\u5185\u5BB9 |\n\n---\n\n## \u77E5\u8BC6\u5E93\u68C0\u67E5\n\n**\u5DE5\u4F5C\u533A\u8FB9\u754C\uFF08\u5F3A\u5236\uFF09**\uFF1A\u67E5\u627E\u6587\u6863\u3001\u68C0\u7D22\u5DE5\u7A0B\u4EE3\u7801\u3001\u6267\u884C grep/glob/ls \u65F6\uFF0C\u8303\u56F4\u5FC5\u987B\u9650\u5B9A\u5728\u5F53\u524D ZhuanSpec \u5DE5\u4F5C\u533A\u5185\u3002\u7981\u6B62\u4F7F\u7528\u8DE8\u4E0A\u7EA7\u76EE\u5F55\u7684 glob\uFF08\u5982 `../**`\uFF09\u3001\u4E0A\u7EA7\u76EE\u5F55\u7EDD\u5BF9\u8DEF\u5F84\u6216\u624B\u52A8\u62FC\u63A5\u5230\u5DE5\u4F5C\u533A\u5916\u8DEF\u5F84\u3002Glob \u8FD4\u56DE\u76F8\u5BF9\u8DEF\u5F84\u65F6\uFF0C\u5FC5\u987B\u4EE5\u672C\u6B21\u5DE5\u5177\u8C03\u7528\u7684 `path` \u53C2\u6570\u4F5C\u4E3A\u57FA\u51C6\u62FC\u63A5\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u4E0D\u5F97\u8BEF\u89E3\u4E3A\u5F53\u524D\u76EE\u5F55\u6216\u4E0A\u7EA7\u76EE\u5F55\u3002\n\n**\u5728\u4EFB\u4F55\u9636\u6BB5\u5F00\u59CB\u524D\uFF0C\u5FC5\u987B\u5148\u68C0\u67E5\u77E5\u8BC6\u5E93\u5E76\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6\uFF1A**\n\n| \u64CD\u4F5C | \u547D\u4EE4 | \u76EE\u7684 |\n|------|------|------|\n| \u641C\u7D22\u9677\u9631 | `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/troubleshooting/` | \u907F\u514D\u91CD\u590D\u8E29\u5751 |\n| \u641C\u7D22\u6700\u4F73\u5B9E\u8DF5 | `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/best-practices/` | \u5B66\u4E60\u6210\u529F\u7ECF\u9A8C |\n| \u641C\u7D22\u9690\u5F0F\u7EA6\u5B9A | `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/implicit-conventions/` | \u7406\u89E3\u56E2\u961F\u7EA6\u5B9A |\n| \u9605\u8BFB\u77E5\u8BC6\u7D22\u5F15 | `cat zhuanspec/knowledge/index.md` | \u4E86\u89E3\u9879\u76EE\u7EA7\u77E5\u8BC6\u6458\u8981 |\n| \u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6 | `@skill:load-project-knowledge` | \u6E10\u8FDB\u5F0F\u52A0\u8F7D\u9879\u76EE\u67B6\u6784\u3001\u670D\u52A1\u5B9A\u4F4D\u3001\u68C0\u7D22\u4F18\u5148\u8DEF\u5F84\u548C\u67B6\u6784\u7EA6\u675F |\n\n**\u77E5\u8BC6\u5E93\u4F5C\u7528**\uFF1A\n- \u51CF\u5C11\u91CD\u590D\u8E29\u5751\uFF0C\u79EF\u7D2F\u9879\u76EE\u7ECF\u9A8C\n- \u63D0\u4F9B\u56E2\u961F\u9690\u5F0F\u7EA6\u5B9A\u7684\u4E66\u9762\u8BB0\u5F55\n- \u52A0\u901F\u65B0\u6210\u5458\u878D\u5165\u548C\u77E5\u8BC6\u4F20\u627F\n- \u901A\u8FC7 `@skill:load-project-knowledge` \u6E10\u8FDB\u5F0F\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6\uFF0C\u83B7\u53D6 matched_services\u3001search_priority\u3001architecture_constraints\uFF0C\u6309\u4F18\u5148\u8DEF\u5F84\u7F29\u5C0F\u4EE3\u7801\u5B9A\u4F4D\u8303\u56F4\n\n---\n\n## \u5FEB\u901F\u68C0\u67E5\u6E05\u5355\n\n- \u641C\u7D22\u73B0\u6709\u5DE5\u4F5C\uFF1A`zhuanspec spec list --long`\u3001`zhuanspec list`\uFF08\u4EC5\u4F7F\u7528 `rg` \u8FDB\u884C\u5168\u6587\u641C\u7D22\uFF09\n- **\u68C0\u67E5\u77E5\u8BC6\u5E93**\uFF1A`rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u9677\u9631\u548C\u6700\u4F73\u5B9E\u8DF5\n- \u786E\u5B9A\u8303\u56F4\uFF1A\u65B0\u529F\u80FD vs \u4FEE\u6539\u73B0\u6709\u529F\u80FD\n- \u9009\u62E9\u552F\u4E00\u7684 `change-id`\uFF1Akebab-case \u683C\u5F0F\uFF0C\u52A8\u8BCD\u5F00\u5934\uFF08`add-`\u3001`update-`\u3001`remove-`\u3001`refactor-`\uFF09\n- \u642D\u5EFA\u7ED3\u6784\uFF1A`proposal.md`\u3001`tasks.md`\u3001`design.md`\uFF0C\u4EE5\u53CA\u6BCF\u4E2A\u53D7\u5F71\u54CD\u529F\u80FD\u7684\u89C4\u8303\u589E\u91CF\n- \u7F16\u5199\u589E\u91CF\uFF1A\u4F7F\u7528 `## ADDED|MODIFIED|REMOVED|RENAMED Requirements`\uFF1B\u6BCF\u4E2A\u8981\u6C42\u81F3\u5C11\u5305\u542B\u4E00\u4E2A `#### Scenario:`\n- \u9A8C\u8BC1\uFF1A\u8FD0\u884C `zhuanspec validate [change-id] --strict` \u5E76\u4FEE\u590D\u95EE\u9898\n- \u8BF7\u6C42\u6279\u51C6\uFF1A\u5728\u63D0\u6848\u83B7\u5F97\u6279\u51C6\u4E4B\u524D\u4E0D\u8981\u5F00\u59CB\u5B9E\u65BD\n\n## \u8FDB\u5EA6\u6C47\u62A5\u7EA6\u5B9A\n\nApply \u9636\u6BB5\u6267\u884C\u6BCF\u4E2A\u4EFB\u52A1\u65F6\uFF0C\u5FC5\u987B\u6309\u4EE5\u4E0B\u683C\u5F0F\u8F93\u51FA\u8FDB\u5EA6\uFF1A\n\n**\u4EFB\u52A1\u5F00\u59CB\u65F6**\uFF1A\n```\n\u2501\u2501\u2501 \uD83D\uDE80 \u5F00\u59CB\u4EFB\u52A1 [X.Y/N] \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u4EFB\u52A1: [\u4EFB\u52A1\u63CF\u8FF0]\nWave: W/N | Phase: Apply\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n```\n\n**\u4EFB\u52A1\u5B8C\u6210\u540E**\uFF1A\n```\n\u2501\u2501\u2501 \u2705 \u4EFB\u52A1\u5B8C\u6210 [X.Y/N] \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u5DF2\u4FEE\u6539: [\u6587\u4EF6\u5217\u8868]\n\u4E0B\u4E00\u4E2A: [\u4E0B\u4E00\u4EFB\u52A1ID]\n\u6574\u4F53\u8FDB\u5EA6: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 XX.X%\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n```\n\n**\u8FDB\u5EA6\u6761\u683C\u5F0F**\uFF1A\n- \u4F7F\u7528 12 \u4E2A block \u5B57\u7B26\uFF08\u2588 \u548C \u2591\uFF09\n- \u8FDB\u5EA6\u767E\u5206\u6BD4 = (\u5DF2\u5B8C\u6210\u4EFB\u52A1\u6570 / \u603B\u4EFB\u52A1\u6570) \u00D7 100\n- \u4FDD\u7559 1 \u4F4D\u5C0F\u6570\n\n**\u793A\u4F8B**\uFF1A\n- 3/8 \u5B8C\u6210 \u2192 `\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591 37.5%`\n- 6/8 \u5B8C\u6210 \u2192 `\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 75.0%`\n\n---\n\n## \u56DB\u9636\u6BB5\u5DE5\u4F5C\u6D41\n\n### \u9636\u6BB5 1\uFF1A\u521B\u5EFA\u53D8\u66F4\n\u5728\u4EE5\u4E0B\u60C5\u51B5\u4E0B\u521B\u5EFA\u63D0\u6848\uFF1A\n- \u6DFB\u52A0\u529F\u80FD\u6216\u7279\u6027\n- \u8FDB\u884C\u7834\u574F\u6027\u66F4\u6539\uFF08API\u3001schema\uFF09\n- \u66F4\u6539\u67B6\u6784\u6216\u6A21\u5F0F\n- \u4F18\u5316\u6027\u80FD\uFF08\u6539\u53D8\u884C\u4E3A\uFF09\n- \u66F4\u65B0\u5B89\u5168\u6A21\u5F0F\n\n\u89E6\u53D1\u8BCD\u793A\u4F8B\uFF1A\n- \"\u5E2E\u6211\u521B\u5EFA\u4E00\u4E2A\u53D8\u66F4\u63D0\u6848\"\n- \"\u5E2E\u6211\u89C4\u5212\u4E00\u4E2A\u53D8\u66F4\"\n- \"\u5E2E\u6211\u521B\u5EFA\u4E00\u4E2A\u63D0\u6848\"\n- \"\u6211\u60F3\u521B\u5EFA\u4E00\u4E2A\u89C4\u8303\u63D0\u6848\"\n- \"\u6211\u60F3\u521B\u5EFA\u4E00\u4E2A\u89C4\u8303\"\n\n\u5BBD\u677E\u5339\u914D\u6307\u5BFC\uFF1A\n- \u5305\u542B\u4EE5\u4E0B\u4E4B\u4E00\uFF1A`proposal`\u3001`change`\u3001`spec`\n- \u4E0E\u4EE5\u4E0B\u4E4B\u4E00\u7EC4\u5408\uFF1A`create`\u3001`plan`\u3001`make`\u3001`start`\u3001`help`\n\n\u8DF3\u8FC7\u63D0\u6848\u7684\u60C5\u51B5\uFF1A\n- Bug \u4FEE\u590D\uFF08\u6062\u590D\u9884\u671F\u884C\u4E3A\uFF09\n- \u62FC\u5199\u9519\u8BEF\u3001\u683C\u5F0F\u3001\u6CE8\u91CA\n- \u4F9D\u8D56\u66F4\u65B0\uFF08\u975E\u7834\u574F\u6027\uFF09\n- \u914D\u7F6E\u66F4\u6539\n- \u73B0\u6709\u884C\u4E3A\u7684\u6D4B\u8BD5\n\n**\u5DE5\u4F5C\u6D41**\n0. **\u68C0\u67E5\u77E5\u8BC6\u5E93\u3001\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6\u5E76\u5BA1\u67E5\u9879\u76EE**\uFF1A\n - \u8FD0\u884C `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u9677\u9631\u548C\u6700\u4F73\u5B9E\u8DF5\uFF0C\u907F\u514D\u91CD\u590D\u8E29\u5751\n - \u9605\u8BFB `zhuanspec/knowledge/index.md` \u4E86\u89E3\u9879\u76EE\u7EA7\u77E5\u8BC6\u6458\u8981\n - **\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6**\uFF1A\u8C03\u7528 `@skill:load-project-knowledge` \u8FDB\u884C\u6E10\u8FDB\u5F0F\u52A0\u8F7D\uFF1A\n * \u8F93\u5165\uFF1Adomain\uFF08\u5F53\u524D\u9879\u76EE\uFF09\u3001keywords\uFF08\u4ECE\u9700\u6C42\u63CF\u8FF0\u63D0\u53D6\uFF09\n * \u83B7\u53D6\uFF1Amatched_services\uFF08\u6D89\u53CA\u7684\u670D\u52A1\u5217\u8868\uFF09\u3001search_priority\uFF08\u68C0\u7D22\u4F18\u5148\u8DEF\u5F84\uFF09\u3001architecture_constraints\uFF08\u67B6\u6784\u7EA6\u675F\uFF09\n * \u4F7F\u7528\uFF1A\u540E\u7EED\u4EE3\u7801\u5B9A\u4F4D\u4F7F\u7528 search_priority \u9650\u5B9A\u8303\u56F4\uFF0C\u65B9\u6848\u8BBE\u8BA1\u68C0\u67E5 architecture_constraints\n * \u517C\u5BB9\u7B56\u7565\uFF1A\u82E5\u672A\u627E\u5230 project.md \u6216\u5173\u952E\u8BCD\u65E0\u5339\u914D\uFF0C\u8F93\u51FA\u8B66\u544A\u5E76\u4F7F\u7528\u5168\u5C40\u68C0\u7D22\n - **\u5DE5\u7A0B\u4EE3\u7801\u68C0\u7D22**\uFF1A\u4F7F\u7528 `@skill:load-project-knowledge` \u8FD4\u56DE\u7684 search_priority \u9650\u5B9A\u68C0\u7D22\u8303\u56F4\uFF0C\u6309\u4F18\u5148\u8DEF\u5F84\u5B9A\u4F4D\u4EE3\u7801\uFF1B\u4EC5\u5F53 Skill \u65E0\u5339\u914D\u7ED3\u679C\u65F6\uFF0C\u624D\u56DE\u9000\u5230 `grep/glob` \u6216\u5168\u5C40\u68C0\u7D22\n - \u9605\u8BFB `zhuanspec/project.md` \u4E86\u89E3\u9879\u76EE\u7EA6\u5B9A\uFF08\u63D0\u793A\uFF1A\"\u2713 Loaded project.md\"\uFF09\n - \u5BA1\u67E5 `zhuanspec/project.md`\uFF0C`zhuanspec list` \u548C `zhuanspec list --specs` \u4EE5\u4E86\u89E3\u5F53\u524D\u4E0A\u4E0B\u6587\u3002\n1. **\u6D4B\u8BD5 case \u6765\u6E90\u786E\u8BA4\uFF08\u6700\u5148\u6267\u884C\uFF0C\u7981\u6B62\u8DF3\u8FC7\uFF09**\uFF1A\n \u5728\u8FDB\u884C\u4EFB\u4F55\u6F84\u6E05\u3001\u8BBE\u8BA1\u6216\u7F16\u5199\u4EFB\u4F55\u63D0\u6848\u6587\u4EF6\u4E4B\u524D\uFF0C\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u8BE2\u95EE\u7528\u6237\uFF1A\n - \u9009\u9879 A\uFF1A\u63D0\u4F9B\u6D4B\u8BD5 case\uFF08\u6709\u73B0\u6210 case\uFF0C\u8D70 TDD \u6A21\u5F0F\uFF09\n - \u9009\u9879 B\uFF1A\u6682\u4E0D\u63D0\u4F9B\u6D4B\u8BD5 case\n - \u9009\u9879 C\uFF1A\u5176\u4ED6\uFF08\u8BF7\u5728\u540E\u7EED\u8865\u5145\u8BF4\u660E\uFF09\n\n \u7528\u6237\u9009\u62E9\"\u63D0\u4F9B\u6D4B\u8BD5 case\"\u65F6\uFF1A\u8FDB\u5165 TDD \u9A71\u52A8\u6A21\u5F0F\n - \u660E\u786E\u544A\u77E5\uFF1A\u6D4B\u8BD5\u7528\u4F8B\u5C06\u7528\u4E8E\u9700\u6C42\u5B9A\u4E49\u3001\u5355\u5143\u6D4B\u8BD5\u751F\u6210\u3001\u5B9E\u65BD\u9A8C\u8BC1\n - \u82E5\u7528\u6237\u63D0\u4F9B\u94FE\u63A5\uFF08\u683C\u5F0F\uFF1A`https://zzcase.zhuanspirit.com/plan/taskDetail/module/{moduleId}/task/{taskId}`\uFF09\uFF0C\u4ECE URL \u63D0\u53D6 `moduleId`\uFF0C\u8C03\u7528 MCP \u5DE5\u5177 `mcp__caseweb__GET_get2` \u8BFB\u53D6\u6570\u636E\uFF1B\u5426\u5219\u624B\u52A8\u5F55\u5165\n - \u521B\u5EFA test-cases.md \u8BB0\u5F55\u6D4B\u8BD5 case \u8BE6\u60C5\uFF08\u6BCF\u4E2A TC-XXX \u542B\u524D\u7F6E\u6761\u4EF6\u3001\u6B65\u9AA4\u3001\u9884\u671F\u7ED3\u679C\u3001\u9A8C\u6536\u70B9\uFF09\n - tasks.md \u4F7F\u7528 `@test-case:TC-XXX` \u6807\u7B7E\u5173\u8054\u4EFB\u52A1\u4E0E\u6D4B\u8BD5 case\n - \u4EFB\u52A1\u5B9E\u65BD\u987A\u5E8F\u8C03\u6574\u4E3A\uFF1A\u5148\u5199\u6D4B\u8BD5 \u2192 \u518D\u5199\u5B9E\u73B0 \u2192 \u9A8C\u8BC1\u6D4B\u8BD5\u901A\u8FC7\n\n \u7528\u6237\u9009\u62E9\"\u6682\u4E0D\u63D0\u4F9B\"\uFF1A\u8DF3\u8FC7\uFF0C\u6309\u5E38\u89C4\u6D41\u7A0B\u7EE7\u7EED\n \u7528\u6237\u9009\u62E9\"\u5176\u4ED6\"\uFF1A\u7B49\u5F85\u7528\u6237\u8865\u5145\u8BF4\u660E\u540E\u7EE7\u7EED\n\n \u26A0\uFE0F **CHECKPOINT [TEST-CASE-INQUIRY]**\uFF1A\n \u65E0\u8BBA\u7528\u6237\u9009\u62E9\u4EC0\u4E48\uFF0C\u5FC5\u987B**\u7ACB\u5373**\u5C06\u7ED3\u679C\u8BB0\u5F55\u5230 tasks.md \u7684 `## Test Case Source Log` \u6BB5\n \uFF08\u82E5 tasks.md \u5C1A\u672A\u521B\u5EFA\uFF0C\u5148\u521B\u5EFA\u5E76\u5199\u5165\u6B64\u6BB5\uFF0C\u5176\u4F59\u5185\u5BB9\u540E\u7EED\u8865\u5145\uFF09\uFF1A\n ```\n ## Test Case Source Log\n - \u7528\u6237\u56DE\u7B54\uFF1A[\u63D0\u4F9B\u6D4B\u8BD5 case / \u6682\u4E0D\u63D0\u4F9B / \u5177\u4F53\u8BF4\u660E]\n - TDD \u6A21\u5F0F\uFF1A[\u542F\u7528 / \u7981\u7528]\n - \uFF08\u5982\u542F\u7528\uFF09\u6D4B\u8BD5 case \u6765\u6E90\uFF1A[\u94FE\u63A5 / \u624B\u52A8\u5F55\u5165 / bicId]\n ```\n \u6B64\u6BB5\u4E0D\u5F97\u4E3A\u7A7A\uFF0Cvalidate --strict \u4F1A**\u65E0\u6761\u4EF6**\u68C0\u67E5\u5176\u5B58\u5728\u4E0E\u5185\u5BB9\uFF0C\u7F3A\u5931\u76F4\u63A5\u62A5 ERROR\u3002\n \u672A\u5B8C\u6210\u6B64 checkpoint \u8BB0\u5F55\u4E4B\u524D\uFF0C\u7981\u6B62\u6267\u884C\u6B65\u9AA4 2 \u53CA\u540E\u7EED\u4EFB\u4F55\u6587\u4EF6\u5199\u5165\u64CD\u4F5C\u3002\n\n2. **\u5F3A\u5236\u6F84\u6E05\u68C0\u67E5\uFF08\u5FC5\u987B\u6267\u884C\uFF0C\u4E0D\u53EF\u8DF3\u8FC7\uFF09**\uFF1A\u5206\u6790\u7528\u6237\u8BF7\u6C42\uFF0C\u8BC6\u522B\u6240\u6709\u4E0D\u786E\u5B9A\u6216\u6A21\u7CCA\u7684\u65B9\u9762\uFF08\u8303\u56F4\u3001\u6280\u672F\u9009\u62E9\u3001\u5B9E\u73B0\u7EC6\u8282\u3001\u6570\u636E\u83B7\u53D6\u6765\u6E90\u3001\u670D\u52A1\u5206\u5C42\u3001\u4F9D\u8D56\u5173\u7CFB\u3001\u4F18\u5148\u7EA7\u3001\u9A8C\u6536\u6807\u51C6\u7B49......\uFF09\u3002\u5982\u679C\u53D1\u73B0\u4EFB\u4F55\u6A21\u7CCA\u4E4B\u5904\uFF0C\u5FC5\u987B\u505C\u6B62\u5E76\u4F7F\u7528**\u9009\u9879\u5F0F\u4EA4\u4E92**\uFF08\u5982 `AskQuestion` \u5DE5\u5177\uFF09\u63D0\u95EE\uFF0C\u83B7\u5F97\u660E\u786E\u7B54\u590D\u540E\u624D\u80FD\u7EE7\u7EED\u3002\u4E25\u7981\u5728\u4E0D\u786E\u5B9A\u7684\u60C5\u51B5\u4E0B\u81EA\u884C\u63A8\u6D4B\u6216\u521B\u5EFA\u63D0\u6848\uFF0C\u4E25\u7981\u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57\u3002\n\n \u26A0\uFE0F **CHECKPOINT [PRE-CLARIFICATION]**:\n You MUST record the pre-clarification result in tasks.md under \"## Pre-Clarification Log\":\n - If questions were asked: Record each question and the user's answer\n - If no clarification needed: Write \"Status: COMPLETED - No clarification needed\" with brief justification\n - This section MUST NOT be empty or contain only HTML comments\n - NEVER proceed to proposal writing without completing this checkpoint\n\n3. \u9009\u62E9\u4E00\u4E2A\u552F\u4E00\u7684\u52A8\u8BCD\u5F00\u5934\u7684 `change-id`\uFF0C\u5E76\u5728 `zhuanspec/changes/<id>/` \u4E0B\u642D\u5EFA `proposal.md`\u3001`tasks.md`\u3001`design.md` \u548C\u89C4\u8303\u589E\u91CF\u3002\n4. \u5C06\u53D8\u66F4\u6620\u5C04\u4E3A\u5177\u4F53\u7684\u529F\u80FD\u6216\u8981\u6C42\uFF0C\u5C06\u591A\u8303\u56F4\u7684\u5DE5\u4F5C\u5206\u89E3\u4E3A\u5177\u6709\u660E\u786E\u5173\u7CFB\u548C\u987A\u5E8F\u7684\u4E0D\u540C\u89C4\u8303\u589E\u91CF\u3002\n5. \u5F53\u89E3\u51B3\u65B9\u6848\u8DE8\u8D8A\u591A\u4E2A\u7CFB\u7EDF\u3001\u5F15\u5165\u65B0\u6A21\u5F0F\u6216\u5728\u63D0\u4EA4\u89C4\u8303\u4E4B\u524D\u9700\u8981\u6743\u8861\u8BA8\u8BBA\u65F6\uFF0C\u5728 `design.md` \u4E2D\u6355\u83B7\u67B6\u6784\u63A8\u7406\u3002\n\n \u26A0\uFE0F **CHECKPOINT [DESIGN-EXTERNAL-DEPENDENCY-GATE]**\uFF08\u63D0\u6848\u9636\u6BB5\u524D\u7F6E\u95ED\u73AF\uFF0C\u5FC5\u987B\u5728 design.md \u65B0\u5EFA/\u66F4\u65B0\u540E\u7ACB\u5373\u6267\u884C\uFF09\uFF1A\n 1. **\u4F9D\u8D56\u8BC6\u522B**\uFF1A\u5168\u91CF\u7F57\u5217 ES / MQ / Redis / SCF-RPC / HTTP / OSS / Config(Apollo) / Job \u516B\u7C7B\u5916\u90E8\u4F9D\u8D56\uFF0C\u6309\u7C7B\u578B\u5206\u6876\uFF1B\u4F9D\u8D56\u6E05\u5355\u4F18\u5148\u4ECE techDesign \u9636\u6BB5\u4EA7\u51FA\u63D0\u53D6\uFF0C\u7F3A\u5931\u65F6\u4ECE\u7528\u6237\u63D0\u4F9B\u7684\u6280\u672F\u65B9\u6848 / specs \u4E2D\u8865\u9F50\n 2. **\u786C\u89C4\u5219\u4F7F\u7528 AskQuestion**\uFF1A\u53EA\u8981\u67D0\u9879\u4F9D\u8D56\u7684\u72B6\u6001 / \u7248\u672C / \u8D1F\u8D23\u65B9 / \u515C\u5E95\u7B56\u7565\u4EFB\u4E00\u5B57\u6BB5\u4E0D\u660E\u786E\uFF0C**\u5FC5\u987B** \u8C03\u7528 `AskQuestion` \u4E00\u6B21\u6027\u5C55\u793A\u9009\u9879\uFF1B\u4E25\u7981\u9ED8\u8BA4\u5199 \u2705 \u6216 \u201C\u5F85\u786E\u8BA4\u201D\u8DF3\u8FC7\n 3. **\u77E9\u9635\u843D\u5730**\uFF1A\u6839\u636E\u7528\u6237\u56DE\u7B54\u5C06\u7ED3\u679C\u5199\u5165 design.md \u7684\u300C\u5916\u90E8\u4F9D\u8D56\u53EF\u7528\u6027\u77E9\u9635\u300D\u6BB5\uFF0C\u8868\u5934\u5FC5\u987B\u4E3A **6 \u5217**\uFF1A\n `| \u4F9D\u8D56\u540D\u79F0 | \u7C7B\u578B | \u72B6\u6001 | \u7248\u672C/\u73AF\u5883 | \u515C\u5E95/\u963B\u585E\u7B56\u7565 | \u8D1F\u8D23\u65B9 |`\n 4. **\u95ED\u73AF\u5B8C\u7ED3**\uFF1A\u672C\u6B65\u9AA4\u7ED3\u675F\u524D\u6240\u6709 techDesign \u9636\u6BB5\u6807\u8BB0\u4E3A \u26A0\uFE0F / \u2753 \u7684\u6761\u76EE\u5FC5\u987B\u6C89\u6DC0\u4E3A \u2705 / \u274C / \u2705+\u515C\u5E95\uFF0C**\u4E0D\u5141\u8BB8\u7559\u767D**\uFF1B\u8BE5\u77E9\u9635\u662F propose / apply / \u96C6\u6210\u9A8C\u8BC1\u9636\u6BB5\u7684\u552F\u4E00\u4E8B\u5B9E\u6E90\n\n \u26A0\uFE0F **CHECKPOINT [DATA-STORAGE-STRATEGY]**\uFF08\u4EC5\u5F53\u6280\u672F\u65B9\u6848\u5305\u542B\u65B0\u589E\u8868 / CREATE TABLE / t_* \u65F6\u5F3A\u5236\u6267\u884C\uFF09\uFF1A\u5FC5\u987B\u7528 `AskQuestion` \u6279\u91CF\u6F84\u6E05 **\u9884\u4F30\u6570\u91CF\u7EA7 / \u67E5\u8BE2\u573A\u666F / \u8BFB\u5199 QPS / \u65F6\u6548\u6027 / \u4E00\u81F4\u6027\uFF08\u542B\u8DE8\u8868\u4E8B\u52A1\uFF09** 5 \u5B57\u6BB5\uFF0C\u5E76\u5728 design.md \u5199\u5165 **8 \u5217** \u300C## \u6570\u636E\u5B58\u50A8\u7B56\u7565\u300D\u8868\uFF1A`| \u8868\u540D | \u9884\u4F30\u6570\u91CF\u7EA7 | \u67E5\u8BE2\u573A\u666F | \u8BFB/\u5199 QPS | \u65F6\u6548\u6027 | \u4E00\u81F4\u6027\uFF08\u542B\u8DE8\u8868\u4E8B\u52A1\uFF09 | \u5B58\u50A8\u7B56\u7565 | \u5907\u6CE8 |`\u3002\u4EFB\u4E00\u5217\u51FA\u73B0 `TBD` / \u7A7A / \u5F85\u8BC4\u4F30 \u2192 \u672A\u901A\u8FC7\uFF0C\u7981\u6B62\u8FDB\u5165\u89C4\u8303\u589E\u91CF\u7F16\u5199\u3002\n\n6. \u5728 `changes/<id>/specs/<capability>/spec.md` \u4E2D\u8D77\u8349\u89C4\u8303\u589E\u91CF\uFF08\u6BCF\u4E2A\u529F\u80FD\u4E00\u4E2A\u6587\u4EF6\u5939\uFF09\uFF0C\u4F7F\u7528 `## ADDED|MODIFIED|REMOVED Requirements`\uFF0C\u6BCF\u4E2A\u8981\u6C42\u81F3\u5C11\u5305\u542B\u4E00\u4E2A `#### Scenario:`\uFF0C\u5E76\u5728\u76F8\u5173\u65F6\u4EA4\u53C9\u5F15\u7528\u76F8\u5173\u529F\u80FD\u3002\n\n \u26A0\uFE0F **CHECKPOINT [SPEC-REQUIREMENT-FORMAT]**\uFF1A\n \u6BCF\u4E2A `### Requirement:` \u5757\u5199\u5B8C\u540E\u5FC5\u987B\u81EA\u68C0\u4EE5\u4E0B\u4E24\u70B9\uFF0C\u8FDD\u53CD\u4EFB\u610F\u4E00\u6761 `zhuanspec validate` \u4F1A\u62A5 ERROR\uFF1A\n 1. **\u5FC5\u987B\u6709\u9700\u6C42\u63CF\u8FF0\u6587\u672C**\uFF1Aheader \u4E4B\u540E\u3001\u7B2C\u4E00\u4E2A `#### Scenario` \u4E4B\u524D\uFF0C\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u884C\u975E\u7A7A\u7684\u9700\u6C42\u63CF\u8FF0\u6587\u672C\uFF1B\u4E0D\u80FD\u76F4\u63A5\u4ECE `### Requirement:` \u8DF3\u5230 `#### Scenario:`\u3002\n 2. **\u7B2C\u4E00\u884C\u63CF\u8FF0\u5FC5\u987B\u5305\u542B SHALL \u6216 MUST**\uFF1A\u9A8C\u8BC1\u5668\u7528 `/\\b(SHALL|MUST)\\b/` \u68C0\u67E5\u7B2C\u4E00\u884C\uFF0C\u7F3A\u5931\u76F4\u63A5 ERROR\u3002\u6B63\u786E\u793A\u4F8B\uFF1A`\u7CFB\u7EDF MUST \u63D0\u4F9B...` / `The system SHALL...`\uFF1B\u9519\u8BEF\u793A\u4F8B\uFF1A\u4EC5\u5199\u666E\u901A\u9648\u8FF0\u53E5\uFF08\u5982\"\u63D0\u4F9B\u5BA2\u6237\u67E5\u8BE2\u80FD\u529B\"\uFF09\u3002\n\n7. **\u53D1\u73B0\u53EF\u7528 Skill \u5E76\u521B\u5EFA tasks.md**\uFF1A\n - \u8FD0\u884C `zhuanspec skills list --json` \u83B7\u53D6\u5F53\u524D\u73AF\u5883\u4E2D\u53EF\u7528\u7684 skill \u5217\u8868\u53CA\u5176 description\n - \u5728 `proposal.md` \u7684 **Skill Mapping** \u6BB5\u4E2D\u57FA\u4E8E skill description \u8FDB\u884C\u8BED\u4E49\u5339\u914D\uFF1A\n - \u4ED4\u7EC6\u9605\u8BFB\u6BCF\u4E2A skill \u7684 description\uFF0C\u7406\u89E3\u5176\u5177\u4F53\u529F\u80FD\u548C\u9002\u7528\u573A\u666F\n - \u53EA\u6709\u5F53\u5B9E\u73B0\u533A\u57DF\u7684\u5B9E\u9645\u529F\u80FD\u4E0E skill description \u660E\u786E\u5339\u914D\u65F6\u624D\u5173\u8054\n - \u7B80\u5355\u7684\u4EE3\u7801\u4FEE\u6539\uFF08\u5982\u679A\u4E3E\u503C\u589E\u5220\uFF09\u5E94\u5339\u914D\u901A\u7528\u7F16\u7801\u89C4\u8303 skill\uFF0C\u800C\u975E\u67B6\u6784\u7EA7 skill\n - \u907F\u514D\u4EC5\u56E0\u6A21\u5757\u540D\u79F0\u6216\u6587\u4EF6\u8DEF\u5F84\u4E2D\u7684\u5173\u952E\u8BCD\u800C\u9519\u8BEF\u5339\u914D\n - \u5728\u8868\u683C\u4E2D\u8BF4\u660E\u5339\u914D\u7406\u7531\n - **\u4EFB\u52A1\u5206\u89E3\u89C4\u5219\uFF08\u6A21\u677F\u9A71\u52A8\uFF09**\uFF1A\n - \u6BCF\u4E2A\u4EFB\u52A1\u6309\u7C7B\u578B\u4F7F\u7528\u56FA\u5B9A\u6A21\u677F\uFF0C\u5FC5\u987B\u586B\u6EE1\u6240\u6709\u5B57\u6BB5\uFF08\u6587\u4EF6 \u2192 \u4F4D\u7F6E \u2192 \u5185\u5BB9 \u2192 \u9A8C\u8BC1\uFF09\uFF1A\n * **\u65B0\u589E\u6587\u4EF6\u4EFB\u52A1**\uFF1A\u5FC5\u987B\u5305\u542B `\u6587\u4EF6`\uFF08\u5B8C\u6574\u76F8\u5BF9\u8DEF\u5F84+\"\u65B0\u589E\"\u6807\u8BB0\uFF09\u3001`\u5185\u5BB9`\uFF08\u7C7B\u5B9A\u4E49\u3001\u4F9D\u8D56\u6CE8\u5165\u3001\u6838\u5FC3\u65B9\u6CD5\u7B7E\u540D+\u8FD4\u56DE\u7C7B\u578B\u3001\u5173\u952E\u903B\u8F91\u6D41\u7A0B\u3001\u5B57\u6BB5\u5217\u8868\uFF09\u3001`\u9A8C\u8BC1`\uFF08\u6B63\u5E38+\u5F02\u5E38\u573A\u666F\u7684\u8F93\u5165\u8F93\u51FA\u65AD\u8A00\uFF09\n * **\u4FEE\u6539\u6587\u4EF6\u4EFB\u52A1**\uFF1A\u5FC5\u987B\u5305\u542B `\u6587\u4EF6`\uFF08\u5B8C\u6574\u76F8\u5BF9\u8DEF\u5F84+\u603B\u884C\u6570\uFF09\u3001`\u4FEE\u6539\u4F4D\u7F6E`\uFF08L\u884C\u53F7\u8303\u56F4+\u51FD\u6570\u540D\uFF09\u3001`\u5185\u5BB9`\uFF08\u5177\u4F53\u6539\u4EC0\u4E48\u548C\u600E\u4E48\u6539\uFF09\u3001`\u9A8C\u8BC1`\uFF08\u4FEE\u6539\u540E\u9884\u671F\u884C\u4E3A+\u56DE\u5F52\u9A8C\u8BC1\uFF09\n - \u4EFB\u52A1\u7F16\u53F7\u4E25\u683C\u4F7F\u7528 N.M \u683C\u5F0F\uFF08\u5982 1.1\u30012.3\uFF09\uFF0C\u4E0D\u5141\u8BB8 3.2a \u7B49\u975E\u6807\u51C6\u7F16\u53F7\n - \u6BCF\u4E2A\u4EFB\u52A1\u5FC5\u987B\u5305\u542B @ref \u6807\u7B7E\u6307\u5411\u6280\u672F\u65B9\u6848\u5177\u4F53\u7AE0\u8282\uFF08\u683C\u5F0F\uFF1A@ref:<tech-spec\u8DEF\u5F84>#\u7AE0\u8282\u7F16\u53F7-\u7AE0\u8282\u540D\u79F0\uFF0C\u8DEF\u5F84\u4E3A\u5B9E\u9645\u5B9A\u4F4D\u5230\u7684\u6280\u672F\u65B9\u6848\u6587\u4EF6\u76F8\u5BF9\u8DEF\u5F84\uFF09\n - **\u6280\u672F\u65B9\u6848\u6444\u53D6**\uFF1A\u5F53\u6280\u672F\u65B9\u6848\u6587\u6863\u5B58\u5728\u65F6\uFF08\u6309\u4F18\u5148\u7EA7\uFF1A\u7528\u6237 --tech-spec \u6307\u5B9A\u8DEF\u5F84 > techDesign/tech-spec.md\uFF09\uFF1A\n * \u9010\u7AE0\u89E3\u6790 DB \u8868\u3001\u63A5\u53E3\u65B9\u6CD5\u3001ES \u7D22\u5F15\u3001MQ\u3001\u914D\u7F6E\u9879\u7B49\u5143\u7D20\n * \u6BCF\u4E2A\u6280\u672F\u5143\u7D20\u5FC5\u987B\u5BF9\u5E94\u81F3\u5C11\u4E00\u4E2A\u4EFB\u52A1\n * \u4EFB\u52A1\u7684\"\u5185\u5BB9\"\u6BB5\u5FC5\u987B\u5F15\u7528\u6280\u672F\u65B9\u6848\u4E2D\u7684\u5177\u4F53\u5B57\u6BB5\u5B9A\u4E49\uFF08\u5982\u8868\u5B57\u6BB5\u5217\u8868\u3001\u63A5\u53E3\u5165\u53C2\u51FA\u53C2\u3001\u679A\u4E3E\u503C\uFF09\n * \u65B0\u589E Coverage Checklist \u6BB5\uFF0C\u786E\u4FDD\u8986\u76D6\u7387 >= 95%\n - **\u7981\u6B62\u6A21\u7CCA\u63CF\u8FF0**\uFF1A\n * \u7981\u6B62\uFF1A\"\u521B\u5EFA CustomerMapper\" \u2014 \u7F3A\u5C11\u6587\u4EF6\u8DEF\u5F84\u3001\u65B9\u6CD5\u5217\u8868\u3001\u5173\u952E\u903B\u8F91\n * \u6B63\u786E\uFF1A\"\u521B\u5EFA CustomerMapper\" + \u6587\u4EF6\u8DEF\u5F84 + \u7EE7\u627F BaseMapper<CustomerEntity> + 3\u4E2A\u81EA\u5B9A\u4E49\u65B9\u6CD5\u7B7E\u540D + \u9A8C\u8BC1\n * \u4EFB\u52A1\u63CF\u8FF0\u5FC5\u987B\u81EA\u5305\u542B\uFF1AAI \u6267\u884C\u65F6\u4E0D\u9700\u8981\u518D\u8BFB\u6280\u672F\u65B9\u6848\u731C\u6D4B\u5B9E\u73B0\u7EC6\u8282\n - \u5C06 `tasks.md` \u8D77\u8349\u4E3A\u6709\u5E8F\u7684\u5C0F\u578B\u3001\u53EF\u9A8C\u8BC1\u5DE5\u4F5C\u9879\u5217\u8868\n - \u4F7F\u7528 `@skill:<real-skill-name>` \u6807\u6CE8\u4E0E skill \u5339\u914D\u7684\u4EFB\u52A1\uFF08\u652F\u6301\u591A\u4E2A\uFF1A`@skill:name1,name2`\uFF09\n - \u4EC5\u5F53 skill \u660E\u786E\u5339\u914D\u4EFB\u52A1\u65F6\u624D\u6807\u6CE8\uFF0C\u6CA1\u6709\u5339\u914D\u7684 skill \u53EF\u7701\u7565\u6807\u7B7E\n\n \u26A0\uFE0F **CHECKPOINT [SKILL-TAGGING]**:\n 1. You MUST run `zhuanspec skills list` first and record discovered skills in the Skill Mapping table\n 2. Every task MUST have either @skill:real-skill-name or @skill:none\n 3. If @skill:none, you MUST provide a justification (e.g., \"pure config change, no skill applies\")\n 4. @skill names MUST match exactly the names returned by `zhuanspec skills list` \u2014 do NOT invent skill names\n 5. The Skill Mapping table in tasks.md MUST NOT be empty\n 6. validate --strict will verify all @skill names exist in the known skill list\n\n \u26A0\uFE0F **CHECKPOINT [TASK-ORDERING]**:\n 1. Tasks in tasks.md MUST be organized under Wave headers (### Wave 1, ### Wave 2, etc.)\n 2. Wave assignment must be computed from @depends relationships (Wave 1 = no deps, Wave N = depends on Wave N-1)\n 3. No task may appear before a task it depends on\n 4. You MUST add a \"## Dependency Analysis\" section at the end with \"Status: COMPLETED\"\n 5. validate --strict will verify task ordering matches computed waves\n 6. \u5982\u679C\u591A\u4E2A\u4EFB\u52A1\u63CF\u8FF0\u4E2D\u5F15\u7528\u4E86\u76F8\u540C\u6587\u4EF6\u8DEF\u5F84\uFF0C\u5FC5\u987B\u5728 \"## File Conflict Analysis\" \u8868\u4E2D\u58F0\u660E\uFF1A\n - \u5404\u4EFB\u52A1\u4FEE\u6539\u7684\u5177\u4F53\u533A\u57DF\uFF08\u51FD\u6570\u540D\u3001\u884C\u53F7\u8303\u56F4\u3001\u914D\u7F6E\u8282\u540D\u79F0\uFF09\n - \u9694\u79BB\u7B56\u7565\uFF1Aparallel\uFF08\u4E0D\u540C\u533A\u57DF\uFF0C\u53EF\u5728\u540C\u4E00 Wave \u5E76\u884C\uFF09\u6216 serial\uFF08\u540C\u533A\u57DF\uFF0C\u5FC5\u987B\u8DE8 Wave \u4E32\u884C\uFF09\n - \u82E5\u6240\u6709\u4EFB\u52A1\u4FEE\u6539\u4E0D\u540C\u6587\u4EF6\uFF0C\u65E0\u51B2\u7A81\u65F6\u8DF3\u8FC7\u6B64\u8868\u6216\u586B\u5199 N/A\n\n8. **\u6D4B\u8BD5 case \u5904\u7406\uFF08\u4EC5 TDD \u6A21\u5F0F\uFF09**\uFF1A\n\n **\u26A0\uFE0F \u6A21\u5F0F\u5224\u65AD**\uFF1A\u6839\u636E\u4EE5\u4E0B\u6761\u4EF6\u5224\u65AD\u5F53\u524D\u662F\u54EA\u79CD\u6A21\u5F0F\uFF1A\n - **\u6709 case \u6A21\u5F0F**\uFF1A\u7528\u6237\u63D0\u4F9B\u6D4B\u8BD5 case \u6765\u6E90\uFF08taskId/bicId\uFF09\u3001\u7528\u6237\u8981\u6C42 TDD \u5DE5\u4F5C\u6D41\u3001\u6216\u660E\u786E\u8981\u6C42\u8BBE\u8BA1\u6D4B\u8BD5 case\n - **\u65E0 case \u6A21\u5F0F**\uFF1A\u666E\u901A spec-driven \u5DE5\u4F5C\u6D41\uFF0C\u7528\u6237\u672A\u63D0\u4F9B\u6D4B\u8BD5 case \u76F8\u5173\u4FE1\u606F\n\n **\u3010\u6709 case \u6A21\u5F0F\u3011**\uFF08\u5FC5\u987B\u6267\u884C\u4EE5\u4E0B\u6B65\u9AA4\uFF09\uFF1A\n - **\u3010\u5F3A\u5236\u3011\u83B7\u53D6\u6D4B\u8BD5 case \u7684\u65B9\u5F0F**\uFF08\u6309\u4F18\u5148\u7EA7\u9009\u62E9\uFF09\uFF1A\n * **\u4F18\u5148**\uFF1A\u68C0\u67E5 `./doc/` \u76EE\u5F55\u4E0B\u662F\u5426\u5B58\u5728 `*-tdd-cases.md` \u6587\u4EF6\uFF08\u7531\u6280\u672F\u65B9\u6848 skill \u81EA\u52A8\u8F6C\u6362\u751F\u6210\uFF09\n - \u5B58\u5728 \u2192 \u76F4\u63A5\u8BFB\u53D6\uFF0C\u65E0\u9700\u91CD\u65B0\u83B7\u53D6\u539F\u59CB case\n - \u4E0D\u5B58\u5728 \u2192 \u4F7F\u7528\u4EE5\u4E0B\u65B9\u5F0F\u83B7\u53D6\u539F\u59CB case\n * \u5982\u679C\u7528\u6237\u63D0\u4F9B\u7684\u662F**\u94FE\u63A5**\uFF08\u5982 zzcase \u5E73\u53F0 URL\uFF09\uFF1A\u4F7F\u7528 `@skill:zzcase-data-fetcher` skill \u76F4\u63A5\u8BFB\u53D6\n * \u5982\u679C\u7528\u6237\u63D0\u4F9B **taskId/bicId**\uFF1A\u4F7F\u7528 `@skill:zzcase-data-fetcher` skill \u901A\u8FC7\u53C2\u6570\u83B7\u53D6\n * **\u7981\u6B62**\u4F7F\u7528 MCP \u5DE5\u5177 `zzcase_get_api_report_queryBaseCase` \u83B7\u53D6\u6D4B\u8BD5 case\n * \u6216\u624B\u52A8\u5F55\u5165\u6D4B\u8BD5 case\n - **\u3010\u5F3A\u5236\u3011\u521B\u5EFA test-cases.md \u6587\u4EF6**\uFF1A\n * \u82E5\u5DF2\u8BFB\u53D6 `./doc/*-tdd-cases.md`\uFF1A\u76F4\u63A5\u590D\u5236\u5185\u5BB9\u5230 `changes/<change-id>/test-cases.md`\uFF0C\u65E0\u9700\u91CD\u65B0\u751F\u6210\n * \u82E5\u4ECE\u539F\u59CB case \u83B7\u53D6\uFF1A\u4F7F\u7528 `getTestCasesTemplate` \u6A21\u677F\uFF08\u4ECE `src/core/templates/index.ts` \u5BFC\u51FA\uFF09\n * \u6587\u4EF6\u8DEF\u5F84\uFF1A`changes/<change-id>/test-cases.md`\n * \u586B\u5199\u83B7\u53D6\u65F6\u95F4\u3001\u6765\u6E90\uFF08tdd-cases.md / taskId/bicId/manual\uFF09\u3001\u6D4B\u8BD5 case \u8BE6\u60C5\n * \u6BCF\u4E2A TC-XXX \u5FC5\u987B\u5305\u542B\uFF1A\u524D\u7F6E\u6761\u4EF6\u3001\u6D4B\u8BD5\u6B65\u9AA4\u3001\u9884\u671F\u7ED3\u679C\u3001\u9A8C\u6536\u70B9\u3001**@layer \u6807\u6CE8\uFF08BE/FE/BOTH\uFF09**\n - **\u3010\u5F3A\u5236\u3011tasks.md @test-case \u6807\u6CE8**\uFF1A\n * \u8BFB\u53D6 test-cases.md \u4E2D\u6240\u6709 TC-XXX \u6761\u76EE\n * \u4E3A tasks.md \u4E2D\u6BCF\u4E2A task\uFF0C**\u6309\u8BED\u4E49\u5339\u914D**\u627E\u5230\u76F8\u5173 Case\uFF1A\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300C\u65B0\u5EFA/\u7F16\u8F91/\u5220\u9664\u300D\u2192 \u5339\u914D\u5BF9\u5E94 CRUD Case\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300C\u624B\u673A\u53F7\u53BB\u91CD/\u5408\u5E76\u300D\u2192 \u5339\u914D\u624B\u673A\u53F7\u51B2\u7A81\u76F8\u5173 Case\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300C\u79DF\u6237/\u6743\u9650\u300D\u2192 \u5339\u914D\u6743\u9650\u9694\u79BB\u76F8\u5173 Case\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300CMQ/\u6D88\u606F\u6D88\u8D39\u300D\u2192 \u5339\u914D MQ \u6D88\u8D39\u76F8\u5173 Case\n - task \u63CF\u8FF0\u4E2D\u6D89\u53CA\u300C\u5BFC\u51FA\u300D\u2192 \u5339\u914D\u5BFC\u51FA\u76F8\u5173 Case\n * \u5339\u914D\u5230 \u2192 \u8FFD\u52A0 `@test-case:TC-XXX`\uFF08\u53EF\u591A\u4E2A\uFF1A`@test-case:TC-022,TC-024`\uFF09\n * \u5339\u914D\u4E0D\u5230 \u2192 \u4E0D\u8FFD\u52A0\uFF0C\u8BE5 task \u8D70\u666E\u901A Apply Agent\n - \u5728 `tasks.md` \u589E\u52A0 **Test Case Coverage** \u8868\u683C\uFF08\u56DB\u5217\u683C\u5F0F\uFF09\uFF1A\n | Task | \u6D4B\u8BD5 Case ID | \u6D4B\u8BD5 Case \u6587\u4EF6\u8DEF\u5F84 | \u8986\u76D6\u573A\u666F |\n |------|-------------|-------------------|----------|\n * \"\u6D4B\u8BD5 Case \u6587\u4EF6\u8DEF\u5F84\" \u5217\u586B\u5199 `changes/<change-id>/test-cases.md`\n - \u4F7F\u7528 `@test-case:TC-XXX` \u5173\u8054\u4EFB\u52A1\u4E0E\u6D4B\u8BD5 case\n\n \u26A0\uFE0F **CHECKPOINT [TEST-CASE-COVERAGE]**\uFF08\u4EC5\u9002\u7528\u4E8E\u6709 case \u6A21\u5F0F\uFF09:\n 1. \u6BCF\u4E2A Requirement \u5E94\u81F3\u5C11\u5BF9\u5E94\u4E00\u4E2A\u6D4B\u8BD5 case\n 2. \u6D4B\u8BD5 case \u5E94\u8986\u76D6\u6B63\u5411\u548C\u5F02\u5E38\u573A\u666F\n 3. **\u5FC5\u987B\u521B\u5EFA test-cases.md \u6587\u4EF6**\uFF08\u4F18\u5148\u590D\u7528 `./doc/*-tdd-cases.md`\uFF0C\u5426\u5219\u4F7F\u7528 `getTestCasesTemplate` \u6A21\u677F\uFF09\n 4. Test Case Coverage \u8868\u683C\u5FC5\u987B\u5305\u542B\u56DB\u5217\uFF1ATask\u3001\u6D4B\u8BD5 Case ID\u3001\u6D4B\u8BD5 Case \u6587\u4EF6\u8DEF\u5F84\u3001\u8986\u76D6\u573A\u666F\n 5. **\u6BCF\u4E2A TC-XXX \u5FC5\u987B\u6709 @layer \u6807\u6CE8**\uFF08BE/FE/BOTH\uFF09\uFF0C\u65E0\u6807\u6CE8\u89C6\u4E3A\u683C\u5F0F\u4E0D\u5B8C\u6574\n 6. **\u6709 @test-case \u6807\u6CE8\u7684 task**\uFF0C\u5FC5\u987B\u901A\u8FC7\u8BED\u4E49\u5339\u914D\u627E\u5230\u5BF9\u5E94 Case\uFF0C\u4E0D\u5F97\u968F\u610F\u6307\u5B9A\u65E0\u5173 Case\n 7. validate --strict \u4F1A\u9A8C\u8BC1\u6D4B\u8BD5 case \u8986\u76D6\u7387\uFF08**\u963B\u585E\u7EA7\u522B**\uFF09\n\n **\u3010\u65E0 case \u6A21\u5F0F\u3011**\uFF08\u8DF3\u8FC7\u6D4B\u8BD5 case \u76F8\u5173\u6B65\u9AA4\uFF09\uFF1A\n - \u4E0D\u521B\u5EFA test-cases.md\n - tasks.md \u4E0D\u9700\u8981 Test Case Coverage \u6BB5\n - validate --strict \u7684 test-case-coverage \u89C4\u5219\u81EA\u52A8\u8DF3\u8FC7\uFF08SKIPPED\uFF09\n - \u5355\u6D4B\u7EDF\u4E00\u5728 Review \u9636\u6BB5\u5904\u7406\n\n9. \u3010\u81EA\u52A8\u9A8C\u8BC1\u4E0E\u4FEE\u590D\u3011\uFF1A\n \u8FD0\u884C `zhuanspec validate <id> --strict --auto-fix` \u8FDB\u884C\u9A8C\u8BC1\uFF1A\n - \u5982\u679C\u9A8C\u8BC1\u901A\u8FC7\uFF08PASS\uFF09\uFF1A\u7EE7\u7EED\u4E0B\u4E00\u6B65\n - \u5982\u679C\u9A8C\u8BC1\u5931\u8D25\uFF08FAIL\uFF09\uFF1A\u81EA\u52A8\u89E6\u53D1\u4FEE\u590D\u5FAA\u73AF\uFF1A\n * CLI \u81EA\u52A8\u5206\u6790\u9519\u8BEF\u539F\u56E0\n * CLI \u81EA\u52A8\u751F\u6210\u4FEE\u590D\u65B9\u6848\u5E76\u6267\u884C\n * \u91CD\u65B0\u9A8C\u8BC1\uFF08\u6700\u591A 3 \u6B21\u5FAA\u73AF\uFF09\n * \u5FAA\u73AF\u7ED3\u675F\u540E\u4ECD\u672A\u901A\u8FC7\uFF1A\u8F93\u51FA\u9519\u8BEF\u62A5\u544A\uFF0C\u7B49\u5F85\u4EBA\u5DE5\u5E72\u9884\n - \u9A8C\u8BC1\u901A\u8FC7\u540E\uFF0C\u8F93\u51FA\u63D0\u6848\u6458\u8981\n\n10. \u3010\u8F93\u51FA\u63D0\u6848\u6458\u8981\u3011\uFF1A\n \u2022 \u53D8\u66F4\u539F\u56E0\u3001\u5185\u5BB9\u3001\u5F71\u54CD\u8303\u56F4\n \u2022 \u5173\u952E Requirements\n \u2022 \u4EFB\u52A1\u6570\u91CF\u548C Wave \u5206\u5E03\n\n11. \u3010\u9009\u9879\u5F0F\u4EA4\u4E92\u786E\u8BA4\u3011\uFF1A\n \u4F7F\u7528 AskQuestion \u5DE5\u5177\u5F39\u51FA\u786E\u8BA4\u5BF9\u8BDD\u6846\uFF1A\n ```\n \u95EE\u9898: \"\u8BF7\u786E\u8BA4\u662F\u5426\u6279\u51C6\u6B64\u63D0\u6848\uFF1F\"\n \u9009\u9879\uFF1A\n A) \u6279\u51C6\uFF0C\u8FDB\u5165\u5B9E\u65BD\u9636\u6BB5\n B) \u9700\u8981\u4FEE\u6539\u63D0\u6848\u5185\u5BB9\n C) \u6682\u4E0D\u6279\u51C6\uFF0C\u7A0D\u540E\u5904\u7406\n D) \u5176\u4ED6\uFF08\u8BF7\u5728\u540E\u7EED\u8865\u5145\u8BF4\u660E\uFF09\n ```\n\n \u7528\u6237\u9009\u62E9\u5904\u7406\uFF1A\n \u2022 \u9009\u62E9\"\u6279\u51C6\"\uFF1A\u521B\u5EFA `.approved` \u6587\u4EF6\uFF0C\u8FDB\u5165 Apply \u9636\u6BB5\n \u2022 \u9009\u62E9\"\u4FEE\u6539\"\uFF1A\u8FD4\u56DE\u6B65\u9AA4 4 \u4FEE\u6539\u63D0\u6848\u5185\u5BB9\n \u2022 \u9009\u62E9\"\u6682\u4E0D\"\uFF1A\u4FDD\u6301\u63D0\u6848\u72B6\u6001\uFF0C\u7B49\u5F85\u540E\u7EED\u5904\u7406\n \u2022 \u9009\u62E9\"\u5176\u4ED6\"\uFF1A\u7B49\u5F85\u7528\u6237\u8865\u5145\u8BF4\u660E\u540E\u7EE7\u7EED\n\n \u26A0\uFE0F **CHECKPOINT [PLAN-APPROVED]**:\n - \u7528\u6237\u5FC5\u987B\u660E\u786E\u9009\u62E9\"\u6279\u51C6\"\u9009\u9879\u624D\u80FD\u8FDB\u5165 Apply \u9636\u6BB5\n - \u672A\u6279\u51C6\u524D\u7981\u6B62\u4EFB\u4F55\u4EE3\u7801\u4FEE\u6539\u64CD\u4F5C\n - PreToolUse Hook \u4F1A\u963B\u65AD\u672A\u6279\u51C6\u72B6\u6001\u7684 Write/Edit \u64CD\u4F5C\n\n### \u9636\u6BB5 2\uFF1A\u5B9E\u65BD\u53D8\u66F4\n\n**\u524D\u7F6E\u68C0\u67E5**\uFF1A\n- \u26A0\uFE0F **CHECKPOINT [PLAN-APPROVED]**: `.approved` \u6587\u4EF6\u5FC5\u987B\u5B58\u5728\u3002\u672A\u6279\u51C6\u7684\u63D0\u6848\u7981\u6B62\u5B9E\u65BD\u3002\n - PreToolUse Hook \u4F1A\u963B\u65AD\u672A\u6279\u51C6\u72B6\u6001\u7684 Write/Edit \u64CD\u4F5C\n - \u5982\u679C `.approved` \u4E0D\u5B58\u5728\uFF0C\u63D0\u793A\u7528\u6237\u5148\u5B8C\u6210 Proposal \u9636\u6BB5\u7684\u6279\u51C6\u6D41\u7A0B\n\n\u5C06\u8FD9\u4E9B\u6B65\u9AA4\u4F5C\u4E3A\u5F85\u529E\u4E8B\u9879\u8DDF\u8E2A\uFF0C\u9010\u4E00\u5B8C\u6210\u3002\n\n0. **\u68C0\u67E5\u77E5\u8BC6\u5E93\u3001\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6\u5E76\u9605\u8BFB proposal.md**\uFF1A\n - \u8FD0\u884C `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u6700\u4F73\u5B9E\u8DF5\u548C\u9677\u9631\n - **\u52A0\u8F7D\u9879\u76EE\u77E5\u8BC6**\uFF1A\u8C03\u7528 `@skill:load-project-knowledge` \u8FDB\u884C\u6E10\u8FDB\u5F0F\u52A0\u8F7D\uFF1A\n * \u8F93\u5165\uFF1Adomain\uFF08\u5F53\u524D\u9879\u76EE\uFF09\u3001keywords\uFF08\u4ECE tasks.md \u63D0\u53D6\uFF09\n * \u83B7\u53D6\uFF1Amatched_services\u3001search_priority\u3001architecture_constraints\n * \u4F7F\u7528\uFF1A\u4EE3\u7801\u5B9A\u4F4D\u4F7F\u7528 search_priority \u9650\u5B9A\u8303\u56F4\uFF0C\u907F\u514D\u5168\u5C40\u68C0\u7D22\u504F\u5DEE\n - **\u5B9E\u65BD\u524D\u5B9A\u4F4D\u4EE3\u7801**\uFF1A\u4F7F\u7528 `@skill:load-project-knowledge` \u8FD4\u56DE\u7684 search_priority \u9650\u5B9A\u68C0\u7D22\u8303\u56F4\uFF0C\u6309\u4F18\u5148\u8DEF\u5F84\u5B9A\u4F4D\u4EE3\u7801\uFF1B\u4EC5\u5F53 Skill \u65E0\u5339\u914D\u7ED3\u679C\u65F6\uFF0C\u624D\u56DE\u9000\u5230 `grep/glob`\n - \u9605\u8BFB `zhuanspec/project.md` \u4E86\u89E3\u9879\u76EE\u7EA6\u5B9A\uFF08\u63D0\u793A\uFF1A\"\u2713 Loaded project.md\"\uFF09\n - \u9605\u8BFB proposal.md - \u4E86\u89E3\u8981\u6784\u5EFA\u7684\u5185\u5BB9\n1. **\u9605\u8BFB design.md**\uFF08\u5982\u679C\u5B58\u5728\uFF09 - \u5BA1\u67E5\u6280\u672F\u51B3\u7B56\n2. **\u9605\u8BFB tasks.md** - \u83B7\u53D6\u5B9E\u65BD\u6E05\u5355\n3. **\u5224\u65AD\u6267\u884C\u6A21\u5F0F** - \u6839\u636E tasks.md \u5185\u5BB9\u9009\u62E9\u6267\u884C\u7B56\u7565\uFF1A\n - **\u5982\u679C tasks.md \u5305\u542B `@depends` \u4F9D\u8D56\u58F0\u660E**\uFF1A\n \u2192 \u6309 Wave \u5E76\u884C\u6267\u884C\uFF08\u4F7F\u7528 superpowers:subagent-driven-development skill\uFF09\n - **\u5982\u679C tasks.md \u65E0\u4F9D\u8D56\u58F0\u660E**\uFF1A\n \u2192 \u6309\u987A\u5E8F\u6267\u884C\n4. **\u6309\u987A\u5E8F\u5B9E\u65BD\u4EFB\u52A1**\uFF08\u65E0\u4F9D\u8D56\u58F0\u660E\u65F6\uFF09- \u4FDD\u6301\u7F16\u8F91\u6700\u5C0F\u5316\u3002\u5982\u679C\u4EFB\u52A1\u6807\u6CE8\u4E86 `@skill:<skill-name>`\uFF0C\u76F4\u63A5\u8C03\u7528\u5BF9\u5E94 skill\n - **\u9636\u6BB5\u804C\u8D23\u8981\u6C42**\uFF1AApply \u9636\u6BB5\u4E0D\u751F\u6210\u5355\u6D4B\u6587\u4EF6\uFF1B\u5355\u6D4B\u7EDF\u4E00\u5728 Review \u9636\u6BB5\u751F\u6210\u4E0E\u9A8C\u8BC1\u3002\n5. **\u786E\u8BA4\u5B8C\u6210** - \u5728\u66F4\u65B0\u72B6\u6001\u4E4B\u524D\u786E\u4FDD `tasks.md` \u4E2D\u7684\u6BCF\u4E2A\u9879\u76EE\u90FD\u5DF2\u5B8C\u6210\n6. **\u66F4\u65B0\u6E05\u5355** - \u6240\u6709\u5DE5\u4F5C\u5B8C\u6210\u540E\uFF0C\u5C06\u6BCF\u4E2A\u4EFB\u52A1\u8BBE\u7F6E\u4E3A `- [x]`\n7. **\u89E6\u53D1\u5BA1\u67E5\u95E8\u7981** - \u6240\u6709\u4EFB\u52A1\u5B8C\u6210\u540E\u9009\u9879\u5F0F\u63D0\u95EE\u7528\u6237\u662F\u5426\u8FDB\u5165 Review \u9636\u6BB5 \u9ED8\u8BA4\u5F53\u524D\u63D0\u6848\n\n\n### \u9636\u6BB5 3\uFF1AReview\n\n**\u68C0\u67E5\u77E5\u8BC6\u5E93\u3001project.md \u5E76\u6267\u884C\u5BA1\u67E5**\uFF1A\n- \u8FD0\u884C `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u5BA1\u67E5\u6700\u4F73\u5B9E\u8DF5\n- \u9605\u8BFB `zhuanspec/project.md` \u4E86\u89E3\u9879\u76EE\u7EA6\u5B9A\uFF08\u63D0\u793A\uFF1A\"\u2713 Loaded project.md\"\uFF09\n\n\u6309\u4E09\u8F68\u987A\u5E8F\u4E32\u884C\u5BA1\u67E5\uFF0C\u6700\u540E\u8FD0\u884C `zhuanspec review <change-id>` \u6C47\u603B\u7ED3\u8BBA\uFF1A\n\n**\u4E09\u8F68\u987A\u5E8F\u4E32\u884C\u673A\u5236\uFF08\u7981\u6B62\u5E76\u884C\uFF09**\uFF1A\n- \u7531\u4E3B Agent \u6309 2.1 \u2192 2.2 \u2192 2.3 \u987A\u5E8F\u9010\u8F68\u6267\u884C\uFF0C\u540E\u4E00\u8F68\u5FC5\u987B\u5728\u524D\u4E00\u8F68 PASS \u540E\u624D\u53EF\u542F\u52A8\u3002\n- **\u8F68\u9053 1\uFF1ASpec-Code \u4E00\u81F4\u6027**\uFF1A\u8FD0\u884C `zhuanspec validate <id> --strict`\uFF0C\u8F93\u51FA `spec-consistency-result.json`\u3002\u8FC7\u4E0D\u4E86\u65F6\u53EA\u4FEE\u4EE3\u7801\uFF0C\u7981\u6B62\u6539 spec\u3002\n- **\u8F68\u9053 2\uFF1AUnit Test\uFF08\u5FC5\u987B\u8C03\u7528 Skill\uFF09**\uFF1A\u4F7F\u7528 Skill \u5DE5\u5177\u8C03\u7528 `generate-mockito-unit-test`\uFF0C\u8F93\u51FA `unit-test-result.json`\uFF08\u767B\u8BB0 `newTestsGenerated` \u6216 `skipReason`\uFF0C\u5E76\u8BBE\u7F6E `schemaVersion: 2`\uFF09\u3002**\u7981\u6B62\u4EBA\u5DE5\u4EE3\u66FF Skill**\u3002\n- **\u8F68\u9053 3\uFF1ACode Review\uFF08\u5FC5\u987B\u8C03\u7528 Skill\uFF09**\uFF1A\u4F7F\u7528 Skill \u5DE5\u5177\u8C03\u7528 `code-review-expert`\uFF0C\u5B8C\u6574\u8DD1\u5B8C 0~11 \u6B65\uFF1B\u8F93\u51FA `code-review-result.json`\uFF0C\u5FC5\u987B\u767B\u8BB0 `skillReportPath` \u6307\u5411 Skill \u751F\u6210\u7684 `doc/code-review-*.md`\uFF0C\u5E76\u8BBE\u7F6E `schemaVersion: 2`\u3002**\u7981\u6B62\u4EBA\u5DE5\u901F\u5BA1/\u624B\u5DE5\u7F16\u9020 JSON**\u3002\n\n**\u6BCF\u8F68\u81EA\u95ED\u73AF**\uFF1A\n- \u6BCF\u8F68\u5185\u90E8\u72EC\u7ACB\u4FEE\u590D\u5FAA\u73AF\uFF08\u6700\u591A 3 \u8F6E\uFF09\n- \u53D1\u73B0\u95EE\u9898\u65F6\u5728\u672C\u8F68\u5185\u4FEE\u590D\u5E76\u91CD\u8DD1\uFF1B\u672C\u8F68\u672A PASS \u7981\u6B62\u542F\u52A8\u540E\u4E00\u8F68\n- \u8F93\u51FA\u72EC\u7ACB\u62A5\u544A\u6587\u4EF6\uFF08\u6309\u8F68\u9053\u987A\u5E8F\uFF09\uFF1A\n - `spec-consistency-result.json`\n - `unit-test-result.json`\n - `code-review-result.json`\uFF08\u542B `skillReportPath`\uFF09\n- \u4E09\u8F68\u5168\u90E8 PASS \u540E\uFF0C\u8FD0\u884C `zhuanspec review <id>` \u6C47\u603B\u751F\u6210 `review-report.md`\n\n**\u9A8C\u6536\u6807\u51C6**\uFF1A\n- review passed\n- critical = 0\n- \u5355\u6D4B\u901A\u8FC7\n- \u4E09\u8F68\u6309\u5E8F\u5168\u90E8 PASS\n\n### \u9636\u6BB5 4\uFF1A\u5F52\u6863\u53D8\u66F4\n\n**\u524D\u7F6E\u68C0\u67E5**\uFF1A\n- \u26A0\uFE0F **CHECKPOINT [REVIEW-PASSED]**: Review \u9636\u6BB5\u5FC5\u987B\u987A\u5E8F\u901A\u8FC7\uFF08\u4E09\u8F68\u6309\u5E8F\u5168\u90E8 PASS\uFF09\n - `review-report.md` \u5B58\u5728\u4E14\u663E\u793A passed\uFF0C\u82E5\u51FA\u73B0 \u26A0\uFE0F legacy schema \u8B66\u544A\u90E8\u5206\u8BF7\u5C3D\u5FEB\u8865\u9F50 `schemaVersion: 2` + \u65B0\u5B57\u6BB5\n - `spec-consistency-result.json`: passed\n - `unit-test-result.json`: tests passed\uFF08`newTestsGenerated` \u6216 `skipReason` \u5DF2\u767B\u8BB0\uFF0C\u65B0\u4EA7\u7269\u542B `schemaVersion: 2`\uFF09\n - `code-review-result.json`: critical = 0\uFF0C`skillReportPath` \u5BF9\u5E94\u7684 `doc/code-review-*.md` \u771F\u5B9E\u5B58\u5728\uFF0C\u65B0\u4EA7\u7269\u542B `schemaVersion: 2`\n\n**\u6B65\u9AA4**\uFF1A\n0. **\u68C0\u67E5\u77E5\u8BC6\u5E93**\uFF1A\u8FD0\u884C `rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u662F\u5426\u6709\u9700\u8981\u6C89\u6DC0\u7684\u77E5\u8BC6\n1. **\u786E\u5B9A\u53D8\u66F4 ID**\uFF1A\u8FD0\u884C `zhuanspec list` \u786E\u8BA4\u8981\u5F52\u6863\u7684\u53D8\u66F4\n2. **\u9A8C\u8BC1 Review \u95E8\u7981**\uFF1A\u786E\u8BA4\u4E0A\u8FF0\u56DB\u4E2A\u7ED3\u679C\u6587\u4EF6\u5B58\u5728\u4E14\u5168\u90E8\u901A\u8FC7\n3. **\u8FD0\u884C\u5F52\u6863\u547D\u4EE4**\uFF1A\u6267\u884C `zhuanspec archive <id> --yes`\uFF08\u4EC5\u5DE5\u5177\u7C7B\u5DE5\u4F5C\u4F7F\u7528 `--skip-specs`\uFF09\n4. **\u9A8C\u8BC1\u5F52\u6863\u7ED3\u679C**\uFF1A\u8FD0\u884C `zhuanspec validate --strict` \u786E\u8BA4\u901A\u8FC7\n5. **\u77E5\u8BC6\u6C89\u6DC0\uFF08\u624B\u52A8\u8865\u5145\uFF09**\uFF1A\u8C03\u7528 `@skill:zhuanspec:knowledge` \u4ECE\u4F1A\u8BDD\u8BB0\u5FC6\u8865\u5145\u77E5\u8BC6\n - CLI \u5DF2\u81EA\u52A8\u4ECE\u53D8\u66F4\u76EE\u5F55\u63D0\u53D6\u7ED3\u6784\u5316\u77E5\u8BC6\n - AI \u9700\u4ECE\u4F1A\u8BDD\u8865\u5145\u9690\u5F0F\u7EA6\u5B9A\u3001\u8C03\u8BD5\u53D1\u73B0\u7B49\n6. **\u4F1A\u8BDD\u5206\u6790**\uFF1A\u8C03\u7528 `@skill:session-analytics` \u5206\u6790\u4F1A\u8BDD\u6307\u6807\u6570\u636E\n7. **\u8F93\u51FA\u53CD\u9988\u94FE\u63A5**\uFF1A\u544A\u77E5\u7528\u6237\u586B\u5199\u4F7F\u7528\u53CD\u9988\uFF1A\n \uD83D\uDCCB https://doc.weixin.qq.com/forms/AJ4AfQfgAAwACwAAwaVABsCNqDXIKn8sf\n\n## \u6267\u884C\u4EFB\u4F55\u4EFB\u52A1\u4E4B\u524D\n\n**\u77E5\u8BC6\u5E93\u68C0\u67E5\uFF1A**\n- [ ] \u641C\u7D22\u76F8\u5173\u9677\u9631\uFF1A`rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/troubleshooting/`\n- [ ] \u641C\u7D22\u6700\u4F73\u5B9E\u8DF5\uFF1A`rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/best-practices/`\n- [ ] \u9605\u8BFB\u77E5\u8BC6\u7D22\u5F15\uFF1A`cat zhuanspec/knowledge/index.md`\n\n**\u4E0A\u4E0B\u6587\u68C0\u67E5\u6E05\u5355\uFF1A**\n- [ ] \u5728 `specs/[capability]/spec.md` \u4E2D\u9605\u8BFB\u76F8\u5173\u89C4\u8303\n- [ ] \u68C0\u67E5 `changes/` \u4E2D\u7684\u5F85\u5904\u7406\u53D8\u66F4\u662F\u5426\u5B58\u5728\u51B2\u7A81\n- [ ] \u9605\u8BFB `zhuanspec/project.md` \u4E86\u89E3\u7EA6\u5B9A\u3001\u9879\u76EE\u7ED3\u6784\u548C\u76F8\u5173\u529F\u80FD\u6A21\u5757\uFF08\u6309\u9700\u52A0\u8F7D\uFF09\n- [ ] \u8FD0\u884C `zhuanspec list` \u67E5\u770B\u6D3B\u52A8\u53D8\u66F4\n- [ ] \u8FD0\u884C `zhuanspec list --specs` \u67E5\u770B\u73B0\u6709\u529F\u80FD\n\n**\u521B\u5EFA\u89C4\u8303\u4E4B\u524D\uFF1A**\n- **\u68C0\u67E5\u77E5\u8BC6\u5E93**\uFF1A`rg \"[\u5173\u952E\u8BCD]\" zhuanspec/knowledge/` \u641C\u7D22\u76F8\u5173\u9677\u9631\u548C\u6700\u4F73\u5B9E\u8DF5\n- \u59CB\u7EC8\u68C0\u67E5\u529F\u80FD\u662F\u5426\u5DF2\u5B58\u5728\n- \u4F18\u5148\u4FEE\u6539\u73B0\u6709\u89C4\u8303\u800C\u4E0D\u662F\u521B\u5EFA\u91CD\u590D\u9879\n- \u4F7F\u7528 `zhuanspec show [spec]` \u5BA1\u67E5\u5F53\u524D\u72B6\u6001\n- **\u5F3A\u5236\u6F84\u6E05\u8981\u6C42**\uFF1A\u5982\u679C\u8BF7\u6C42\u6709\u4EFB\u4F55\u4E0D\u660E\u786E\u3001\u6A21\u7CCA\u6216\u4E0D\u786E\u5B9A\u7684\u65B9\u9762\uFF0C\u5FC5\u987B\u505C\u6B62\u5E76\u4F7F\u7528**\u9009\u9879\u5F0F\u4EA4\u4E92**\u63D0\u95EE\u3002\u4E25\u7981\u5728\u4E0D\u786E\u5B9A\u7684\u60C5\u51B5\u4E0B\u81EA\u884C\u63A8\u6D4B\u3001\u5047\u8BBE\u6216\u7EE7\u7EED\u521B\u5EFA\u6587\u4EF6\u3002\u4E25\u7981\u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57\u56DE\u7B54\u3002\n\n## \u5F3A\u5236\u6F84\u6E05\u5DE5\u4F5C\u6D41\n\n> **\u6838\u5FC3\u539F\u5219**\uFF1A\u9047\u5230\u4EFB\u4F55\u6A21\u7CCA\u70B9\uFF0C\u5FC5\u987B\u6F84\u6E05\u3002\u4E25\u7981\u731C\u6D4B\u3001\u81C6\u6D4B\u3001\u81EA\u884C\u5047\u8BBE\u3002\n\n### \u6F84\u6E05\u95ED\u73AF\u673A\u5236\n\n\u5728\u521B\u5EFA\u4EFB\u4F55\u63D0\u6848\u6587\u4EF6\u4E4B\u524D\uFF0C\u5FC5\u987B\u6267\u884C\u4EE5\u4E0B\u6D41\u7A0B\uFF1A\n\n```\n\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 1. \u67E5\u9605\u73B0\u6709\u6765\u6E90 \u2502\n\u2502 \u2192 \u89C4\u8303\u3001\u9879\u76EE\u7EA6\u5B9A\u3001\u4EE3\u7801\u5E93\u3001\u4E0A\u4E0B\u6587\u6587\u4EF6 \u2502\n\u2502 \u2192 \u5C1D\u8BD5\u4ECE\u8FD9\u4E9B\u6765\u6E90\u786E\u5B9A\u4FE1\u606F \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 2. \u8BC6\u522B\u6A21\u7CCA\u70B9 \u2502\n\u2502 \u2192 \u5206\u6790\u7528\u6237\u8BF7\u6C42\uFF0C\u5217\u51FA\u4E0D\u786E\u5B9A\u7684\u65B9\u9762 \u2502\n\u2502 \u2192 \u6392\u9664\u53EF\u4EE5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\u7684\u65B9\u9762 \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 3. \u5224\u65AD\u63D0\u95EE\u7B56\u7565 \u2502\n\u2502 \u2192 \u5982\u679C\u4ECD\u6709\u6A21\u7CCA\u70B9\uFF1A\u5FC5\u987B\u63D0\u95EE \u2502\n\u2502 \u2192 \u5982\u679C\u5168\u90E8\u660E\u786E\uFF1A\u7EE7\u7EED\u521B\u5EFA \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 4. \u751F\u6210\u6F84\u6E05\u95EE\u9898 \u2502\n\u2502 \u2192 \u4F18\u5148\u68C0\u67E5 superpowers:brainstorming \u662F\u5426\u53EF\u7528 \u2502\n\u2502 \u2192 \u53EF\u7528\uFF1A\u8C03\u7528\u8BE5\u6280\u80FD\u751F\u6210\u9AD8\u8D28\u91CF\u95EE\u9898 \u2502\n\u2502 \u2192 \u4E0D\u53EF\u7528\uFF1A\u76F4\u63A5\u4F7F\u7528 AskUserQuestion \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 5. \u9009\u9879\u5F0F\u4EA4\u4E92 \u2502\n\u2502 \u2192 2-5 \u4E2A\u9884\u8BBE\u9009\u9879 + \"\u5176\u4ED6\"\u515C\u5E95 \u2502\n\u2502 \u2192 \u7B49\u5F85\u7528\u6237\u9009\u62E9 \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 6. \u5904\u7406\"\u5176\u4ED6\"\u9009\u9879 \u2502\n\u2502 \u2192 \u7528\u6237\u9009\u62E9\"\u5176\u4ED6\"\u540E\u9488\u5BF9\u6027\u8FFD\u95EE \u2502\n\u2502 \u2192 \u4ECD\u4F18\u5148\u4F7F\u7528\u9009\u9879\u5F0F \u2502\n\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 7. \u5F00\u59CB\u521B\u5EFA \u2502\n\u2502 \u2192 \u53EA\u6709\u5728\u6240\u6709\u6A21\u7CCA\u70B9\u90FD\u660E\u786E\u540E\u624D\u80FD\u521B\u5EFA\u63D0\u6848 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n### \u63D0\u95EE\u7B56\u7565\u9009\u62E9\n\n| \u6280\u80FD\u53EF\u7528\u6027 | \u63D0\u95EE\u65B9\u5F0F | \u8BF4\u660E |\n|-----------|---------|------|\n| superpowers:brainstorming \u53EF\u7528 | \u8C03\u7528\u6280\u80FD\u751F\u6210\u95EE\u9898 | \u9AD8\u8D28\u91CF\u3001\u7ED3\u6784\u5316\u7684\u6F84\u6E05\u95EE\u9898 |\n| superpowers:brainstorming \u4E0D\u53EF\u7528 | AskUserQuestion \u76F4\u63A5\u63D0\u95EE | \u9009\u9879\u5F0F\u4EA4\u4E92\uFF0C\u7B80\u6D01\u9AD8\u6548 |\n\n### Brainstorming \u8C03\u7528\u8FB9\u754C\n\n**\u9002\u7528\u573A\u666F**\uFF1A\n| \u573A\u666F\u7C7B\u578B | \u8C03\u7528\u65B9\u5F0F | \u8BF4\u660E |\n|----------|---------|------|\n| **\u590D\u6742\u6A21\u7CCA** | superpowers:brainstorming | \u8DE8\u6A21\u5757\u3001\u65B0\u67B6\u6784\u3001\u591A\u65B9\u6848\u9009\u62E9 |\n| **\u7B80\u5355\u6F84\u6E05** | AskUserQuestion \u76F4\u63A5\u63D0\u95EE | \u53C2\u6570\u8C03\u6574\u3001\u8303\u56F4\u8FB9\u754C\u3001\u5355\u4E00\u9009\u62E9 |\n| **\u5DF2\u5B8C\u6574\u9700\u6C42** | \u8DF3\u8FC7\u6F84\u6E05 | \u7528\u6237\u63D0\u4F9B\u5B8C\u6574\u9700\u6C42\u6587\u6863 |\n\n**\u8C03\u7528\u7EA6\u675F**\uFF1A\n- \u4EC5\u4F7F\u7528 brainstorming \u7684**\u6F84\u6E05\u63D0\u95EE\u80FD\u529B**\uFF08\u6B65\u9AA43\uFF1A\u9010\u4E00\u63D0\u95EE\u6F84\u6E05\uFF09\n- **\u4E0D\u8FDB\u5165\u5B8C\u6574\u8BBE\u8BA1\u6D41\u7A0B**\uFF08\u6B65\u9AA44-9\uFF1A\u65B9\u6848\u5BF9\u6BD4\u3001\u8BBE\u8BA1\u6587\u6863\uFF09\n- **\u4E0D\u89E6\u53D1 writing-plans skill**\uFF08\u5C5E\u4E8E Apply \u9636\u6BB5\uFF09\n- \u83B7\u5F97\u6F84\u6E05\u540E\u7ACB\u5373\u8FD4\u56DE ZhuanSpec \u63D0\u6848\u6D41\u7A0B\n\n### \u9009\u9879\u5F0F\u4EA4\u4E92\u683C\u5F0F\n\n**\u5FC5\u987B\u9075\u5B88**\uFF1A\n- \u6BCF\u4E2A\u95EE\u9898\u63D0\u4F9B 2-5 \u4E2A\u9884\u8BBE\u9009\u9879\n- \u672B\u5C3E\u5305\u542B\"\u5176\u4ED6\"\u9009\u9879\u4F5C\u4E3A\u515C\u5E95\n- \u7981\u6B62\u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57\n\n**\u793A\u4F8B**\uFF1A\n```json\n{\n \"questions\": [\n {\n \"id\": \"scope\",\n \"prompt\": \"\u60A8\u5E0C\u671B\u6539\u8FDB\u54EA\u4E9B\u65B9\u9762\uFF1F\",\n \"options\": [\n {\"id\": \"security\", \"label\": \"\u5B89\u5168\u6027\"},\n {\"id\": \"ux\", \"label\": \"\u7528\u6237\u4F53\u9A8C\"},\n {\"id\": \"performance\", \"label\": \"\u6027\u80FD\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ],\n \"allow_multiple\": true\n }\n ]\n}\n```\n\n### \u5E38\u89C1\u6A21\u7CCA\u70B9\u6E05\u5355\n\n| \u7C7B\u522B | \u9700\u6F84\u6E05\u7684\u60C5\u51B5 |\n|------|-------------|\n| **\u8303\u56F4** | \u8FB9\u754C\u4E0D\u660E\u786E\uFF08\"\u6539\u8FDB\u6027\u80FD\"\u3001\"\u4F18\u5316\u4EE3\u7801\"\uFF09 |\n| **\u6280\u672F** | \u591A\u79CD\u5B9E\u73B0\u65B9\u5F0F\u4F46\u672A\u6307\u5B9A\u504F\u597D |\n| **\u4F18\u5148\u7EA7** | \u591A\u4E2A\u9700\u6C42\u4F46\u672A\u8BF4\u660E\u987A\u5E8F |\n| **\u9A8C\u6536** | \u4E0D\u6E05\u695A\u5982\u4F55\u5224\u65AD\u5B8C\u6210 |\n| **\u5B9E\u73B0** | \u6570\u636E\u83B7\u53D6\u6765\u6E90\u3001\u670D\u52A1\u5206\u5C42\u3001\u4F9D\u8D56\u5173\u7CFB\u4E0D\u660E\u786E |\n| **\u4F4D\u7F6E** | \u4EE3\u7801\u6539\u52A8\u4F4D\u7F6E\u4E0D\u660E\u786E |\n\n### \u7981\u6B62\u884C\u4E3A\n\n| \u274C \u7981\u6B62 | \u539F\u56E0 |\n|--------|------|\n| \u81EA\u884C\u63A8\u6D4B\u7528\u6237\u610F\u56FE | \u8FDD\u53CD\u4E09\u6761\u94C1\u5F8B |\n| \u8DF3\u8FC7\u6F84\u6E05\u76F4\u63A5\u521B\u5EFA\u6587\u4EF6 | \u8FDD\u53CD No Spec, No Code |\n| \u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57 | \u6548\u7387\u4F4E\u3001\u4F53\u9A8C\u5DEE |\n\n---\n\n### \u4E0E\u4E09\u6761\u94C1\u5F8B\u7684\u5173\u7CFB\n\n| \u94C1\u5F8B | \u6F84\u6E05\u5DE5\u4F5C\u6D41\u4F53\u73B0 |\n|------|---------------|\n| **No Spec, No Code** | \u6F84\u6E05\u5B8C\u6210\u540E\u624D\u80FD\u521B\u5EFA\u63D0\u6848 |\n| **Spec is Truth** | \u6F84\u6E05\u7ED3\u679C\u5199\u5165 tasks.md \u7684\"\u6F84\u6E05\u65E5\u5FD7\" |\n| **Reverse Sync** | Apply \u9636\u6BB5\u504F\u79BB\u65F6\u91CD\u65B0\u8FDB\u5165\u6F84\u6E05\u6D41\u7A0B |\n\n### \u641C\u7D22\u6307\u5BFC\n- \u679A\u4E3E\u89C4\u8303\uFF1A`zhuanspec spec list --long`\uFF08\u6216\u4F7F\u7528 `--json` \u7528\u4E8E\u811A\u672C\uFF09\n- \u679A\u4E3E\u53D8\u66F4\uFF1A`zhuanspec list`\uFF08\u6216 `zhuanspec change list --json` - \u5DF2\u5F03\u7528\u4F46\u53EF\u7528\uFF09\n- \u663E\u793A\u8BE6\u7EC6\u4FE1\u606F\uFF1A\n - \u89C4\u8303\uFF1A`zhuanspec show <spec-id> --type spec`\uFF08\u4F7F\u7528 `--json` \u8FDB\u884C\u8FC7\u6EE4\uFF09\n - \u53D8\u66F4\uFF1A`zhuanspec show <change-id> --json --deltas-only`\n- \u5168\u6587\u641C\u7D22\uFF08\u4F7F\u7528 ripgrep\uFF09\uFF1A`rg -n \"Requirement:|Scenario:\" zhuanspec/specs`\n\n## \u5FEB\u901F\u5F00\u59CB\n\n### CLI \u547D\u4EE4\n\n```bash\n# \u57FA\u672C\u547D\u4EE4\nzhuanspec list # \u5217\u51FA\u6D3B\u52A8\u53D8\u66F4\nzhuanspec list --specs # \u5217\u51FA\u89C4\u8303\nzhuanspec show [item] # \u663E\u793A\u53D8\u66F4\u6216\u89C4\u8303\nzhuanspec validate [item] # \u9A8C\u8BC1\u53D8\u66F4\u6216\u89C4\u8303\nzhuanspec archive <change-id> [--yes|-y] # \u90E8\u7F72\u540E\u5F52\u6863\uFF08\u6DFB\u52A0 --yes \u7528\u4E8E\u975E\u4EA4\u4E92\u5F0F\u8FD0\u884C\uFF09\n\n# \u9879\u76EE\u7BA1\u7406\nzhuanspec init [path] # \u521D\u59CB\u5316 ZhuanSpec\nzhuanspec update [path] # \u66F4\u65B0\u8BF4\u660E\u6587\u4EF6\n\n# \u4EA4\u4E92\u6A21\u5F0F\nzhuanspec show # \u63D0\u793A\u9009\u62E9\nzhuanspec validate # \u6279\u91CF\u9A8C\u8BC1\u6A21\u5F0F\n\n# \u8C03\u8BD5\nzhuanspec show [change] --json --deltas-only\nzhuanspec validate [change] --strict\n```\n\n### \u547D\u4EE4\u6807\u5FD7\n\n- `--json` - \u673A\u5668\u53EF\u8BFB\u8F93\u51FA\n- `--type change|spec` - \u6D88\u9664\u9879\u76EE\u6B67\u4E49\n- `--strict` - \u5168\u9762\u9A8C\u8BC1\n- `--no-interactive` - \u7981\u7528\u63D0\u793A\n- `--skip-specs` - \u5F52\u6863\u65F6\u4E0D\u66F4\u65B0\u89C4\u8303\n- `--yes`/`-y` - \u8DF3\u8FC7\u786E\u8BA4\u63D0\u793A\uFF08\u975E\u4EA4\u4E92\u5F0F\u5F52\u6863\uFF09\n\n## \u76EE\u5F55\u7ED3\u6784\n\n```\nzhuanspec/\n\u251C\u2500\u2500 project.md # \u9879\u76EE\u7EA6\u5B9A\n\u251C\u2500\u2500 knowledge/ # \u9879\u76EE\u7EA7\u77E5\u8BC6\u5E93\n\u2502 \u251C\u2500\u2500 index.md # \u77E5\u8BC6\u7D22\u5F15\n\u2502 \u251C\u2500\u2500 troubleshooting/ # \u5E38\u89C1\u95EE\u9898\u4E0E\u9677\u9631\n\u2502 \u251C\u2500\u2500 best-practices/ # \u6700\u4F73\u5B9E\u8DF5\n\u2502 \u2514\u2500\u2500 implicit-conventions/ # \u9690\u5F0F\u7EA6\u5B9A\n\u251C\u2500\u2500 specs/ # \u5F53\u524D\u771F\u5B9E\u72B6\u6001 - \u5DF2\u6784\u5EFA\u7684\u5185\u5BB9\n\u2502 \u2514\u2500\u2500 [capability]/ # \u5355\u4E00\u805A\u7126\u7684\u529F\u80FD\n\u2502 \u251C\u2500\u2500 spec.md # \u8981\u6C42\u548C\u573A\u666F\n\u2502 \u2514\u2500\u2500 design.md # \u6280\u672F\u6A21\u5F0F\n\u251C\u2500\u2500 changes/ # \u63D0\u6848 - \u5E94\u8BE5\u66F4\u6539\u7684\u5185\u5BB9\n\u2502 \u251C\u2500\u2500 [change-name]/\n\u2502 \u2502 \u251C\u2500\u2500 proposal.md # \u539F\u56E0\u3001\u5185\u5BB9\u3001\u5F71\u54CD\n\u2502 \u2502 \u251C\u2500\u2500 tasks.md # \u5B9E\u65BD\u6E05\u5355\n\u2502 \u2502 \u251C\u2500\u2500 design.md # \u6280\u672F\u51B3\u7B56\uFF08\u5FC5\u9009\uFF1B\u77E5\u8BC6\u63D0\u53D6\u6765\u6E90\uFF09\n\u2502 \u2502 \u2514\u2500\u2500 specs/ # \u589E\u91CF\u53D8\u66F4\n\u2502 \u2502 \u2514\u2500\u2500 [capability]/\n\u2502 \u2502 \u2514\u2500\u2500 spec.md # ADDED/MODIFIED/REMOVED\n\u2502 \u2514\u2500\u2500 archive/ # \u5DF2\u5B8C\u6210\u7684\u53D8\u66F4\n```\n\n## \u521B\u5EFA\u53D8\u66F4\u63D0\u6848\n\n### \u51B3\u7B56\u6811\n\n```\n\u65B0\u8BF7\u6C42\uFF1F\n\u251C\u2500 \u4FEE\u590D\u6062\u590D\u89C4\u8303\u884C\u4E3A\u7684 Bug\uFF1F \u2192 \u76F4\u63A5\u4FEE\u590D\n\u251C\u2500 \u62FC\u5199\u9519\u8BEF/\u683C\u5F0F/\u6CE8\u91CA\uFF1F \u2192 \u76F4\u63A5\u4FEE\u590D\n\u251C\u2500 \u65B0\u529F\u80FD/\u80FD\u529B\uFF1F \u2192 \u521B\u5EFA\u63D0\u6848\n\u251C\u2500 \u7834\u574F\u6027\u66F4\u6539\uFF1F \u2192 \u521B\u5EFA\u63D0\u6848\n\u251C\u2500 \u67B6\u6784\u66F4\u6539\uFF1F \u2192 \u521B\u5EFA\u63D0\u6848\n\u2514\u2500 \u4E0D\u660E\u786E\uFF1F \u2192 \u521B\u5EFA\u63D0\u6848\uFF08\u66F4\u5B89\u5168\uFF09\n```\n\n### \u63D0\u6848\u7ED3\u6784\n\n1. **\u521B\u5EFA\u76EE\u5F55\uFF1A** `changes/[change-id]/`\uFF08kebab-case\uFF0C\u52A8\u8BCD\u5F00\u5934\uFF0C\u552F\u4E00\uFF09\n\n2. **\u7F16\u5199 proposal.md\uFF1A**\n```markdown\n# Change: [\u53D8\u66F4\u7684\u7B80\u8981\u63CF\u8FF0]\n\n## \u53D8\u66F4\u539F\u56E0\n[\u5173\u4E8E\u95EE\u9898/\u673A\u4F1A\u7684 1-2 \u53E5\u8BDD]\n\n## \u53D8\u66F4\u5185\u5BB9\n- [\u53D8\u66F4\u7684\u8981\u70B9\u5217\u8868]\n- [\u7528 **BREAKING** \u6807\u8BB0\u7834\u574F\u6027\u66F4\u6539]\n\n## \u5F71\u54CD\u8303\u56F4\n- Affected specs: [\u5217\u51FA\u529F\u80FD]\n- Affected code: [\u5173\u952E\u6587\u4EF6/\u7CFB\u7EDF]\n```\n\n3. **\u521B\u5EFA\u89C4\u8303\u589E\u91CF\uFF1A** `specs/[capability]/spec.md`\n```markdown\n## ADDED Requirements\n### \u9700\u6C42\uFF1ANew Feature\nThe system SHALL provide...\n\n#### \u573A\u666F\uFF1ASuccess case\n- **\u5F53** user performs action\n- **\u5219** expected result\n\n## MODIFIED Requirements\n### \u9700\u6C42\uFF1AExisting Feature\n[\u5B8C\u6574\u7684\u4FEE\u6539\u540E\u8981\u6C42]\n\n## REMOVED Requirements\n### \u9700\u6C42\uFF1AOld Feature\n**Reason**: [\u79FB\u9664\u539F\u56E0]\n**Migration**: [\u5982\u4F55\u5904\u7406]\n```\n\u5982\u679C\u591A\u4E2A\u529F\u80FD\u53D7\u5230\u5F71\u54CD\uFF0C\u5728 `changes/[change-id]/specs/<capability>/spec.md` \u4E0B\u521B\u5EFA\u591A\u4E2A\u589E\u91CF\u6587\u4EF6\u2014\u2014\u6BCF\u4E2A\u529F\u80FD\u4E00\u4E2A\u3002\n\n4. **\u521B\u5EFA tasks.md\uFF1A**\n\n\u5148\u8FD0\u884C `zhuanspec skills list --json` \u53D1\u73B0\u5F53\u524D\u73AF\u5883\u4E2D\u53EF\u7528\u7684 skill \u53CA\u5176 description\uFF0C\u7136\u540E\u57FA\u4E8E\u8BED\u4E49\u5339\u914D\u5728\u4EFB\u52A1\u4E2D\u6807\u6CE8\u771F\u5B9E skill \u540D\u79F0\uFF1A\n\n```markdown\n## 1. \u5B9E\u73B0\n- [ ] 1.1 \u521B\u5EFA\u6570\u636E\u5E93\u8868\u7ED3\u6784 @skill:java-db-schema-standards\n- [ ] 1.2 \u5B9E\u73B0 RPC \u63A5\u53E3 @skill:java-scf-rpc-usage-skill\n- [ ] 1.3 \u6DFB\u52A0\u524D\u7AEF\u7EC4\u4EF6 @skill:kf-fe-frontend-dev\n- [ ] 1.4 \u7F16\u5199\u6D4B\u8BD5 @skill:generate-mockito-unit-test-skill\n```\n> **@skill \u6807\u7B7E**\uFF1A\u521B\u5EFA tasks.md \u524D\uFF0C\u8FD0\u884C `zhuanspec skills list --json` \u53D1\u73B0\u53EF\u7528 skill \u53CA\u5176 description\u3002\u57FA\u4E8E skill description \u8FDB\u884C\u8BED\u4E49\u5339\u914D\uFF1A\n> - \u4ED4\u7EC6\u9605\u8BFB\u6BCF\u4E2A skill \u7684 description\uFF0C\u7406\u89E3\u5176\u5177\u4F53\u529F\u80FD\u548C\u9002\u7528\u573A\u666F\n> - \u53EA\u6709\u5F53\u4EFB\u52A1\u529F\u80FD\u4E0E skill description \u660E\u786E\u5339\u914D\u65F6\u624D\u6807\u6CE8\n> - \u7B80\u5355\u7684\u4EE3\u7801\u4FEE\u6539\uFF08\u5982\u589E\u5220\u679A\u4E3E\u503C\uFF09\u5E94\u5339\u914D\u901A\u7528\u7F16\u7801\u89C4\u8303 skill\uFF0C\u800C\u975E\u67B6\u6784\u7EA7 skill\n> - \u907F\u514D\u4EC5\u56E0\u6587\u4EF6\u540D\u6216\u8DEF\u5F84\u5173\u952E\u8BCD\u800C\u9519\u8BEF\u5339\u914D\n> - \u4F7F\u7528\u771F\u5B9E skill \u540D\u79F0\u6807\u6CE8\uFF0C\u652F\u6301\u591A\u4E2A skill\uFF08`@skill:name1,name2`\uFF09\n> - Apply \u9636\u6BB5 AI \u6839\u636E\u6807\u7B7E\u76F4\u63A5\u8C03\u7528\u5BF9\u5E94 skill\u3002\u65E0\u53EF\u7528 skill \u65F6\u53EF\u7701\u7565\u3002\n\n\u26A0\uFE0F **\u68C0\u67E5\u70B9 [Skill \u6807\u6CE8]**\uFF1A\n1. \u5FC5\u987B\u5148\u8FD0\u884C `zhuanspec skills list` \u5E76\u5728 Skill \u6620\u5C04\u8868\u4E2D\u8BB0\u5F55\u53D1\u73B0\u7684 skill\n2. \u6BCF\u4E2A\u4EFB\u52A1\u5FC5\u987B\u6807\u6CE8 @skill:\u771F\u5B9Eskill\u540D\u79F0 \u6216 @skill:none\n3. \u5982\u679C\u4F7F\u7528 @skill:none\uFF0C\u5FC5\u987B\u63D0\u4F9B\u7406\u7531\uFF08\u4F8B\u5982\uFF1A\"\u7EAF\u914D\u7F6E\u53D8\u66F4\uFF0C\u65E0\u9700 skill\"\uFF09\n4. @skill \u540D\u79F0\u5FC5\u987B\u4E0E `zhuanspec skills list` \u8FD4\u56DE\u7684\u540D\u79F0\u5B8C\u5168\u4E00\u81F4 \u2014\u2014 \u7981\u6B62\u865A\u6784 skill \u540D\u79F0\n5. tasks.md \u4E2D\u7684 Skill \u6620\u5C04\u8868\u4E0D\u80FD\u4E3A\u7A7A\n6. validate --strict \u4F1A\u9A8C\u8BC1\u6240\u6709 @skill \u540D\u79F0\u662F\u5426\u5B58\u5728\u4E8E\u5DF2\u77E5 skill \u5217\u8868\u4E2D\n\n\u26A0\uFE0F **\u68C0\u67E5\u70B9 [\u4EFB\u52A1\u6392\u5E8F]**\uFF1A\n1. tasks.md \u4E2D\u7684\u4EFB\u52A1\u5FC5\u987B\u6309\u6CE2\u6B21\u7EC4\u7EC7\uFF08### \u6CE2\u6B21 1, ### \u6CE2\u6B21 2 \u7B49\uFF09\n2. \u6CE2\u6B21\u5206\u914D\u5FC5\u987B\u6839\u636E @depends \u4F9D\u8D56\u5173\u7CFB\u8BA1\u7B97\uFF08\u6CE2\u6B21 1 = \u65E0\u4F9D\u8D56\uFF0C\u6CE2\u6B21 N = \u4F9D\u8D56\u6CE2\u6B21 N-1\uFF09\n3. \u4EFB\u52A1\u4E0D\u80FD\u51FA\u73B0\u5728\u5176\u4F9D\u8D56\u7684\u4EFB\u52A1\u4E4B\u524D\n4. \u5FC5\u987B\u5728\u6587\u4EF6\u672B\u5C3E\u6DFB\u52A0 \"## \u4F9D\u8D56\u5206\u6790\" \u7AE0\u8282\u5E76\u6807\u660E\"\u72B6\u6001\uFF1A\u5DF2\u5B8C\u6210\"\n5. validate --strict \u4F1A\u9A8C\u8BC1\u4EFB\u52A1\u6392\u5E8F\u662F\u5426\u4E0E\u8BA1\u7B97\u7684\u6CE2\u6B21\u5339\u914D\n\n## Subagent \u542F\u52A8\u524D\u4E0A\u4E0B\u6587\u51C6\u5907\n\n\u5728\u7F16\u6392\u5C42\u4E3A\u6BCF\u4E2A Subagent \u51C6\u5907\u4E0A\u4E0B\u6587\u65F6\uFF0C\u6309\u4E09\u7EA7\u7B56\u7565\u6CE8\u5165\uFF1A\n\n### L1 \u6838\u5FC3\uFF08\u5168\u91CF\u6CE8\u5165\uFF0C\u5FC5\u987B\u5B8C\u6574\uFF09\n1. \u89E3\u6790\u5F53\u524D\u4EFB\u52A1\u7684 @test-case \u6807\u6CE8 \u2192 \u4ECE test-cases.md \u4E2D\u63D0\u53D6\u5BF9\u5E94 TC \u5168\u6587\n2. \u89E3\u6790\u5F53\u524D\u4EFB\u52A1\u7684 @ref \u6807\u6CE8 \u2192 \u4ECE\u6280\u672F\u65B9\u6848\u6587\u6863\u4E2D\u63D0\u53D6\u5BF9\u5E94\u7AE0\u8282\uFF08\u6309\u4F18\u5148\u7EA7\u67E5\u627E\uFF1A\u7528\u6237 --tech-spec \u6307\u5B9A\u8DEF\u5F84 > techDesign/tech-spec.md\uFF09\n3. \u5B9A\u4F4D\u5F53\u524D\u4EFB\u52A1\u6240\u5C5E\u7684 capability \u2192 \u8BFB\u53D6 specs/<capability>/spec.md\n\n### L2 \u5173\u8054\uFF08\u5168\u91CF\u6CE8\u5165\uFF09\n4. design.md \u5168\u6587\n5. Rules + Knowledge\n6. \u5F53\u524D Wave \u5176\u4ED6\u4EFB\u52A1\u7684\u4E00\u53E5\u8BDD\u6458\u8981 + \u524D\u7F6E Wave \u5B8C\u6210\u7ED3\u679C\u6458\u8981\n\n### L3 \u80CC\u666F\uFF08\u6458\u8981 + \u6309\u9700\u8BFB\u53D6\uFF09\n7. \u6280\u672F\u65B9\u6848\u5176\u4ED6\u7AE0\u8282 \u2192 \u8F93\u51FA\u6E05\u5355\u5F0F\u6458\u8981\uFF08\u201C\u8FD8\u5305\u542B N \u5F20\u8868\uFF1Axxx, yyy, ...\uFF0C\u8BE6\u89C1\u6280\u672F\u65B9\u6848\u6587\u6863\u201D\uFF09\n8. \u5176\u4ED6 spec \u7684 Requirement \u6807\u9898\u5217\u8868 \u2192 \u8F93\u51FA\u6E05\u5355\uFF08\"\u53E6\u6709 M \u4E2A spec\uFF0C\u8BE6\u89C1 specs/ \u76EE\u5F55\"\uFF09\n\n### \u6700\u7EC8\u6821\u9A8C\n- L1+L2 \u603B\u884C\u6570 > 800 \u884C \u2192 \u5BF9 L2 \u4E2D design.md \u505A\u7AE0\u8282\u88C1\u526A\uFF08\u53EA\u4FDD\u7559\u5F53\u524D\u4EFB\u52A1\u76F8\u5173\u7AE0\u8282\uFF09\n- L1 \u4E0D\u5141\u8BB8\u88C1\u526A\n- L3 \u7684\u6458\u8981\u5FC5\u987B\u5305\u542B\u6240\u6709\u5143\u7D20\u540D\u79F0\uFF0C\u4E0D\u5141\u8BB8\u7528\"\u7B49\"\u6216\"...\"\u7701\u7565\n\n5. **\u57FA\u4E8E\u6280\u672F\u65B9\u6848\u9010\u7AE0\u6620\u5C04\u5230 design.md\uFF08\u5FC5\u9009\uFF09**\uFF1A\n\u6BCF\u4E2A\u63D0\u6848\u90FD\u5FC5\u987B\u521B\u5EFA `design.md`\uFF0C\u8BB0\u5F55\u6280\u672F\u51B3\u7B56\u548C\u67B6\u6784\u601D\u8003\u3002\n\n**\u7AE0\u8282\u6620\u5C04\u89C4\u5219**\uFF1A\n- **\u5FC5\u9009\u7AE0\u8282**\uFF08\u6240\u6709\u63D0\u6848\u5FC5\u987B\u5305\u542B\uFF09\uFF1A\u80CC\u666F/Background\u3001\u51B3\u7B56/Decision\u3001\u98CE\u9669/Risks\n- **\u6309\u9700\u7AE0\u8282**\uFF08\u4EC5\u5F53\u6280\u672F\u65B9\u6848\u6D89\u53CA\u65F6\u624D\u751F\u6210\uFF09\uFF1A\n - \u6280\u672F\u65B9\u6848\u6709\u5EFA\u8868 SQL / DDL \u2192 \u751F\u6210 \u6570\u636E\u6A21\u578B/Database Design \u7AE0\u8282\n - \u6280\u672F\u65B9\u6848\u6709\u63A5\u53E3\u5B9A\u4E49 / API / SCF / RPC \u2192 \u751F\u6210 \u63A5\u53E3\u8BBE\u8BA1/API Contract \u7AE0\u8282\n - \u6280\u672F\u65B9\u6848\u6709 ES / MQ / \u7F13\u5B58 \u2192 \u751F\u6210 \u57FA\u7840\u8BBE\u65BD/Infrastructure \u7AE0\u8282\n - \u6280\u672F\u65B9\u6848\u6709\u524D\u7AEF\u8BBE\u8BA1 \u2192 \u751F\u6210 \u524D\u7AEF\u8BBE\u8BA1/Frontend Design \u7AE0\u8282\n -...(\u6309\u7167\u63D0\u4F9B\u7684\u6280\u672F\u65B9\u6848\u8865\u5145 \u603B\u4E4B\u8981\u8986\u76D6\u5168)\n- \u6BCF\u4E2A\u6309\u9700\u7AE0\u8282\u7684\u5185\u5BB9\u4ECE\u6280\u672F\u65B9\u6848\u5BF9\u5E94\u7AE0\u8282\u6620\u5C04\u800C\u6765\n- \u65E0\u6280\u672F\u65B9\u6848\u6587\u6863\u65F6\uFF0C\u4EC5\u6821\u9A8C\u5FC5\u9009\u7AE0\u8282\uFF08\u5411\u540E\u517C\u5BB9\uFF09\n\n```markdown\n## \u80CC\u666F\n[\u80CC\u666F\u3001\u7EA6\u675F\u3001\u5229\u76CA\u76F8\u5173\u8005]\n\n## \u76EE\u6807 / \u975E\u76EE\u6807\n- Goals: [...]\n- Non-Goals: [...]\n\n## \u51B3\u7B56\n- Decision: [\u5185\u5BB9\u548C\u539F\u56E0]\n- Alternatives considered: [\u9009\u9879 + \u7406\u7531]\n\n## \u98CE\u9669 / \u6743\u8861\n- [\u98CE\u9669] \u2192 \u7F13\u89E3\u63AA\u65BD\n\n## \u6700\u4F73\u5B9E\u8DF5\n[\u5B9E\u65BD\u8FC7\u7A0B\u4E2D\u7684\u6700\u4F73\u5B9E\u8DF5\u5EFA\u8BAE]\n\n## \u9690\u5F0F\u7EA6\u5B9A\n[\u56E2\u961F\u7279\u6709\u7684\u9690\u5F0F\u7EA6\u5B9A\u6216\u9ED8\u8BA4\u884C\u4E3A]\n\n## \u8FC1\u79FB\u8BA1\u5212\n[\u6B65\u9AA4\u3001\u56DE\u6EDA]\n\n## \u5F85\u89E3\u51B3\u95EE\u9898\n- [...]\n```\n\n**\u91CD\u8981**\uFF1Adesign.md \u662F\u77E5\u8BC6\u63D0\u53D6\u7684\u4E3B\u8981\u6765\u6E90\uFF0C\u5F52\u6863\u65F6\u4F1A\u81EA\u52A8\u63D0\u53D6\u5176\u4E2D\u7684\u201C\u51B3\u7B56\u201D\u3001\u201C\u6700\u4F73\u5B9E\u8DF5\u201D\u3001\u201C\u9690\u5F0F\u7EA6\u5B9A\u201D\u6C89\u6DC0\u5230\u9879\u76EE\u77E5\u8BC6\u5E93\u3002\n- [...]\n```\n\n## \u89C4\u8303\u6587\u4EF6\u683C\u5F0F\n\n### \u5173\u952E\uFF1A\u573A\u666F\u683C\u5F0F\n\n**\u6B63\u786E**\uFF08\u4F7F\u7528 #### \u6807\u9898\uFF09\uFF1A\n```markdown\n#### \u573A\u666F\uFF1A\u7528\u6237\u767B\u5F55\u6210\u529F\n- **\u5F53** \u63D0\u4F9B\u4E86\u6709\u6548\u51ED\u636E\n- **\u5219** \u8FD4\u56DE JWT token\n```\n\n**\u9519\u8BEF**\uFF08\u4E0D\u8981\u4F7F\u7528\u9879\u76EE\u7B26\u53F7\u6216\u7C97\u4F53\uFF09\uFF1A\n```markdown\n- **\u573A\u666F\uFF1A\u7528\u6237\u767B\u5F55** \u274C\n**\u573A\u666F**\uFF1A\u7528\u6237\u767B\u5F55 \u274C\n### \u573A\u666F\uFF1A\u7528\u6237\u767B\u5F55 \u274C\n```\n\n\u6BCF\u4E2A\u8981\u6C42\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u573A\u666F\u3002\n\n### \u8981\u6C42\u63AA\u8F9E\n- \u5BF9\u89C4\u8303\u6027\u8981\u6C42\u4F7F\u7528 SHALL/MUST\uFF08\u9664\u975E\u6709\u610F\u975E\u89C4\u8303\u6027\uFF0C\u5426\u5219\u907F\u514D\u4F7F\u7528 should/may\uFF09\n\n### \u589E\u91CF\u64CD\u4F5C\n\n- `## ADDED Requirements` - \u65B0\u529F\u80FD\n- `## MODIFIED Requirements` - \u66F4\u6539\u7684\u884C\u4E3A\n- `## REMOVED Requirements` - \u5DF2\u5F03\u7528\u7684\u529F\u80FD\n- `## RENAMED Requirements` - \u540D\u79F0\u66F4\u6539\n\n\u6807\u9898\u4F7F\u7528 `trim(header)` \u5339\u914D - \u5FFD\u7565\u7A7A\u767D\u3002\n\n#### \u4F55\u65F6\u4F7F\u7528 ADDED vs MODIFIED\n- ADDED\uFF1A\u5F15\u5165\u4E00\u4E2A\u65B0\u7684\u529F\u80FD\u6216\u5B50\u529F\u80FD\uFF0C\u53EF\u4EE5\u72EC\u7ACB\u4F5C\u4E3A\u8981\u6C42\u3002\u5F53\u66F4\u6539\u662F\u6B63\u4EA4\u7684\uFF08\u4F8B\u5982\uFF0C\u6DFB\u52A0\"\u659C\u6760\u547D\u4EE4\u914D\u7F6E\"\uFF09\u800C\u4E0D\u662F\u6539\u53D8\u73B0\u6709\u8981\u6C42\u7684\u8BED\u4E49\u65F6\uFF0C\u4F18\u5148\u4F7F\u7528 ADDED\u3002\n- MODIFIED\uFF1A\u66F4\u6539\u73B0\u6709\u8981\u6C42\u7684\u884C\u4E3A\u3001\u8303\u56F4\u6216\u9A8C\u6536\u6807\u51C6\u3002\u59CB\u7EC8\u7C98\u8D34\u5B8C\u6574\u7684\u3001\u66F4\u65B0\u7684\u8981\u6C42\u5185\u5BB9\uFF08\u6807\u9898 + \u6240\u6709\u573A\u666F\uFF09\u3002\u5F52\u6863\u5668\u5C06\u7528\u60A8\u5728\u6B64\u5904\u63D0\u4F9B\u7684\u5185\u5BB9\u66FF\u6362\u6574\u4E2A\u8981\u6C42\uFF1B\u90E8\u5206\u589E\u91CF\u5C06\u4E22\u5931\u5148\u524D\u7684\u8BE6\u7EC6\u4FE1\u606F\u3002\n- RENAMED\uFF1A\u4EC5\u5728\u540D\u79F0\u66F4\u6539\u65F6\u4F7F\u7528\u3002\u5982\u679C\u60A8\u8FD8\u66F4\u6539\u884C\u4E3A\uFF0C\u8BF7\u4F7F\u7528 RENAMED\uFF08\u540D\u79F0\uFF09\u52A0\u4E0A MODIFIED\uFF08\u5185\u5BB9\uFF09\uFF0C\u5F15\u7528\u65B0\u540D\u79F0\u3002\n\n\u5E38\u89C1\u9677\u9631\uFF1A\u4F7F\u7528 MODIFIED \u6DFB\u52A0\u65B0\u5173\u6CE8\u70B9\u800C\u4E0D\u5305\u542B\u5148\u524D\u7684\u6587\u672C\u3002\u8FD9\u4F1A\u5728\u5F52\u6863\u65F6\u5BFC\u81F4\u8BE6\u7EC6\u4FE1\u606F\u4E22\u5931\u3002\u5982\u679C\u60A8\u6CA1\u6709\u660E\u786E\u66F4\u6539\u73B0\u6709\u8981\u6C42\uFF0C\u8BF7\u5728 ADDED \u4E0B\u6DFB\u52A0\u65B0\u8981\u6C42\u3002\n\n\u6B63\u786E\u7F16\u5199 MODIFIED \u8981\u6C42\uFF1A\n1) \u5728 `zhuanspec/specs/<capability>/spec.md` \u4E2D\u627E\u5230\u73B0\u6709\u8981\u6C42\u3002\n2) \u590D\u5236\u6574\u4E2A\u8981\u6C42\u5757\uFF08\u4ECE `### Requirement: ...` \u5230\u5176\u573A\u666F\uFF09\u3002\n3) \u5C06\u5176\u7C98\u8D34\u5230 `## MODIFIED Requirements` \u4E0B\u5E76\u7F16\u8F91\u4EE5\u53CD\u6620\u65B0\u884C\u4E3A\u3002\n4) \u786E\u4FDD\u6807\u9898\u6587\u672C\u5B8C\u5168\u5339\u914D\uFF08\u5FFD\u7565\u7A7A\u767D\uFF09\u5E76\u81F3\u5C11\u4FDD\u7559\u4E00\u4E2A `#### Scenario:`\u3002\n\nRENAMED \u793A\u4F8B\uFF1A\n```markdown\n## RENAMED Requirements\n- FROM: `### \u9700\u6C42\uFF1ALogin`\n- TO: `### \u9700\u6C42\uFF1AUser Authentication`\n```\n\n## \u6545\u969C\u6392\u9664\n\n### \u5E38\u89C1\u9519\u8BEF\n\n**\"\u53D8\u66F4\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u589E\u91CF\"**\n- \u68C0\u67E5 `changes/[name]/specs/` \u662F\u5426\u5B58\u5728 .md \u6587\u4EF6\n- \u9A8C\u8BC1\u6587\u4EF6\u5177\u6709\u64CD\u4F5C\u524D\u7F00\uFF08## ADDED Requirements\uFF09\n\n**\"\u8981\u6C42\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u573A\u666F\"**\n- \u68C0\u67E5\u573A\u666F\u662F\u5426\u4F7F\u7528 `#### Scenario:` \u683C\u5F0F\uFF084 \u4E2A\u4E95\u53F7\uFF09\n- \u4E0D\u8981\u5BF9\u573A\u666F\u6807\u9898\u4F7F\u7528\u9879\u76EE\u7B26\u53F7\u6216\u7C97\u4F53\n\n**\u9759\u9ED8\u573A\u666F\u89E3\u6790\u5931\u8D25**\n- \u9700\u8981\u7CBE\u786E\u683C\u5F0F\uFF1A`#### Scenario: Name`\n- \u4F7F\u7528\u4EE5\u4E0B\u547D\u4EE4\u8C03\u8BD5\uFF1A`zhuanspec show [change] --json --deltas-only`\n\n### \u9A8C\u8BC1\u63D0\u793A\n\n```bash\n# \u59CB\u7EC8\u4F7F\u7528\u4E25\u683C\u6A21\u5F0F\u8FDB\u884C\u5168\u9762\u68C0\u67E5\nzhuanspec validate [change] --strict\n\n# \u8C03\u8BD5\u589E\u91CF\u89E3\u6790\nzhuanspec show [change] --json | jq '.deltas'\n\n# \u68C0\u67E5\u7279\u5B9A\u8981\u6C42\nzhuanspec show [spec] --json -r 1\n```\n\n## \u7406\u60F3\u8DEF\u5F84\u811A\u672C\n\n```bash\n# 1) \u63A2\u7D22\u5F53\u524D\u72B6\u6001\nzhuanspec spec list --long\nzhuanspec list\n# \u53EF\u9009\u5168\u6587\u641C\u7D22\uFF1A\n# rg -n \"Requirement:|Scenario:\" zhuanspec/specs\n# rg -n \"^#|Requirement:\" zhuanspec/changes\n\n# 2) \u9009\u62E9\u53D8\u66F4 ID \u5E76\u642D\u5EFA\nCHANGE=add-two-factor-auth\nmkdir -p zhuanspec/changes/$CHANGE/{specs/auth}\nprintf \"## \u53D8\u66F4\u539F\u56E0\\n...\\n\\n## \u53D8\u66F4\u5185\u5BB9\\n- ...\\n\\n## \u5F71\u54CD\u8303\u56F4\\n- ...\\n\" > zhuanspec/changes/\\$CHANGE/proposal.md\nprintf \"## 1. \u5B9E\u73B0\n- [ ] 1.1 ...\n\" > zhuanspec/changes/$CHANGE/tasks.md\n\n# 3) \u6DFB\u52A0\u589E\u91CF\uFF08\u793A\u4F8B\uFF09\ncat > zhuanspec/changes/$CHANGE/specs/auth/spec.md << 'EOF'\n## ADDED Requirements\n### \u9700\u6C42\uFF1A\u53CC\u56E0\u7D20\u8BA4\u8BC1\n\u7528\u6237 MUST \u5728\u767B\u5F55\u65F6\u63D0\u4F9B\u7B2C\u4E8C\u4E2A\u8BA4\u8BC1\u56E0\u7D20\u3002\n\n#### \u573A\u666F\uFF1A\u9700\u8981 OTP\n- **\u5F53** \u63D0\u4F9B\u4E86\u6709\u6548\u51ED\u636E\n- **\u5219** \u9700\u8981 OTP \u6311\u6218\nEOF\n\n# 4) \u9A8C\u8BC1\nzhuanspec validate $CHANGE --strict\n```\n\n## \u591A\u529F\u80FD\u793A\u4F8B\n\n```\nzhuanspec/changes/add-2fa-notify/\n\u251C\u2500\u2500 proposal.md\n\u251C\u2500\u2500 tasks.md\n\u2514\u2500\u2500 specs/\n \u251C\u2500\u2500 auth/\n \u2502 \u2514\u2500\u2500 spec.md # ADDED: \u53CC\u56E0\u7D20\u8BA4\u8BC1\n \u2514\u2500\u2500 notifications/\n \u2514\u2500\u2500 spec.md # ADDED: OTP \u90AE\u4EF6\u901A\u77E5\n```\n\nauth/spec.md\n```markdown\n## ADDED Requirements\n### \u9700\u6C42\uFF1A\u53CC\u56E0\u7D20\u8BA4\u8BC1\n...\n```\n\nnotifications/spec.md\n```markdown\n## ADDED Requirements\n### \u9700\u6C42\uFF1AOTP \u90AE\u4EF6\u901A\u77E5\n...\n```\n\n## \u6700\u4F73\u5B9E\u8DF5\n\n### \u7B80\u5355\u4F18\u5148\n- \u9ED8\u8BA4\u65B0\u589E\u4EE3\u7801 <100 \u884C\n- \u5355\u6587\u4EF6\u5B9E\u73B0\uFF0C\u76F4\u5230\u8BC1\u660E\u4E0D\u8DB3\n- \u907F\u514D\u6CA1\u6709\u660E\u786E\u7406\u7531\u7684\u6846\u67B6\n- \u9009\u62E9\u65E0\u804A\u4F46\u7ECF\u8FC7\u9A8C\u8BC1\u7684\u6A21\u5F0F\n\n### \u590D\u6742\u6027\u89E6\u53D1\u6761\u4EF6\n\u4EC5\u5728\u4EE5\u4E0B\u60C5\u51B5\u4E0B\u6DFB\u52A0\u590D\u6742\u6027\uFF1A\n- \u6027\u80FD\u6570\u636E\u8868\u660E\u5F53\u524D\u89E3\u51B3\u65B9\u6848\u592A\u6162\n- \u5177\u4F53\u7684\u89C4\u6A21\u8981\u6C42\uFF08>1000 \u7528\u6237\uFF0C>100MB \u6570\u636E\uFF09\n- \u591A\u4E2A\u7ECF\u8FC7\u9A8C\u8BC1\u7684\u7528\u4F8B\u9700\u8981\u62BD\u8C61\n\n### \u6E05\u6670\u7684\u5F15\u7528\n- \u4F7F\u7528 `file.ts:42` \u683C\u5F0F\u8868\u793A\u4EE3\u7801\u4F4D\u7F6E\n- \u5C06\u89C4\u8303\u5F15\u7528\u4E3A `specs/auth/spec.md`\n- \u94FE\u63A5\u76F8\u5173\u53D8\u66F4\u548C PR\n\n### \u529F\u80FD\u547D\u540D\n- \u4F7F\u7528\u52A8\u8BCD-\u540D\u8BCD\uFF1A`user-auth`\u3001`payment-capture`\n- \u6BCF\u4E2A\u529F\u80FD\u5355\u4E00\u76EE\u7684\n- 10 \u5206\u949F\u53EF\u7406\u89E3\u6027\u89C4\u5219\n- \u5982\u679C\u63CF\u8FF0\u9700\u8981\"AND\"\uFF0C\u5219\u62C6\u5206\n\n### \u53D8\u66F4 ID \u547D\u540D\n- \u4F7F\u7528 kebab-case\uFF0C\u7B80\u77ED\u4E14\u63CF\u8FF0\u6027\uFF1A`add-two-factor-auth`\n- \u4F18\u5148\u4F7F\u7528\u52A8\u8BCD\u5F00\u5934\u7684\u524D\u7F00\uFF1A`add-`\u3001`update-`\u3001`remove-`\u3001`refactor-`\n- \u786E\u4FDD\u552F\u4E00\u6027\uFF1B\u5982\u679C\u5DF2\u4F7F\u7528\uFF0C\u8FFD\u52A0 `-2`\u3001`-3` \u7B49\n\n## \u5DE5\u5177\u9009\u62E9\u6307\u5357\n\n| \u4EFB\u52A1 | \u5DE5\u5177 | \u539F\u56E0 |\n|------|------|-----|\n| \u6309\u6A21\u5F0F\u67E5\u627E\u6587\u4EF6 | Glob | \u5FEB\u901F\u6A21\u5F0F\u5339\u914D |\n| \u641C\u7D22\u4EE3\u7801\u5185\u5BB9 | Grep | \u4F18\u5316\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u641C\u7D22 |\n| \u8BFB\u53D6\u7279\u5B9A\u6587\u4EF6 | Read | \u76F4\u63A5\u6587\u4EF6\u8BBF\u95EE |\n| \u63A2\u7D22\u672A\u77E5\u8303\u56F4 | Task | \u591A\u6B65\u9AA4\u8C03\u67E5 |\n\n## \u9519\u8BEF\u6062\u590D\n\n### \u53D8\u66F4\u51B2\u7A81\n1. \u8FD0\u884C `zhuanspec list` \u67E5\u770B\u6D3B\u52A8\u53D8\u66F4\n2. \u68C0\u67E5\u91CD\u53E0\u7684\u89C4\u8303\n3. \u4E0E\u53D8\u66F4\u6240\u6709\u8005\u534F\u8C03\n4. \u8003\u8651\u5408\u5E76\u63D0\u6848\n\n### \u9A8C\u8BC1\u5931\u8D25\n1. \u4F7F\u7528 `--strict` \u6807\u5FD7\u8FD0\u884C\n2. \u68C0\u67E5 JSON \u8F93\u51FA\u4EE5\u83B7\u53D6\u8BE6\u7EC6\u4FE1\u606F\n3. \u9A8C\u8BC1\u89C4\u8303\u6587\u4EF6\u683C\u5F0F\n4. \u786E\u4FDD\u573A\u666F\u683C\u5F0F\u6B63\u786E\n\n### \u7F3A\u5C11\u4E0A\u4E0B\u6587\n1. \u9996\u5148\u9605\u8BFB project.md\n2. \u68C0\u67E5\u76F8\u5173\u89C4\u8303\n3. \u5BA1\u67E5\u6700\u8FD1\u7684\u5F52\u6863\n4. \u8BF7\u6C42\u6F84\u6E05\n\n## \u5FEB\u901F\u53C2\u8003\n\n### \u9636\u6BB5\u6307\u793A\u5668\n- `changes/` - \u5DF2\u63D0\u8BAE\uFF0C\u5C1A\u672A\u6784\u5EFA\n- `specs/` - \u5DF2\u6784\u5EFA\u5E76\u90E8\u7F72\n- `archive/` - \u5DF2\u5B8C\u6210\u7684\u53D8\u66F4\n\n### \u6587\u4EF6\u7528\u9014\n- `proposal.md` - \u539F\u56E0\u548C\u5185\u5BB9\n- `tasks.md` - \u5B9E\u65BD\u6B65\u9AA4\n- `design.md` - \u6280\u672F\u51B3\u7B56\n- `spec.md` - \u8981\u6C42\u548C\u884C\u4E3A\n\n### CLI \u8981\u70B9\n```bash\nzhuanspec list # \u6B63\u5728\u8FDB\u884C\u4EC0\u4E48\uFF1F\nzhuanspec show [item] # \u67E5\u770B\u8BE6\u7EC6\u4FE1\u606F\nzhuanspec validate --strict # \u662F\u5426\u6B63\u786E\uFF1F\nzhuanspec archive <change-id> [--yes|-y] # \u6807\u8BB0\u5B8C\u6210\uFF08\u6DFB\u52A0 --yes \u7528\u4E8E\u81EA\u52A8\u5316\uFF09\n```\n\n\u8BB0\u4F4F\uFF1A\u89C4\u8303\u662F\u771F\u76F8\u3002\u53D8\u66F4\u662F\u63D0\u6848\u3002\u4FDD\u6301\u5B83\u4EEC\u540C\u6B65\u3002\n\n## \u4EFB\u52A1\u6267\u884C\u7F16\u6392\n\n\u5F53 apply \u6307\u4EE4\u4E2D\u5305\u542B `<execution_plan>`/task.md\u4E2D\u5305\u542B `@depends` \u65F6\uFF0C\u5FC5\u987B\u6309\u4EE5\u4E0B\u7B56\u7565\u6267\u884C\u4EFB\u52A1\uFF0C\u800C\u975E\u987A\u5E8F\u9010\u4E00\u6267\u884C\u3002\n\n### \u8C03\u5EA6\u89C4\u5219\n\n1. **\u6309 wave \u7F16\u53F7\u4ECE\u5C0F\u5230\u5927**\u4F9D\u6B21\u6267\u884C\uFF0Cwave \u4E4B\u95F4\u4E25\u683C\u4E32\u884C\n2. **\u540C\u4E00 wave \u5185\u7684\u591A\u4E2A task**\uFF1A\u4E3A\u6BCF\u4E2A task \u542F\u52A8\u72EC\u7ACB\u7684 subagent\uFF08Coding \u7C7B\u578B\uFF09\uFF0C\u4F46**\u6700\u5927\u5E76\u884C\u5EA6\u9650\u5236\u4E3A 3 \u4E2A subagent**\n3. **\u8D85\u8FC7 3 \u4E2A\u4EFB\u52A1\u7684 Wave**\uFF1A\u6309 batch \u62C6\u5206\u6267\u884C\uFF0C\u6BCF\u6279\u6700\u591A 3 \u4E2A subagent \u5E76\u884C\uFF0Cbatch \u95F4\u4E32\u884C\u7B49\u5F85\n4. **\u7B49\u5F85\u672C wave \u6240\u6709 subagent \u5B8C\u6210\u540E**\uFF0C\u624D\u542F\u52A8\u4E0B\u4E00 wave\n5. \u540C\u4E00 wave \u5185\u4EC5\u6709\u4E00\u4E2A task \u65F6\uFF0C\u542F\u52A8\u5355\u4E2A subagent \u6267\u884C\n6. **\u53C2\u8003 `<scheduling_summary>` \u4E2D\u7684\u5177\u4F53\u8C03\u5EA6\u6307\u4EE4**\uFF0C\u660E\u786E\u6BCF\u4E2A wave \u9700\u8981\u542F\u52A8\u7684 subagent \u6570\u91CF\u548C\u6267\u884C\u65B9\u5F0F\n7. **\u7F16\u8BD1\u5931\u8D25\u5904\u7406**\uFF1A\u5E76\u884C\u4EFB\u52A1\u7F16\u8BD1\u5931\u8D25\u65F6\uFF0C\u5148\u5C1D\u8BD5\u4FEE\u590D\uFF0C\u65E0\u6CD5\u4FEE\u590D\u5219\u6807\u8BB0\u4E3A BLOCKED\uFF0C\u7EE7\u7EED\u6267\u884C\u540C Wave \u5176\u4ED6\u4EFB\u52A1\n8. **Wave \u5B8C\u6210\u540E\u96C6\u6210\u6D4B\u8BD5**\uFF1A\u6BCF\u4E2A Wave \u5168\u90E8\u4EFB\u52A1\u5904\u7406\u5B8C\u6210\u540E\uFF0C\u8FDB\u5165\u96C6\u6210\u6D4B\u8BD5\u9636\u6BB5\uFF08\u8BE6\u89C1\u300CWave \u96C6\u6210\u9A8C\u8BC1\u300D\u7AE0\u8282\uFF09\n\n### \u8C03\u5EA6\u6307\u4EE4\u683C\u5F0F\n\n\u6267\u884C\u8BA1\u5212\u7684 `<wave>` \u5143\u7D20\u5305\u542B\u4EE5\u4E0B\u5C5E\u6027\u7528\u4E8E\u6307\u5BFC subagent \u8C03\u5EA6\uFF1A\n- `subagent_count`\uFF1A\u8BE5\u6CE2\u6B21\u9700\u8981\u542F\u52A8\u7684 subagent \u6570\u91CF\uFF08\u7B49\u4E8E wave \u5185\u7684\u4EFB\u52A1\u6570\uFF09\n- `execution_mode`\uFF1A\u6267\u884C\u6A21\u5F0F\uFF0C`parallel`\uFF08\u5E76\u884C\uFF09\u6216 `serial`\uFF08\u4E32\u884C\uFF09\n- `max_concurrency`\uFF1A\u6700\u5927\u5E76\u884C\u5EA6\u9650\u5236\uFF08\u9ED8\u8BA4 3\uFF09\n\n\u5F53 Wave \u5185\u4EFB\u52A1\u6570\u8D85\u8FC7 `max_concurrency` \u65F6\uFF0C`<wave>` \u5143\u7D20\u5305\u542B `<batch>` \u5B50\u5143\u7D20\uFF1A\n- `<batch number=\"1\" subagent_count=\"3\">` \u2014 \u6BCF\u6279\u6700\u591A 3 \u4E2A subagent \u5E76\u884C\n- batch \u4E4B\u95F4\u4E32\u884C\u6267\u884C\uFF0C\u524D\u4E00 batch \u5168\u90E8\u5B8C\u6210\u540E\u624D\u542F\u52A8\u4E0B\u4E00 batch\n\n`<scheduling_summary>` \u63D0\u4F9B\u4EBA\u7C7B\u53EF\u8BFB\u7684\u8C03\u5EA6\u6458\u8981\uFF0C\u683C\u5F0F\u5982\u4E0B\uFF1A\n```\nWave 1 \u2192 \u542F\u52A8 1 \u4E2A subagent \u6267\u884C\u8BE5\u6CE2\u6B21\u7684\u5355\u4E2A\u4EFB\u52A1\nWave 2 \u2192 \u542F\u52A8 1 \u4E2A subagent \u6267\u884C\u8BE5\u6CE2\u6B21\u7684\u5355\u4E2A\u4EFB\u52A1\nWave 3 \u2192 \u542F\u52A8 2 \u4E2A subagent \u5E76\u884C\u6267\u884C\u8BE5\u6CE2\u6B21\u7684 2 \u4E2A\u4EFB\u52A1\n```\n\nAI \u52A9\u624B\u5728\u6267\u884C\u65F6**\u5FC5\u987B**\u6309\u7167 `<scheduling_summary>` \u4E2D\u7684\u6307\u4EE4\u542F\u52A8\u5BF9\u5E94\u6570\u91CF\u7684 subagent\u3002\n\n### Subagent \u4E0A\u4E0B\u6587\u9694\u79BB\n\n\u6BCF\u4E2A subagent \u7684 prompt \u4E2D**\u4EC5\u5305\u542B**\uFF1A\n- \u5F53\u524D task \u7684\u63CF\u8FF0\u548C\u9A8C\u6536\u6807\u51C6\n- \u5F53\u524D task \u5173\u8054\u7684 `@skill` \u5185\u5BB9\uFF08\u901A\u8FC7 skill \u540D\u79F0\u89E6\u53D1\u52A0\u8F7D\uFF09\n- \u76F8\u5173\u7684 spec \u6587\u4EF6\u8DEF\u5F84\u548C\u5185\u5BB9\uFF08\u4EC5\u9650\u8BE5 task \u6D89\u53CA\u7684\u90E8\u5206\uFF09\n- \u524D\u5E8F wave \u7684\u5B8C\u6210\u6458\u8981\uFF08\u800C\u975E\u5B8C\u6574\u8F93\u51FA\uFF09\n\n**\u7981\u6B62**\u5411 subagent \u6CE8\u5165\uFF1A\n- \u5176\u4ED6 wave \u7684 task \u8BE6\u60C5\n- \u4E0D\u76F8\u5173\u7684 skill \u5185\u5BB9\n- \u5176\u4ED6 subagent \u7684\u5B8C\u6574\u8F93\u51FA\n\n### \u5B8C\u6210\u540C\u6B65\n\n- \u6BCF\u4E2A subagent \u5B8C\u6210\u540E\uFF0C\u63D0\u53D6\u7B80\u77ED\u7684**\u5B8C\u6210\u6458\u8981**\uFF08\u4FEE\u6539\u4E86\u54EA\u4E9B\u6587\u4EF6\u3001\u5173\u952E\u53D8\u66F4\u70B9\uFF09\n- \u5C06\u6458\u8981\u4F20\u9012\u7ED9\u540E\u7EED wave \u7684 subagent \u4F5C\u4E3A\u4E0A\u4E0B\u6587\n- \u5728 `tasks.md` \u4E2D\u5C06\u5BF9\u5E94\u4EFB\u52A1\u6807\u8BB0\u4E3A `[x]`\n\n### \u964D\u7EA7\u7B56\u7565\n\n\u5F53 AI \u5E73\u53F0\u4E0D\u652F\u6301 subagent \u65F6\uFF0C\u6309\u4EE5\u4E0B\u964D\u7EA7\u7B56\u7565\u6267\u884C\uFF1A\n1. \u4ECD\u6309 wave \u987A\u5E8F\u6267\u884C\u4EFB\u52A1\n2. \u6BCF\u4E2A task \u6267\u884C\u524D\uFF0C\u6E05\u7406\u4E0D\u76F8\u5173\u7684 skill \u4E0A\u4E0B\u6587\n3. \u6BCF\u4E2A task \u6267\u884C\u540E\uFF0C\u4EC5\u4FDD\u7559\u5B8C\u6210\u6458\u8981\uFF0C\u907F\u514D\u4E0A\u4E0B\u6587\u7D2F\u79EF\u81A8\u80C0\n\n---\n\n## Apply \u9636\u6BB5\u4E13\u7528 Agent\n\nApply \u9636\u6BB5\u4F7F\u7528\u4E24\u79CD\u4E13\u7528 Agent \u7C7B\u578B\u6267\u884C\u4EE3\u7801\u5B9E\u65BD\u4EFB\u52A1\uFF0C\u7531\u7F16\u6392 Agent\uFF08\u4E3B Agent\uFF09\u6839\u636E\u4EFB\u52A1\u6807\u6CE8\u9009\u62E9\u3002\n\n**Agent \u5B9A\u4E49\u6587\u4EF6\u8DEF\u5F84**\uFF08\u4F9B Claude/Cursor \u7B49\u5DE5\u5177\u6CE8\u518C\uFF09\uFF1A\n- `agents/zhuanspec/apply-agent.md` - \u666E\u901A\u4EE3\u7801\u5B9E\u65BD Agent\n- `agents/zhuanspec/tdd-apply-agent.md` - TDD \u6A21\u5F0F Agent\n\n### Agent \u7C7B\u578B\u9009\u62E9\u89C4\u5219\uFF08\u53CC\u6761\u4EF6\u5224\u5B9A\uFF09\n\n\u7F16\u6392 Agent \u5728\u4E3A\u6BCF\u4E2A\u4EFB\u52A1\u542F\u52A8 subagent \u524D\uFF0CMUST \u4E25\u683C\u6267\u884C\u4EE5\u4E0B\u53CC\u6761\u4EF6\u5224\u5B9A\uFF1A\n\n| \u6761\u4EF6 1\uFF1A@test-case | \u6761\u4EF6 2\uFF1A\u4EFB\u52A1\u7C7B\u578B | Agent \u7C7B\u578B | \u5B9A\u4E49\u6587\u4EF6 |\n|------|------|-----------|--------|\n| \u65E0 `@test-case` | \u2014\uFF08\u8DF3\u8FC7\uFF09 | `applyAgent` | `agents/zhuanspec/apply-agent.md` |\n| \u6709 `@test-case:TC-XXX` | \u9002\u5408 TDD\uFF08\u540E\u7AEF\u4E1A\u52A1\u903B\u8F91/\u63A5\u53E3\u5B9E\u73B0/\u590D\u6742\u67E5\u8BE2\uFF1B\u524D\u7AEF\u7EC4\u4EF6\u4EA4\u4E92/Hooks/\u8868\u5355\u6821\u9A8C/utils/services \u7B49\u53EF\u6D4B\u884C\u4E3A\uFF09 | `tddApplyAgent` | `agents/zhuanspec/tdd-apply-agent.md` |\n| \u6709 `@test-case:TC-XXX` | \u4E0D\u9002\u5408 TDD\uFF08DDL/\u914D\u7F6E/DTO/ES\u7D22\u5F15/Mapper XML/\u524D\u7AEF\u7EAF\u9759\u6001\u5C55\u793A\uFF09 | `applyAgent`\uFF08\u964D\u7EA7\uFF09 | `agents/zhuanspec/apply-agent.md` |\n\n**\u5224\u5B9A\u539F\u5219**\uFF1A\u6761\u4EF6 2 \u4F9D\u636E**\u662F\u5426\u5B58\u5728\u53EF\u6D4B\u8BD5\u884C\u4E3A**\uFF0C\u4E0E\u6280\u672F\u6808/\u524D\u540E\u7AEF\u65E0\u5173\u3002\u524D\u7AEF\u53EA\u8981\u5305\u542B\u72B6\u6001\u3001\u4EA4\u4E92\u3001Hooks\u3001\u8868\u5355\u6821\u9A8C\u3001utils\u3001services \u7B49\u53EF\u6D4B\u884C\u4E3A\u5373\u5C5E\u4E8E\u9002\u5408 TDD\u3002\n\n**\u4E0D\u9002\u5408 TDD \u7684\u4EFB\u52A1\u7C7B\u578B**\uFF1A\u5EFA\u8868/DDL\uFF08SQL \u811A\u672C\uFF09\u3001\u914D\u7F6E\u53D8\u66F4\uFF08yaml/properties/xml\uFF09\u3001\u7EAF DTO/Entity/Enum \u5B9A\u4E49\u3001ES \u7D22\u5F15\u6A21\u677F/JSON \u8D44\u6E90\u6587\u4EF6\u3001\u524D\u7AEF\u7EAF\u9759\u6001\u5C55\u793A\u7EC4\u4EF6\uFF08\u65E0 state / \u65E0\u4E8B\u4EF6 / \u65E0\u6570\u636E\u5904\u7406\uFF09\u3001Mapper XML/DAO \u63A5\u53E3\u5B9A\u4E49\u3002\n\n**\u9002\u5408 TDD \u7684\u524D\u7AEF\u4EFB\u52A1\u7C7B\u578B\uFF08\u8865\u5145\uFF09**\uFF1A\u7EC4\u4EF6\u4EA4\u4E92\u4E0E\u72B6\u6001\u7BA1\u7406\u3001\u81EA\u5B9A\u4E49 Hooks\u3001\u8868\u5355\u6821\u9A8C\u4E0E\u53D7\u63A7\u903B\u8F91\u3001\u524D\u7AEF utils/services\u3001store/reducer/selector\u3001\u6570\u636E\u683C\u5F0F\u5316\u4E0E\u7BA1\u9053\u3002\u524D\u7AEF\u542B\u72B6\u6001/\u4EA4\u4E92/Hooks/\u8868\u5355\u6821\u9A8C/utils/services \u7684\u4EFB\u52A1\u5C5E\u4E8E\u9002\u5408 TDD\uFF0C\u4E0D\u5F97\u4EE5\"\u524D\u7AEF\"\u4E3A\u7531\u964D\u7EA7\u3002\n\n**\u51B3\u7B56\u8BB0\u5F55\uFF08MANDATORY\uFF09**\uFF1A\u7F16\u6392 Agent MUST \u5728\u542F\u52A8\u6BCF\u4E2A subagent \u7684 prompt \u5F00\u5934\u6CE8\u5165 Agent \u9009\u62E9\u51B3\u7B56\uFF08Agent \u7C7B\u578B/@test-case \u6807\u6CE8/\u4EFB\u52A1\u7C7B\u578B\u5224\u5B9A/TDD \u9002\u7528\u6027\uFF09\uFF0Csubagent MUST \u5C06\u6B64\u51B3\u7B56\u4FE1\u606F\u539F\u6837\u5199\u5165\u4EFB\u52A1\u62A5\u544A\u3002\n\n### Agent \u4F7F\u7528\u65B9\u5F0F\n\n\u7F16\u6392 Agent\uFF08\u4E3B Agent\uFF09\u5728 Wave \u5E76\u884C\u6267\u884C\u65F6\uFF1A\n\n1. **\u9009\u62E9 Agent**\uFF1A\u6839\u636E\u4EFB\u52A1\u7684 `@test-case` \u6807\u6CE8\u548C\u4EFB\u52A1\u7C7B\u578B\uFF0C\u6309\u53CC\u6761\u4EF6\u89C4\u5219\u9009\u62E9\u5BF9\u5E94 Agent \u7C7B\u578B\n2. **\u52A0\u8F7D Agent \u5B9A\u4E49**\uFF1A\u8BFB\u53D6\u5BF9\u5E94 Agent \u5B9A\u4E49\u6587\u4EF6\u83B7\u53D6\u5B8C\u6574\u6307\u4EE4\n3. **\u6CE8\u5165\u4E0A\u4E0B\u6587**\uFF1A\n - \u5F53\u524D task \u7684\u5B8C\u6574\u63CF\u8FF0\n - \u76F8\u5173 spec \u6587\u4EF6\u5185\u5BB9\n - Rules \u548C Knowledge\uFF08\u8E29\u5751\u8B66\u544A\u3001\u6700\u4F73\u5B9E\u8DF5\uFF09\n - \u524D\u5E8F wave \u5B8C\u6210\u6458\u8981\n4. **\u542F\u52A8 Subagent**\uFF1A\u4F7F\u7528 Agent tool \u542F\u52A8 subagent\n5. **\u5904\u7406\u72B6\u6001\u62A5\u544A**\uFF1A\u6839\u636E Agent \u8FD4\u56DE\u7684 Status \u6267\u884C\u540E\u7EED\u64CD\u4F5C\n\n### Rules \u548C Knowledge \u6CE8\u5165\uFF08\u5173\u952E\uFF09\n\n\u7F16\u6392 Agent MUST \u5728\u6BCF\u4E2A subagent prompt \u4E2D\u6CE8\u5165\u4EE5\u4E0B\u4E0A\u4E0B\u6587\uFF1A\n\n**Rules \u52A0\u8F7D**\uFF08\u6839\u636E @skill \u9009\u62E9\u6027\u6CE8\u5165\uFF09\uFF1A\n- `api-design.md` - \u524D\u540E\u7AEF\u63A5\u53E3\u8BBE\u8BA1\u89C4\u8303\uFF08\u6D89\u53CA Controller/API \u65F6\uFF09\n- `dao-standards.md` - Java DAO \u5C42\u89C4\u8303\uFF08\u6D89\u53CA DAO \u65F6\uFF09\n- `coding-standards.md` - KF \u540E\u7AEF\u7F16\u7801\u89C4\u5219\uFF08\u6D89\u53CA Java \u4EE3\u7801\u65F6\uFF09\n- `java-db-schema-standards.md` - MySQL \u6570\u636E\u5E93\u5EFA\u8868\u6539\u8868\u89C4\u8303\n\n**Knowledge \u52A0\u8F7D**\uFF08MUST \u59CB\u7EC8\u6CE8\u5165\uFF09\uFF1A\n- `knowledge/index.md` - \u77E5\u8BC6\u7D22\u5F15\u6458\u8981\n- \u76F8\u5173 `best-practices/` \u5185\u5BB9\uFF08\u6700\u4F73\u5B9E\u8DF5\uFF09\n- \u76F8\u5173 `troubleshooting/` \u5185\u5BB9\uFF08\u8E29\u5751\u8B66\u544A\uFF09\n\n### \u72B6\u6001\u5904\u7406\u7B56\u7565\n\n| Status | \u5904\u7406\u65B9\u5F0F |\n|--------|--------|\n| **DONE** | \u7EE7\u7EED\u4E0B\u4E00\u4EFB\u52A1\uFF0C\u8BB0\u5F55\u5B8C\u6210\u6458\u8981 |\n| **DONE_WITH_CONCERNS** | \u8BC4\u4F30 concerns\uFF0C\u6B63\u786E\u6027\u95EE\u9898\u5148\u4FEE\u590D\uFF0C\u89C2\u5BDF\u6027\u95EE\u9898\u8BB0\u5F55\u540E\u7EE7\u7EED\u3002**MUST \u5C06 concerns \u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A\u7684 Concerns \u8FFD\u8E2A\u7AE0\u8282** |\n| **BLOCKED** | \u8BC4\u4F30 blocker \u7C7B\u578B\uFF1A\u63D0\u4F9B\u4E0A\u4E0B\u6587/\u6362\u66F4\u5F3A\u6A21\u578B/\u62C6\u5206\u4EFB\u52A1/\u4FEE\u6539\u8BA1\u5212\u3002**MUST \u5C06 blocker \u539F\u56E0\u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A** |\n| **NEEDS_CONTEXT** | \u63D0\u4F9B\u7F3A\u5931\u4FE1\u606F\u5E76\u91CD\u65B0\u542F\u52A8 subagent |\n\n### Subagent \u4E0A\u4E0B\u6587\u9694\u79BB\u89C4\u5219\n\n**\u5FC5\u987B\u6CE8\u5165**\uFF1A\n- \u5F53\u524D task \u7684\u5B8C\u6574\u63CF\u8FF0\u548C\u9A8C\u6536\u6807\u51C6\n- \u5F53\u524D task \u5173\u8054\u7684 `@skill` \u5185\u5BB9\n- \u76F8\u5173\u7684 spec \u6587\u4EF6\u8DEF\u5F84\u548C\u5185\u5BB9\uFF08\u4EC5\u9650\u8BE5 task \u6D89\u53CA\u7684\u90E8\u5206\uFF09\n- \u524D\u5E8F wave \u7684\u5B8C\u6210\u6458\u8981\uFF08\u800C\u975E\u5B8C\u6574\u8F93\u51FA\uFF09\n- Rules \u548C Knowledge \u4E0A\u4E0B\u6587\n- **\u82E5 task \u6709 `@test-case` \u6807\u6CE8**\uFF1A\u4ECE `test-cases.md` \u4E2D\u63D0\u53D6\u5BF9\u5E94 TC-XXX \u7684\u5B8C\u6574\u5185\u5BB9\uFF08\u542B @layer\u3001BE \u9A8C\u6536\u3001FE \u9A8C\u6536\uFF09\uFF0C\u6CE8\u5165\u7ED9 TDD Apply Agent\n- **design.md \u7684\u5C42\u95F4\u4F9D\u8D56\u89C4\u5219 + \u67B6\u6784\u7EA6\u675F**\uFF08\u6240\u6709 task \u5FC5\u987B\u6CE8\u5165\uFF0C\u786E\u4FDD Agent \u4E86\u89E3\u7981\u6B62\u7684\u8DE8\u5C42\u8C03\u7528\uFF09\n\n**\u7981\u6B62\u6CE8\u5165**\uFF1A\n- \u5176\u4ED6 wave \u7684 task \u8BE6\u60C5\n- \u4E0D\u76F8\u5173\u7684 skill \u5185\u5BB9\n- \u5176\u4ED6 subagent \u7684\u5B8C\u6574\u8F93\u51FA\n\n## Skill \u65AD\u6D41\u6062\u590D\n\n\u5982\u679C\u5728\u6267\u884C @skill \u8FC7\u7A0B\u4E2D\u9047\u5230\u5F02\u5E38\uFF1A\n1. \u8BB0\u5F55\u5F02\u5E38\u5230 progress.json \u7684 skillCalls\n2. \u6807\u8BB0 afterAction: 'skip-and-continue'\n3. \u7EE7\u7EED\u5F53\u524D\u4EFB\u52A1\u7684\u540E\u7EED\u5B9E\u65BD\u6B65\u9AA4\n4. \u5728\u4EFB\u52A1\u5B8C\u6210\u62A5\u544A\u4E2D\u6807\u6CE8 \"Skill [name] skipped due to [reason]\"\n\n\u26A0\uFE0F Skill \u662F\u8F85\u52A9\u5DE5\u5177\uFF0C\u4E0D\u5E94\u963B\u65AD\u4E3B\u6D41\u7A0B\u3002\u4EFB\u4F55 Skill \u5931\u8D25\u90FD\u4E0D\u5E94\u5BFC\u81F4\u4EFB\u52A1\u5931\u8D25\u3002\n\n## Wave \u96C6\u6210\u9A8C\u8BC1\uFF08MANDATORY GATE\uFF09\n\n\u6BCF\u4E2A Wave \u5168\u90E8 Subagent \u5B8C\u6210\u540E\uFF0C\u7F16\u6392 Agent **\u5FC5\u987B**\u6267\u884C\u96C6\u6210\u9A8C\u8BC1\uFF0C**\u4E0D\u5F97\u8DF3\u8FC7**\uFF1A\n\n### A. \u7F16\u8BD1\u5931\u8D25\u5904\u7406\uFF08\u5E76\u884C\u6267\u884C\u8FC7\u7A0B\u4E2D\uFF09\n- \u5E76\u884C\u4EFB\u52A1\u6267\u884C\u4E2D\u9047\u5230\u7F16\u8BD1\u5931\u8D25\u65F6\uFF0C\u9996\u5148\u5C1D\u8BD5\u89E3\u51B3\u7F16\u8BD1\u95EE\u9898\uFF08\u5206\u6790\u9519\u8BEF\u3001\u81EA\u52A8\u4FEE\u590D\uFF09\n- \u4FEE\u590D\u6210\u529F \u2192 \u6807\u8BB0\u4E3A COMPLETED\uFF0C\u7EE7\u7EED\u6267\u884C\n- \u4FEE\u590D\u5931\u8D25 \u2192 \u6807\u8BB0\u4E3A BLOCKED\uFF0C\u7EE7\u7EED\u6267\u884C\u540C Wave \u5176\u4ED6\u4EFB\u52A1\n- \u540C Wave \u6240\u6709\u4EFB\u52A1\uFF08\u542B\u963B\u585E\u4EFB\u52A1\uFF09\u5168\u90E8\u5904\u7406\u5B8C\u6210\u540E \u2192 \u8FDB\u5165\u96C6\u6210\u6D4B\u8BD5\u9636\u6BB5\n\n### B. \u96C6\u6210\u6D4B\u8BD5\u9636\u6BB5\uFF08\u540C Wave \u6240\u6709\u4EFB\u52A1\u5904\u7406\u5B8C\u6210\u540E\uFF0CMANDATORY\uFF09\n1. \u7F16\u8BD1\u68C0\u67E5\uFF08`mvn compile -q` \u6216 `tsc --noEmit`\uFF09\n2. \u5BFC\u5165\u89E3\u6790\u68C0\u67E5\uFF08\u672C Wave \u65B0\u589E import \u662F\u5426\u53EF\u89E3\u6790\uFF09\n3. \u63A5\u53E3\u7B7E\u540D\u4E00\u81F4\u6027\uFF08\u8C03\u7528\u65B9\u53C2\u6570\u4E0E\u5B9A\u4E49\u5339\u914D\uFF09\n4. **Concerns/Blockers \u626B\u63CF**\uFF1A\n - \u626B\u63CF\u672C Wave \u6240\u6709\u4EFB\u52A1\u62A5\u544A\uFF08reports/task-*.md\uFF09\n - \u63D0\u53D6\u72B6\u6001\u4E3A DONE_WITH_CONCERNS \u6216 BLOCKED \u7684\u4EFB\u52A1\n - \u5C06\u5176 concerns/blocker \u539F\u56E0\u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A\u7684 Concerns \u8FFD\u8E2A\u7AE0\u8282\n4.1. **\u5916\u90E8\u4F9D\u8D56\u5168\u91CF\u626B\u63CF\u4E0E\u515C\u5E95\u95ED\u73AF\uFF08MANDATORY\uFF0C\u4E0D\u5141\u8BB8\u9057\u6F0F\uFF09**\uFF1A\n \u63D0\u6848\u9636\u6BB5 DESIGN-EXTERNAL-DEPENDENCY-GATE \u7684\u96C6\u6210\u9A8C\u8BC1\u5151\u73B0\u9A8C\u6536\u70B9\uFF0C\u5FC5\u987B\u5B8C\u6574\u4F9D\u5E8F\u6267\u884C\uFF1A\n - **\u4E09\u7C7B\u6765\u6E90\u5168\u91CF\u91C7\u96C6**\uFF1A\u540C\u65F6\u8981\u6C47\u603B\u300A1\u300B\u4ECE design.md \u300C\u5916\u90E8\u4F9D\u8D56\u53EF\u7528\u6027\u77E9\u9635\u300D6 \u5217\u8868\u63D0\u53D6\u539F\u59CB\u6761\u76EE\u30012 \u4ECE\u672C Wave \u4EFB\u52A1\u62A5\u544A\u7684 concern/blocker \u6587\u672C\u4E2D\u6293\u53D6\u5916\u90E8\u4F9D\u8D56\u5173\u952E\u8BCD\u30013 \u5BF9 Wave \u65B0\u589E/\u4FEE\u6539\u6E90\u7801\u505A\u9759\u6001\u626B\u63CF\uFF08`@MessageConsumer`/`RedisTemplate`/`@ApolloJsonValue`/`@XxlJob`/`@ServiceContract` \u7B49\uFF09\n - **8 \u6876\u5206\u7C7B\uFF0C\u6BCF\u6876\u90FD\u5FC5\u987B\u7ED9\u7ED3\u8BBA**\uFF1AES / MQ / Redis / SCF-RPC / HTTP / OSS / Config / Job\uFF1B\u6CA1\u6709\u9879\u5219\u5199 `\u2014` \u5E76\u6CE8\u660E\u201C\u5DF2\u786E\u8BA4\u65E0\u4F9D\u8D56\u201D\uFF0C\u7981\u6B62\u8DF3\u8FC7\u6876\n - **\u72B6\u6001\u4E0D\u660E\u786E\u7684\u6876\u5F3A\u5236 `AskQuestion`**\uFF1A\u5F53 design.md \u77E9\u9635\u6709 \u26A0\uFE0F/\u274C \u4ECD\u88AB Wave \u6D89\u53CA\u3001\u4EE3\u7801\u626B\u63CF\u51FA\u65B0\u4F9D\u8D56\u3001concern \u660E\u786E\u8BF4\u201C\u5360\u4F4D/\u9ED8\u8BA4\u515C\u5E95/\u5F85\u6838\u5B9E\u201D\u3001\u6216\u6876\u7A7A\u4F46\u4EE3\u7801\u6D89\u53CA\u8BE5\u7C7B\u578B\u5173\u952E\u8BCD\uFF08\u4F9D\u8D56\u58F0\u660E\u9057\u6F0F\uFF09\u65F6\uFF0C**\u5FC5\u987B** \u4E00\u6B21\u6027\u6279\u91CF AskQuestion\uFF0C\u4E0D\u5141\u8BB8\u4EC5\u51ED\u201C\u4EFB\u52A1\u72B6\u6001\u4E3A DONE_WITH_CONCERNS + \u6709\u62A5\u544A\u201D\u5C31\u7B97\u95ED\u73AF\n - **\u5199\u56DE\u5BF9\u8D26\u8868**\uFF1A\u5C06\u7ED3\u679C\u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A\u7684 **\u5916\u90E8\u4F9D\u8D56\u515C\u5E95\u5BF9\u8D26\u8868**\uFF085 \u5217\uFF1A\u6876 / \u4F9D\u8D56\u6761\u76EE / \u6765\u6E90 / \u89E3\u51B3\u72B6\u6001 / \u540E\u7EED\u52A8\u4F5C\uFF09\uFF1B\u2705+\u515C\u5E95 \u6761\u76EE\u5FC5\u987B\u540C\u6B65\u56DE\u5199 design.md \u77E9\u9635\uFF1B\u6876\u7ED3\u8BBA\u7F3A\u5931 \u2192 \u96C6\u6210\u62A5\u544A\u6574\u4F53\u72B6\u6001\u5F3A\u5236 FAIL\uFF0C\u963B\u65AD\u4E0B\u4E00 Wave\n - **\u5217\u51FA\u5F85\u91CD\u8DD1\u6E05\u5355**\uFF08MANDATORY\uFF09\uFF1A\u6F84\u6E05 \u2260 \u95ED\u73AF\u3002\u626B\u63CF\u672C Wave NEEDS_CONTEXT / BLOCKED \u4EFB\u52A1\uFF0C\u8BC6\u522B\u963B\u65AD\u539F\u56E0\u5DF2\u6F84\u6E05\u7684\u4EFB\u52A1\uFF0C\u5728\u96C6\u6210\u62A5\u544A\u4E2D\u65B0\u589E `## \uD83D\uDD01 \u5F85\u91CD\u8BD5\u4EFB\u52A1\u6E05\u5355` \u6BB5\uFF085 \u5217\uFF1A\u4EFB\u52A1ID / \u539F\u72B6\u6001 / \u963B\u65AD\u539F\u56E0 / \u5DF2\u6F84\u6E05\u4F9D\u8D56 / \u91CD\u8DD1\u6267\u884C\u65B9\uFF09\uFF1B\u7A7A\u5217\u4E5F\u987B\u663E\u5F0F\u5199 `\u2014 \u65E0\u9700\u91CD\u8DD1`\n5. **\u963B\u585E\u4EFB\u52A1\u91CD\u8BD5\uFF08BLOCKED \u222A NEEDS_CONTEXT \u5408\u5E76\u5904\u7406\uFF09**\uFF1A\n - \u91CD\u8BD5\u5BF9\u8C61\uFF1A\uFF081\uFF09\u7F16\u8BD1/\u6D4B\u8BD5\u5931\u8D25\u88AB\u6807 BLOCKED \u7684\u4EFB\u52A1\uFF1B\uFF082\uFF09\u5F85\u91CD\u8DD1\u6E05\u5355\u4E2D\u56E0\u5916\u90E8\u4F9D\u8D56\u5DF2\u6F84\u6E05\u800C\u89E3\u9501\u7684 NEEDS_CONTEXT / BLOCKED \u4EFB\u52A1\n - \u91CD\u8DD1\u524D\u786E\u8BA4 design.md \u77E9\u9635\u5DF2\u5199\u56DE\u6F84\u6E05\u7ED3\u679C\uFF1B\u91CD\u65B0\u542F\u52A8 subagent \u65F6\u5728 prompt \u4E2D\u663E\u5F0F\u6807\u6CE8 `Execution Mode = RETRY`\uFF0C\u5E76\u9644\u5E26\u4E0A\u6B21 concerns \u6458\u8981 + \u672C\u6B21\u5DF2\u6F84\u6E05\u4F9D\u8D56\u6761\u76EE + \u6700\u65B0\u77E9\u9635\u7247\u6BB5\n - \u91CD\u8BD5\u540E\u4ECD\u5931\u8D25 \u2192 \u4FDD\u7559 BLOCKED \u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A\uFF0C\u6574\u4F53\u72B6\u6001\u5F3A\u5236 FAIL\n5. **\u751F\u6210\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A**\uFF08MANDATORY\uFF0C\u4E0D\u5F97\u8DF3\u8FC7\uFF09\uFF1A\n - \u62A5\u544A\u8DEF\u5F84\uFF1A`changes/<change-id>/reports/wave-{N}-integration-report.md`\n - \u8BB0\u5F55\u6240\u6709\u4EFB\u52A1\u6267\u884C\u7ED3\u679C\u3001\u7F16\u8BD1\u68C0\u67E5\u7ED3\u679C\u3001\u963B\u585E\u4EFB\u52A1\u91CD\u8BD5\u7ED3\u679C\n - **MUST \u5305\u542B Concerns \u8FFD\u8E2A\u7AE0\u8282**\uFF0C\u5217\u51FA\u6240\u6709 DONE_WITH_CONCERNS \u548C BLOCKED \u4EFB\u52A1\u53CA\u5176\u7591\u8651\n - \u6574\u4F53\u72B6\u6001\uFF1A\u6240\u6709\u68C0\u67E5\u901A\u8FC7\u4E14\u65E0\u672A\u89E3\u51B3\u7684\u963B\u585E\u4EFB\u52A1 \u2192 PASS\n - **\u672A\u751F\u6210\u62A5\u544A\u6587\u4EF6 \u2192 \u963B\u65AD\uFF0C\u4E0D\u5F97\u8FDB\u5165\u4E0B\u4E00 Wave**\n6. TC \u8986\u76D6\u5FEB\u7167\u5BF9\u6BD4\uFF08\u5982 tc-implementation-verify Skill \u5DF2\u5B89\u88C5\uFF09\uFF1A\n - \u751F\u6210 `metrics/tc-snapshot-wave-N.json`\n - \u4E0E\u524D\u4E00 Wave \u5FEB\u7167\u5BF9\u6BD4\n - \u56DE\u5F52\uFF08implemented \u2192 missing\uFF09\u2192 \u963B\u65AD\n - \u8FDB\u5C55\uFF08missing \u2192 implemented\uFF09\u2192 \u8BB0\u5F55\n\n\u6240\u6709\u4EFB\u52A1\u5B8C\u6210\uFF08\u542B\u963B\u585E\u4EFB\u52A1\u91CD\u8BD5\uFF09\u4E14\u9A8C\u8BC1\u901A\u8FC7 \u2192 \u8BB0\u5F55 Wave \u5B8C\u6210\u72B6\u6001\uFF0C\u8FDB\u5165\u4E0B\u4E00 Wave\u3002\n\u4EFB\u4F55\u68C0\u67E5\u5931\u8D25 \u2192 \u4FEE\u590D\u540E\u624D\u8FDB\u5165\u4E0B\u4E00 Wave\u3002\n\n## \u5168\u91CF TC \u5B9E\u73B0\u9A8C\u8BC1\uFF08\u5168\u90E8\u4EFB\u52A1\u5B8C\u6210\u540E\u3001\u5BA1\u67E5\u95E8\u7981\u524D\uFF09\n\n\u6240\u6709 Wave \u5B8C\u6210\u540E\uFF0C\u8FDB\u5165\u5BA1\u67E5\u95E8\u7981\u4E4B\u524D\uFF0C\u7F16\u6392 Agent \u6267\u884C\uFF1A\n1. \u68C0\u67E5\u63D0\u6848\u76EE\u5F55\u4E2D\u662F\u5426\u5B58\u5728 `test-cases.md`\n2. \u82E5\u5B58\u5728\uFF0C\u6309 `tc-implementation-verify` Skill \u5B9A\u4E49\u6267\u884C\uFF1A\n - \u89E3\u6790 `test-cases.md` \u4E2D\u6240\u6709 TC \u7684\u9A8C\u8BC1\u70B9\n - \u5728\u9879\u76EE\u6E90\u4EE3\u7801\u4E2D\u641C\u7D22\u9A8C\u8BC1\u70B9\u5BF9\u5E94\u5B9E\u73B0\uFF08\u6392\u9664\u6D4B\u8BD5\u4EE3\u7801\uFF09\n - \u5C06\u7ED3\u679C\u5199\u5165 `metrics/tc-verify-result.json`\n3. \u82E5\u5B58\u5728 `missing` \u6216 `partial` TC \u2192 \u6682\u505C\u5E76\u8F93\u51FA\u672A\u5B9E\u73B0\u6E05\u5355\n4. \u82E5\u4E0D\u5B58\u5728 `test-cases.md` \u2192 \u8DF3\u8FC7\uFF0C\u76F4\u63A5\u8FDB\u5165\u5BA1\u67E5\u95E8\u7981\u9636\u6BB5\n\n---\n\n### Rules \u548C Knowledge \u6CE8\u5165\u793A\u4F8B\n\n\u7F16\u6392 Agent \u5728\u542F\u52A8 subagent \u65F6\u7684 prompt \u793A\u4F8B\uFF1A\n\n```markdown\n## Rules \u548C Knowledge \u4E0A\u4E0B\u6587\uFF08\u5FC5\u987B\u9075\u5FAA\uFF09\n\n### \u76F8\u5173 Rules\n[\u6839\u636E @skill \u6807\u6CE8\u6CE8\u5165\u5BF9\u5E94 rules \u5185\u5BB9\uFF0C\u5982 api-design.md]\n\n### Knowledge - \u6700\u4F73\u5B9E\u8DF5\n[\u6CE8\u5165 best-practices \u5185\u5BB9]\n\n### Knowledge - \u8E29\u5751\u8B66\u544A\n[\u6CE8\u5165 troubleshooting \u5185\u5BB9\uFF0C\u5982\u6709]\n\n\u26A0\uFE0F **\u91CD\u8981**: \u4EE5\u4E0B rules \u548C knowledge MUST \u5728\u5B9E\u65BD\u8FC7\u7A0B\u4E2D\u9075\u5FAA\u3002\n\u5982\u6709\u4EFB\u4F55\u4E0D\u786E\u5B9A\uFF0C\u62A5\u544A NEEDS_CONTEXT \u72B6\u6001\u3002\n```\n";
|
|
2
2
|
//# sourceMappingURL=agents-template.d.ts.map
|
|
@@ -55,9 +55,9 @@ export const agentsTemplate = `# ZhuanSpec 使用说明
|
|
|
55
55
|
|
|
56
56
|
## 知识库检查
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
**工作区边界(强制)**:查找文档、检索工程代码、执行 grep/glob/ls 时,范围必须限定在当前 ZhuanSpec 工作区内。禁止使用跨上级目录的 glob(如 \`../**\`)、上级目录绝对路径或手动拼接到工作区外路径。Glob 返回相对路径时,必须以本次工具调用的 \`path\` 参数作为基准拼接绝对路径,不得误解为当前目录或上级目录。
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
**在任何阶段开始前,必须先检查知识库并加载项目知识:**
|
|
61
61
|
|
|
62
62
|
| 操作 | 命令 | 目的 |
|
|
63
63
|
|------|------|------|
|
|
@@ -65,16 +65,13 @@ export const agentsTemplate = `# ZhuanSpec 使用说明
|
|
|
65
65
|
| 搜索最佳实践 | \`rg "[关键词]" zhuanspec/knowledge/best-practices/\` | 学习成功经验 |
|
|
66
66
|
| 搜索隐式约定 | \`rg "[关键词]" zhuanspec/knowledge/implicit-conventions/\` | 理解团队约定 |
|
|
67
67
|
| 阅读知识索引 | \`cat zhuanspec/knowledge/index.md\` | 了解项目级知识摘要 |
|
|
68
|
-
|
|
|
69
|
-
| 语义检索功能 | \`llmwiki query -e --token <token> "[关键词]"\` | 优先做功能/实现位置的向量检索,token 来自 \`[service]/.llm-wiki/index.md\` |
|
|
70
|
-
| 结果匹配记录 | \`append [service]/.llm-wiki/result.log\` | 每次 llmwiki query 后判断结果是否匹配当前请求诉求,并记录判断结论 |
|
|
71
|
-
| 知识点定位 | \`llmwiki knowledge points "[关键词]"\` | 优先定位配置类、数据模型类、关键知识点 |
|
|
68
|
+
| 加载项目知识 | \`@skill:load-project-knowledge\` | 渐进式加载项目架构、服务定位、检索优先路径和架构约束 |
|
|
72
69
|
|
|
73
70
|
**知识库作用**:
|
|
74
71
|
- 减少重复踩坑,积累项目经验
|
|
75
72
|
- 提供团队隐式约定的书面记录
|
|
76
73
|
- 加速新成员融入和知识传承
|
|
77
|
-
-
|
|
74
|
+
- 通过 \`@skill:load-project-knowledge\` 渐进式加载项目知识,获取 matched_services、search_priority、architecture_constraints,按优先路径缩小代码定位范围
|
|
78
75
|
|
|
79
76
|
---
|
|
80
77
|
|
|
@@ -158,13 +155,7 @@ Wave: W/N | Phase: Apply
|
|
|
158
155
|
* 获取:matched_services(涉及的服务列表)、search_priority(检索优先路径)、architecture_constraints(架构约束)
|
|
159
156
|
* 使用:后续代码定位使用 search_priority 限定范围,方案设计检查 architecture_constraints
|
|
160
157
|
* 兼容策略:若未找到 project.md 或关键词无匹配,输出警告并使用全局检索
|
|
161
|
-
-
|
|
162
|
-
* 若已定位到涉及服务,优先阅读各工程服务目录下的 \`[service]/.llm-wiki/index.md\`,严格按照其中的引导执行检索
|
|
163
|
-
* \`llmwiki query -e --token <token> "[关键词]"\` 中的 \`<token>\` 必须来自对应服务的 \`[service]/.llm-wiki/index.md\`
|
|
164
|
-
* 功能/实现定位优先使用 \`llmwiki query -e --token <token> "[关键词]"\` 做语义检索
|
|
165
|
-
* 每次执行 \`llmwiki query\` 后,必须判断查询结果是否与当前请求诉求匹配,并将关键词、服务、匹配/不匹配结论、简要原因记录到对应服务的 \`[service]/.llm-wiki/result.log\`
|
|
166
|
-
* 查找配置类、数据模型类、配置项归属时,优先使用 \`llmwiki knowledge points "[关键词]"\`
|
|
167
|
-
* 仅当对应服务的 \`.llm-wiki/\` 不存在、llmwiki 无结果、结果与当前请求诉求不匹配、或结果明显偏差时,才回退到 \`grep/glob\` 或全局检索
|
|
158
|
+
- **工程代码检索**:使用 \`@skill:load-project-knowledge\` 返回的 search_priority 限定检索范围,按优先路径定位代码;仅当 Skill 无匹配结果时,才回退到 \`grep/glob\` 或全局检索
|
|
168
159
|
- 阅读 \`zhuanspec/project.md\` 了解项目约定(提示:"✓ Loaded project.md")
|
|
169
160
|
- 审查 \`zhuanspec/project.md\`,\`zhuanspec list\` 和 \`zhuanspec list --specs\` 以了解当前上下文。
|
|
170
161
|
1. **测试 case 来源确认(最先执行,禁止跳过)**:
|
|
@@ -374,13 +365,7 @@ Wave: W/N | Phase: Apply
|
|
|
374
365
|
* 输入:domain(当前项目)、keywords(从 tasks.md 提取)
|
|
375
366
|
* 获取:matched_services、search_priority、architecture_constraints
|
|
376
367
|
* 使用:代码定位使用 search_priority 限定范围,避免全局检索偏差
|
|
377
|
-
-
|
|
378
|
-
* 若已定位到涉及服务,先阅读对应服务目录下的 \`[service]/.llm-wiki/index.md\`
|
|
379
|
-
* \`llmwiki query -e --token <token> "[关键词]"\` 中的 \`<token>\` 必须来自对应服务的 \`[service]/.llm-wiki/index.md\`
|
|
380
|
-
* 功能/实现定位优先使用 \`llmwiki query -e --token <token> "[关键词]"\`
|
|
381
|
-
* 每次执行 \`llmwiki query\` 后,必须判断查询结果是否与当前请求诉求匹配,并将关键词、服务、匹配/不匹配结论、简要原因记录到对应服务的 \`[service]/.llm-wiki/result.log\`
|
|
382
|
-
* 配置类、数据模型类、配置项归属优先使用 \`llmwiki knowledge points "[关键词]"\`
|
|
383
|
-
* 仅当对应服务的 \`.llm-wiki/\` 不存在、llmwiki 无结果、结果与当前请求诉求不匹配、或结果明显偏差时,才回退到 \`grep/glob\`
|
|
368
|
+
- **实施前定位代码**:使用 \`@skill:load-project-knowledge\` 返回的 search_priority 限定检索范围,按优先路径定位代码;仅当 Skill 无匹配结果时,才回退到 \`grep/glob\`
|
|
384
369
|
- 阅读 \`zhuanspec/project.md\` 了解项目约定(提示:"✓ Loaded project.md")
|
|
385
370
|
- 阅读 proposal.md - 了解要构建的内容
|
|
386
371
|
1. **阅读 design.md**(如果存在) - 审查技术决策
|