@zhuan-ai/zhuanspec 2.4.8 → 2.6.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.
@@ -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**\u5728\u4EFB\u4F55\u9636\u6BB5\u5F00\u59CB\u524D\uFF0C\u5FC5\u987B\u5148\u68C0\u67E5\u77E5\u8BC6\u5E93\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\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\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 - \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. **\u5F3A\u5236\u8BE2\u95EE\u6D4B\u8BD5\u7528\u4F8B\uFF08TDD \u6A21\u5F0F\u68C0\u67E5\u70B9\uFF0C\u5FC5\u987B\u9996\u5148\u6267\u884C\uFF09**\uFF1A\n - \u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u8BE2\u95EE\uFF1A\"\u8BF7\u63D0\u4F9B\u76F8\u5173\u7684\u6D4B\u8BD5\u7528\u4F8B\uFF08\u53EF\u9009\uFF09\uFF0C\u53EF\u4EE5\u662F\uFF1A\u672C\u5730\u76EE\u5F55\u8DEF\u5F84\u3001\u5728\u7EBF\u94FE\u63A5\uFF08\u5C06\u901A\u8FC7 zzcase-data-fetcher skill \u83B7\u53D6\uFF09\u3001\u6216\u8DF3\u8FC7\u6B64\u6B65\u9AA4\u7EE7\u7EED\u5E38\u89C4\u6D41\u7A0B\"\n - \u7528\u6237\u9009\u62E9\"\u63D0\u4F9B\u6D4B\u8BD5\u7528\u4F8B\"\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 * \u5728 proposal.md \u521B\u5EFA \"Test Case Coverage\" \u90E8\u5206\n * \u5728 tasks.md \u4F7F\u7528 `@test-case:TC-XXX` \u6807\u7B7E\u5173\u8054\u4EFB\u52A1\n * \u521B\u5EFA test-cases.md \u8BB0\u5F55\u6D4B\u8BD5\u7528\u4F8B\u8BE6\u60C5\n - \u7528\u6237\u9009\u62E9\"\u8DF3\u8FC7\"\uFF1A\u7EE7\u7EED\u5E38\u89C4\u6D41\u7A0B\uFF08\u5373\u63D0\u6848\u65E0\u9700\u8003\u8651\u6D4B\u8BD5case\uFF09\n\n \u26A0\uFE0F **CHECKPOINT [TDD-MODE]**:\n - TDD \u6A21\u5F0F\u4E0B\uFF0CApply \u9636\u6BB5\u6BCF\u4E2A\u4EFB\u52A1\u5B8C\u6210\u540E\u9700\u9A8C\u8BC1\u5BF9\u5E94\u6D4B\u8BD5\u7528\u4F8B\u901A\u8FC7\n - Review \u9636\u6BB5\u5305\u542B\u6D4B\u8BD5\u8986\u76D6\u7387\u68C0\u67E5\n - \u6D4B\u8BD5\u7528\u4F8B\u5728 TDD \u6A21\u5F0F\u4E0B\u53D1\u6325\u5173\u952E\u9A8C\u8BC1\u4F5C\u7528\uFF0C\u786E\u4FDD\u4EE3\u7801\u7B26\u5408\u9884\u671F\u884C\u4E3A\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\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 - \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\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 - \u83B7\u53D6\u6D4B\u8BD5 case \u6765\u6E90\uFF1A\n * \u901A\u8FC7 taskId/bicId \u83B7\u53D6\u6D4B\u8BD5 case\uFF08\u4F7F\u7528 MCP \u5DE5\u5177 `zzcase_get_api_report_queryBaseCase`\uFF09\n * \u624B\u52A8\u5F55\u5165\u6D4B\u8BD5 case\n - **\u3010\u5F3A\u5236\u3011\u521B\u5EFA test-cases.md \u6587\u4EF6**\uFF1A\n * \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\uFF08taskId/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\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 BIC \u8DEF\u5F84\u5C42\u7EA7\u683C\u5F0F\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\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. 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 - \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]`\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\u6267\u884C `zhuanspec review <change-id>`\uFF0C\u542F\u52A8\u4E09\u8F68\u5E76\u884C\u5BA1\u67E5\uFF1A\n\n**\u4E09\u8F68\u5E76\u884C\u673A\u5236**\uFF1A\n- \u4F7F\u7528 Agent \u5DE5\u5177\u542F\u52A8 3 \u4E2A subagent \u5E76\u884C\u6267\u884C\n- **Code Review subagent**\uFF1A\u8C03\u7528 `code-review-expert` skill\n- **Unit Test subagent**\uFF1A\u8C03\u7528 `generate-mockito-unit-test-skill` skill\n- **Spec-Code Consistency subagent**\uFF1A\u6267\u884C\u4E00\u81F4\u6027\u68C0\u67E5\n\n**Subagent \u81EA\u95ED\u73AF**\uFF1A\n- \u6BCF\u4E2A subagent \u5185\u90E8\u72EC\u7ACB\u4FEE\u590D\u5FAA\u73AF\uFF08\u6700\u591A3\u8F6E\uFF09\n- \u53D1\u73B0\u95EE\u9898\u65F6\u7ACB\u5373\u4FEE\u590D\uFF0C\u7136\u540E\u91CD\u65B0\u68C0\u67E5\n- \u8F93\u51FA\u72EC\u7ACB\u62A5\u544A\u6587\u4EF6\uFF1A\n - `code-review-result.json`\n - `unit-test-result.json`\n - `spec-consistency-result.json`\n- \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\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\u901A\u8FC7\uFF08\u4E09\u8F68\u5168\u90E8 PASS\uFF09\n - `review-report.md` \u5B58\u5728\u4E14\u663E\u793A passed\n - `code-review-result.json`: critical = 0\n - `unit-test-result.json`: tests passed\n - `spec-consistency-result.json`: passed\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\n5. **\u521B\u5EFA 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\uFF1A\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\"\u51B3\u7B56\"\u3001\"\u6700\u4F73\u5B9E\u8DF5\"\u3001\"\u9690\u5F0F\u7EA6\u5B9A\"\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\u6240\u6709 subagent \u5E76\u884C\u6267\u884C\n3. **\u7B49\u5F85\u672C wave \u6240\u6709 subagent \u5B8C\u6210\u540E**\uFF0C\u624D\u542F\u52A8\u4E0B\u4E00 wave\n4. \u540C\u4E00 wave \u5185\u4EC5\u6709\u4E00\u4E2A task \u65F6\uFF0C\u542F\u52A8\u5355\u4E2A subagent \u6267\u884C\n5. **\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\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\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\n\n| \u6761\u4EF6 | Agent \u7C7B\u578B | \u5B9A\u4E49\u6587\u4EF6 |\n|------|-----------|---------|\n| \u4EFB\u52A1\u65E0 `@test-case` \u6807\u6CE8 | `applyAgent` | `agents/zhuanspec/apply-agent.md` |\n| \u4EFB\u52A1\u6709 `@test-case:TC-XXX` \u6807\u6CE8 | `tddApplyAgent` | `agents/zhuanspec/tdd-apply-agent.md` |\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\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 |\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 |\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\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---\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**\u5728\u4EFB\u4F55\u9636\u6BB5\u5F00\u59CB\u524D\uFF0C\u5FC5\u987B\u5148\u68C0\u67E5\u77E5\u8BC6\u5E93\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\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\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 - \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. **\u5F3A\u5236\u8BE2\u95EE\u6D4B\u8BD5\u7528\u4F8B\uFF08TDD \u6A21\u5F0F\u68C0\u67E5\u70B9\uFF0C\u5FC5\u987B\u9996\u5148\u6267\u884C\uFF09**\uFF1A\n - \u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u8BE2\u95EE\uFF1A\"\u8BF7\u63D0\u4F9B\u76F8\u5173\u7684\u6D4B\u8BD5\u7528\u4F8B\uFF08\u53EF\u9009\uFF09\uFF0C\u53EF\u4EE5\u662F\uFF1A\u672C\u5730\u76EE\u5F55\u8DEF\u5F84\u3001\u5728\u7EBF\u94FE\u63A5\uFF08\u5C06\u901A\u8FC7 zzcase-data-fetcher skill \u83B7\u53D6\uFF09\u3001\u6216\u8DF3\u8FC7\u6B64\u6B65\u9AA4\u7EE7\u7EED\u5E38\u89C4\u6D41\u7A0B\"\n - \u7528\u6237\u9009\u62E9\"\u63D0\u4F9B\u6D4B\u8BD5\u7528\u4F8B\"\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 * \u5728 proposal.md \u521B\u5EFA \"Test Case Coverage\" \u90E8\u5206\n * \u5728 tasks.md \u4F7F\u7528 `@test-case:TC-XXX` \u6807\u7B7E\u5173\u8054\u4EFB\u52A1\n * \u521B\u5EFA test-cases.md \u8BB0\u5F55\u6D4B\u8BD5\u7528\u4F8B\u8BE6\u60C5\n - \u7528\u6237\u9009\u62E9\"\u8DF3\u8FC7\"\uFF1A\u7EE7\u7EED\u5E38\u89C4\u6D41\u7A0B\uFF08\u5373\u63D0\u6848\u65E0\u9700\u8003\u8651\u6D4B\u8BD5case\uFF09\n\n \u26A0\uFE0F **CHECKPOINT [TDD-MODE]**:\n - TDD \u6A21\u5F0F\u4E0B\uFF0CApply \u9636\u6BB5\u6BCF\u4E2A\u4EFB\u52A1\u5B8C\u6210\u540E\u9700\u9A8C\u8BC1\u5BF9\u5E94\u6D4B\u8BD5\u7528\u4F8B\u901A\u8FC7\n - Review \u9636\u6BB5\u5305\u542B\u6D4B\u8BD5\u8986\u76D6\u7387\u68C0\u67E5\n - \u6D4B\u8BD5\u7528\u4F8B\u5728 TDD \u6A21\u5F0F\u4E0B\u53D1\u6325\u5173\u952E\u9A8C\u8BC1\u4F5C\u7528\uFF0C\u786E\u4FDD\u4EE3\u7801\u7B26\u5408\u9884\u671F\u884C\u4E3A\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\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 - \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\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**\uFF1A\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 * \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\uFF08taskId/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\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 BIC \u8DEF\u5F84\u5C42\u7EA7\u683C\u5F0F\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\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. 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 - \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\uFF0C\u9009\u62E9\u662F\u5219\u6267\u884C `zhuanspec review <change-id>` \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\u6267\u884C `zhuanspec review <change-id>`\uFF0C\u542F\u52A8\u4E09\u8F68\u5E76\u884C\u5BA1\u67E5\uFF1A\n\n**\u4E09\u8F68\u5E76\u884C\u673A\u5236**\uFF1A\n- \u4F7F\u7528 Agent \u5DE5\u5177\u542F\u52A8 3 \u4E2A subagent \u5E76\u884C\u6267\u884C\n- **Code Review subagent**\uFF1A\u8C03\u7528 `code-review-expert` skill\n- **Unit Test subagent**\uFF1A\u8C03\u7528 `generate-mockito-unit-test-skill` skill\n- **Spec-Code Consistency subagent**\uFF1A\u6267\u884C\u4E00\u81F4\u6027\u68C0\u67E5\n\n**Subagent \u81EA\u95ED\u73AF**\uFF1A\n- \u6BCF\u4E2A subagent \u5185\u90E8\u72EC\u7ACB\u4FEE\u590D\u5FAA\u73AF\uFF08\u6700\u591A3\u8F6E\uFF09\n- \u53D1\u73B0\u95EE\u9898\u65F6\u7ACB\u5373\u4FEE\u590D\uFF0C\u7136\u540E\u91CD\u65B0\u68C0\u67E5\n- \u8F93\u51FA\u72EC\u7ACB\u62A5\u544A\u6587\u4EF6\uFF1A\n - `code-review-result.json`\n - `unit-test-result.json`\n - `spec-consistency-result.json`\n- \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\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\u901A\u8FC7\uFF08\u4E09\u8F68\u5168\u90E8 PASS\uFF09\n - `review-report.md` \u5B58\u5728\u4E14\u663E\u793A passed\n - `code-review-result.json`: critical = 0\n - `unit-test-result.json`: tests passed\n - `spec-consistency-result.json`: passed\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\n5. **\u521B\u5EFA 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\uFF1A\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\"\u51B3\u7B56\"\u3001\"\u6700\u4F73\u5B9E\u8DF5\"\u3001\"\u9690\u5F0F\u7EA6\u5B9A\"\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\u6240\u6709 subagent \u5E76\u884C\u6267\u884C\n3. **\u7B49\u5F85\u672C wave \u6240\u6709 subagent \u5B8C\u6210\u540E**\uFF0C\u624D\u542F\u52A8\u4E0B\u4E00 wave\n4. \u540C\u4E00 wave \u5185\u4EC5\u6709\u4E00\u4E2A task \u65F6\uFF0C\u542F\u52A8\u5355\u4E2A subagent \u6267\u884C\n5. **\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\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\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\n\n| \u6761\u4EF6 | Agent \u7C7B\u578B | \u5B9A\u4E49\u6587\u4EF6 |\n|------|-----------|---------|\n| \u4EFB\u52A1\u65E0 `@test-case` \u6807\u6CE8 | `applyAgent` | `agents/zhuanspec/apply-agent.md` |\n| \u4EFB\u52A1\u6709 `@test-case:TC-XXX` \u6807\u6CE8 | `tddApplyAgent` | `agents/zhuanspec/tdd-apply-agent.md` |\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\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 |\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 |\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\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---\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
@@ -214,9 +214,11 @@ Wave: W/N | Phase: Apply
214
214
  - **无 case 模式**:普通 spec-driven 工作流,用户未提供测试 case 相关信息
215
215
 
216
216
  **【有 case 模式】**(必须执行以下步骤):
217
- - 获取测试 case 来源:
218
- * 通过 taskId/bicId 获取测试 case(使用 MCP 工具 \`zzcase_get_api_report_queryBaseCase\`)
219
- * 手动录入测试 case
217
+ - **【强制】获取测试 case 的方式**:
218
+ * 如果用户提供的是**链接**(如 zzcase 平台 URL):使用 \`@skill:zzcase-data-fetcher\` skill 直接读取
219
+ * 如果用户提供 **taskId/bicId**:使用 \`@skill:zzcase-data-fetcher\` skill 通过参数获取
220
+ * **禁止**使用 MCP 工具 \`zzcase_get_api_report_queryBaseCase\` 获取测试 case
221
+ * 或手动录入测试 case
220
222
  - **【强制】创建 test-cases.md 文件**:
221
223
  * 使用 \`getTestCasesTemplate\` 模板(从 \`src/core/templates/index.ts\` 导出)
222
224
  * 文件路径:\`changes/<change-id>/test-cases.md\`
@@ -306,6 +308,7 @@ Wave: W/N | Phase: Apply
306
308
  - **阶段职责要求**:Apply 阶段不生成单测文件;单测统一在 Review 阶段生成与验证。
307
309
  5. **确认完成** - 在更新状态之前确保 \`tasks.md\` 中的每个项目都已完成
308
310
  6. **更新清单** - 所有工作完成后,将每个任务设置为 \`- [x]\`
311
+ 7. **触发审查门禁** - 所有任务完成后选项式提问用户是否进入 Review 阶段,选择是则执行 \`zhuanspec review <change-id>\` 默认当前提案
309
312
 
310
313
 
311
314
  ### 阶段 3:Review
@@ -143,7 +143,10 @@ const proposalSteps = `**步骤**
143
143
  - 用户选择处理:
144
144
  * 选择"提供测试 case":
145
145
  - 启用 **TDD 模式**:先获取测试 case,再基于 case 设计 spec 和任务
146
- - 通过 taskId/bicId 获取测试 case(使用 MCP 工具 \`zzcase_get_api_report_queryBaseCase\`)
146
+ - **【强制】获取测试 case 的方式**:
147
+ * 如果用户提供的是**链接**(如 zzcase 平台 URL):使用 \`@skill:zzcase-data-fetcher\` skill 直接读取
148
+ * 如果用户提供 **taskId/bicId**:使用 \`@skill:zzcase-data-fetcher\` skill 通过参数获取
149
+ * **禁止**使用 MCP 工具 \`zzcase_get_api_report_queryBaseCase\` 获取测试 case
147
150
  - 或手动录入测试 case
148
151
  - **【强制】创建 test-cases.md 文件**:
149
152
  * 使用 \`getTestCasesTemplate\` 模板(从 \`src/core/templates/index.ts\` 导出)
@@ -243,11 +246,8 @@ const applySteps = `**步骤**
243
246
  - **DONE_WITH_CONCERNS**:记录 concerns 并评估是否需要修复
244
247
  - **BLOCKED**:评估 blocker 类型并决定处理策略(提供上下文/换更强模型/拆分任务)
245
248
  - **NEEDS_CONTEXT**:提供缺失信息并重新启动 subagent
246
- 7. **代码审查**(必选) - 必须执行 \`zhuanspec review <change-id>\`,并确认三项门禁全部通过后才可归档:
247
- - 代码审查通过(Critical=0)
248
- - 单测生成与验证通过
249
- - Spec-Code consistency 通过
250
- 8. 需要额外上下文时,参考 \`zhuanspec list\` 或 \`zhuanspec show <item>\`。`;
249
+ 8. 需要额外上下文时,参考 \`zhuanspec list\` 或 \`zhuanspec show <item>\`。
250
+ 9. **触发审查门禁** - 所有任务完成后选项式提问用户是否进入 Review 阶段,选择是则执行 \`zhuanspec review <change-id>\` 默认当前提案 必须!!`;
251
251
  const applyGuardrails = `${baseGuardrails}\n- **Wave 并行执行**:当 tasks.md 包含 \`@depends\` 时,按 Wave 编号串行执行,Wave 内任务通过 Agent tool 并行启动 subagent。
252
252
  - **Agent 类型选择**:根据任务 \`@test-case\` 标注选择 subagent 类型:
253
253
  * 无 \`@test-case\` 标注 → \`applyAgent\`(普通模式,单测在 Review 阶段)
@@ -119,11 +119,6 @@ Wave assignment logic:
119
119
  - 示例:退货退款 > 创建售后 > 三选一页面 > 组装机 > 退货退款 > 点击后,显示组装机弹窗
120
120
  -->
121
121
 
122
- ## Quality Gates
123
-
124
- - [ ] Apply 全部任务完成后自动执行一次 \`zhuanspec review <change-id>\`(如失败则手动补执行)
125
- - [ ] **测试 case 已设计并覆盖所有关键场景**
126
-
127
122
  ## Workflow Diagram
128
123
 
129
124
  <!-- Auto-generated by zhuanspec validate --strict -->
@@ -171,11 +166,6 @@ Status: COMPLETED
171
166
  Wave assignment logic:
172
167
  - Wave 1: No dependencies
173
168
  - Wave 2: Depends on Wave 1
174
-
175
- ## Quality Gates
176
-
177
- - [ ] Apply 全部任务完成后自动执行一次 \`zhuanspec review <change-id>\`(如失败则手动补执行)
178
- - [ ] 单元测试命令已执行且测试通过(如 \`npm test\` / \`mvn test\`)
179
169
  `;
180
170
  }
181
171
  export default {
@@ -85,6 +85,13 @@ export declare function checkProposalFormatValid(proposalContent: string): Stric
85
85
  * 3. If progress.json exists without phase field -> Apply phase (default)
86
86
  */
87
87
  export declare function detectPhase(changeDir: string): 'propose' | 'apply' | 'review';
88
+ /**
89
+ * Rule: file-conflict-detection
90
+ *
91
+ * Checks that no two tasks in the same wave modify the same file.
92
+ * Uses extractFilePaths to detect file paths from task descriptions.
93
+ */
94
+ export declare function checkFileConflicts(parsedTasks: ParsedTask[]): StrictCheckResult;
88
95
  /**
89
96
  * Rule: test-case-coverage
90
97
  * Validates that tasks.md has test case coverage section.
@@ -493,11 +493,23 @@ function checkSpecCodeConsistent(specsDir, repoRoot, phase) {
493
493
  }
494
494
  // Get git diff files
495
495
  let touchedFiles = [];
496
+ // Resolve the actual git root so file paths from git commands can be resolved correctly
497
+ let gitRoot = repoRoot;
496
498
  try {
497
- const gitOutput = execSync('git diff --name-only', {
499
+ gitRoot = execSync('git rev-parse --show-toplevel', {
498
500
  cwd: repoRoot,
499
501
  encoding: 'utf-8',
500
502
  stdio: ['pipe', 'pipe', 'ignore'],
503
+ }).trim() || repoRoot;
504
+ }
505
+ catch {
506
+ // fallback to repoRoot
507
+ }
508
+ try {
509
+ const gitOutput = execSync('git diff --name-only HEAD', {
510
+ cwd: gitRoot,
511
+ encoding: 'utf-8',
512
+ stdio: ['pipe', 'pipe', 'ignore'],
501
513
  });
502
514
  touchedFiles = gitOutput.trim().split('\n').filter(Boolean);
503
515
  }
@@ -505,12 +517,12 @@ function checkSpecCodeConsistent(specsDir, repoRoot, phase) {
505
517
  // Git command failed, try git status for uncommitted changes
506
518
  try {
507
519
  const statusOutput = execSync('git status --porcelain', {
508
- cwd: repoRoot,
520
+ cwd: gitRoot,
509
521
  encoding: 'utf-8',
510
522
  stdio: ['pipe', 'pipe', 'ignore'],
511
523
  });
512
524
  touchedFiles = statusOutput.trim().split('\n')
513
- .map(line => line.replace(/^\s*[A-Z]+\s+/, '').trim())
525
+ .map(line => line.replace(/^\s*[A-Z?]+\s+/, '').trim())
514
526
  .filter(Boolean);
515
527
  }
516
528
  catch {
@@ -531,7 +543,7 @@ function checkSpecCodeConsistent(specsDir, repoRoot, phase) {
531
543
  return true;
532
544
  }
533
545
  try {
534
- const fullPath = path.join(repoRoot, file);
546
+ const fullPath = path.join(gitRoot, file);
535
547
  if (!existsSync(fullPath))
536
548
  return false;
537
549
  const content = readFileSync(fullPath, 'utf-8').toLowerCase();
@@ -548,6 +560,50 @@ function checkSpecCodeConsistent(specsDir, repoRoot, phase) {
548
560
  result.passed = result.errors.length === 0;
549
561
  return result;
550
562
  }
563
+ /**
564
+ * Rule: file-conflict-detection
565
+ *
566
+ * Checks that no two tasks in the same wave modify the same file.
567
+ * Uses extractFilePaths to detect file paths from task descriptions.
568
+ */
569
+ export function checkFileConflicts(parsedTasks) {
570
+ const result = {
571
+ ruleId: 'file-conflict-detection',
572
+ ruleName: 'File conflict detection',
573
+ passed: true,
574
+ errors: [],
575
+ warnings: [],
576
+ };
577
+ // Group tasks by wave (using task ID prefix, e.g., "1" for "1.1", "1.2")
578
+ const waveMap = new Map();
579
+ for (const task of parsedTasks) {
580
+ const wave = task.id.split('.')[0];
581
+ if (!waveMap.has(wave)) {
582
+ waveMap.set(wave, []);
583
+ }
584
+ waveMap.get(wave).push(task);
585
+ }
586
+ // Check each wave for file conflicts
587
+ for (const [wave, tasks] of waveMap) {
588
+ const fileToTasks = new Map();
589
+ for (const task of tasks) {
590
+ for (const file of (task.files ?? [])) {
591
+ if (!fileToTasks.has(file)) {
592
+ fileToTasks.set(file, []);
593
+ }
594
+ fileToTasks.get(file).push(task.id);
595
+ }
596
+ }
597
+ for (const [file, taskIds] of fileToTasks) {
598
+ if (taskIds.length >= 2) {
599
+ result.passed = false;
600
+ result.errors.push(`File conflict in Wave ${wave}: "${file}" is modified by tasks [${taskIds.join(', ')}]. ` +
601
+ `Add @depends to specify execution order or tasks will be serialized automatically.`);
602
+ }
603
+ }
604
+ }
605
+ return result;
606
+ }
551
607
  /**
552
608
  * Rule: test-case-coverage
553
609
  * Validates that tasks.md has test case coverage section.
@@ -629,6 +685,7 @@ export async function runStrictValidation(tasksContent, parsedTasks, knownSkillN
629
685
  checkTaskOrderingByWave(tasksContent, parsedTasks),
630
686
  checkSubagentDirectives(parsedTasks),
631
687
  checkReviewGateDefined(tasksContent),
688
+ checkFileConflicts(parsedTasks),
632
689
  checkTestCaseCoverage(tasksContent, hasTestCase),
633
690
  ];
634
691
  // Add new rules if parameters are provided
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhuan-ai/zhuanspec",
3
- "version": "2.4.8",
3
+ "version": "2.6.0",
4
4
  "description": "AI-native system for spec-driven development",
5
5
  "keywords": [
6
6
  "zhuanspec",