@zhuan-ai/zhuanspec 2.15.7 → 2.16.0

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.
Files changed (39) hide show
  1. package/dist/cli/hooks.d.ts +13 -1
  2. package/dist/cli/hooks.js +75 -2
  3. package/dist/cli/index.js +94 -4
  4. package/dist/commands/accuracy.js +5 -1
  5. package/dist/commands/knowledge.d.ts +21 -0
  6. package/dist/commands/knowledge.js +80 -0
  7. package/dist/commands/progress.d.ts +66 -0
  8. package/dist/commands/progress.js +306 -1
  9. package/dist/core/archive.js +28 -0
  10. package/dist/core/configurators/codex.d.ts +55 -1
  11. package/dist/core/configurators/codex.js +234 -2
  12. package/dist/core/hooks/collect-knowledge.js +66 -0
  13. package/dist/core/hooks/deviation-check.d.ts +26 -1
  14. package/dist/core/hooks/deviation-check.js +32 -184
  15. package/dist/core/hooks/knowledge-index.d.ts +84 -0
  16. package/dist/core/hooks/knowledge-index.js +270 -0
  17. package/dist/core/hooks/record-progress.d.ts +63 -1
  18. package/dist/core/hooks/record-progress.js +208 -54
  19. package/dist/core/hooks/summarize.js +90 -2
  20. package/dist/core/hooks/user-input-hook.d.ts +38 -2
  21. package/dist/core/hooks/user-input-hook.js +346 -21
  22. package/dist/core/init.d.ts +11 -0
  23. package/dist/core/init.js +43 -4
  24. package/dist/core/metrics/code-accuracy.d.ts +152 -3
  25. package/dist/core/metrics/code-accuracy.js +323 -19
  26. package/dist/core/templates/agents-root-stub.d.ts +1 -1
  27. package/dist/core/templates/agents-root-stub.js +1 -0
  28. package/dist/core/templates/agents-template.d.ts +1 -1
  29. package/dist/core/templates/agents-template.js +21 -4
  30. package/dist/core/templates/codex-hooks-template.d.ts +37 -0
  31. package/dist/core/templates/codex-hooks-template.js +33 -2
  32. package/dist/core/templates/slash-command-templates.js +144 -28
  33. package/dist/core/templates/tasks-template.js +66 -14
  34. package/dist/core/update.js +17 -0
  35. package/dist/core/validation/strict-rules.d.ts +28 -0
  36. package/dist/core/validation/strict-rules.js +284 -0
  37. package/dist/utils/hook-merge.d.ts +6 -0
  38. package/dist/utils/hook-merge.js +33 -2
  39. package/package.json +1 -1
@@ -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\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\n5. **\u963B\u585E\u4EFB\u52A1\u91CD\u8BD5**\uFF1A\n - \u5C06\u5F53\u524D Wave \u4E2D\u7F16\u8BD1\u5931\u8D25\u88AB\u6807\u8BB0\u4E3A BLOCKED \u7684\u4EFB\u52A1\u91CD\u65B0\u6267\u884C\n - \u91CD\u65B0\u542F\u52A8 subagent \u6267\u884C\u963B\u585E\u4EFB\u52A1\uFF08\u6B64\u65F6\u53EF\u5229\u7528\u540C Wave \u5DF2\u5B8C\u6210\u4EFB\u52A1\u7684\u4E0A\u4E0B\u6587\uFF09\n - \u91CD\u8BD5\u540E\u4ECD\u5931\u8D25 \u2192 \u8BB0\u5F55\u5230\u96C6\u6210\u6D4B\u8BD5\u62A5\u544A\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\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";
2
2
  //# sourceMappingURL=agents-template.d.ts.map
@@ -207,6 +207,16 @@ Wave: W/N | Phase: Apply
207
207
  3. 选择一个唯一的动词开头的 \`change-id\`,并在 \`zhuanspec/changes/<id>/\` 下搭建 \`proposal.md\`、\`tasks.md\`、\`design.md\` 和规范增量。
208
208
  4. 将变更映射为具体的功能或要求,将多范围的工作分解为具有明确关系和顺序的不同规范增量。
209
209
  5. 当解决方案跨越多个系统、引入新模式或在提交规范之前需要权衡讨论时,在 \`design.md\` 中捕获架构推理。
210
+
211
+ ⚠️ **CHECKPOINT [DESIGN-EXTERNAL-DEPENDENCY-GATE]**(提案阶段前置闭环,必须在 design.md 新建/更新后立即执行):
212
+ 1. **依赖识别**:全量罗列 ES / MQ / Redis / SCF-RPC / HTTP / OSS / Config(Apollo) / Job 八类外部依赖,按类型分桶;依赖清单优先从 techDesign 阶段产出提取,缺失时从用户提供的技术方案 / specs 中补齐
213
+ 2. **硬规则使用 AskQuestion**:只要某项依赖的状态 / 版本 / 负责方 / 兜底策略任一字段不明确,**必须** 调用 \`AskQuestion\` 一次性展示选项;严禁默认写 ✅ 或 “待确认”跳过
214
+ 3. **矩阵落地**:根据用户回答将结果写入 design.md 的「外部依赖可用性矩阵」段,表头必须为 **6 列**:
215
+ \`| 依赖名称 | 类型 | 状态 | 版本/环境 | 兜底/阻塞策略 | 负责方 |\`
216
+ 4. **闭环完结**:本步骤结束前所有 techDesign 阶段标记为 ⚠️ / ❓ 的条目必须沉淀为 ✅ / ❌ / ✅+兜底,**不允许留白**;该矩阵是 propose / apply / 集成验证阶段的唯一事实源
217
+
218
+ ⚠️ **CHECKPOINT [DATA-STORAGE-STRATEGY]**(仅当技术方案包含新增表 / CREATE TABLE / t_* 时强制执行):必须用 \`AskQuestion\` 批量澄清 **预估数量级 / 查询场景 / 读写 QPS / 时效性 / 一致性(含跨表事务)** 5 字段,并在 design.md 写入 **8 列** 「## 数据存储策略」表:\`| 表名 | 预估数量级 | 查询场景 | 读/写 QPS | 时效性 | 一致性(含跨表事务) | 存储策略 | 备注 |\`。任一列出现 \`TBD\` / 空 / 待评估 → 未通过,禁止进入规范增量编写。
219
+
210
220
  6. 在 \`changes/<id>/specs/<capability>/spec.md\` 中起草规范增量(每个功能一个文件夹),使用 \`## ADDED|MODIFIED|REMOVED Requirements\`,每个要求至少包含一个 \`#### Scenario:\`,并在相关时交叉引用相关功能。
211
221
 
212
222
  ⚠️ **CHECKPOINT [SPEC-REQUIREMENT-FORMAT]**:
@@ -1193,10 +1203,17 @@ Apply 阶段使用两种专用 Agent 类型执行代码实施任务,由编排
1193
1203
  - 扫描本 Wave 所有任务报告(reports/task-*.md)
1194
1204
  - 提取状态为 DONE_WITH_CONCERNS 或 BLOCKED 的任务
1195
1205
  - 将其 concerns/blocker 原因记录到集成测试报告的 Concerns 追踪章节
1196
- 5. **阻塞任务重试**:
1197
- - 将当前 Wave 中编译失败被标记为 BLOCKED 的任务重新执行
1198
- - 重新启动 subagent 执行阻塞任务(此时可利用同 Wave 已完成任务的上下文)
1199
- - 重试后仍失败 → 记录到集成测试报告
1206
+ 4.1. **外部依赖全量扫描与兜底闭环(MANDATORY,不允许遗漏)**:
1207
+ 提案阶段 DESIGN-EXTERNAL-DEPENDENCY-GATE 的集成验证兑现验收点,必须完整依序执行:
1208
+ - **三类来源全量采集**:同时要汇总《1》从 design.md 「外部依赖可用性矩阵」6 列表提取原始条目、2 从本 Wave 任务报告的 concern/blocker 文本中抓取外部依赖关键词、3 对 Wave 新增/修改源码做静态扫描(\`@MessageConsumer\`/\`RedisTemplate\`/\`@ApolloJsonValue\`/\`@XxlJob\`/\`@ServiceContract\` 等)
1209
+ - **8 桶分类,每桶都必须给结论**:ES / MQ / Redis / SCF-RPC / HTTP / OSS / Config / Job;没有项则写 \`—\` 并注明“已确认无依赖”,禁止跳过桶
1210
+ - **状态不明确的桶强制 \`AskQuestion\`**:当 design.md 矩阵有 ⚠️/❌ 仍被 Wave 涉及、代码扫描出新依赖、concern 明确说“占位/默认兜底/待核实”、或桶空但代码涉及该类型关键词(依赖声明遗漏)时,**必须** 一次性批量 AskQuestion,不允许仅凭“任务状态为 DONE_WITH_CONCERNS + 有报告”就算闭环
1211
+ - **写回对账表**:将结果记录到集成测试报告的 **外部依赖兜底对账表**(5 列:桶 / 依赖条目 / 来源 / 解决状态 / 后续动作);✅+兜底 条目必须同步回写 design.md 矩阵;桶结论缺失 → 集成报告整体状态强制 FAIL,阻断下一 Wave
1212
+ - **列出待重跑清单**(MANDATORY):澄清 ≠ 闭环。扫描本 Wave NEEDS_CONTEXT / BLOCKED 任务,识别阻断原因已澄清的任务,在集成报告中新增 \`## 🔁 待重试任务清单\` 段(5 列:任务ID / 原状态 / 阻断原因 / 已澄清依赖 / 重跑执行方);空列也须显式写 \`— 无需重跑\`
1213
+ 5. **阻塞任务重试(BLOCKED ∪ NEEDS_CONTEXT 合并处理)**:
1214
+ - 重试对象:(1)编译/测试失败被标 BLOCKED 的任务;(2)待重跑清单中因外部依赖已澄清而解锁的 NEEDS_CONTEXT / BLOCKED 任务
1215
+ - 重跑前确认 design.md 矩阵已写回澄清结果;重新启动 subagent 时在 prompt 中显式标注 \`Execution Mode = RETRY\`,并附带上次 concerns 摘要 + 本次已澄清依赖条目 + 最新矩阵片段
1216
+ - 重试后仍失败 → 保留 BLOCKED 记录到集成测试报告,整体状态强制 FAIL
1200
1217
  5. **生成集成测试报告**(MANDATORY,不得跳过):
1201
1218
  - 报告路径:\`changes/<change-id>/reports/wave-{N}-integration-report.md\`
1202
1219
  - 记录所有任务执行结果、编译检查结果、阻塞任务重试结果
@@ -48,5 +48,42 @@ export declare function getCodexHooksTomlBlock(): string;
48
48
  * hook entries without serialising to TOML.
49
49
  */
50
50
  export declare function getCodexDefaultHooks(): readonly CodexHookEntry[];
51
+ /**
52
+ * Identity of a Codex hook handler used by the CLI's per-hook content-trust
53
+ * mechanism (Codex PR #20321). Codex keys every trusted hash entry by:
54
+ *
55
+ * "<absolute-config-toml-path>:<event_snake>:<group_idx>:<handler_idx>"
56
+ *
57
+ * where:
58
+ * - event_snake: lowercase snake_case of the event name
59
+ * (SessionStart → session_start, PreToolUse → pre_tool_use, ...)
60
+ * - group_idx: 0-based index of the `[[hooks.<Event>]]` array entry
61
+ * (i.e. the Nth occurrence of that event)
62
+ * - handler_idx: 0-based index of the handler within that group
63
+ * (i.e. the Nth `[[hooks.<Event>.hooks]]` under the same group)
64
+ *
65
+ * ZhuanSpec emits exactly one handler per group, so handler_idx is always 0.
66
+ * Callers use these slots to seed `[hooks.state."<key>"] trusted_hash` entries
67
+ * in `~/.codex/config.toml` from a previously approved project, so users do
68
+ * not have to re-approve hooks in every new project.
69
+ */
70
+ export interface CodexHookSlot {
71
+ /** Original PascalCase event name (matches the TOML `[[hooks.<Event>]]` header). */
72
+ event: CodexHookEntry['event'];
73
+ /** Event name in snake_case (e.g. `session_start`, `pre_tool_use`). */
74
+ eventSnake: 'session_start' | 'user_prompt_submit' | 'pre_tool_use' | 'post_tool_use' | 'stop';
75
+ /** 0-based index among `[[hooks.<Event>]]` arrays sharing the same event. */
76
+ groupIndex: number;
77
+ /** 0-based index of the handler within the group; always 0 for ZhuanSpec defaults. */
78
+ handlerIndex: number;
79
+ }
80
+ /**
81
+ * Derive the {event, group, handler} triple for every default hook.
82
+ *
83
+ * The returned slots are in declaration order; per-event `groupIndex` starts at
84
+ * 0 and increments each time a new `[[hooks.<Event>]]` block is emitted for
85
+ * the same event (matching Codex's array-of-tables semantics).
86
+ */
87
+ export declare function getCodexDefaultHookSlots(): readonly CodexHookSlot[];
51
88
  export {};
52
89
  //# sourceMappingURL=codex-hooks-template.d.ts.map