@zhuan-ai/zhuanspec 2.1.0 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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## \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- \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`\uFF08\u4EC5\u5728\u9700\u8981\u65F6\uFF09\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## \u4E09\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. \u5BA1\u67E5 `zhuanspec/project.md`\u3001`zhuanspec list` \u548C `zhuanspec list --specs` \u4EE5\u4E86\u89E3\u5F53\u524D\u4E0A\u4E0B\u6587\u3002\n1. **\u5F3A\u5236\u6F84\u6E05\u68C0\u67E5\uFF08\u5FC5\u987B\u9996\u5148\u6267\u884C\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\n2. \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\u53EF\u9009\u7684 `design.md` \u548C\u89C4\u8303\u589E\u91CF\u3002\n3. \u4F7F\u7528 `## ADDED|MODIFIED|REMOVED Requirements` \u8D77\u8349\u89C4\u8303\u589E\u91CF\uFF0C\u6BCF\u4E2A\u8981\u6C42\u81F3\u5C11\u5305\u542B\u4E00\u4E2A `#### Scenario:`\u3002\n4. \u8FD0\u884C `zhuanspec validate <id> --strict` \u5E76\u5728\u5206\u4EAB\u63D0\u6848\u4E4B\u524D\u89E3\u51B3\u6240\u6709\u95EE\u9898\u3002\n\n### \u9636\u6BB5 2\uFF1A\u5B9E\u65BD\u53D8\u66F4\n\u5C06\u8FD9\u4E9B\u6B65\u9AA4\u4F5C\u4E3A\u5F85\u529E\u4E8B\u9879\u8DDF\u8E2A\uFF0C\u9010\u4E00\u5B8C\u6210\u3002\n1. **\u9605\u8BFB proposal.md** - \u4E86\u89E3\u8981\u6784\u5EFA\u7684\u5185\u5BB9\n2. **\u9605\u8BFB design.md**\uFF08\u5982\u679C\u5B58\u5728\uFF09 - \u5BA1\u67E5\u6280\u672F\u51B3\u7B56\n3. **\u9605\u8BFB tasks.md** - \u83B7\u53D6\u5B9E\u65BD\u6E05\u5355\n4. **\u6309\u987A\u5E8F\u5B9E\u65BD\u4EFB\u52A1** - \u6309\u987A\u5E8F\u5B8C\u6210\u3002\u5982\u679C\u4EFB\u52A1\u6807\u6CE8\u4E86 `@skill:<skill-name>`\uFF0C\u76F4\u63A5\u8C03\u7528\u5BF9\u5E94 skill\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]`\uFF0C\u4EE5\u4FBF\u5217\u8868\u53CD\u6620\u5B9E\u9645\u60C5\u51B5\n7. **\u4EE3\u7801\u5BA1\u67E5**\uFF08\u53EF\u9009\uFF09 - \u57FA\u4E8E\u751F\u6210\u7684\u4E0A\u4E0B\u6587\u6587\u4EF6\u5BA1\u67E5\u5DF2\u5B9E\u65BD\u7684\u4EE3\u7801\uFF0C\u68C0\u67E5\uFF1A\n - \u4EE3\u7801\u89C4\u8303\u548C\u7EA6\u5B9A\u5408\u89C4\u6027\n - \u903B\u8F91\u6B63\u786E\u6027\n - \u6027\u80FD\u95EE\u9898\u548C\u6F5C\u5728\u74F6\u9888\n - \u5B89\u5168\u6027\u95EE\u9898\n - \u6700\u4F73\u5B9E\u8DF5\u9075\u5FAA\u60C5\u51B5\n - \u5BF9\u4E8E Java \u4EE3\u7801\uFF1A\u7279\u522B\u5173\u6CE8 Java \u7279\u5B9A\u7684\u6A21\u5F0F\u3001\u7EA6\u5B9A\u548C\u6F5C\u5728\u95EE\u9898\n - \u6B64\u6B65\u9AA4\u662F\u53EF\u9009\u7684\uFF0C\u5982\u679C\u8DF3\u8FC7\u4E0D\u4F1A\u963B\u585E\u5DE5\u4F5C\u6D41\n - \u5982\u679C\u53D1\u73B0\u95EE\u9898\uFF0C\u5E94\u5728\u5F52\u6863\u4E4B\u524D\u89E3\u51B3\n8. **\u6279\u51C6\u95E8\u69DB** - \u5728\u63D0\u6848\u7ECF\u8FC7\u5BA1\u67E5\u548C\u6279\u51C6\u4E4B\u524D\u4E0D\u8981\u5F00\u59CB\u5B9E\u65BD\n\n### \u9636\u6BB5 3\uFF1A\u5F52\u6863\u53D8\u66F4\n\u90E8\u7F72\u540E\uFF0C\u521B\u5EFA\u5355\u72EC\u7684 PR\uFF1A\n- \u5C06 `changes/[name]/` \u2192 `changes/archive/YYYY-MM-DD-[name]/`\n- \u5982\u679C\u529F\u80FD\u5DF2\u66F4\u6539\uFF0C\u66F4\u65B0 `specs/`\n- \u5BF9\u4E8E\u4EC5\u5DE5\u5177\u7C7B\u7684\u53D8\u66F4\uFF0C\u4F7F\u7528 `zhuanspec archive <change-id> --skip-specs --yes`\uFF08\u59CB\u7EC8\u663E\u5F0F\u4F20\u9012\u53D8\u66F4 ID\uFF09\n- \u8FD0\u884C `zhuanspec validate --strict` \u4EE5\u786E\u8BA4\u5F52\u6863\u7684\u53D8\u66F4\u901A\u8FC7\u68C0\u67E5\n\n## \u6267\u884C\u4EFB\u4F55\u4EFB\u52A1\u4E4B\u524D\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\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- \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\u5728\u521B\u5EFA\u4EFB\u4F55\u63D0\u6848\u6587\u4EF6\u4E4B\u524D\uFF0C\u5FC5\u987B\u6267\u884C\u5F3A\u5236\u6F84\u6E05\u68C0\u67E5\u3002\u8FD9\u662F\u4E0D\u53EF\u8DF3\u8FC7\u7684\u6B65\u9AA4\u3002\n\n**\u91CD\u8981\u539F\u5219\uFF1A\u5148\u67E5\u9605\u540E\u8BE2\u95EE\uFF0C\u907F\u514D\u8FC7\u5EA6\u8BE2\u95EE**\n\n\u5728\u8BE2\u95EE\u4E4B\u524D\uFF0C\u5FC5\u987B\u5148\u67E5\u9605\u4EE5\u4E0B\u6765\u6E90\uFF0C\u53EA\u6709\u5728\u786E\u5B9E\u65E0\u6CD5\u4ECE\u8FD9\u4E9B\u6765\u6E90\u786E\u5B9A\u65F6\u624D\u8BE2\u95EE\uFF1A\n- \u73B0\u6709\u89C4\u8303\uFF08`zhuanspec/specs/`\uFF09\n- \u9879\u76EE\u7EA6\u5B9A\uFF08`zhuanspec/project.md`\uFF09\n- \u4EE3\u7801\u5E93\u7ED3\u6784\u548C\u73B0\u6709\u6A21\u5F0F\n- \u4E0A\u4E0B\u6587\u6587\u4EF6\u548C\u76F8\u5173\u53D8\u66F4\n\n### \u4F55\u65F6\u9700\u8981\u6F84\u6E05\n\n\u5728\u4EE5\u4E0B\u60C5\u51B5\u4E0B\uFF0C**\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u89C4\u8303\u3001\u9879\u76EE\u7EA6\u5B9A\u3001\u4EE3\u7801\u5E93\u7ED3\u6784\u4E2D\u786E\u5B9A\u65F6**\uFF0C\u5FC5\u987B\u505C\u6B62\u5E76\u63D0\u95EE\uFF08\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\uFF09\uFF1A\n- **\u8303\u56F4\u4E0D\u660E\u786E**\uFF1A\u7528\u6237\u8BF7\u6C42\u7684\u8303\u56F4\u8FB9\u754C\u4E0D\u6E05\u695A\uFF08\u4F8B\u5982\uFF1A\"\u6539\u8FDB\u6027\u80FD\"\u3001\"\u4F18\u5316\u4EE3\u7801\"\uFF09\n- **\u6280\u672F\u9009\u62E9\u4E0D\u660E\u786E**\uFF1A\u6709\u591A\u79CD\u5B9E\u73B0\u65B9\u5F0F\uFF0C\u4F46\u7528\u6237\u672A\u6307\u5B9A\u504F\u597D\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u4EE3\u7801\u6A21\u5F0F\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u4F7F\u7528\u54EA\u79CD\u6570\u636E\u5E93\u3001\u54EA\u79CD\u6846\u67B6\uFF09\n- **\u4F18\u5148\u7EA7\u4E0D\u660E\u786E**\uFF1A\u591A\u4E2A\u9700\u6C42\u4F46\u672A\u8BF4\u660E\u4F18\u5148\u7EA7\u6216\u987A\u5E8F\n- **\u9A8C\u6536\u6807\u51C6\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u5982\u4F55\u5224\u65AD\u5B8C\u6210\u6216\u6210\u529F\n- **\u5B9E\u73B0\u7EC6\u8282\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u5982\u4F55\u5B9E\u73B0\u6216\u5B9E\u73B0\u7EC6\u8282\u4E0D\u660E\u786E\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u5982\u4F55\u83B7\u53D6\u6570\u636E\u3001\u5982\u4F55\u5904\u7406\u9519\u8BEF\u3001\u5982\u4F55\u4F18\u5316\u6027\u80FD\uFF09\n- **\u4EE3\u7801\u6539\u52A8\u4F4D\u7F6E\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u9700\u8981\u4FEE\u6539\u54EA\u4E9B\u6587\u4EF6\u3001\u5728\u54EA\u4E9B\u4F4D\u7F6E\u8FDB\u884C\u4FEE\u6539\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u7ED3\u6784\u5206\u6790\u4E2D\u786E\u5B9A\n- **\u4EE3\u7801\u5206\u5C42\u67B6\u6784\u4E0D\u660E\u786E**\uFF1A\u5982\u679C\u6D89\u53CA\u670D\u52A1\u5206\u5C42\uFF08\u5982 4 \u5C42\u67B6\u6784\u30013 \u5C42\u67B6\u6784\u7B49\uFF09\uFF0C\u4E0D\u6E05\u695A\u5404\u5C42\u7684\u804C\u8D23\u548C\u6539\u52A8\u4F4D\u7F6E\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u4EE3\u7801\u7ED3\u6784\u6216\u89C4\u8303\u4E2D\u786E\u5B9A\n- **\u6570\u636E\u83B7\u53D6\u6765\u6E90\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u4ECE\u54EA\u91CC\u83B7\u53D6\u6570\u636E\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u4EE3\u7801\u6216\u89C4\u8303\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u4ECE\u6570\u636E\u5E93\u3001API\u3001\u6587\u4EF6\u3001\u5916\u90E8\u670D\u52A1\u3001\u5386\u53F2\u903B\u8F91\u590D\u7528\uFF09\n- **\u670D\u52A1\u5206\u5C42\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u670D\u52A1\u5206\u5C42\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u4EE3\u7801\u7ED3\u6784\u6216\u89C4\u8303\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u524D\u7AEF\u3001\u540E\u7AEF\u3001\u6570\u636E\u5E93\u3001API\u3001\u670D\u52A1\u30014\u5C42\u67B6\u6784\u30013\u5C42\u67B6\u6784\u30012\u5C42\u67B6\u6784\u3001\u9886\u57DF\u6A21\u578B\uFF09\n- **\u4F9D\u8D56\u5173\u7CFB\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u4F9D\u8D56\u5173\u7CFB\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u4F9D\u8D56\u54EA\u4E9B\u670D\u52A1\u3001\u4F9D\u8D56\u54EA\u4E9B\u5E93\u3001\u4F9D\u8D56\u54EA\u4E9B\u7EC4\u4EF6\uFF09\n- **\u4E0A\u4E0B\u6587\u4FE1\u606F\u7F3A\u5931**\uFF1A\u7F3A\u5C11\u5FC5\u8981\u7684\u80CC\u666F\u4FE1\u606F\u6765\u7406\u89E3\u9700\u6C42\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u89C4\u8303\u6216\u4EE3\u7801\u4E2D\u83B7\u53D6\n- **\u6B67\u4E49\u6027\u8868\u8FF0**\uFF1A\u7528\u6237\u8BF7\u6C42\u53EF\u4EE5\u7528\u591A\u79CD\u65B9\u5F0F\u7406\u89E3\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u786E\u5B9A\n- **\u5176\u4ED6\u4E0D\u660E\u786E**\uFF1A\u5176\u4ED6\u4E0D\u660E\u786E\u7684\u60C5\u51B5\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\n\n### \u4F55\u65F6\u4E0D\u9700\u8981\u6F84\u6E05\n\n\u5728\u4EE5\u4E0B\u60C5\u51B5\u4E0B\uFF0C**\u4E0D\u5E94\u8BE2\u95EE**\uFF0C\u5E94\u76F4\u63A5\u4F7F\u7528\u4ECE\u73B0\u6709\u6765\u6E90\u83B7\u53D6\u7684\u4FE1\u606F\uFF1A\n- **\u4FE1\u606F\u5DF2\u660E\u786E**\uFF1A\u7528\u6237\u8BF7\u6C42\u4E2D\u5DF2\u7ECF\u660E\u786E\u8BF4\u660E\u4E86\u76F8\u5173\u4FE1\u606F\n- **\u53EF\u4ECE\u89C4\u8303\u83B7\u53D6**\uFF1A\u4FE1\u606F\u53EF\u4EE5\u4ECE\u73B0\u6709\u89C4\u8303\uFF08`zhuanspec/specs/`\uFF09\u4E2D\u83B7\u53D6\n- **\u53EF\u4ECE\u9879\u76EE\u7EA6\u5B9A\u83B7\u53D6**\uFF1A\u4FE1\u606F\u53EF\u4EE5\u4ECE\u9879\u76EE\u7EA6\u5B9A\uFF08`zhuanspec/project.md`\uFF09\u4E2D\u83B7\u53D6\n- **\u53EF\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u83B7\u53D6**\uFF1A\u4FE1\u606F\u53EF\u4EE5\u901A\u8FC7\u5206\u6790\u4EE3\u7801\u5E93\u7ED3\u6784\u3001\u73B0\u6709\u6A21\u5F0F\u3001\u76F8\u5173\u6587\u4EF6\u83B7\u53D6\n- **\u53EF\u4ECE\u4E0A\u4E0B\u6587\u83B7\u53D6**\uFF1A\u4FE1\u606F\u53EF\u4EE5\u4ECE\u4E0A\u4E0B\u6587\u6587\u4EF6\u3001\u76F8\u5173\u53D8\u66F4\u3001\u5386\u53F2\u8BB0\u5F55\u4E2D\u83B7\u53D6\n- **\u7B26\u5408\u5E38\u89C1\u6A21\u5F0F**\uFF1A\u5B9E\u73B0\u65B9\u5F0F\u7B26\u5408\u9879\u76EE\u4E2D\u7684\u5E38\u89C1\u6A21\u5F0F\u6216\u6700\u4F73\u5B9E\u8DF5\uFF0C\u65E0\u9700\u7279\u522B\u8BE2\u95EE\n\n**\u539F\u5219**\uFF1A\u5982\u679C\u53EF\u4EE5\u901A\u8FC7\u67E5\u9605\u73B0\u6709\u6765\u6E90\u786E\u5B9A\u4FE1\u606F\uFF0C\u5C31\u4E0D\u8981\u8BE2\u95EE\u7528\u6237\uFF0C\u4EE5\u63D0\u9AD8\u6548\u7387\u3002\n\n### \u6F84\u6E05\u95EE\u9898\u683C\u5F0F\n\n**\u5FC5\u987B\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\uFF0C\u4E25\u7981\u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u6587\u5B57\u56DE\u7B54\u3002**\n\n\u4F7F\u7528\u7F16\u8F91\u5668\u63D0\u4F9B\u7684\u7ED3\u6784\u5316\u95EE\u7B54\u5DE5\u5177\uFF08\u5982 Cursor \u7684 `AskQuestion` \u5DE5\u5177\u3001Claude Code \u7684\u4EA4\u4E92\u5F0F\u9009\u62E9\u7B49\uFF09\u5411\u7528\u6237\u63D0\u95EE\uFF0C\u5C06\u6BCF\u4E2A\u6F84\u6E05\u95EE\u9898\u8F6C\u5316\u4E3A\u5E26\u9884\u8BBE\u9009\u9879\u7684\u9009\u62E9\u9898\uFF1A\n\n**\u683C\u5F0F\u8981\u6C42\uFF1A**\n- \u6BCF\u4E2A\u95EE\u9898\u63D0\u4F9B 2-5 \u4E2A\u9884\u8BBE\u9009\u9879\n- \u6BCF\u4E2A\u95EE\u9898\u672B\u5C3E\u5305\u542B\u4E00\u4E2A\"\u5176\u4ED6\"\u9009\u9879\uFF0C\u4EE5\u8986\u76D6\u672A\u5217\u51FA\u7684\u60C5\u51B5\n- \u5141\u8BB8\u7528\u6237\u591A\u9009\uFF08\u5F53\u95EE\u9898\u53EF\u80FD\u6709\u591A\u4E2A\u7B54\u6848\u65F6\u8BBE\u7F6E `allow_multiple: true`\uFF09\n- \u9009\u9879\u6587\u672C\u8981\u7B80\u6D01\u660E\u4E86\uFF0C\u5FC5\u8981\u65F6\u9644\u5E26\u7B80\u77ED\u8BF4\u660E\n- \u5982\u679C\u6709\u591A\u4E2A\u72EC\u7ACB\u7684\u6F84\u6E05\u95EE\u9898\uFF0C\u5408\u5E76\u5230\u540C\u4E00\u6B21\u95EE\u7B54\u4EA4\u4E92\u4E2D\uFF08\u4E00\u6B21\u6027\u5C55\u793A\u591A\u4E2A\u95EE\u9898\uFF09\n\n**\u6807\u51C6\u683C\u5F0F\u6A21\u677F\uFF1A**\n\n```\n\u4F7F\u7528 AskQuestion \u5DE5\u5177\u63D0\u95EE\uFF0C\u7ED3\u6784\u5982\u4E0B\uFF1A\n\n\u95EE\u9898 1: \"\u5173\u4E8E [\u4E0D\u786E\u5B9A\u7684\u65B9\u9762]\uFF1A[\u5177\u4F53\u95EE\u9898]\"\n\u9009\u9879\uFF1A\n A) [\u9009\u98791 - \u7B80\u77ED\u8BF4\u660E]\n B) [\u9009\u98792 - \u7B80\u77ED\u8BF4\u660E]\n C) [\u9009\u98793 - \u7B80\u77ED\u8BF4\u660E]\n D) \u5176\u4ED6\uFF08\u8BF7\u5728\u540E\u7EED\u8865\u5145\u8BF4\u660E\uFF09\n\n\u95EE\u9898 2: \"\u5173\u4E8E [\u53E6\u4E00\u4E2A\u65B9\u9762]\uFF1A[\u5177\u4F53\u95EE\u9898]\"\n\u9009\u9879\uFF1A\n A) [\u9009\u98791]\n B) [\u9009\u98792]\n C) \u5176\u4ED6\n```\n\n**\u5DE5\u5177\u8C03\u7528\u793A\u4F8B\uFF08Cursor AskQuestion\uFF09\uFF1A**\n```json\n{\n \"questions\": [\n {\n \"id\": \"scope\",\n \"prompt\": \"\u5173\u4E8E\u6539\u8FDB\u8303\u56F4\uFF1A\u60A8\u5E0C\u671B\u6539\u8FDB\u54EA\u4E9B\u65B9\u9762\uFF1F\",\n \"options\": [\n {\"id\": \"security\", \"label\": \"\u5B89\u5168\u6027\uFF08\u5982\u53CC\u56E0\u7D20\u8BA4\u8BC1\uFF09\"},\n {\"id\": \"ux\", \"label\": \"\u7528\u6237\u4F53\u9A8C\uFF08\u5982\u7B80\u5316\u6D41\u7A0B\uFF09\"},\n {\"id\": \"performance\", \"label\": \"\u6027\u80FD\uFF08\u5982\u54CD\u5E94\u65F6\u95F4\u4F18\u5316\uFF09\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ],\n \"allow_multiple\": true\n },\n {\n \"id\": \"priority\",\n \"prompt\": \"\u5982\u679C\u6709\u591A\u4E2A\u6539\u8FDB\u70B9\uFF0C\u4F18\u5148\u7EA7\u5982\u4F55\uFF1F\",\n \"options\": [\n {\"id\": \"security_first\", \"label\": \"\u5B89\u5168\u6027\u4F18\u5148\"},\n {\"id\": \"ux_first\", \"label\": \"\u7528\u6237\u4F53\u9A8C\u4F18\u5148\"},\n {\"id\": \"all_equal\", \"label\": \"\u540C\u7B49\u91CD\u8981\uFF0C\u4E00\u8D77\u505A\"}\n ]\n }\n ]\n}\n```\n\n**\u539F\u5219\uFF1A**\n- \u6C38\u8FDC\u4E0D\u8981\u8BA9\u7528\u6237\u4ECE\u96F6\u5F00\u59CB\u8F93\u5165\u7B54\u6848\uFF0C\u603B\u662F\u63D0\u4F9B\u53EF\u9009\u7684\u9009\u9879\n- \u9009\u9879\u5E94\u8986\u76D6\u6700\u5E38\u89C1\u7684\u7B54\u6848\u573A\u666F\n- \"\u5176\u4ED6\"\u9009\u9879\u4F5C\u4E3A\u515C\u5E95\uFF0C\u786E\u4FDD\u4E0D\u9057\u6F0F\u7279\u6B8A\u60C5\u51B5\n- \u7528\u6237\u9009\u62E9\"\u5176\u4ED6\"\u540E\uFF0C\u518D\u9488\u5BF9\u6027\u5730\u8FFD\u95EE\u7EC6\u8282\n\n### \u7981\u6B62\u884C\u4E3A\n\n\u5728\u9047\u5230\u6A21\u7CCA\u9700\u6C42\u65F6\uFF0C**\u4E25\u7981**\u4EE5\u4E0B\u884C\u4E3A\uFF1A\n- \u274C \u81EA\u884C\u63A8\u6D4B\u7528\u6237\u610F\u56FE\n- \u274C \u57FA\u4E8E\"\u6700\u4F73\u731C\u6D4B\"\u521B\u5EFA\u63D0\u6848\n- \u274C \u5047\u8BBE\u7528\u6237\u60F3\u8981\u4EC0\u4E48\n- \u274C \u8DF3\u8FC7\u6F84\u6E05\u76F4\u63A5\u521B\u5EFA\u6587\u4EF6\n- \u274C \u4F7F\u7528\u6A21\u7CCA\u7684\u8868\u8FF0\u6765\u63A9\u76D6\u4E0D\u786E\u5B9A\u6027\n- \u274C \u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57\u6765\u56DE\u7B54\u6F84\u6E05\u95EE\u9898\uFF08\u5FC5\u987B\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\uFF09\n\n### \u6F84\u6E05\u6D41\u7A0B\n\n1. **\u67E5\u9605\u73B0\u6709\u6765\u6E90**\uFF1A\u9996\u5148\u67E5\u9605\u73B0\u6709\u89C4\u8303\u3001\u9879\u76EE\u7EA6\u5B9A\u3001\u4EE3\u7801\u5E93\u7ED3\u6784\u3001\u4E0A\u4E0B\u6587\u6587\u4EF6\u7B49\uFF0C\u5C1D\u8BD5\u4ECE\u8FD9\u4E9B\u6765\u6E90\u83B7\u53D6\u6240\u9700\u4FE1\u606F\n2. **\u8BC6\u522B\u6A21\u7CCA\u70B9**\uFF1A\u4ED4\u7EC6\u5206\u6790\u7528\u6237\u8BF7\u6C42\uFF0C\u5217\u51FA\u6240\u6709\u4E0D\u786E\u5B9A\u7684\u65B9\u9762\uFF0C**\u4F46\u6392\u9664\u90A3\u4E9B\u53EF\u4EE5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\u7684\u65B9\u9762**\n3. **\u5224\u65AD\u662F\u5426\u9700\u8981\u8BE2\u95EE**\uFF1A\u5BF9\u4E8E\u6BCF\u4E2A\u4E0D\u786E\u5B9A\u7684\u65B9\u9762\uFF0C\u5224\u65AD\u662F\u5426\u53EF\u4EE5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\uFF1A\n - \u5982\u679C\u53EF\u4EE5\u786E\u5B9A\uFF0C\u5219\u4F7F\u7528\u4ECE\u73B0\u6709\u6765\u6E90\u83B7\u53D6\u7684\u4FE1\u606F\uFF0C\u4E0D\u8BE2\u95EE\n - \u5982\u679C\u65E0\u6CD5\u786E\u5B9A\uFF0C\u5219\u6807\u8BB0\u4E3A\u9700\u8981\u8BE2\u95EE\n4. **\u6784\u9020\u9009\u9879\u5F0F\u95EE\u9898**\uFF1A\u5C06\u6240\u6709\u9700\u8981\u8BE2\u95EE\u7684\u6A21\u7CCA\u70B9\u8F6C\u5316\u4E3A\u5E26\u9884\u8BBE\u9009\u9879\u7684\u9009\u62E9\u9898\uFF0C\u5C3D\u91CF\u5408\u5E76\u5230\u4E00\u6B21\u4EA4\u4E92\u4E2D\n5. **\u4F7F\u7528\u5DE5\u5177\u63D0\u95EE**\uFF1A\u8C03\u7528\u7F16\u8F91\u5668\u7684\u7ED3\u6784\u5316\u95EE\u7B54\u5DE5\u5177\uFF08\u5982 `AskQuestion`\uFF09\u4E00\u6B21\u6027\u5C55\u793A\u6240\u6709\u95EE\u9898\u548C\u9009\u9879\uFF0C\u7B49\u5F85\u7528\u6237\u9009\u62E9\n6. **\u7B49\u5F85\u7528\u6237\u9009\u62E9**\uFF1A\u5FC5\u987B\u7B49\u5F85\u7528\u6237\u9009\u62E9\u7B54\u6848\uFF0C\u4E0D\u80FD\u7EE7\u7EED\n7. **\u5904\u7406\"\u5176\u4ED6\"\u9009\u9879**\uFF1A\u5982\u679C\u7528\u6237\u9009\u62E9\u4E86\"\u5176\u4ED6\"\uFF0C\u518D\u9488\u5BF9\u8BE5\u95EE\u9898\u8FFD\u95EE\u5177\u4F53\u7EC6\u8282\uFF08\u4ECD\u4F18\u5148\u4F7F\u7528\u9009\u9879\u5F0F\uFF0C\u5982\u786E\u5B9E\u65E0\u6CD5\u9884\u8BBE\u5219\u5141\u8BB8\u7B80\u77ED\u6587\u5B57\u8F93\u5165\uFF09\n8. **\u786E\u8BA4\u7406\u89E3**\uFF1A\u5728\u5F00\u59CB\u521B\u5EFA\u6587\u4EF6\u524D\uFF0C\u7B80\u8981\u603B\u7ED3\u7406\u89E3\u4EE5\u786E\u4FDD\u51C6\u786E\n9. **\u5F00\u59CB\u521B\u5EFA**\uFF1A\u53EA\u6709\u5728\u6240\u6709\u5FC5\u8981\u7684\u6A21\u7CCA\u70B9\u90FD\u660E\u786E\u540E\uFF0C\u624D\u80FD\u5F00\u59CB\u521B\u5EFA\u63D0\u6848\u6587\u4EF6\n\n### \u793A\u4F8B\n\n**\u7528\u6237\u8BF7\u6C42**\uFF1A\"\u6539\u8FDB\u767B\u5F55\u529F\u80FD\"\n\n**\u5206\u6790\u8FC7\u7A0B**\uFF1A\n1. \u9996\u5148\u67E5\u9605\u73B0\u6709\u89C4\u8303\uFF08`zhuanspec/specs/`\uFF09\u4E2D\u662F\u5426\u6709\u767B\u5F55\u76F8\u5173\u7684\u89C4\u8303\n2. \u67E5\u9605\u9879\u76EE\u7EA6\u5B9A\uFF08`zhuanspec/project.md`\uFF09\u4E86\u89E3\u9879\u76EE\u67B6\u6784\u548C\u7EA6\u5B9A\n3. \u5206\u6790\u4EE3\u7801\u5E93\u7ED3\u6784\uFF0C\u4E86\u89E3\u73B0\u6709\u7684\u767B\u5F55\u5B9E\u73B0\u65B9\u5F0F\n4. \u5982\u679C\u4ECE\u8FD9\u4E9B\u6765\u6E90\u65E0\u6CD5\u786E\u5B9A\u6539\u8FDB\u8303\u56F4\uFF0C\u5219\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u8BE2\u95EE\n\n**\u5FC5\u987B\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u63D0\u95EE**\uFF08\u4EC5\u5728\u65E0\u6CD5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\u65F6\uFF09\uFF1A\n\n```json\n{\n \"questions\": [\n {\n \"id\": \"improvement_scope\",\n \"prompt\": \"\u60A8\u5E0C\u671B\u6539\u8FDB\u767B\u5F55\u529F\u80FD\u7684\u54EA\u4E9B\u65B9\u9762\uFF1F\",\n \"options\": [\n {\"id\": \"security\", \"label\": \"\u5B89\u5168\u6027\uFF08\u5982\u6DFB\u52A0\u53CC\u56E0\u7D20\u8BA4\u8BC1\uFF09\"},\n {\"id\": \"ux\", \"label\": \"\u7528\u6237\u4F53\u9A8C\uFF08\u5982\u7B80\u5316\u767B\u5F55\u6D41\u7A0B\uFF09\"},\n {\"id\": \"performance\", \"label\": \"\u6027\u80FD\uFF08\u5982\u4F18\u5316\u767B\u5F55\u54CD\u5E94\u65F6\u95F4\uFF09\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ],\n \"allow_multiple\": true\n },\n {\n \"id\": \"tech_preference\",\n \"prompt\": \"\u60A8\u6709\u7279\u5B9A\u7684\u6280\u672F\u504F\u597D\u5417\uFF1F\",\n \"options\": [\n {\"id\": \"jwt\", \"label\": \"JWT Token \u8BA4\u8BC1\"},\n {\"id\": \"session\", \"label\": \"Session \u8BA4\u8BC1\"},\n {\"id\": \"oauth\", \"label\": \"OAuth \u7B2C\u4E09\u65B9\u96C6\u6210\"},\n {\"id\": \"no_preference\", \"label\": \"\u65E0\u504F\u597D\uFF0C\u7531\u4F60\u63A8\u8350\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ]\n },\n {\n \"id\": \"priority\",\n \"prompt\": \"\u5982\u679C\u6709\u591A\u4E2A\u6539\u8FDB\u70B9\uFF0C\u4F18\u5148\u7EA7\u5982\u4F55\uFF1F\",\n \"options\": [\n {\"id\": \"security_first\", \"label\": \"\u5B89\u5168\u6027\u4F18\u5148\"},\n {\"id\": \"ux_first\", \"label\": \"\u7528\u6237\u4F53\u9A8C\u4F18\u5148\"},\n {\"id\": \"perf_first\", \"label\": \"\u6027\u80FD\u4F18\u5148\"},\n {\"id\": \"all_equal\", \"label\": \"\u540C\u7B49\u91CD\u8981\uFF0C\u4E00\u8D77\u505A\"}\n ]\n }\n ]\n}\n```\n\n**\u5B9E\u73B0\u7EC6\u8282\u76F8\u5173\u793A\u4F8B**\uFF08\u4EC5\u5728\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u786E\u5B9A\u65F6\u8BE2\u95EE\uFF09\uFF1A\n\n**\u7528\u6237\u8BF7\u6C42**\uFF1A\"\u91CD\u6784\u7528\u6237\u8BA4\u8BC1\u670D\u52A1\"\n\n**\u5982\u679C\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u786E\u5B9A\uFF0C\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u63D0\u95EE**\uFF1A\n\n```json\n{\n \"questions\": [\n {\n \"id\": \"change_scope\",\n \"prompt\": \"\u91CD\u6784\u6D89\u53CA\u54EA\u4E9B\u6539\u52A8\uFF1F\",\n \"options\": [\n {\"id\": \"modify_existing\", \"label\": \"\u4FEE\u6539\u73B0\u6709\u8BA4\u8BC1\u670D\u52A1\u7C7B\"},\n {\"id\": \"new_service\", \"label\": \"\u521B\u5EFA\u65B0\u7684\u670D\u52A1\u5C42\"},\n {\"id\": \"both\", \"label\": \"\u4E24\u8005\u90FD\u6D89\u53CA\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ]\n },\n {\n \"id\": \"layer_scope\",\n \"prompt\": \"\u6539\u52A8\u5E94\u8BE5\u5728\u54EA\u4E9B\u5C42\u8FDB\u884C\uFF1F\",\n \"options\": [\n {\"id\": \"controller\", \"label\": \"Controller \u5C42\"},\n {\"id\": \"service\", \"label\": \"Service \u5C42\"},\n {\"id\": \"repository\", \"label\": \"Repository \u5C42\"},\n {\"id\": \"all\", \"label\": \"\u5168\u90E8\u5C42\"}\n ],\n \"allow_multiple\": true\n },\n {\n \"id\": \"refactor_strategy\",\n \"prompt\": \"\u91CD\u6784\u7B56\u7565\u504F\u597D\uFF1F\",\n \"options\": [\n {\"id\": \"incremental\", \"label\": \"\u6E10\u8FDB\u5F0F\u91CD\u6784\uFF08\u9010\u6B65\u66FF\u6362\uFF09\"},\n {\"id\": \"rewrite\", \"label\": \"\u5B8C\u5168\u91CD\u5199\"},\n {\"id\": \"strangler\", \"label\": \"\u7EDE\u6740\u8005\u6A21\u5F0F\uFF08\u65B0\u65E7\u5E76\u884C\u540E\u5207\u6362\uFF09\"},\n {\"id\": \"no_preference\", \"label\": \"\u65E0\u504F\u597D\uFF0C\u7531\u4F60\u63A8\u8350\"}\n ]\n }\n ]\n}\n```\n\n**\u6CE8\u610F**\uFF1A\u5982\u679C\u53EF\u4EE5\u4ECE\u73B0\u6709\u4EE3\u7801\u7ED3\u6784\u3001\u89C4\u8303\u6216\u9879\u76EE\u7EA6\u5B9A\u4E2D\u786E\u5B9A\u8FD9\u4E9B\u4FE1\u606F\uFF0C\u5219\u4E0D\u5E94\u8BE2\u95EE\uFF0C\u76F4\u63A5\u4F7F\u7528\u4ECE\u73B0\u6709\u6765\u6E90\u83B7\u53D6\u7684\u4FE1\u606F\u3002\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 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\u53EF\u9009\uFF1B\u89C1\u6807\u51C6\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## Why\n[\u5173\u4E8E\u95EE\u9898/\u673A\u4F1A\u7684 1-2 \u53E5\u8BDD]\n\n## What Changes\n- [\u53D8\u66F4\u7684\u8981\u70B9\u5217\u8868]\n- [\u7528 **BREAKING** \u6807\u8BB0\u7834\u574F\u6027\u66F4\u6539]\n\n## Impact\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### Requirement: New Feature\nThe system SHALL provide...\n\n#### Scenario: Success case\n- **WHEN** user performs action\n- **THEN** expected result\n\n## MODIFIED Requirements\n### Requirement: Existing Feature\n[\u5B8C\u6574\u7684\u4FEE\u6539\u540E\u8981\u6C42]\n\n## REMOVED Requirements\n### Requirement: Old 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. Implementation\n- [ ] 1.1 Create database schema @skill:java-db-schema-standards\n- [ ] 1.2 Implement RPC interface @skill:java-scf-rpc-usage-skill\n- [ ] 1.3 Add frontend component @skill:kf-fe-frontend-dev\n- [ ] 1.4 Write tests @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 **CHECKPOINT [SKILL-TAGGING]**:\n1. You MUST run `zhuanspec skills list` first and record discovered skills in the Skill Mapping table\n2. Every task MUST have either @skill:real-skill-name or @skill:none\n3. If @skill:none, you MUST provide a justification (e.g., \"pure config change, no skill applies\")\n4. @skill names MUST match exactly the names returned by `zhuanspec skills list` \u2014 do NOT invent skill names\n5. The Skill Mapping table in tasks.md MUST NOT be empty\n6. validate --strict will verify all @skill names exist in the known skill list\n\n\u26A0\uFE0F **CHECKPOINT [TASK-ORDERING]**:\n1. Tasks in tasks.md MUST be organized under Wave headers (### Wave 1, ### Wave 2, etc.)\n2. Wave assignment must be computed from @depends relationships (Wave 1 = no deps, Wave N = depends on Wave N-1)\n3. No task may appear before a task it depends on\n4. You MUST add a \"## Dependency Analysis\" section at the end with \"Status: COMPLETED\"\n5. validate --strict will verify task ordering matches computed waves\n\n5. **\u5728\u9700\u8981\u65F6\u521B\u5EFA design.md\uFF1A**\n\u5982\u679C\u4EE5\u4E0B\u4EFB\u4F55\u60C5\u51B5\u9002\u7528\uFF0C\u5219\u521B\u5EFA `design.md`\uFF1B\u5426\u5219\u7701\u7565\uFF1A\n- \u6A2A\u5207\u53D8\u66F4\uFF08\u591A\u4E2A\u670D\u52A1/\u6A21\u5757\uFF09\u6216\u65B0\u7684\u67B6\u6784\u6A21\u5F0F\n- \u65B0\u7684\u5916\u90E8\u4F9D\u8D56\u6216\u91CD\u8981\u7684\u6570\u636E\u6A21\u578B\u66F4\u6539\n- \u5B89\u5168\u6027\u3001\u6027\u80FD\u6216\u8FC1\u79FB\u590D\u6742\u6027\n- \u5728\u7F16\u7801\u4E4B\u524D\u4ECE\u6280\u672F\u51B3\u7B56\u4E2D\u53D7\u76CA\u7684\u6A21\u7CCA\u6027\n\n\u6700\u5C0F `design.md` \u9AA8\u67B6\uFF1A\n```markdown\n## Context\n[\u80CC\u666F\u3001\u7EA6\u675F\u3001\u5229\u76CA\u76F8\u5173\u8005]\n\n## Goals / Non-Goals\n- Goals: [...]\n- Non-Goals: [...]\n\n## Decisions\n- Decision: [\u5185\u5BB9\u548C\u539F\u56E0]\n- Alternatives considered: [\u9009\u9879 + \u7406\u7531]\n\n## Risks / Trade-offs\n- [\u98CE\u9669] \u2192 \u7F13\u89E3\u63AA\u65BD\n\n## Migration Plan\n[\u6B65\u9AA4\u3001\u56DE\u6EDA]\n\n## Open Questions\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#### Scenario: User login success\n- **WHEN** valid credentials provided\n- **THEN** return JWT token\n```\n\n**\u9519\u8BEF**\uFF08\u4E0D\u8981\u4F7F\u7528\u9879\u76EE\u7B26\u53F7\u6216\u7C97\u4F53\uFF09\uFF1A\n```markdown\n- **Scenario: User login** \u274C\n**Scenario**: User login \u274C\n### Scenario: User login \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: `### Requirement: Login`\n- TO: `### Requirement: User 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 \"## Why\\n...\\n\\n## What Changes\\n- ...\\n\\n## Impact\\n- ...\\n\" > zhuanspec/changes/$CHANGE/proposal.md\nprintf \"## 1. Implementation\\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### Requirement: \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#### Scenario: \u9700\u8981 OTP\n- **WHEN** \u63D0\u4F9B\u4E86\u6709\u6548\u51ED\u636E\n- **THEN** \u9700\u8981 OTP \u6311\u6218\nEOF\n\n# 4) \u9A8C\u8BC1\nzhuanspec validate $CHANGE --strict\n```\n\n## Multi-Capability Example\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### Requirement: \u53CC\u56E0\u7D20\u8BA4\u8BC1\n...\n```\n\nnotifications/spec.md\n```markdown\n## ADDED Requirements\n### Requirement: OTP \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";
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## \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- \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`\uFF08\u4EC5\u5728\u9700\u8981\u65F6\uFF09\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## \u4E09\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. \u5BA1\u67E5 `zhuanspec/project.md`\u3001`zhuanspec list` \u548C `zhuanspec list --specs` \u4EE5\u4E86\u89E3\u5F53\u524D\u4E0A\u4E0B\u6587\u3002\n1. **\u5F3A\u5236\u6F84\u6E05\u68C0\u67E5\uFF08\u5FC5\u987B\u9996\u5148\u6267\u884C\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 **\u68C0\u67E5\u70B9 [\u5F3A\u5236\u6F84\u6E05]**\uFF1A\n \u5FC5\u987B\u5728 tasks.md \u4E2D\u8BB0\u5F55\u6F84\u6E05\u7ED3\u679C\uFF0C\u6DFB\u52A0 \"## \u6F84\u6E05\u65E5\u5FD7\" \u7AE0\u8282\uFF1A\n - \u5982\u679C\u8FDB\u884C\u4E86\u63D0\u95EE\uFF1A\u8BB0\u5F55\u6BCF\u4E2A\u95EE\u9898\u53CA\u7528\u6237\u7684\u56DE\u7B54\n - \u5982\u679C\u65E0\u9700\u6F84\u6E05\uFF1A\u5199\u660E\"\u72B6\u6001\uFF1A\u5DF2\u5B8C\u6210 - \u65E0\u9700\u6F84\u6E05\"\u5E76\u7B80\u8981\u8BF4\u660E\u7406\u7531\n - \u6B64\u7AE0\u8282\u4E0D\u80FD\u4E3A\u7A7A\u6216\u4EC5\u5305\u542B HTML \u6CE8\u91CA\n - \u672A\u5B8C\u6210\u6B64\u68C0\u67E5\u70B9\u524D\u7981\u6B62\u7EE7\u7EED\u7F16\u5199\u63D0\u6848\n\n2. \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\u53EF\u9009\u7684 `design.md` \u548C\u89C4\u8303\u589E\u91CF\u3002\n3. \u4F7F\u7528 `## ADDED|MODIFIED|REMOVED Requirements` \u8D77\u8349\u89C4\u8303\u589E\u91CF\uFF0C\u6BCF\u4E2A\u8981\u6C42\u81F3\u5C11\u5305\u542B\u4E00\u4E2A `#### Scenario:`\u3002\n4. \u8FD0\u884C `zhuanspec validate <id> --strict` \u5E76\u5728\u5206\u4EAB\u63D0\u6848\u4E4B\u524D\u89E3\u51B3\u6240\u6709\u95EE\u9898\u3002\n\n### \u9636\u6BB5 2\uFF1A\u5B9E\u65BD\u53D8\u66F4\n\n\u5C06\u8FD9\u4E9B\u6B65\u9AA4\u4F5C\u4E3A\u5F85\u529E\u4E8B\u9879\u8DDF\u8E2A\uFF0C\u9010\u4E00\u5B8C\u6210\u3002\n\n1. **\u9605\u8BFB proposal.md** - \u4E86\u89E3\u8981\u6784\u5EFA\u7684\u5185\u5BB9\n2. **\u9605\u8BFB design.md**\uFF08\u5982\u679C\u5B58\u5728\uFF09 - \u5BA1\u67E5\u6280\u672F\u51B3\u7B56\n3. **\u9605\u8BFB tasks.md** - \u83B7\u53D6\u5B9E\u65BD\u6E05\u5355\n4. **\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**\uFF08\u5B58\u5728 `<execution_plan>`\uFF09\uFF1A\n \u2192 \u6309\u3010\u4EFB\u52A1\u6267\u884C\u7F16\u6392\u3011\u89C4\u5219\u6267\u884C\uFF08\u89C1\u4E0B\u65B9\"\u4EFB\u52A1\u6267\u884C\u7F16\u6392\"\u7AE0\u8282\uFF09\n - **\u5982\u679C tasks.md \u65E0\u4F9D\u8D56\u58F0\u660E**\uFF1A\n \u2192 \u6309\u987A\u5E8F\u6267\u884C\uFF08\u89C1\u4E0B\u65B9\u6B65\u9AA4 5-7\uFF09\n5. **\u6309\u987A\u5E8F\u5B9E\u65BD\u4EFB\u52A1**\uFF08\u65E0\u4F9D\u8D56\u58F0\u660E\u65F6\uFF09- \u6309\u987A\u5E8F\u5B8C\u6210\u3002\u5982\u679C\u4EFB\u52A1\u6807\u6CE8\u4E86 `@skill:<skill-name>`\uFF0C\u76F4\u63A5\u8C03\u7528\u5BF9\u5E94 skill\n6. **\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\n7. **\u66F4\u65B0\u6E05\u5355** - \u6240\u6709\u5DE5\u4F5C\u5B8C\u6210\u540E\uFF0C\u5C06\u6BCF\u4E2A\u4EFB\u52A1\u8BBE\u7F6E\u4E3A `- [x]`\uFF0C\u4EE5\u4FBF\u5217\u8868\u53CD\u6620\u5B9E\u9645\u60C5\u51B5\n8. **\u4EE3\u7801\u5BA1\u67E5**\uFF08\u53EF\u9009\uFF09 - \u57FA\u4E8E\u751F\u6210\u7684\u4E0A\u4E0B\u6587\u6587\u4EF6\u5BA1\u67E5\u5DF2\u5B9E\u65BD\u7684\u4EE3\u7801\uFF0C\u68C0\u67E5\uFF1A\n - \u4EE3\u7801\u89C4\u8303\u548C\u7EA6\u5B9A\u5408\u89C4\u6027\n - \u903B\u8F91\u6B63\u786E\u6027\n - \u6027\u80FD\u95EE\u9898\u548C\u6F5C\u5728\u74F6\u9888\n - \u5B89\u5168\u6027\u95EE\u9898\n - \u6700\u4F73\u5B9E\u8DF5\u9075\u5FAA\u60C5\u51B5\n - \u5BF9\u4E8E Java \u4EE3\u7801\uFF1A\u7279\u522B\u5173\u6CE8 Java \u7279\u5B9A\u7684\u6A21\u5F0F\u3001\u7EA6\u5B9A\u548C\u6F5C\u5728\u95EE\u9898\n - \u6B64\u6B65\u9AA4\u662F\u53EF\u9009\u7684\uFF0C\u5982\u679C\u8DF3\u8FC7\u4E0D\u4F1A\u963B\u585E\u5DE5\u4F5C\u6D41\n - \u5982\u679C\u53D1\u73B0\u95EE\u9898\uFF0C\u5E94\u5728\u5F52\u6863\u4E4B\u524D\u89E3\u51B3\n9. **\u6279\u51C6\u95E8\u69DB** - \u5728\u63D0\u6848\u7ECF\u8FC7\u5BA1\u67E5\u548C\u6279\u51C6\u4E4B\u524D\u4E0D\u8981\u5F00\u59CB\u5B9E\u65BD\n\n### \u9636\u6BB5 3\uFF1A\u5F52\u6863\u53D8\u66F4\n\u90E8\u7F72\u540E\uFF0C\u521B\u5EFA\u5355\u72EC\u7684 PR\uFF1A\n- \u5C06 `changes/[name]/` \u2192 `changes/archive/YYYY-MM-DD-[name]/`\n- \u5982\u679C\u529F\u80FD\u5DF2\u66F4\u6539\uFF0C\u66F4\u65B0 `specs/`\n- \u5BF9\u4E8E\u4EC5\u5DE5\u5177\u7C7B\u7684\u53D8\u66F4\uFF0C\u4F7F\u7528 `zhuanspec archive <change-id> --skip-specs --yes`\uFF08\u59CB\u7EC8\u663E\u5F0F\u4F20\u9012\u53D8\u66F4 ID\uFF09\n- \u8FD0\u884C `zhuanspec validate --strict` \u4EE5\u786E\u8BA4\u5F52\u6863\u7684\u53D8\u66F4\u901A\u8FC7\u68C0\u67E5\n\n## \u6267\u884C\u4EFB\u4F55\u4EFB\u52A1\u4E4B\u524D\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- \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\u5728\u521B\u5EFA\u4EFB\u4F55\u63D0\u6848\u6587\u4EF6\u4E4B\u524D\uFF0C\u5FC5\u987B\u6267\u884C\u5F3A\u5236\u6F84\u6E05\u68C0\u67E5\u3002\u8FD9\u662F\u4E0D\u53EF\u8DF3\u8FC7\u7684\u6B65\u9AA4\u3002\n\n**\u91CD\u8981\u539F\u5219\uFF1A\u5148\u67E5\u9605\u540E\u8BE2\u95EE\uFF0C\u907F\u514D\u8FC7\u5EA6\u8BE2\u95EE**\n\n\u5728\u8BE2\u95EE\u4E4B\u524D\uFF0C\u5FC5\u987B\u5148\u67E5\u9605\u4EE5\u4E0B\u6765\u6E90\uFF0C\u53EA\u6709\u5728\u786E\u5B9E\u65E0\u6CD5\u4ECE\u8FD9\u4E9B\u6765\u6E90\u786E\u5B9A\u65F6\u624D\u8BE2\u95EE\uFF1A\n- \u73B0\u6709\u89C4\u8303\uFF08`zhuanspec/specs/`\uFF09\n- \u9879\u76EE\u7EA6\u5B9A\uFF08`zhuanspec/project.md`\uFF09\n- \u4EE3\u7801\u5E93\u7ED3\u6784\u548C\u73B0\u6709\u6A21\u5F0F\n- \u4E0A\u4E0B\u6587\u6587\u4EF6\u548C\u76F8\u5173\u53D8\u66F4\n\n### \u4F55\u65F6\u9700\u8981\u6F84\u6E05\n\n\u5728\u4EE5\u4E0B\u60C5\u51B5\u4E0B\uFF0C**\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u89C4\u8303\u3001\u9879\u76EE\u7EA6\u5B9A\u3001\u4EE3\u7801\u5E93\u7ED3\u6784\u4E2D\u786E\u5B9A\u65F6**\uFF0C\u5FC5\u987B\u505C\u6B62\u5E76\u63D0\u95EE\uFF08\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\uFF09\uFF1A\n- **\u8303\u56F4\u4E0D\u660E\u786E**\uFF1A\u7528\u6237\u8BF7\u6C42\u7684\u8303\u56F4\u8FB9\u754C\u4E0D\u6E05\u695A\uFF08\u4F8B\u5982\uFF1A\"\u6539\u8FDB\u6027\u80FD\"\u3001\"\u4F18\u5316\u4EE3\u7801\"\uFF09\n- **\u6280\u672F\u9009\u62E9\u4E0D\u660E\u786E**\uFF1A\u6709\u591A\u79CD\u5B9E\u73B0\u65B9\u5F0F\uFF0C\u4F46\u7528\u6237\u672A\u6307\u5B9A\u504F\u597D\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u4EE3\u7801\u6A21\u5F0F\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u4F7F\u7528\u54EA\u79CD\u6570\u636E\u5E93\u3001\u54EA\u79CD\u6846\u67B6\uFF09\n- **\u4F18\u5148\u7EA7\u4E0D\u660E\u786E**\uFF1A\u591A\u4E2A\u9700\u6C42\u4F46\u672A\u8BF4\u660E\u4F18\u5148\u7EA7\u6216\u987A\u5E8F\n- **\u9A8C\u6536\u6807\u51C6\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u5982\u4F55\u5224\u65AD\u5B8C\u6210\u6216\u6210\u529F\n- **\u5B9E\u73B0\u7EC6\u8282\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u5982\u4F55\u5B9E\u73B0\u6216\u5B9E\u73B0\u7EC6\u8282\u4E0D\u660E\u786E\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u5982\u4F55\u83B7\u53D6\u6570\u636E\u3001\u5982\u4F55\u5904\u7406\u9519\u8BEF\u3001\u5982\u4F55\u4F18\u5316\u6027\u80FD\uFF09\n- **\u4EE3\u7801\u6539\u52A8\u4F4D\u7F6E\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u9700\u8981\u4FEE\u6539\u54EA\u4E9B\u6587\u4EF6\u3001\u5728\u54EA\u4E9B\u4F4D\u7F6E\u8FDB\u884C\u4FEE\u6539\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u7ED3\u6784\u5206\u6790\u4E2D\u786E\u5B9A\n- **\u4EE3\u7801\u5206\u5C42\u67B6\u6784\u4E0D\u660E\u786E**\uFF1A\u5982\u679C\u6D89\u53CA\u670D\u52A1\u5206\u5C42\uFF08\u5982 4 \u5C42\u67B6\u6784\u30013 \u5C42\u67B6\u6784\u7B49\uFF09\uFF0C\u4E0D\u6E05\u695A\u5404\u5C42\u7684\u804C\u8D23\u548C\u6539\u52A8\u4F4D\u7F6E\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u4EE3\u7801\u7ED3\u6784\u6216\u89C4\u8303\u4E2D\u786E\u5B9A\n- **\u6570\u636E\u83B7\u53D6\u6765\u6E90\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u4ECE\u54EA\u91CC\u83B7\u53D6\u6570\u636E\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u4EE3\u7801\u6216\u89C4\u8303\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u4ECE\u6570\u636E\u5E93\u3001API\u3001\u6587\u4EF6\u3001\u5916\u90E8\u670D\u52A1\u3001\u5386\u53F2\u903B\u8F91\u590D\u7528\uFF09\n- **\u670D\u52A1\u5206\u5C42\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u670D\u52A1\u5206\u5C42\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u4EE3\u7801\u7ED3\u6784\u6216\u89C4\u8303\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u524D\u7AEF\u3001\u540E\u7AEF\u3001\u6570\u636E\u5E93\u3001API\u3001\u670D\u52A1\u30014\u5C42\u67B6\u6784\u30013\u5C42\u67B6\u6784\u30012\u5C42\u67B6\u6784\u3001\u9886\u57DF\u6A21\u578B\uFF09\n- **\u4F9D\u8D56\u5173\u7CFB\u4E0D\u660E\u786E**\uFF1A\u4E0D\u6E05\u695A\u4F9D\u8D56\u5173\u7CFB\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u4E2D\u786E\u5B9A\uFF08\u4F8B\u5982\uFF1A\u4F9D\u8D56\u54EA\u4E9B\u670D\u52A1\u3001\u4F9D\u8D56\u54EA\u4E9B\u5E93\u3001\u4F9D\u8D56\u54EA\u4E9B\u7EC4\u4EF6\uFF09\n- **\u4E0A\u4E0B\u6587\u4FE1\u606F\u7F3A\u5931**\uFF1A\u7F3A\u5C11\u5FC5\u8981\u7684\u80CC\u666F\u4FE1\u606F\u6765\u7406\u89E3\u9700\u6C42\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u89C4\u8303\u6216\u4EE3\u7801\u4E2D\u83B7\u53D6\n- **\u6B67\u4E49\u6027\u8868\u8FF0**\uFF1A\u7528\u6237\u8BF7\u6C42\u53EF\u4EE5\u7528\u591A\u79CD\u65B9\u5F0F\u7406\u89E3\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u786E\u5B9A\n- **\u5176\u4ED6\u4E0D\u660E\u786E**\uFF1A\u5176\u4ED6\u4E0D\u660E\u786E\u7684\u60C5\u51B5\uFF0C\u4E14\u65E0\u6CD5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\n\n### \u4F55\u65F6\u4E0D\u9700\u8981\u6F84\u6E05\n\n\u5728\u4EE5\u4E0B\u60C5\u51B5\u4E0B\uFF0C**\u4E0D\u5E94\u8BE2\u95EE**\uFF0C\u5E94\u76F4\u63A5\u4F7F\u7528\u4ECE\u73B0\u6709\u6765\u6E90\u83B7\u53D6\u7684\u4FE1\u606F\uFF1A\n- **\u4FE1\u606F\u5DF2\u660E\u786E**\uFF1A\u7528\u6237\u8BF7\u6C42\u4E2D\u5DF2\u7ECF\u660E\u786E\u8BF4\u660E\u4E86\u76F8\u5173\u4FE1\u606F\n- **\u53EF\u4ECE\u89C4\u8303\u83B7\u53D6**\uFF1A\u4FE1\u606F\u53EF\u4EE5\u4ECE\u73B0\u6709\u89C4\u8303\uFF08`zhuanspec/specs/`\uFF09\u4E2D\u83B7\u53D6\n- **\u53EF\u4ECE\u9879\u76EE\u7EA6\u5B9A\u83B7\u53D6**\uFF1A\u4FE1\u606F\u53EF\u4EE5\u4ECE\u9879\u76EE\u7EA6\u5B9A\uFF08`zhuanspec/project.md`\uFF09\u4E2D\u83B7\u53D6\n- **\u53EF\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u83B7\u53D6**\uFF1A\u4FE1\u606F\u53EF\u4EE5\u901A\u8FC7\u5206\u6790\u4EE3\u7801\u5E93\u7ED3\u6784\u3001\u73B0\u6709\u6A21\u5F0F\u3001\u76F8\u5173\u6587\u4EF6\u83B7\u53D6\n- **\u53EF\u4ECE\u4E0A\u4E0B\u6587\u83B7\u53D6**\uFF1A\u4FE1\u606F\u53EF\u4EE5\u4ECE\u4E0A\u4E0B\u6587\u6587\u4EF6\u3001\u76F8\u5173\u53D8\u66F4\u3001\u5386\u53F2\u8BB0\u5F55\u4E2D\u83B7\u53D6\n- **\u7B26\u5408\u5E38\u89C1\u6A21\u5F0F**\uFF1A\u5B9E\u73B0\u65B9\u5F0F\u7B26\u5408\u9879\u76EE\u4E2D\u7684\u5E38\u89C1\u6A21\u5F0F\u6216\u6700\u4F73\u5B9E\u8DF5\uFF0C\u65E0\u9700\u7279\u522B\u8BE2\u95EE\n\n**\u539F\u5219**\uFF1A\u5982\u679C\u53EF\u4EE5\u901A\u8FC7\u67E5\u9605\u73B0\u6709\u6765\u6E90\u786E\u5B9A\u4FE1\u606F\uFF0C\u5C31\u4E0D\u8981\u8BE2\u95EE\u7528\u6237\uFF0C\u4EE5\u63D0\u9AD8\u6548\u7387\u3002\n\n### \u6F84\u6E05\u95EE\u9898\u683C\u5F0F\n\n**\u5FC5\u987B\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\uFF0C\u4E25\u7981\u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u6587\u5B57\u56DE\u7B54\u3002**\n\n\u4F7F\u7528\u7F16\u8F91\u5668\u63D0\u4F9B\u7684\u7ED3\u6784\u5316\u95EE\u7B54\u5DE5\u5177\uFF08\u5982 Cursor \u7684 `AskQuestion` \u5DE5\u5177\u3001Claude Code \u7684\u4EA4\u4E92\u5F0F\u9009\u62E9\u7B49\uFF09\u5411\u7528\u6237\u63D0\u95EE\uFF0C\u5C06\u6BCF\u4E2A\u6F84\u6E05\u95EE\u9898\u8F6C\u5316\u4E3A\u5E26\u9884\u8BBE\u9009\u9879\u7684\u9009\u62E9\u9898\uFF1A\n\n**\u683C\u5F0F\u8981\u6C42\uFF1A**\n- \u6BCF\u4E2A\u95EE\u9898\u63D0\u4F9B 2-5 \u4E2A\u9884\u8BBE\u9009\u9879\n- \u6BCF\u4E2A\u95EE\u9898\u672B\u5C3E\u5305\u542B\u4E00\u4E2A\"\u5176\u4ED6\"\u9009\u9879\uFF0C\u4EE5\u8986\u76D6\u672A\u5217\u51FA\u7684\u60C5\u51B5\n- \u5141\u8BB8\u7528\u6237\u591A\u9009\uFF08\u5F53\u95EE\u9898\u53EF\u80FD\u6709\u591A\u4E2A\u7B54\u6848\u65F6\u8BBE\u7F6E `allow_multiple: true`\uFF09\n- \u9009\u9879\u6587\u672C\u8981\u7B80\u6D01\u660E\u4E86\uFF0C\u5FC5\u8981\u65F6\u9644\u5E26\u7B80\u77ED\u8BF4\u660E\n- \u5982\u679C\u6709\u591A\u4E2A\u72EC\u7ACB\u7684\u6F84\u6E05\u95EE\u9898\uFF0C\u5408\u5E76\u5230\u540C\u4E00\u6B21\u95EE\u7B54\u4EA4\u4E92\u4E2D\uFF08\u4E00\u6B21\u6027\u5C55\u793A\u591A\u4E2A\u95EE\u9898\uFF09\n\n**\u6807\u51C6\u683C\u5F0F\u6A21\u677F\uFF1A**\n\n```\n\u4F7F\u7528 AskQuestion \u5DE5\u5177\u63D0\u95EE\uFF0C\u7ED3\u6784\u5982\u4E0B\uFF1A\n\n\u95EE\u9898 1: \"\u5173\u4E8E [\u4E0D\u786E\u5B9A\u7684\u65B9\u9762]\uFF1A[\u5177\u4F53\u95EE\u9898]\"\n\u9009\u9879\uFF1A\n A) [\u9009\u98791 - \u7B80\u77ED\u8BF4\u660E]\n B) [\u9009\u98792 - \u7B80\u77ED\u8BF4\u660E]\n C) [\u9009\u98793 - \u7B80\u77ED\u8BF4\u660E]\n D) \u5176\u4ED6\uFF08\u8BF7\u5728\u540E\u7EED\u8865\u5145\u8BF4\u660E\uFF09\n\n\u95EE\u9898 2: \"\u5173\u4E8E [\u53E6\u4E00\u4E2A\u65B9\u9762]\uFF1A[\u5177\u4F53\u95EE\u9898]\"\n\u9009\u9879\uFF1A\n A) [\u9009\u98791]\n B) [\u9009\u98792]\n C) \u5176\u4ED6\n```\n\n**\u5DE5\u5177\u8C03\u7528\u793A\u4F8B\uFF08Cursor AskQuestion\uFF09\uFF1A**\n```json\n{\n \"questions\": [\n {\n \"id\": \"scope\",\n \"prompt\": \"\u5173\u4E8E\u6539\u8FDB\u8303\u56F4\uFF1A\u60A8\u5E0C\u671B\u6539\u8FDB\u54EA\u4E9B\u65B9\u9762\uFF1F\",\n \"options\": [\n {\"id\": \"security\", \"label\": \"\u5B89\u5168\u6027\uFF08\u5982\u53CC\u56E0\u7D20\u8BA4\u8BC1\uFF09\"},\n {\"id\": \"ux\", \"label\": \"\u7528\u6237\u4F53\u9A8C\uFF08\u5982\u7B80\u5316\u6D41\u7A0B\uFF09\"},\n {\"id\": \"performance\", \"label\": \"\u6027\u80FD\uFF08\u5982\u54CD\u5E94\u65F6\u95F4\u4F18\u5316\uFF09\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ],\n \"allow_multiple\": true\n },\n {\n \"id\": \"priority\",\n \"prompt\": \"\u5982\u679C\u6709\u591A\u4E2A\u6539\u8FDB\u70B9\uFF0C\u4F18\u5148\u7EA7\u5982\u4F55\uFF1F\",\n \"options\": [\n {\"id\": \"security_first\", \"label\": \"\u5B89\u5168\u6027\u4F18\u5148\"},\n {\"id\": \"ux_first\", \"label\": \"\u7528\u6237\u4F53\u9A8C\u4F18\u5148\"},\n {\"id\": \"all_equal\", \"label\": \"\u540C\u7B49\u91CD\u8981\uFF0C\u4E00\u8D77\u505A\"}\n ]\n }\n ]\n}\n```\n\n**\u539F\u5219\uFF1A**\n- \u6C38\u8FDC\u4E0D\u8981\u8BA9\u7528\u6237\u4ECE\u96F6\u5F00\u59CB\u8F93\u5165\u7B54\u6848\uFF0C\u603B\u662F\u63D0\u4F9B\u53EF\u9009\u7684\u9009\u9879\n- \u9009\u9879\u5E94\u8986\u76D6\u6700\u5E38\u89C1\u7684\u7B54\u6848\u573A\u666F\n- \"\u5176\u4ED6\"\u9009\u9879\u4F5C\u4E3A\u515C\u5E95\uFF0C\u786E\u4FDD\u4E0D\u9057\u6F0F\u7279\u6B8A\u60C5\u51B5\n- \u7528\u6237\u9009\u62E9\"\u5176\u4ED6\"\u540E\uFF0C\u518D\u9488\u5BF9\u6027\u5730\u8FFD\u95EE\u7EC6\u8282\n\n### \u7981\u6B62\u884C\u4E3A\n\n\u5728\u9047\u5230\u6A21\u7CCA\u9700\u6C42\u65F6\uFF0C**\u4E25\u7981**\u4EE5\u4E0B\u884C\u4E3A\uFF1A\n- \u274C \u81EA\u884C\u63A8\u6D4B\u7528\u6237\u610F\u56FE\n- \u274C \u57FA\u4E8E\"\u6700\u4F73\u731C\u6D4B\"\u521B\u5EFA\u63D0\u6848\n- \u274C \u5047\u8BBE\u7528\u6237\u60F3\u8981\u4EC0\u4E48\n- \u274C \u8DF3\u8FC7\u6F84\u6E05\u76F4\u63A5\u521B\u5EFA\u6587\u4EF6\n- \u274C \u4F7F\u7528\u6A21\u7CCA\u7684\u8868\u8FF0\u6765\u63A9\u76D6\u4E0D\u786E\u5B9A\u6027\n- \u274C \u8981\u6C42\u7528\u6237\u624B\u52A8\u8F93\u5165\u5927\u6BB5\u6587\u5B57\u6765\u56DE\u7B54\u6F84\u6E05\u95EE\u9898\uFF08\u5FC5\u987B\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\uFF09\n\n### \u6F84\u6E05\u6D41\u7A0B\n\n1. **\u67E5\u9605\u73B0\u6709\u6765\u6E90**\uFF1A\u9996\u5148\u67E5\u9605\u73B0\u6709\u89C4\u8303\u3001\u9879\u76EE\u7EA6\u5B9A\u3001\u4EE3\u7801\u5E93\u7ED3\u6784\u3001\u4E0A\u4E0B\u6587\u6587\u4EF6\u7B49\uFF0C\u5C1D\u8BD5\u4ECE\u8FD9\u4E9B\u6765\u6E90\u83B7\u53D6\u6240\u9700\u4FE1\u606F\n2. **\u8BC6\u522B\u6A21\u7CCA\u70B9**\uFF1A\u4ED4\u7EC6\u5206\u6790\u7528\u6237\u8BF7\u6C42\uFF0C\u5217\u51FA\u6240\u6709\u4E0D\u786E\u5B9A\u7684\u65B9\u9762\uFF0C**\u4F46\u6392\u9664\u90A3\u4E9B\u53EF\u4EE5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\u7684\u65B9\u9762**\n3. **\u5224\u65AD\u662F\u5426\u9700\u8981\u8BE2\u95EE**\uFF1A\u5BF9\u4E8E\u6BCF\u4E2A\u4E0D\u786E\u5B9A\u7684\u65B9\u9762\uFF0C\u5224\u65AD\u662F\u5426\u53EF\u4EE5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\uFF1A\n - \u5982\u679C\u53EF\u4EE5\u786E\u5B9A\uFF0C\u5219\u4F7F\u7528\u4ECE\u73B0\u6709\u6765\u6E90\u83B7\u53D6\u7684\u4FE1\u606F\uFF0C\u4E0D\u8BE2\u95EE\n - \u5982\u679C\u65E0\u6CD5\u786E\u5B9A\uFF0C\u5219\u6807\u8BB0\u4E3A\u9700\u8981\u8BE2\u95EE\n4. **\u6784\u9020\u9009\u9879\u5F0F\u95EE\u9898**\uFF1A\u5C06\u6240\u6709\u9700\u8981\u8BE2\u95EE\u7684\u6A21\u7CCA\u70B9\u8F6C\u5316\u4E3A\u5E26\u9884\u8BBE\u9009\u9879\u7684\u9009\u62E9\u9898\uFF0C\u5C3D\u91CF\u5408\u5E76\u5230\u4E00\u6B21\u4EA4\u4E92\u4E2D\n5. **\u4F7F\u7528\u5DE5\u5177\u63D0\u95EE**\uFF1A\u8C03\u7528\u7F16\u8F91\u5668\u7684\u7ED3\u6784\u5316\u95EE\u7B54\u5DE5\u5177\uFF08\u5982 `AskQuestion`\uFF09\u4E00\u6B21\u6027\u5C55\u793A\u6240\u6709\u95EE\u9898\u548C\u9009\u9879\uFF0C\u7B49\u5F85\u7528\u6237\u9009\u62E9\n6. **\u7B49\u5F85\u7528\u6237\u9009\u62E9**\uFF1A\u5FC5\u987B\u7B49\u5F85\u7528\u6237\u9009\u62E9\u7B54\u6848\uFF0C\u4E0D\u80FD\u7EE7\u7EED\n7. **\u5904\u7406\"\u5176\u4ED6\"\u9009\u9879**\uFF1A\u5982\u679C\u7528\u6237\u9009\u62E9\u4E86\"\u5176\u4ED6\"\uFF0C\u518D\u9488\u5BF9\u8BE5\u95EE\u9898\u8FFD\u95EE\u5177\u4F53\u7EC6\u8282\uFF08\u4ECD\u4F18\u5148\u4F7F\u7528\u9009\u9879\u5F0F\uFF0C\u5982\u786E\u5B9E\u65E0\u6CD5\u9884\u8BBE\u5219\u5141\u8BB8\u7B80\u77ED\u6587\u5B57\u8F93\u5165\uFF09\n8. **\u786E\u8BA4\u7406\u89E3**\uFF1A\u5728\u5F00\u59CB\u521B\u5EFA\u6587\u4EF6\u524D\uFF0C\u7B80\u8981\u603B\u7ED3\u7406\u89E3\u4EE5\u786E\u4FDD\u51C6\u786E\n9. **\u5F00\u59CB\u521B\u5EFA**\uFF1A\u53EA\u6709\u5728\u6240\u6709\u5FC5\u8981\u7684\u6A21\u7CCA\u70B9\u90FD\u660E\u786E\u540E\uFF0C\u624D\u80FD\u5F00\u59CB\u521B\u5EFA\u63D0\u6848\u6587\u4EF6\n\n### \u793A\u4F8B\n\n**\u7528\u6237\u8BF7\u6C42**\uFF1A\"\u6539\u8FDB\u767B\u5F55\u529F\u80FD\"\n\n**\u5206\u6790\u8FC7\u7A0B**\uFF1A\n1. \u9996\u5148\u67E5\u9605\u73B0\u6709\u89C4\u8303\uFF08`zhuanspec/specs/`\uFF09\u4E2D\u662F\u5426\u6709\u767B\u5F55\u76F8\u5173\u7684\u89C4\u8303\n2. \u67E5\u9605\u9879\u76EE\u7EA6\u5B9A\uFF08`zhuanspec/project.md`\uFF09\u4E86\u89E3\u9879\u76EE\u67B6\u6784\u548C\u7EA6\u5B9A\n3. \u5206\u6790\u4EE3\u7801\u5E93\u7ED3\u6784\uFF0C\u4E86\u89E3\u73B0\u6709\u7684\u767B\u5F55\u5B9E\u73B0\u65B9\u5F0F\n4. \u5982\u679C\u4ECE\u8FD9\u4E9B\u6765\u6E90\u65E0\u6CD5\u786E\u5B9A\u6539\u8FDB\u8303\u56F4\uFF0C\u5219\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u8BE2\u95EE\n\n**\u5FC5\u987B\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u63D0\u95EE**\uFF08\u4EC5\u5728\u65E0\u6CD5\u4ECE\u73B0\u6709\u6765\u6E90\u786E\u5B9A\u65F6\uFF09\uFF1A\n\n```json\n{\n \"questions\": [\n {\n \"id\": \"improvement_scope\",\n \"prompt\": \"\u60A8\u5E0C\u671B\u6539\u8FDB\u767B\u5F55\u529F\u80FD\u7684\u54EA\u4E9B\u65B9\u9762\uFF1F\",\n \"options\": [\n {\"id\": \"security\", \"label\": \"\u5B89\u5168\u6027\uFF08\u5982\u6DFB\u52A0\u53CC\u56E0\u7D20\u8BA4\u8BC1\uFF09\"},\n {\"id\": \"ux\", \"label\": \"\u7528\u6237\u4F53\u9A8C\uFF08\u5982\u7B80\u5316\u767B\u5F55\u6D41\u7A0B\uFF09\"},\n {\"id\": \"performance\", \"label\": \"\u6027\u80FD\uFF08\u5982\u4F18\u5316\u767B\u5F55\u54CD\u5E94\u65F6\u95F4\uFF09\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ],\n \"allow_multiple\": true\n },\n {\n \"id\": \"tech_preference\",\n \"prompt\": \"\u60A8\u6709\u7279\u5B9A\u7684\u6280\u672F\u504F\u597D\u5417\uFF1F\",\n \"options\": [\n {\"id\": \"jwt\", \"label\": \"JWT Token \u8BA4\u8BC1\"},\n {\"id\": \"session\", \"label\": \"Session \u8BA4\u8BC1\"},\n {\"id\": \"oauth\", \"label\": \"OAuth \u7B2C\u4E09\u65B9\u96C6\u6210\"},\n {\"id\": \"no_preference\", \"label\": \"\u65E0\u504F\u597D\uFF0C\u7531\u4F60\u63A8\u8350\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ]\n },\n {\n \"id\": \"priority\",\n \"prompt\": \"\u5982\u679C\u6709\u591A\u4E2A\u6539\u8FDB\u70B9\uFF0C\u4F18\u5148\u7EA7\u5982\u4F55\uFF1F\",\n \"options\": [\n {\"id\": \"security_first\", \"label\": \"\u5B89\u5168\u6027\u4F18\u5148\"},\n {\"id\": \"ux_first\", \"label\": \"\u7528\u6237\u4F53\u9A8C\u4F18\u5148\"},\n {\"id\": \"perf_first\", \"label\": \"\u6027\u80FD\u4F18\u5148\"},\n {\"id\": \"all_equal\", \"label\": \"\u540C\u7B49\u91CD\u8981\uFF0C\u4E00\u8D77\u505A\"}\n ]\n }\n ]\n}\n```\n\n**\u5B9E\u73B0\u7EC6\u8282\u76F8\u5173\u793A\u4F8B**\uFF08\u4EC5\u5728\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u786E\u5B9A\u65F6\u8BE2\u95EE\uFF09\uFF1A\n\n**\u7528\u6237\u8BF7\u6C42**\uFF1A\"\u91CD\u6784\u7528\u6237\u8BA4\u8BC1\u670D\u52A1\"\n\n**\u5982\u679C\u65E0\u6CD5\u4ECE\u4EE3\u7801\u5E93\u5206\u6790\u786E\u5B9A\uFF0C\u4F7F\u7528\u9009\u9879\u5F0F\u4EA4\u4E92\u63D0\u95EE**\uFF1A\n\n```json\n{\n \"questions\": [\n {\n \"id\": \"change_scope\",\n \"prompt\": \"\u91CD\u6784\u6D89\u53CA\u54EA\u4E9B\u6539\u52A8\uFF1F\",\n \"options\": [\n {\"id\": \"modify_existing\", \"label\": \"\u4FEE\u6539\u73B0\u6709\u8BA4\u8BC1\u670D\u52A1\u7C7B\"},\n {\"id\": \"new_service\", \"label\": \"\u521B\u5EFA\u65B0\u7684\u670D\u52A1\u5C42\"},\n {\"id\": \"both\", \"label\": \"\u4E24\u8005\u90FD\u6D89\u53CA\"},\n {\"id\": \"other\", \"label\": \"\u5176\u4ED6\"}\n ]\n },\n {\n \"id\": \"layer_scope\",\n \"prompt\": \"\u6539\u52A8\u5E94\u8BE5\u5728\u54EA\u4E9B\u5C42\u8FDB\u884C\uFF1F\",\n \"options\": [\n {\"id\": \"controller\", \"label\": \"Controller \u5C42\"},\n {\"id\": \"service\", \"label\": \"Service \u5C42\"},\n {\"id\": \"repository\", \"label\": \"Repository \u5C42\"},\n {\"id\": \"all\", \"label\": \"\u5168\u90E8\u5C42\"}\n ],\n \"allow_multiple\": true\n },\n {\n \"id\": \"refactor_strategy\",\n \"prompt\": \"\u91CD\u6784\u7B56\u7565\u504F\u597D\uFF1F\",\n \"options\": [\n {\"id\": \"incremental\", \"label\": \"\u6E10\u8FDB\u5F0F\u91CD\u6784\uFF08\u9010\u6B65\u66FF\u6362\uFF09\"},\n {\"id\": \"rewrite\", \"label\": \"\u5B8C\u5168\u91CD\u5199\"},\n {\"id\": \"strangler\", \"label\": \"\u7EDE\u6740\u8005\u6A21\u5F0F\uFF08\u65B0\u65E7\u5E76\u884C\u540E\u5207\u6362\uFF09\"},\n {\"id\": \"no_preference\", \"label\": \"\u65E0\u504F\u597D\uFF0C\u7531\u4F60\u63A8\u8350\"}\n ]\n }\n ]\n}\n```\n\n**\u6CE8\u610F**\uFF1A\u5982\u679C\u53EF\u4EE5\u4ECE\u73B0\u6709\u4EE3\u7801\u7ED3\u6784\u3001\u89C4\u8303\u6216\u9879\u76EE\u7EA6\u5B9A\u4E2D\u786E\u5B9A\u8FD9\u4E9B\u4FE1\u606F\uFF0C\u5219\u4E0D\u5E94\u8BE2\u95EE\uFF0C\u76F4\u63A5\u4F7F\u7528\u4ECE\u73B0\u6709\u6765\u6E90\u83B7\u53D6\u7684\u4FE1\u606F\u3002\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 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\u53EF\u9009\uFF1B\u89C1\u6807\u51C6\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. **\u5728\u9700\u8981\u65F6\u521B\u5EFA design.md\uFF1A**\n\u5982\u679C\u4EE5\u4E0B\u4EFB\u4F55\u60C5\u51B5\u9002\u7528\uFF0C\u5219\u521B\u5EFA `design.md`\uFF1B\u5426\u5219\u7701\u7565\uFF1A\n- \u6A2A\u5207\u53D8\u66F4\uFF08\u591A\u4E2A\u670D\u52A1/\u6A21\u5757\uFF09\u6216\u65B0\u7684\u67B6\u6784\u6A21\u5F0F\n- \u65B0\u7684\u5916\u90E8\u4F9D\u8D56\u6216\u91CD\u8981\u7684\u6570\u636E\u6A21\u578B\u66F4\u6539\n- \u5B89\u5168\u6027\u3001\u6027\u80FD\u6216\u8FC1\u79FB\u590D\u6742\u6027\n- \u5728\u7F16\u7801\u4E4B\u524D\u4ECE\u6280\u672F\u51B3\u7B56\u4E2D\u53D7\u76CA\u7684\u6A21\u7CCA\u6027\n\n\u6700\u5C0F `design.md` \u9AA8\u67B6\uFF1A\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## \u8FC1\u79FB\u8BA1\u5212\n[\u6B65\u9AA4\u3001\u56DE\u6EDA]\n\n## \u5F85\u89E3\u51B3\u95EE\u9898\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\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";
2
2
  //# sourceMappingURL=agents-template.d.ts.map
@@ -44,26 +44,33 @@ export const agentsTemplate = `# ZhuanSpec 使用说明
44
44
  0. 审查 \`zhuanspec/project.md\`、\`zhuanspec list\` 和 \`zhuanspec list --specs\` 以了解当前上下文。
45
45
  1. **强制澄清检查(必须首先执行)**:分析用户请求,识别所有不确定或模糊的方面(范围、技术选择、实现细节、数据获取来源、服务分层、依赖关系、优先级、验收标准等......)。如果发现任何模糊之处,必须停止并使用**选项式交互**(如 \`AskQuestion\` 工具)提问,获得明确答复后才能继续。严禁在不确定的情况下自行推测或创建提案,严禁要求用户手动输入大段文字。
46
46
 
47
- ⚠️ **CHECKPOINT [PRE-CLARIFICATION]**:
48
- You MUST record the pre-clarification result in tasks.md under "## Pre-Clarification Log":
49
- - If questions were asked: Record each question and the user's answer
50
- - If no clarification needed: Write "Status: COMPLETED - No clarification needed" with brief justification
51
- - This section MUST NOT be empty or contain only HTML comments
52
- - NEVER proceed to proposal writing without completing this checkpoint
47
+ ⚠️ **检查点 [强制澄清]**:
48
+ 必须在 tasks.md 中记录澄清结果,添加 "## 澄清日志" 章节:
49
+ - 如果进行了提问:记录每个问题及用户的回答
50
+ - 如果无需澄清:写明"状态:已完成 - 无需澄清"并简要说明理由
51
+ - 此章节不能为空或仅包含 HTML 注释
52
+ - 未完成此检查点前禁止继续编写提案
53
53
 
54
54
  2. 选择一个唯一的动词开头的 \`change-id\`,并在 \`zhuanspec/changes/<id>/\` 下搭建 \`proposal.md\`、\`tasks.md\`、可选的 \`design.md\` 和规范增量。
55
55
  3. 使用 \`## ADDED|MODIFIED|REMOVED Requirements\` 起草规范增量,每个要求至少包含一个 \`#### Scenario:\`。
56
56
  4. 运行 \`zhuanspec validate <id> --strict\` 并在分享提案之前解决所有问题。
57
57
 
58
58
  ### 阶段 2:实施变更
59
+
59
60
  将这些步骤作为待办事项跟踪,逐一完成。
61
+
60
62
  1. **阅读 proposal.md** - 了解要构建的内容
61
63
  2. **阅读 design.md**(如果存在) - 审查技术决策
62
64
  3. **阅读 tasks.md** - 获取实施清单
63
- 4. **按顺序实施任务** - 按顺序完成。如果任务标注了 \`@skill:<skill-name>\`,直接调用对应 skill
64
- 5. **确认完成** - 在更新状态之前确保 \`tasks.md\` 中的每个项目都已完成
65
- 6. **更新清单** - 所有工作完成后,将每个任务设置为 \`- [x]\`,以便列表反映实际情况
66
- 7. **代码审查**(可选) - 基于生成的上下文文件审查已实施的代码,检查:
65
+ 4. **判断执行模式** - 根据 tasks.md 内容选择执行策略:
66
+ - **如果 tasks.md 包含 \`@depends\` 依赖声明**(存在 \`<execution_plan>\`):
67
+ 按【任务执行编排】规则执行(见下方"任务执行编排"章节)
68
+ - **如果 tasks.md 无依赖声明**:
69
+ → 按顺序执行(见下方步骤 5-7)
70
+ 5. **按顺序实施任务**(无依赖声明时)- 按顺序完成。如果任务标注了 \`@skill:<skill-name>\`,直接调用对应 skill
71
+ 6. **确认完成** - 在更新状态之前确保 \`tasks.md\` 中的每个项目都已完成
72
+ 7. **更新清单** - 所有工作完成后,将每个任务设置为 \`- [x]\`,以便列表反映实际情况
73
+ 8. **代码审查**(可选) - 基于生成的上下文文件审查已实施的代码,检查:
67
74
  - 代码规范和约定合规性
68
75
  - 逻辑正确性
69
76
  - 性能问题和潜在瓶颈
@@ -72,7 +79,7 @@ export const agentsTemplate = `# ZhuanSpec 使用说明
72
79
  - 对于 Java 代码:特别关注 Java 特定的模式、约定和潜在问题
73
80
  - 此步骤是可选的,如果跳过不会阻塞工作流
74
81
  - 如果发现问题,应在归档之前解决
75
- 8. **批准门槛** - 在提案经过审查和批准之前不要开始实施
82
+ 9. **批准门槛** - 在提案经过审查和批准之前不要开始实施
76
83
 
77
84
  ### 阶段 3:归档变更
78
85
  部署后,创建单独的 PR:
@@ -86,7 +93,7 @@ export const agentsTemplate = `# ZhuanSpec 使用说明
86
93
  **上下文检查清单:**
87
94
  - [ ] 在 \`specs/[capability]/spec.md\` 中阅读相关规范
88
95
  - [ ] 检查 \`changes/\` 中的待处理变更是否存在冲突
89
- - [ ] 阅读 \`zhuanspec/project.md\` 了解约定
96
+ - [ ] 阅读 \`zhuanspec/project.md\` 了解约定、项目结构和相关功能模块(按需加载)
90
97
  - [ ] 运行 \`zhuanspec list\` 查看活动变更
91
98
  - [ ] 运行 \`zhuanspec list --specs\` 查看现有功能
92
99
 
@@ -408,14 +415,14 @@ zhuanspec/
408
415
  \`\`\`markdown
409
416
  # Change: [变更的简要描述]
410
417
 
411
- ## Why
418
+ ## 变更原因
412
419
  [关于问题/机会的 1-2 句话]
413
420
 
414
- ## What Changes
421
+ ## 变更内容
415
422
  - [变更的要点列表]
416
423
  - [用 **BREAKING** 标记破坏性更改]
417
424
 
418
- ## Impact
425
+ ## 影响范围
419
426
  - Affected specs: [列出功能]
420
427
  - Affected code: [关键文件/系统]
421
428
  \`\`\`
@@ -423,19 +430,19 @@ zhuanspec/
423
430
  3. **创建规范增量:** \`specs/[capability]/spec.md\`
424
431
  \`\`\`markdown
425
432
  ## ADDED Requirements
426
- ### Requirement: New Feature
433
+ ### 需求:New Feature
427
434
  The system SHALL provide...
428
435
 
429
- #### Scenario: Success case
430
- - **WHEN** user performs action
431
- - **THEN** expected result
436
+ #### 场景:Success case
437
+ - **当** user performs action
438
+ - **则** expected result
432
439
 
433
440
  ## MODIFIED Requirements
434
- ### Requirement: Existing Feature
441
+ ### 需求:Existing Feature
435
442
  [完整的修改后要求]
436
443
 
437
444
  ## REMOVED Requirements
438
- ### Requirement: Old Feature
445
+ ### 需求:Old Feature
439
446
  **Reason**: [移除原因]
440
447
  **Migration**: [如何处理]
441
448
  \`\`\`
@@ -446,11 +453,11 @@ The system SHALL provide...
446
453
  先运行 \`zhuanspec skills list --json\` 发现当前环境中可用的 skill 及其 description,然后基于语义匹配在任务中标注真实 skill 名称:
447
454
 
448
455
  \`\`\`markdown
449
- ## 1. Implementation
450
- - [ ] 1.1 Create database schema @skill:java-db-schema-standards
451
- - [ ] 1.2 Implement RPC interface @skill:java-scf-rpc-usage-skill
452
- - [ ] 1.3 Add frontend component @skill:kf-fe-frontend-dev
453
- - [ ] 1.4 Write tests @skill:generate-mockito-unit-test-skill
456
+ ## 1. 实现
457
+ - [ ] 1.1 创建数据库表结构 @skill:java-db-schema-standards
458
+ - [ ] 1.2 实现 RPC 接口 @skill:java-scf-rpc-usage-skill
459
+ - [ ] 1.3 添加前端组件 @skill:kf-fe-frontend-dev
460
+ - [ ] 1.4 编写测试 @skill:generate-mockito-unit-test-skill
454
461
  \`\`\`
455
462
  > **@skill 标签**:创建 tasks.md 前,运行 \`zhuanspec skills list --json\` 发现可用 skill 及其 description。基于 skill description 进行语义匹配:
456
463
  > - 仔细阅读每个 skill 的 description,理解其具体功能和适用场景
@@ -460,20 +467,20 @@ The system SHALL provide...
460
467
  > - 使用真实 skill 名称标注,支持多个 skill(\`@skill:name1,name2\`)
461
468
  > - Apply 阶段 AI 根据标签直接调用对应 skill。无可用 skill 时可省略。
462
469
 
463
- ⚠️ **CHECKPOINT [SKILL-TAGGING]**:
464
- 1. You MUST run \`zhuanspec skills list\` first and record discovered skills in the Skill Mapping table
465
- 2. Every task MUST have either @skill:real-skill-name or @skill:none
466
- 3. If @skill:none, you MUST provide a justification (e.g., "pure config change, no skill applies")
467
- 4. @skill names MUST match exactly the names returned by \`zhuanspec skills list\` do NOT invent skill names
468
- 5. The Skill Mapping table in tasks.md MUST NOT be empty
469
- 6. validate --strict will verify all @skill names exist in the known skill list
470
-
471
- ⚠️ **CHECKPOINT [TASK-ORDERING]**:
472
- 1. Tasks in tasks.md MUST be organized under Wave headers (### Wave 1, ### Wave 2, etc.)
473
- 2. Wave assignment must be computed from @depends relationships (Wave 1 = no deps, Wave N = depends on Wave N-1)
474
- 3. No task may appear before a task it depends on
475
- 4. You MUST add a "## Dependency Analysis" section at the end with "Status: COMPLETED"
476
- 5. validate --strict will verify task ordering matches computed waves
470
+ ⚠️ **检查点 [Skill 标注]**:
471
+ 1. 必须先运行 \`zhuanspec skills list\` 并在 Skill 映射表中记录发现的 skill
472
+ 2. 每个任务必须标注 @skill:真实skill名称 @skill:none
473
+ 3. 如果使用 @skill:none,必须提供理由(例如:"纯配置变更,无需 skill"
474
+ 4. @skill 名称必须与 \`zhuanspec skills list\` 返回的名称完全一致 —— 禁止虚构 skill 名称
475
+ 5. tasks.md 中的 Skill 映射表不能为空
476
+ 6. validate --strict 会验证所有 @skill 名称是否存在于已知 skill 列表中
477
+
478
+ ⚠️ **检查点 [任务排序]**:
479
+ 1. tasks.md 中的任务必须按波次组织(### 波次 1, ### 波次 2 等)
480
+ 2. 波次分配必须根据 @depends 依赖关系计算(波次 1 = 无依赖,波次 N = 依赖波次 N-1
481
+ 3. 任务不能出现在其依赖的任务之前
482
+ 4. 必须在文件末尾添加 "## 依赖分析" 章节并标明"状态:已完成"
483
+ 5. validate --strict 会验证任务排序是否与计算的波次匹配
477
484
 
478
485
  5. **在需要时创建 design.md:**
479
486
  如果以下任何情况适用,则创建 \`design.md\`;否则省略:
@@ -484,24 +491,24 @@ The system SHALL provide...
484
491
 
485
492
  最小 \`design.md\` 骨架:
486
493
  \`\`\`markdown
487
- ## Context
494
+ ## 背景
488
495
  [背景、约束、利益相关者]
489
496
 
490
- ## Goals / Non-Goals
497
+ ## 目标 / 非目标
491
498
  - Goals: [...]
492
499
  - Non-Goals: [...]
493
500
 
494
- ## Decisions
501
+ ## 决策
495
502
  - Decision: [内容和原因]
496
503
  - Alternatives considered: [选项 + 理由]
497
504
 
498
- ## Risks / Trade-offs
505
+ ## 风险 / 权衡
499
506
  - [风险] → 缓解措施
500
507
 
501
- ## Migration Plan
508
+ ## 迁移计划
502
509
  [步骤、回滚]
503
510
 
504
- ## Open Questions
511
+ ## 待解决问题
505
512
  - [...]
506
513
  \`\`\`
507
514
 
@@ -511,16 +518,16 @@ The system SHALL provide...
511
518
 
512
519
  **正确**(使用 #### 标题):
513
520
  \`\`\`markdown
514
- #### Scenario: User login success
515
- - **WHEN** valid credentials provided
516
- - **THEN** return JWT token
521
+ #### 场景:用户登录成功
522
+ - **当** 提供了有效凭据
523
+ - **则** 返回 JWT token
517
524
  \`\`\`
518
525
 
519
526
  **错误**(不要使用项目符号或粗体):
520
527
  \`\`\`markdown
521
- - **Scenario: User login**
522
- **Scenario**: User login
523
- ### Scenario: User login
528
+ - **场景:用户登录**
529
+ **场景**:用户登录
530
+ ### 场景:用户登录
524
531
  \`\`\`
525
532
 
526
533
  每个要求必须至少有一个场景。
@@ -553,8 +560,8 @@ The system SHALL provide...
553
560
  RENAMED 示例:
554
561
  \`\`\`markdown
555
562
  ## RENAMED Requirements
556
- - FROM: \`### Requirement: Login\`
557
- - TO: \`### Requirement: User Authentication\`
563
+ - FROM: \`### 需求:Login\`
564
+ - TO: \`### 需求:User Authentication\`
558
565
  \`\`\`
559
566
 
560
567
  ## 故障排除
@@ -599,25 +606,25 @@ zhuanspec list
599
606
  # 2) 选择变更 ID 并搭建
600
607
  CHANGE=add-two-factor-auth
601
608
  mkdir -p zhuanspec/changes/\$CHANGE/{specs/auth}
602
- printf "## Why\\n...\\n\\n## What Changes\\n- ...\\n\\n## Impact\\n- ...\\n" > zhuanspec/changes/\$CHANGE/proposal.md
603
- printf "## 1. Implementation\\n- [ ] 1.1 ...\\n" > zhuanspec/changes/\$CHANGE/tasks.md
609
+ printf "## 变更原因\\n...\\n\\n## 变更内容\\n- ...\\n\\n## 影响范围\\n- ...\\n" > zhuanspec/changes/\\$CHANGE/proposal.md
610
+ printf "## 1. 实现\n- [ ] 1.1 ...\n" > zhuanspec/changes/\$CHANGE/tasks.md
604
611
 
605
612
  # 3) 添加增量(示例)
606
613
  cat > zhuanspec/changes/\$CHANGE/specs/auth/spec.md << 'EOF'
607
614
  ## ADDED Requirements
608
- ### Requirement: 双因素认证
615
+ ### 需求:双因素认证
609
616
  用户 MUST 在登录时提供第二个认证因素。
610
617
 
611
- #### Scenario: 需要 OTP
612
- - **WHEN** 提供了有效凭据
613
- - **THEN** 需要 OTP 挑战
618
+ #### 场景:需要 OTP
619
+ - **当** 提供了有效凭据
620
+ - **则** 需要 OTP 挑战
614
621
  EOF
615
622
 
616
623
  # 4) 验证
617
624
  zhuanspec validate \$CHANGE --strict
618
625
  \`\`\`
619
626
 
620
- ## Multi-Capability Example
627
+ ## 多功能示例
621
628
 
622
629
  \`\`\`
623
630
  zhuanspec/changes/add-2fa-notify/
@@ -633,14 +640,14 @@ zhuanspec/changes/add-2fa-notify/
633
640
  auth/spec.md
634
641
  \`\`\`markdown
635
642
  ## ADDED Requirements
636
- ### Requirement: 双因素认证
643
+ ### 需求:双因素认证
637
644
  ...
638
645
  \`\`\`
639
646
 
640
647
  notifications/spec.md
641
648
  \`\`\`markdown
642
649
  ## ADDED Requirements
643
- ### Requirement: OTP 邮件通知
650
+ ### 需求:OTP 邮件通知
644
651
  ...
645
652
  \`\`\`
646
653
 
@@ -725,5 +732,42 @@ zhuanspec archive <change-id> [--yes|-y] # 标记完成(添加 --yes 用于
725
732
  \`\`\`
726
733
 
727
734
  记住:规范是真相。变更是提案。保持它们同步。
735
+
736
+ ## 任务执行编排
737
+
738
+ 当 apply 指令中包含 \`<execution_plan>\`/task.md中包含 \`@depends\` 时,必须按以下策略执行任务,而非顺序逐一执行。
739
+
740
+ ### 调度规则
741
+
742
+ 1. **按 wave 编号从小到大**依次执行,wave 之间严格串行
743
+ 2. **同一 wave 内的多个 task**:为每个 task 启动独立的 subagent(Coding 类型),所有 subagent 并行执行
744
+ 3. **等待本 wave 所有 subagent 完成后**,才启动下一 wave
745
+ 4. 同一 wave 内仅有一个 task 时,启动单个 subagent 执行
746
+
747
+ ### Subagent 上下文隔离
748
+
749
+ 每个 subagent 的 prompt 中**仅包含**:
750
+ - 当前 task 的描述和验收标准
751
+ - 当前 task 关联的 \`@skill\` 内容(通过 skill 名称触发加载)
752
+ - 相关的 spec 文件路径和内容(仅限该 task 涉及的部分)
753
+ - 前序 wave 的完成摘要(而非完整输出)
754
+
755
+ **禁止**向 subagent 注入:
756
+ - 其他 wave 的 task 详情
757
+ - 不相关的 skill 内容
758
+ - 其他 subagent 的完整输出
759
+
760
+ ### 完成同步
761
+
762
+ - 每个 subagent 完成后,提取简短的**完成摘要**(修改了哪些文件、关键变更点)
763
+ - 将摘要传递给后续 wave 的 subagent 作为上下文
764
+ - 在 \`tasks.md\` 中将对应任务标记为 \`[x]\`
765
+
766
+ ### 降级策略
767
+
768
+ 当 AI 平台不支持 subagent 时,按以下降级策略执行:
769
+ 1. 仍按 wave 顺序执行任务
770
+ 2. 每个 task 执行前,清理不相关的 skill 上下文
771
+ 3. 每个 task 执行后,仅保留完成摘要,避免上下文累积膨胀
728
772
  `;
729
773
  //# sourceMappingURL=agents-template.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhuan-ai/zhuanspec",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "description": "AI-native system for spec-driven development",
5
5
  "keywords": [
6
6
  "zhuanspec",
@@ -38,26 +38,6 @@
38
38
  "!dist/**/__tests__",
39
39
  "!dist/**/*.map"
40
40
  ],
41
- "scripts": {
42
- "lint": "eslint src/",
43
- "build": "node build.js",
44
- "dev": "tsc --watch",
45
- "dev:cli": "pnpm build && node bin/zhuanspec.js",
46
- "test": "vitest run",
47
- "test:watch": "vitest",
48
- "test:ui": "vitest --ui",
49
- "test:coverage": "vitest --coverage",
50
- "test:postinstall": "node scripts/postinstall.js",
51
- "prepare": "pnpm run build",
52
- "prepublishOnly": "pnpm run build",
53
- "postinstall": "node scripts/postinstall.js",
54
- "check:pack-version": "node scripts/pack-version-check.mjs",
55
- "diagnose:cursor": "node scripts/diagnose-cursor-commands.js",
56
- "release": "pnpm run release:ci",
57
- "release:ci": "pnpm run check:pack-version && pnpm exec changeset publish",
58
- "release:local": "pnpm exec changeset version && pnpm run check:pack-version && pnpm exec changeset publish",
59
- "changeset": "changeset"
60
- },
61
41
  "engines": {
62
42
  "node": ">=20.19.0"
63
43
  },
@@ -79,5 +59,23 @@
79
59
  "ora": "^8.2.0",
80
60
  "yaml": "^2.8.2",
81
61
  "zod": "^4.0.17"
62
+ },
63
+ "scripts": {
64
+ "lint": "eslint src/",
65
+ "build": "node build.js",
66
+ "dev": "tsc --watch",
67
+ "dev:cli": "pnpm build && node bin/zhuanspec.js",
68
+ "test": "vitest run",
69
+ "test:watch": "vitest",
70
+ "test:ui": "vitest --ui",
71
+ "test:coverage": "vitest --coverage",
72
+ "test:postinstall": "node scripts/postinstall.js",
73
+ "postinstall": "node scripts/postinstall.js",
74
+ "check:pack-version": "node scripts/pack-version-check.mjs",
75
+ "diagnose:cursor": "node scripts/diagnose-cursor-commands.js",
76
+ "release": "pnpm run release:ci",
77
+ "release:ci": "pnpm run check:pack-version && pnpm exec changeset publish",
78
+ "release:local": "pnpm exec changeset version && pnpm run check:pack-version && pnpm exec changeset publish",
79
+ "changeset": "changeset"
82
80
  }
83
- }
81
+ }
@@ -44,19 +44,19 @@ artifacts:
44
44
  创建建立此变更原因的提案文档。
45
45
 
46
46
  章节:
47
- - **Why**:关于问题或机会的 1-2 句话。它解决了什么问题?为什么是现在?
48
- - **What Changes**:变更的要点列表。具体说明新功能、修改或移除。用 **BREAKING** 标记破坏性更改。
49
- - **Capabilities**:确定将创建或修改哪些规范:
50
- - **New Capabilities**:列出正在引入的功能。每个都会成为新的 `specs/<name>/spec.md`。使用 kebab-case 名称(例如,`user-auth`、`data-export`)。
51
- - **Modified Capabilities**:列出其 REQUIREMENTS 正在更改的现有功能。仅当规范级行为更改时(不仅仅是实现细节)才包含。每个都需要一个增量规范文件。检查 `openspec/specs/` 以获取现有规范名称。如果没有要求更改,则留空。
52
- - **Skill Mapping**:运行 `zhuanspec skills list` 发现可用 skill,基于 skill description 进行语义匹配:
47
+ - **变更原因**:关于问题或机会的 1-2 句话。它解决了什么问题?为什么是现在?
48
+ - **变更内容**:变更的要点列表。具体说明新功能、修改或移除。用 **BREAKING** 标记破坏性更改。
49
+ - **功能范围**:确定将创建或修改哪些规范:
50
+ - **新增功能**:列出正在引入的功能。每个都会成为新的 `specs/<name>/spec.md`。使用 kebab-case 名称(例如,`user-auth`、`data-export`)。
51
+ - **修改功能**:列出其 REQUIREMENTS 正在更改的现有功能。仅当规范级行为更改时(不仅仅是实现细节)才包含。每个都需要一个增量规范文件。检查 `openspec/specs/` 以获取现有规范名称。如果没有要求更改,则留空。
52
+ - **Skill 映射**:运行 `zhuanspec skills list` 发现可用 skill,基于 skill description 进行语义匹配:
53
53
  1. 仔细阅读每个 skill 的 description,理解其具体功能和适用场景
54
54
  2. 只有当实现区域的实际功能与 skill description 明确匹配时才关联
55
55
  3. 简单的代码修改(如枚举值增删)应匹配通用编码规范 skill,而非架构级 skill
56
56
  4. 避免仅因模块名称或文件路径中的关键词而错误匹配
57
57
  5. 在表格中说明匹配理由,确保映射合理性
58
58
  此映射将在 tasks.md 中用于 @skill 标注。如果没有匹配 skill 则留空。
59
- - **Impact**:受影响的代码、API、依赖项或系统。
59
+ - **影响范围**:受影响的代码、API、依赖项或系统。
60
60
 
61
61
  重要提示:Capabilities 部分至关重要。它在提案和规范阶段之间创建契约。在填写之前,请研究现有规范。
62
62
  此处列出的每个功能都需要一个相应的规范文件。
@@ -134,12 +134,12 @@ artifacts:
134
134
  - 在编码之前从技术决策中受益的模糊性
135
135
 
136
136
  章节:
137
- - **Context**:背景、当前状态、约束、利益相关者
138
- - **Goals / Non-Goals**:此设计实现的内容和明确排除的内容
139
- - **Decisions**:关键的技术选择及其理由(为什么选择 X 而不是 Y?)。包括为每个决策考虑的替代方案。
140
- - **Risks / Trade-offs**:已知的限制,可能出错的事情。格式:[Risk] → Mitigation
141
- - **Migration Plan**:部署步骤、回滚策略(如果适用)
142
- - **Open Questions**:待解决的决定或未知数
137
+ - **背景**:背景、当前状态、约束、利益相关者
138
+ - **目标 / 非目标**:此设计实现的内容和明确排除的内容
139
+ - **决策**:关键的技术选择及其理由(为什么选择 X 而不是 Y?)。包括为每个决策考虑的替代方案。
140
+ - **风险 / 权衡**:已知的限制,可能出错的事情。格式:[风险] → 缓解措施
141
+ - **迁移计划**:部署步骤、回滚策略(如果适用)
142
+ - **待解决问题**:待解决的决定或未知数
143
143
 
144
144
  专注于架构和方法,而不是逐行实现。
145
145
  参考提案了解动机,参考规范了解要求。
@@ -1,19 +1,19 @@
1
- ## Context
1
+ ## 背景
2
2
 
3
3
  <!-- 背景和当前状态 -->
4
4
 
5
- ## Goals / Non-Goals
5
+ ## 目标 / 非目标
6
6
 
7
- **Goals:**
7
+ **目标:**
8
8
  <!-- 此设计旨在实现的目标 -->
9
9
 
10
- **Non-Goals:**
10
+ **非目标:**
11
11
  <!-- 明确不在范围内的内容 -->
12
12
 
13
- ## Decisions
13
+ ## 决策
14
14
 
15
15
  <!-- 关键设计决策和理由 -->
16
16
 
17
- ## Risks / Trade-offs
17
+ ## 风险 / 权衡
18
18
 
19
19
  <!-- 已知风险和权衡 -->
@@ -1,24 +1,24 @@
1
- ## Why
1
+ ## 变更原因
2
2
 
3
3
  <!-- 解释此变更的动机。它解决了什么问题?为什么是现在? -->
4
4
 
5
- ## What Changes
5
+ ## 变更内容
6
6
 
7
7
  <!-- 描述将要更改的内容。具体说明新功能、修改或移除。 -->
8
8
 
9
- ## Capabilities
9
+ ## 功能范围
10
10
 
11
- ### New Capabilities
11
+ ### 新增功能
12
12
  <!-- 正在引入的功能。将 <name> 替换为 kebab-case 标识符(例如,user-auth、data-export、api-rate-limiting)。每个都会创建 specs/<name>/spec.md -->
13
13
  - `<name>`: <此功能涵盖内容的简要描述>
14
14
 
15
- ### Modified Capabilities
15
+ ### 修改功能
16
16
  <!-- 其 REQUIREMENTS 正在更改的现有功能(不仅仅是实现)。
17
17
  仅当规范级行为更改时,才在此处列出。每个都需要一个增量规范文件。
18
18
  使用 zhuanspec/specs/ 中的现有规范名称。如果没有要求更改,则留空。 -->
19
19
  - `<existing-name>`: <正在更改的要求>
20
20
 
21
- ## Skill Mapping
21
+ ## Skill 映射
22
22
 
23
23
  <!-- 重要:运行 `zhuanspec skills list` 查看可用 skill,基于 skill description 进行语义匹配。
24
24
  匹配原则:
@@ -38,6 +38,6 @@
38
38
  |---------|---------|-----------|---------|
39
39
  | <!-- 模块/文件 --> | <!-- 具体功能 --> | <!-- skill 名称 --> | <!-- 为什么匹配 --> |
40
40
 
41
- ## Impact
41
+ ## 影响范围
42
42
 
43
43
  <!-- 受影响的代码、API、依赖项、系统 -->
@@ -1,8 +1,8 @@
1
1
  ## ADDED Requirements
2
2
 
3
- ### Requirement: <!-- 要求名称 -->
3
+ ### 需求:<!-- 要求名称 -->
4
4
  <!-- 要求文本 -->
5
5
 
6
- #### Scenario: <!-- 场景名称 -->
7
- - **WHEN** <!-- 条件 -->
8
- - **THEN** <!-- 预期结果 -->
6
+ #### 场景:<!-- 场景名称 -->
7
+ - **当** <!-- 条件 -->
8
+ - **则** <!-- 预期结果 -->
@@ -1,177 +1,177 @@
1
1
  name: tdd
2
2
  version: 1
3
- description: Test-driven development workflow - testsimplementationdocs
3
+ description: 测试驱动开发工作流 - 测试实现文档
4
4
  artifacts:
5
5
  - id: spec
6
6
  generates: spec.md
7
- description: Feature specification defining requirements
7
+ description: 定义需求的特性规格说明
8
8
  template: spec.md
9
9
  instruction: |
10
- Create the feature specification that defines WHAT to build.
10
+ 创建定义「要构建什么」的特性规格说明。
11
11
 
12
- Sections:
13
- - **Feature**: Name and high-level description of the feature's purpose and user value
14
- - **Requirements**: List of specific requirements. Use SHALL/MUST for normative language.
15
- - **Acceptance Criteria**: Testable criteria in WHEN/THEN format
12
+ 章节:
13
+ - **Feature**: 特性名称及高层描述,说明其用途和用户价值
14
+ - **Requirements**: 具体需求列表。使用 SHALL/MUST 作为规范性语言。
15
+ - **Acceptance Criteria**: 使用 WHEN/THEN 格式的可测试验收标准
16
16
 
17
- Format requirements:
18
- - Each requirement should be specific and testable
19
- - Use `#### Scenario: <name>` with WHEN/THEN format for acceptance criteria
20
- - Define edge cases and error scenarios explicitly
21
- - Every requirement MUST have at least one scenario
17
+ 格式要求:
18
+ - 每个需求应具体且可测试
19
+ - 使用 `#### Scenario: <名称>` 配合 WHEN/THEN 格式编写验收标准
20
+ - 明确定义边界情况和错误场景
21
+ - 每个需求必须至少有一个场景
22
22
 
23
- Example:
23
+ 示例:
24
24
  ```
25
- ## Feature: User Authentication
25
+ ## Feature: 用户认证
26
26
 
27
- Users can securely log into the application.
27
+ 用户可以安全地登录应用程序。
28
28
 
29
29
  ## Requirements
30
30
 
31
- ### Requirement: Password validation
32
- The system SHALL validate passwords meet minimum security requirements.
31
+ ### Requirement: 密码验证
32
+ 系统 SHALL 验证密码满足最低安全要求。
33
33
 
34
- #### Scenario: Valid password accepted
35
- - **WHEN** password has 8+ chars, uppercase, lowercase, and number
36
- - **THEN** password is accepted
34
+ #### Scenario: 有效密码被接受
35
+ - **WHEN** 密码包含 8+ 字符、大写字母、小写字母和数字
36
+ - **THEN** 密码被接受
37
37
 
38
- #### Scenario: Weak password rejected
39
- - **WHEN** password is less than 8 characters
40
- - **THEN** system displays "Password too short" error
38
+ #### Scenario: 弱密码被拒绝
39
+ - **WHEN** 密码少于 8 个字符
40
+ - **THEN** 系统显示 "Password too short" 错误
41
41
  ```
42
42
 
43
- This spec drives test creation - each scenario becomes a test case.
43
+ 此规格驱动测试创建 - 每个场景成为一个测试用例。
44
44
  requires: []
45
45
 
46
46
  - id: tests
47
47
  generates: "tests/*.test.ts"
48
- description: Test files written before implementation
48
+ description: 在实现之前编写的测试文件
49
49
  template: test.md
50
50
  instruction: |
51
- Write tests BEFORE implementation (TDD red phase).
52
-
53
- File naming:
54
- - Create test files as `tests/<feature>.test.ts`
55
- - One test file per feature/capability
56
- - Use descriptive names matching the spec
57
-
58
- Test structure:
59
- - Use Given/When/Then format matching spec scenarios
60
- - Group related tests with `describe()` blocks
61
- - Each scenario from spec becomes at least one `it()` test
62
-
63
- Coverage requirements:
64
- - Cover each requirement from the spec
65
- - Include happy path (success cases)
66
- - Include edge cases (boundary conditions)
67
- - Include error scenarios (invalid input, failures)
68
- - Tests should fail initially (no implementation yet)
69
-
70
- Example:
51
+ 在实现之前编写测试(TDD 红阶段)。
52
+
53
+ 文件命名:
54
+ - 创建测试文件为 `tests/<feature>.test.ts`
55
+ - 每个特性/能力一个测试文件
56
+ - 使用与规格匹配的描述性名称
57
+
58
+ 测试结构:
59
+ - 使用与规格场景匹配的 Given/When/Then 格式
60
+ - 使用 `describe()` 块分组相关测试
61
+ - 规格中的每个场景至少成为一个 `it()` 测试
62
+
63
+ 覆盖要求:
64
+ - 覆盖规格中的每个需求
65
+ - 包含正常路径(成功场景)
66
+ - 包含边界情况(边界条件)
67
+ - 包含错误场景(无效输入、失败)
68
+ - 测试最初应该失败(还没有实现)
69
+
70
+ 示例:
71
71
  ```typescript
72
72
  describe('Password validation', () => {
73
73
  it('accepts valid password with all requirements', () => {
74
- // GIVEN a password meeting all requirements
74
+ // GIVEN 一个满足所有要求的密码
75
75
  const password = 'SecurePass1';
76
- // WHEN validating
76
+ // WHEN 进行验证
77
77
  const result = validatePassword(password);
78
- // THEN it should be accepted
78
+ // THEN 应该被接受
79
79
  expect(result.valid).toBe(true);
80
80
  });
81
81
 
82
82
  it('rejects password shorter than 8 characters', () => {
83
- // GIVEN a short password
83
+ // GIVEN 一个短密码
84
84
  const password = 'Short1';
85
- // WHEN validating
85
+ // WHEN 进行验证
86
86
  const result = validatePassword(password);
87
- // THEN it should be rejected with message
87
+ // THEN 应该被拒绝并显示消息
88
88
  expect(result.valid).toBe(false);
89
89
  expect(result.error).toBe('Password too short');
90
90
  });
91
91
  });
92
92
  ```
93
93
 
94
- Follow the spec requirements exactly - tests verify the spec.
94
+ 严格遵循规格需求 - 测试验证规格。
95
95
  requires:
96
96
  - spec
97
97
 
98
98
  - id: implementation
99
99
  generates: "src/*.ts"
100
- description: Implementation code to pass the tests
100
+ description: 使测试通过的实现代码
101
101
  template: implementation.md
102
102
  instruction: |
103
- Implement the feature to make tests pass (TDD green phase).
104
-
105
- TDD workflow:
106
- 1. Run tests - confirm they fail (red)
107
- 2. Write minimal code to pass ONE test
108
- 3. Run tests - confirm that test passes (green)
109
- 4. Refactor if needed while keeping tests green
110
- 5. Repeat for next failing test
111
-
112
- Implementation guidelines:
113
- - Write minimal code to pass each test - no more, no less
114
- - Run tests frequently to verify progress
115
- - Keep functions small and focused
116
- - Use clear, descriptive names
117
-
118
- Code organization:
119
- - Create source files in `src/<feature>.ts`
120
- - Export public API clearly
121
- - Keep implementation details private
122
- - Add JSDoc comments for public functions
123
-
124
- Example structure:
103
+ 实现特性以使测试通过(TDD 绿阶段)。
104
+
105
+ TDD 工作流:
106
+ 1. 运行测试 - 确认它们失败(红)
107
+ 2. 编写最小代码通过一个测试
108
+ 3. 运行测试 - 确认该测试通过(绿)
109
+ 4. 如有需要重构,同时保持测试通过
110
+ 5. 对下一个失败的测试重复上述步骤
111
+
112
+ 实现指南:
113
+ - 编写最小代码通过每个测试 - 不多不少
114
+ - 频繁运行测试以验证进度
115
+ - 保持函数小而专注
116
+ - 使用清晰、描述性的名称
117
+
118
+ 代码组织:
119
+ - `src/<feature>.ts` 中创建源文件
120
+ - 清晰导出公共 API
121
+ - 保持实现细节私有
122
+ - 为公共函数添加 JSDoc 注释
123
+
124
+ 示例结构:
125
125
  ```typescript
126
126
  /**
127
- * Validates a password meets security requirements.
128
- * @param password - The password to validate
129
- * @returns Validation result with valid flag and optional error
127
+ * 验证密码是否满足安全要求。
128
+ * @param password - 要验证的密码
129
+ * @returns 验证结果,包含有效标志和可选错误信息
130
130
  */
131
131
  export function validatePassword(password: string): ValidationResult {
132
132
  if (password.length < 8) {
133
133
  return { valid: false, error: 'Password too short' };
134
134
  }
135
- // ... additional checks
135
+ // ... 额外的检查
136
136
  return { valid: true };
137
137
  }
138
138
  ```
139
139
 
140
- Don't over-engineer - implement only what tests require.
140
+ 不要过度设计 - 只实现测试要求的内容。
141
141
  requires:
142
142
  - tests
143
143
 
144
144
  - id: docs
145
145
  generates: "docs/*.md"
146
- description: Documentation for the implemented feature
146
+ description: 已实现特性的文档
147
147
  template: docs.md
148
148
  instruction: |
149
- Document the implemented feature.
150
-
151
- Sections:
152
- - **Overview**: What the feature does and why it exists (1-2 paragraphs)
153
- - **Getting Started**: Quick start guide to use the feature immediately
154
- - **Examples**: Code examples showing common use cases
155
- - **Reference**: Detailed API documentation, configuration options
156
-
157
- Guidelines:
158
- - Write for the user, not the developer
159
- - Start with the most common use case
160
- - Include copy-pasteable code examples
161
- - Document all configuration options with defaults
162
- - Note any limitations, edge cases, or gotchas
163
- - Link to related features or specs
164
-
165
- Example structure:
149
+ 为已实现的特性编写文档。
150
+
151
+ 章节:
152
+ - **Overview**: 特性功能及存在原因(1-2 段落)
153
+ - **Getting Started**: 立即使用该特性的快速入门指南
154
+ - **Examples**: 展示常见用例的代码示例
155
+ - **Reference**: 详细的 API 文档、配置选项
156
+
157
+ 指南:
158
+ - 为用户编写,而非开发者
159
+ - 从最常见的用例开始
160
+ - 包含可复制粘贴的代码示例
161
+ - 记录所有配置选项及其默认值
162
+ - 注意任何限制、边界情况或注意事项
163
+ - 链接到相关特性或规格
164
+
165
+ 示例结构:
166
166
  ```markdown
167
167
  ## Overview
168
168
 
169
- Password validation ensures user passwords meet security requirements
170
- before account creation or password changes.
169
+ 密码验证确保用户密码在账户创建或密码更改前
170
+ 满足安全要求。
171
171
 
172
172
  ## Getting Started
173
173
 
174
- Import and use the validation function:
174
+ 导入并使用验证函数:
175
175
 
176
176
  ```typescript
177
177
  import { validatePassword } from './password';
@@ -184,10 +184,10 @@ artifacts:
184
184
 
185
185
  ## Examples
186
186
 
187
- ### Basic validation
187
+ ### 基础验证
188
188
  ...
189
189
 
190
- ### Custom error handling
190
+ ### 自定义错误处理
191
191
  ...
192
192
 
193
193
  ## Reference
@@ -196,12 +196,12 @@ artifacts:
196
196
 
197
197
  | Parameter | Type | Description |
198
198
  |-----------|------|-------------|
199
- | password | string | The password to validate |
199
+ | password | string | 要验证的密码 |
200
200
 
201
201
  **Returns**: `{ valid: boolean, error?: string }`
202
202
  ```
203
203
 
204
- Reference the spec for requirements, implementation for details.
204
+ 参考规格了解需求,参考实现了解细节。
205
205
  requires:
206
206
  - implementation
207
207
 
@@ -209,5 +209,5 @@ apply:
209
209
  requires: [tests]
210
210
  tracks: null
211
211
  instruction: |
212
- Run tests to see failures. Implement minimal code to pass each test.
213
- Refactor while keeping tests green.
212
+ 运行测试查看失败。编写最小代码通过每个测试。
213
+ 在保持测试通过的同时进行重构。
@@ -1,11 +1,11 @@
1
- ## Implementation Notes
1
+ ## 实现说明
2
2
 
3
- <!-- Technical implementation details -->
3
+ <!-- 技术实现细节 -->
4
4
 
5
5
  ## API
6
6
 
7
- <!-- Public API documentation -->
7
+ <!-- 公共 API 文档 -->
8
8
 
9
- ## Usage
9
+ ## 用法
10
10
 
11
- <!-- Usage examples -->
11
+ <!-- 用法示例 -->
@@ -1,11 +1,11 @@
1
- ## Feature: <!-- feature name -->
1
+ ## 功能:<!-- 功能名称 -->
2
2
 
3
- <!-- Feature description -->
3
+ <!-- 功能描述 -->
4
4
 
5
- ## Requirements
5
+ ## 需求
6
6
 
7
- <!-- List of requirements -->
7
+ <!-- 需求列表 -->
8
8
 
9
- ## Acceptance Criteria
9
+ ## 验收标准
10
10
 
11
- <!-- List of acceptance criteria -->
11
+ <!-- 验收标准列表 -->
@@ -1,11 +1,11 @@
1
- ## Test Plan
1
+ ## 测试计划
2
2
 
3
- <!-- Describe the testing strategy -->
3
+ <!-- 描述测试策略 -->
4
4
 
5
- ## Test Cases
5
+ ## 测试用例
6
6
 
7
- ### <!-- Test case name -->
7
+ ### <!-- 测试用例名称 -->
8
8
 
9
- - **Given:** <!-- preconditions -->
10
- - **When:** <!-- action -->
11
- - **Then:** <!-- expected result -->
9
+ - **假设:** <!-- 前置条件 -->
10
+ - **当:** <!-- 操作 -->
11
+ - **则:** <!-- 预期结果 -->