sillyspec 3.20.2 → 3.20.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/.claude/skills/sillyspec-archive/SKILL.md +1 -5
  2. package/.claude/skills/sillyspec-auto/SKILL.md +2 -8
  3. package/.claude/skills/sillyspec-brainstorm/SKILL.md +1 -28
  4. package/.claude/skills/sillyspec-commit/SKILL.md +3 -4
  5. package/.claude/skills/sillyspec-continue/SKILL.md +4 -5
  6. package/.claude/skills/sillyspec-doctor/SKILL.md +3 -12
  7. package/.claude/skills/sillyspec-execute/SKILL.md +2 -15
  8. package/.claude/skills/sillyspec-explore/SKILL.md +1 -14
  9. package/.claude/skills/sillyspec-plan/SKILL.md +36 -5
  10. package/.claude/skills/sillyspec-propose/SKILL.md +0 -4
  11. package/.claude/skills/sillyspec-quick/SKILL.md +1 -5
  12. package/.claude/skills/sillyspec-resume/SKILL.md +66 -23
  13. package/.claude/skills/sillyspec-scan/SKILL.md +1 -5
  14. package/.claude/skills/sillyspec-state/SKILL.md +8 -8
  15. package/.claude/skills/sillyspec-status/SKILL.md +1 -5
  16. package/.claude/skills/sillyspec-verify/SKILL.md +1 -5
  17. package/.claude/skills/sillyspec-workspace/SKILL.md +3 -11
  18. package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +97 -0
  19. package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +51 -0
  20. package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +29 -0
  21. package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +34 -0
  22. package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +13 -0
  23. package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +43 -0
  24. package/.sillyspec/changes/auto-mode/design.md +50 -0
  25. package/.sillyspec/changes/auto-mode/proposal.md +19 -0
  26. package/.sillyspec/changes/auto-mode/requirements.md +21 -0
  27. package/.sillyspec/changes/auto-mode/tasks.md +7 -0
  28. package/.sillyspec/changes/brainstorm-archive/2026-04-05-dashboard-design.md +206 -0
  29. package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +199 -0
  30. package/.sillyspec/changes/dashboard/design.md +219 -0
  31. package/.sillyspec/changes/dashboard/design.md.braindraft +206 -0
  32. package/.sillyspec/changes/run-command-design/design.md +1230 -0
  33. package/.sillyspec/changes/unified-docs-design/design.md +199 -0
  34. package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
  35. package/.sillyspec/knowledge/INDEX.md +8 -0
  36. package/.sillyspec/knowledge/uncategorized.md +3 -0
  37. package/.sillyspec/plans/2026-04-05-dashboard.md +737 -0
  38. package/.sillyspec/projects/sillyspec.yaml +3 -0
  39. package/README.md +11 -13
  40. package/SKILL.md +40 -44
  41. package/dist/steps/brainstorm/01-load-context.md +30 -0
  42. package/dist/steps/brainstorm/02-reuse-check.md +6 -0
  43. package/dist/steps/brainstorm/03-prototype-analysis.md +11 -0
  44. package/dist/steps/brainstorm/04-module-split.md +23 -0
  45. package/dist/steps/brainstorm/05-dialog-explore.md +8 -0
  46. package/dist/steps/brainstorm/06-propose-approaches.md +3 -0
  47. package/dist/steps/brainstorm/07-present-design.md +3 -0
  48. package/dist/steps/brainstorm/08-write-design.md +21 -0
  49. package/dist/steps/brainstorm/09-self-review.md +15 -0
  50. package/dist/steps/brainstorm/10-user-confirm.md +3 -0
  51. package/dist/steps/brainstorm/11-output-spec.md +7 -0
  52. package/dist/steps/brainstorm/manifest.yaml +26 -0
  53. package/dist/steps/execute/01-load-context.md +41 -0
  54. package/dist/steps/execute/02-scan-conventions.md +47 -0
  55. package/dist/steps/execute/03-skill-mcp.md +19 -0
  56. package/dist/steps/execute/04-assign-task.md +22 -0
  57. package/dist/steps/execute/04b-prompt-template.md +54 -0
  58. package/dist/steps/execute/05-write-test.md +7 -0
  59. package/dist/steps/execute/06-write-code.md +8 -0
  60. package/dist/steps/execute/07-run-test.md +26 -0
  61. package/dist/steps/execute/08-fix-issues.md +28 -0
  62. package/dist/steps/execute/09-next-task.md +33 -0
  63. package/dist/steps/execute/manifest.yaml +28 -0
  64. package/dist/steps/plan/01-load-context.md +22 -0
  65. package/dist/steps/plan/02-anchor-confirm.md +1 -0
  66. package/dist/steps/plan/03-expand-tasks.md +33 -0
  67. package/dist/steps/plan/04-mark-order.md +15 -0
  68. package/dist/steps/plan/05-e2e-planning.md +17 -0
  69. package/dist/steps/plan/06-self-check.md +16 -0
  70. package/dist/steps/plan/07-save.md +1 -0
  71. package/dist/steps/plan/manifest.yaml +18 -0
  72. package/dist/steps/scan/01-env-detect.md +51 -0
  73. package/dist/steps/scan/02-tech-stack.md +16 -0
  74. package/dist/steps/scan/03-conventions.md +16 -0
  75. package/dist/steps/scan/04-structure.md +19 -0
  76. package/dist/steps/scan/05-quality.md +18 -0
  77. package/dist/steps/scan/06-complete.md +49 -0
  78. package/dist/steps/scan/manifest.yaml +16 -0
  79. package/dist/steps/verify/01-load-specs.md +28 -0
  80. package/dist/steps/verify/02-check-tasks.md +1 -0
  81. package/dist/steps/verify/03-check-design.md +6 -0
  82. package/dist/steps/verify/04-run-tests.md +7 -0
  83. package/dist/steps/verify/05-e2e-tests.md +27 -0
  84. package/dist/steps/verify/05b-e2e-fix.md +33 -0
  85. package/dist/steps/verify/06-code-quality.md +25 -0
  86. package/dist/steps/verify/07-lint-check.md +27 -0
  87. package/dist/steps/verify/08-output-report.md +14 -0
  88. package/dist/steps/verify/manifest.yaml +22 -0
  89. package/package.json +1 -7
  90. package/packages/dashboard/dist/assets/{index-Bq_Z2hne.js → index-D1EVTLmc.js} +1264 -1264
  91. package/packages/dashboard/dist/assets/index-DGe8CqeP.css +1 -0
  92. package/packages/dashboard/dist/index.html +2 -2
  93. package/packages/dashboard/package-lock.json +6 -6
  94. package/packages/dashboard/server/executor.js +1 -1
  95. package/packages/dashboard/server/index.js +18 -98
  96. package/packages/dashboard/server/parser.js +71 -139
  97. package/packages/dashboard/server/watcher.js +6 -14
  98. package/packages/dashboard/src/App.vue +185 -418
  99. package/packages/dashboard/src/components/ActionBar.vue +1 -10
  100. package/packages/dashboard/src/components/CommandPalette.vue +1 -5
  101. package/packages/dashboard/src/components/DocPreview.vue +8 -105
  102. package/packages/dashboard/src/components/DocTree.vue +19 -75
  103. package/packages/dashboard/src/components/PipelineStage.vue +2 -22
  104. package/packages/dashboard/src/components/PipelineView.vue +5 -32
  105. package/packages/dashboard/src/components/ProjectOverview.vue +139 -113
  106. package/packages/dashboard/src/components/StageBadge.vue +3 -17
  107. package/packages/dashboard/src/components/StepCard.vue +2 -7
  108. package/packages/dashboard/src/composables/useDashboard.js +0 -28
  109. package/src/derive.js +147 -0
  110. package/src/index.js +40 -688
  111. package/src/init.js +63 -119
  112. package/src/migrate.js +7 -7
  113. package/src/progress.js +248 -1474
  114. package/src/run.js +302 -3008
  115. package/src/setup.js +64 -2
  116. package/src/stages/archive.js +17 -123
  117. package/src/stages/brainstorm.js +48 -454
  118. package/src/stages/doctor.js +46 -99
  119. package/src/stages/execute.js +59 -420
  120. package/src/stages/index.js +18 -12
  121. package/src/stages/plan.js +189 -492
  122. package/src/stages/propose.js +11 -70
  123. package/src/stages/quick.js +13 -52
  124. package/src/stages/scan.js +68 -485
  125. package/src/stages/status.js +1 -1
  126. package/src/stages/verify.js +16 -203
  127. package/src/step.js +543 -0
  128. package/.claude/skills/sillyspec-knowledge/SKILL.md +0 -270
  129. package/.husky/pre-push +0 -13
  130. package/CLAUDE.md +0 -18
  131. package/docs/brainstorm-plan-contract.md +0 -64
  132. package/docs/plan-execute-contract.md +0 -123
  133. package/docs/platform-scan-protocol.md +0 -298
  134. package/docs/revision-mode.md +0 -115
  135. package/docs/sillyspec/file-lifecycle/known-implementation-gaps.md +0 -99
  136. package/docs/sillyspec/file-lifecycle/platform-workflows-sync.md +0 -218
  137. package/docs/sillyspec/file-lifecycle/stage-artifacts.md +0 -167
  138. package/docs/sillyspec/file-lifecycle/storage-and-state.md +0 -148
  139. package/docs/sillyspec/file-lifecycle/worktree-and-guard.md +0 -193
  140. package/docs/sillyspec/file-lifecycle.md +0 -125
  141. package/docs/workflow-contract-regression.md +0 -106
  142. package/docs/worktree-isolation.md +0 -252
  143. package/packages/dashboard/dist/assets/index-O2W5RV4z.css +0 -1
  144. package/packages/dashboard/dist/prototype-dashboard.html +0 -836
  145. package/packages/dashboard/dist/prototype-overview.html +0 -256
  146. package/packages/dashboard/public/prototype-dashboard.html +0 -836
  147. package/packages/dashboard/public/prototype-overview.html +0 -256
  148. package/packages/dashboard/src/components/HResizeHandle.vue +0 -48
  149. package/packages/dashboard/src/components/ProjectCard.vue +0 -187
  150. package/packages/dashboard/src/components/VResizeHandle.vue +0 -61
  151. package/packages/dashboard/src/composables/useLayout.js +0 -131
  152. package/src/brainstorm-postcheck.js +0 -158
  153. package/src/change-list.js +0 -52
  154. package/src/change-risk-profile.js +0 -352
  155. package/src/classify-change.js +0 -73
  156. package/src/constants.js +0 -70
  157. package/src/contract-matrix.js +0 -278
  158. package/src/db.js +0 -201
  159. package/src/endpoint-extractor.js +0 -315
  160. package/src/hooks/claude-pre-tool-use.cjs +0 -125
  161. package/src/hooks/worktree-guard.js +0 -761
  162. package/src/knowledge-match.js +0 -130
  163. package/src/modules.js +0 -482
  164. package/src/scan-postcheck.js +0 -383
  165. package/src/stage-contract.js +0 -700
  166. package/src/stages/brainstorm-auto.js +0 -229
  167. package/src/stages/explore.js +0 -34
  168. package/src/stages/knowledge.js +0 -498
  169. package/src/stages/plan-postcheck.js +0 -513
  170. package/src/sync.js +0 -497
  171. package/src/task-review.js +0 -346
  172. package/src/workflow.js +0 -785
  173. package/src/worktree-apply.js +0 -549
  174. package/src/worktree.js +0 -932
  175. package/templates/workflows/archive-impact.yaml +0 -79
  176. package/templates/workflows/scan-docs.yaml +0 -132
  177. package/test/brainstorm-plan-contract.test.mjs +0 -273
  178. package/test/check-syntax.mjs +0 -26
  179. package/test/cli-top-level-aliases.test.mjs +0 -174
  180. package/test/contract-artifacts.test.mjs +0 -323
  181. package/test/decision-supersede.test.mjs +0 -277
  182. package/test/knowledge-match.test.mjs +0 -231
  183. package/test/plan-execute-contract.test.mjs +0 -330
  184. package/test/plan-optimization.test.mjs +0 -572
  185. package/test/platform-artifacts.test.mjs +0 -190
  186. package/test/platform-failure-samples.test.mjs +0 -199
  187. package/test/platform-recovery-chain.test.mjs +0 -179
  188. package/test/platform-recovery.test.mjs +0 -167
  189. package/test/platform-scan-p0.test.mjs +0 -175
  190. package/test/revision-v1.test.mjs +0 -1145
  191. package/test/run-sanitize-project-name.test.mjs +0 -51
  192. package/test/run-scan-postcheck-fail.test.mjs +0 -64
  193. package/test/run-scan-project-parse.test.mjs +0 -200
  194. package/test/run-tests.mjs +0 -48
  195. package/test/scan-docs-yaml-placeholders.test.mjs +0 -84
  196. package/test/scan-knowledge.test.mjs +0 -175
  197. package/test/scan-paths.test.mjs +0 -68
  198. package/test/scan-postcheck-project-priority.test.mjs +0 -85
  199. package/test/scan-postcheck.test.mjs +0 -197
  200. package/test/scan-workflow-anyfailed-block.test.mjs +0 -52
  201. package/test/spec-dir.test.mjs +0 -206
  202. package/test/stage-contract-failed-post-check.test.mjs +0 -102
  203. package/test/stage-contract.test.mjs +0 -299
  204. package/test/stage-definitions.test.mjs +0 -39
  205. package/test/wait-gates.test.mjs +0 -501
  206. package/test/workflow-spec-base.test.mjs +0 -142
  207. package/test/worktree-guard.test.mjs +0 -136
  208. package/test/worktree-native-overlay.test.mjs +0 -188
@@ -0,0 +1,3 @@
1
+ name: sillyspec
2
+ path: .
3
+ status: active
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  <img src="logo.jpg" width="80" />
3
3
  </p>
4
4
 
5
- # SillySpec v3.16 — 规范驱动开发工具包
5
+ # SillySpec v3.0 — 规范驱动开发工具包
6
6
 
7
7
  > 融合 Superpowers + OpenSpec + GSD,从"你说要啥"到"代码能跑"的完整流程。
8
8
  > Claude Code / Cursor / Codex / OpenCode / OpenClaw 都能用。
@@ -19,7 +19,7 @@
19
19
  npx sillyspec init
20
20
  ```
21
21
 
22
- > 📦 首次运行自动安装 CLI,之后 `sillyspec run brainstorm`/`sillyspec progress show` 等命令也可直接使用。
22
+ > 📦 首次运行自动安装 CLI,之后 `sillyspec status`/`sillyspec next` 等命令也可直接使用。
23
23
 
24
24
  **指定工具:**
25
25
  ```bash
@@ -42,8 +42,10 @@ npx sillyspec init --dir /path/to/project
42
42
 
43
43
  | 工具 | `--tool` 参数 | 输出目录 | 格式 |
44
44
  |---|---|---|---|
45
- | Claude Code | `claude` | `.claude/skills/sillyspec-<name>/` | SKILL.md |
46
- | Codex | `codex` | `.codex/skills/sillyspec-<name>/` | SKILL.md |
45
+ | Claude Code (commands) | `claude` | `.claude/commands/sillyspec/` | slash commands |
46
+ | Claude Code (skills) | `claude_skills` | `.claude/skills/sillyspec-<name>/` | SKILL.md |
47
+ | Cursor | `cursor` | `.cursor/commands/` | custom commands |
48
+ | Codex | `codex` | `~/.agents/skills/sillyspec-<name>/` | SKILL.md |
47
49
  | OpenCode | `opencode` | `.opencode/skills/sillyspec-<name>/` | SKILL.md |
48
50
  | OpenClaw | `openclaw` | `.openclaw/skills/sillyspec-<name>/` | SKILL.md |
49
51
 
@@ -68,7 +70,7 @@ claude --dangerously-skip-permissions
68
70
 
69
71
  ```
70
72
  绿地:init → brainstorm → plan → execute → [verify] → archive
71
- 棕地:scan → brainstorm → plan → execute → verify → archive
73
+ 棕地:scan → brainstorm → plan → execute → [verify] → archive
72
74
  大模块:brainstorm(多图) → 拆分 → MASTER.md → stage-1 全流程 → stage-2 全流程 → ... → archive
73
75
  ```
74
76
 
@@ -110,13 +112,9 @@ claude --dangerously-skip-permissions
110
112
  ## CLI 命令
111
113
 
112
114
  ```bash
113
- sillyspec run <stage> 执行阶段步骤(brainstorm/plan/execute/verify 等)
114
- sillyspec run scan 代码扫描
115
- sillyspec run quick 快速任务
116
- sillyspec run explore 自由探索
117
- sillyspec run <stage> --done 完成当前步骤并输出下一步
118
- sillyspec run <stage> --status 查看阶段进度
119
- sillyspec progress show 显示当前项目状态
115
+ sillyspec status [--json] 显示当前项目状态
116
+ sillyspec next [--json] 显示下一步命令
117
+ sillyspec check [--json] 检查文档完整性
120
118
  sillyspec setup 安装推荐 MCP 工具(交互式)
121
119
  sillyspec setup --list 查看已安装 MCP 状态
122
120
  sillyspec init 初始化(零交互,自动检测工具)
@@ -169,7 +167,7 @@ SillySpec 不仅仅是 prompt,还有硬校验:
169
167
  sillyspec/
170
168
  ├── bin/sillyspec.js # CLI 入口
171
169
  ├── src/
172
- │ ├── index.js # CLI 命令入口
170
+ │ ├── index.js # status/next/check 命令
173
171
  │ ├── init.js # init 逻辑 + 工具适配器
174
172
  │ └── setup.js # MCP 工具安装
175
173
  ├── templates/ # 命令模板(19 个)
package/SKILL.md CHANGED
@@ -1,46 +1,46 @@
1
1
  ---
2
2
  name: sillyspec
3
- description: "规范驱动开发工具包。绿地用 /sillyspec:init,棕地用 /sillyspec:scan,全自动用 /sillyspec:auto。完整流程:scanbrainstormplanexecuteverifyarchive。支持 TDD、子代理并行、worktree 隔离、E2E 验证。兼容 Claude Code / Cursor / Codex / OpenCode / OpenClaw。"
4
- version: "3.12.7"
3
+ description: "规范驱动开发工具包 v3.6。绿地项目用 /sillyspec:init,棕地项目用 /sillyspec:scan。可用命令:init、scan、scan-quick、explore、brainstormplanexecuteverifyarchive、commit、export、status、resume、continue、quick、state、workspace、workspace-sync。"
4
+ version: "3.6.1"
5
5
  ---
6
6
 
7
- # SillySpec
7
+ # SillySpec v3.6
8
8
 
9
- "你说要啥"到"代码能跑"的规范驱动开发工具包。
10
- Claude Code / Cursor / Codex / OpenCode / OpenClaw 通用。
9
+ 融合 Superpowers + OpenSpec + GSD,从"你说要啥"到"代码能跑"的完整流程。
10
+ Claude Code / Cursor / Codex / OpenCode / OpenClaw 都能用。
11
11
 
12
- ## 快速开始
12
+ ## 入口选择
13
13
 
14
- | 场景 | 命令 |
14
+ | 项目类型 | 首选命令 |
15
15
  |---|---|
16
- | 全自动流程 | `/sillyspec:auto <需求描述>` |
17
16
  | 全新项目(空目录) | `/sillyspec:init` |
18
17
  | 已有代码的项目 | `/sillyspec:scan` |
19
18
  | 多项目工作区 | `/sillyspec:workspace` |
20
- | 自由思考 | `/sillyspec:explore` |
19
+ | 随时自由思考 | `/sillyspec:explore` |
21
20
 
22
21
  ## 完整工作流
23
22
 
24
23
  ```
25
- 绿地:init → brainstorm → plan → execute → verify → archive
26
- 棕地:scan → brainstorm → plan → execute → verify → archive
27
- 全自动:auto(自动推进全部阶段,支持用户确认门控)
24
+ 绿地:init → brainstorm → plan → execute → [verify] → archive
25
+ 棕地:scan → brainstorm → plan → execute → [verify] → archive
26
+ 工作区:workspace → (init/scan per project) → brainstorm → ...
28
27
  ```
29
28
 
30
- ## 核心命令
29
+ ## 19 个命令
30
+
31
+ ### 核心流程
31
32
 
32
33
  | 命令 | 用途 |
33
34
  |---|---|
34
- | `/sillyspec:auto` | 全自动推进全部流程 |
35
35
  | `/sillyspec:init` | 绿地项目初始化 |
36
- | `/sillyspec:scan` | 棕地项目扫描(生成 7 份文档) |
36
+ | `/sillyspec:scan` | 棕地项目扫描(7 份文档) |
37
37
  | `/sillyspec:brainstorm` | 需求探索 + 生成设计文档 |
38
- | `/sillyspec:plan` | 编写实现计划(Wave 分组 + 拓扑排序) |
38
+ | `/sillyspec:plan` | 编写实现计划(Wave 分组) |
39
39
  | `/sillyspec:execute` | TDD 执行 + 子代理并行 |
40
40
  | `/sillyspec:verify` | 验证(测试 + 代码审查 + E2E) |
41
41
  | `/sillyspec:archive` | 归档变更 |
42
42
 
43
- ## 辅助命令
43
+ ### 辅助工具
44
44
 
45
45
  | 命令 | 用途 |
46
46
  |---|---|
@@ -49,43 +49,39 @@ Claude Code / Cursor / Codex / OpenCode / OpenClaw 通用。
49
49
  | `/sillyspec:explore` | 自由思考模式 |
50
50
  | `/sillyspec:quick` | 快速任务,跳过完整流程 |
51
51
  | `/sillyspec:resume` | 恢复工作 |
52
- | `/sillyspec:doctor` | 项目自检 |
52
+ | `/sillyspec:state` | 查看当前工作状态 |
53
53
  | `/sillyspec:commit` | 智能提交 |
54
54
  | `/sillyspec:export` | 导出成功方案为可复用模板 |
55
+ | `/sillyspec:scan-quick` | 快速扫描(STACK + STRUCTURE) |
55
56
  | `/sillyspec:workspace` | 多项目工作区管理 |
57
+ | `/sillyspec:workspace-sync` | 同步工作区子项目状态 |
56
58
 
57
59
  ## CLI 命令
58
60
 
59
61
  ```bash
60
- sillyspec run auto 全自动推进全部流程
61
- sillyspec run scan 执行代码扫描阶段
62
- sillyspec run brainstorm 执行需求探索阶段
63
- sillyspec run plan 执行实现计划阶段
64
- sillyspec run execute 执行开发阶段(子代理并行 + worktree 隔离)
65
- sillyspec run verify 执行验证阶段
66
- sillyspec run archive 执行归档阶段
67
- sillyspec run quick 快速任务
68
- sillyspec run explore 自由探索
69
- sillyspec progress show 显示当前项目状态
70
- sillyspec setup 安装推荐 MCP 工具
71
- sillyspec init 初始化(零交互,自动检测工具)
62
+ sillyspec status [--json] 显示当前项目状态
63
+ sillyspec next [--json] 显示下一步命令
64
+ sillyspec check [--json] 检查文档完整性
65
+ sillyspec setup 安装推荐 MCP 工具
66
+ sillyspec setup --list 查看已安装 MCP 状态
67
+ sillyspec init 初始化(零交互,自动检测工具)
68
+ sillyspec init --tool <name> 指定工具安装
69
+ sillyspec init --workspace 工作区模式
70
+ sillyspec init --interactive 交互式引导
72
71
  ```
73
72
 
74
- ## 核心特性
73
+ ## MCP 增强
75
74
 
76
- - **规范驱动** 所有代码产出先有设计文档支撑,文档是 AI 的记忆
77
- - **TDD 强制** — execute 阶段强制先写测试再写实现
78
- - **子代理并行** — 同一 Wave 内任务并行执行,加快交付
79
- - **Worktree 隔离** — execute 在独立 worktree 中工作,不污染主分支
80
- - **拓扑排序 Wave** — plan 阶段根据蓝图依赖关系自动重排 Wave 分组
81
- - **E2E 验证** — 内置 E2E 测试流程,支持 Playwright / 浏览器 MCP
82
- - **模块文档** — 支持模块级知识库,AI 执行时按需加载相关模块上下文
83
- - **进度管理** — SQLite 持久化进度,断点恢复
84
- - **MCP 增强** — 一键安装 Context7、grep.app、Chrome DevTools
75
+ 通过 `sillyspec setup` 安装 MCP 工具增强 AI 能力:
85
76
 
86
- ## MCP 工具
77
+ - **Context7** — 查询最新库文档和 API 参考
78
+ - **grep.app** — 搜索开源代码实现
79
+ - **Chrome DevTools** — 浏览器自动化,支持 E2E 验证
87
80
 
88
- ```bash
89
- sillyspec setup 安装全部推荐 MCP
90
- sillyspec setup --list 查看已安装 MCP 状态
81
+ ## E2E 测试流程
82
+
83
+ ```
84
+ plan: 识别 UI 功能 → 检测测试框架/浏览器 MCP → 添加 E2E 任务
85
+ execute: 编码完成后编写 E2E 测试(测试文件或 e2e-steps.md)
86
+ verify: 按优先级执行(E2E框架 > 通用测试 > 浏览器MCP)→ 自动修复循环
91
87
  ```
@@ -0,0 +1,30 @@
1
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
2
+
3
+ ## 核心约束(必须遵守)
4
+ - ❌ 写实现代码(任何语言)
5
+ - ❌ 修改任何源代码文件
6
+ - ❌ 安装依赖或执行构建命令
7
+ - ❌ 创建数据库迁移脚本
8
+ - ❌ 跳过 brainstorm 直接进入 execute/plan
9
+ - ❌ 在 checklist 未完成前开始写设计文档
10
+ - ❌ 编造不存在的表名、字段名、API 端点
11
+ - ❌ 一次性抛出多个问题(必须逐个等待回答)
12
+ - ❌ 用户确认前自行推进到 plan 或任何后续阶段
13
+
14
+ **终态:** brainstorm 完成后唯一出口是 plan 阶段。不允许直接进入 execute 或任何代码操作。
15
+
16
+ ## 加载项目上下文
17
+
18
+ ```bash
19
+ ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
20
+ ```
21
+
22
+ **工作区模式:** AskUserQuestion 选子项目,**cd 到子项目目录执行**,加载子项目上下文 + 共享规范 + 工作区概览,设计文档保存到子项目 `.sillyspec/docs/<project>/changes/`。修改在子项目目录中暂存。
23
+
24
+ **单项目模式:**
25
+ ```bash
26
+ cat .sillyspec/{PROJECT,REQUIREMENTS,ROADMAP}.md 2>/dev/null
27
+ cat .sillyspec/docs/<project>/scan/{STRUCTURE,CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
28
+ ls .sillyspec/changes/ 2>/dev/null | grep -v archive
29
+ ls .sillyspec/knowledge/ 2>/dev/null
30
+ ```
@@ -0,0 +1,6 @@
1
+ 检查已有变更和可复用模板,避免冲突和重复劳动。
2
+
3
+ - **同名变更:** `ls .sillyspec/changes/ | grep -v archive` — 有相关变更则提示避免冲突
4
+ - **全局模板:** `ls ~/.sillyspec/templates/ 2>/dev/null` — 有匹配模板则建议复用
5
+
6
+ 无匹配则跳过,不输出。
@@ -0,0 +1,11 @@
1
+ **如有图片则必做。无图片则跳过此步骤。**
2
+
3
+ **不要只看描述文字,图片包含布局、字段、交互等视觉信息。**
4
+
5
+ 对每张图逐页分析(先主页面后子页面):
6
+ 1. **页面结构** — 识别搜索区、操作栏、表格、表单等区块
7
+ 2. **表单字段** — 字段名、类型、必填、选项
8
+ 3. **交互流程** — 页面跳转、按钮行为、流程线
9
+ 4. **标注备注** — 业务规则、状态说明、权限说明
10
+
11
+ 展示分析结果,问用户确认有无遗漏。
@@ -0,0 +1,23 @@
1
+ 评估需求范围,复杂需求拆分子项目/阶段。
2
+
3
+ **满足以下任意 2 条就建议拆分:**
4
+ - 3+ 个可独立交付的功能模块
5
+ - 3+ 种角色有不同权限和视图
6
+ - 跨页面状态流转(审批流、多步表单)
7
+ - brainstorm 提问发现需求范围过大
8
+
9
+ 确认拆分后生成 MASTER.md:
10
+
11
+ ```bash
12
+ mkdir -p .sillyspec/changes/<变更名>/stages
13
+ ```
14
+
15
+ `MASTER.md` 内容:概述、拆分计划表(阶段/范围/状态)、整体技术方向、阶段间依赖、原型分析摘要、经验记录。
16
+
17
+ ```bash
18
+ git add .sillyspec/changes/<变更名>/MASTER.md
19
+ ```
20
+
21
+ 提示用户:对子阶段执行 brainstorm,读取 MASTER.md + 前序阶段经验 + 对应原型,设计文档保存到 `.sillyspec/changes/<变更名>/stages/<stage-N>/`。
22
+
23
+ 不需要拆分则跳过此步骤。
@@ -0,0 +1,8 @@
1
+ **核心规则:一次只问一个问题。**
2
+
3
+ 1. 从最核心的问题开始(用户到底想做什么?)
4
+ 2. 等待回答,根据信息量决定追问还是进入方案讨论
5
+ 3. 探索顺序按需:目的 → 约束 → 边界 → 成功标准
6
+ 4. **大多数 brainstorm 2-3 轮就应进入方案讨论**
7
+
8
+ 探索阶段可使用项目已配置的 MCP 工具或 web search 调研技术方案和 API 用法,不要凭记忆写方案。检测可用工具:`cat .claude/mcp.json .cursor/mcp.json 2>/dev/null`
@@ -0,0 +1,3 @@
1
+ 提出 2-3 种方案。
2
+
3
+ 每种方案列优劣,给出推荐和理由。
@@ -0,0 +1,3 @@
1
+ 分段展示设计,逐段确认。
2
+
3
+ 简单项目几句话;复杂项目每段 200-300 字逐段确认。
@@ -0,0 +1,21 @@
1
+ 写设计文档并保存到 `.sillyspec/changes/<变更名>/design.md`:
2
+
3
+ ```markdown
4
+ # [Feature Name] 设计
5
+
6
+ ## 动机与范围
7
+ (为什么做、范围边界、成功标准)
8
+
9
+ ## 功能需求
10
+ (需求场景、验收标准)
11
+ - [ ] 标准 1
12
+
13
+ ## 技术方案
14
+ ## 约束和假设
15
+ ## 不在范围内
16
+ ## 文件变更
17
+ ## 代码风格参照
18
+ (参考已有源文件,标注返回值类型、异常类型、注解风格)
19
+ ```
20
+
21
+ **注意:** 引用的表名必须来自 `.sillyspec/docs/<project>/scan/ARCHITECTURE.md` 数据模型或明确标注"新增"。必须先读取该文件。
@@ -0,0 +1,15 @@
1
+ AI 自审(必须执行)。
2
+
3
+ 对照 `.sillyspec/changes/<变更名>/design.md` 检查:
4
+
5
+ - 需求覆盖:是否完整覆盖对话式探索确认的需求点?
6
+ - 约束一致性:技术方案是否与 `.sillyspec/docs/<project>/scan/ARCHITECTURE.md`、`.sillyspec/docs/<project>/scan/CONVENTIONS.md` 一致?
7
+ - 表名/字段真实性:是否来自真实 schema?
8
+ - 范围控制:是否包含不必要功能(YAGNI)?
9
+ - 验收标准:是否具体、可测试?
10
+ - 变更冲突:是否与复用检查阶段检测到的已有变更冲突?
11
+ - 缺口:模糊表述("适当的"/"必要时"等)是否已明确化
12
+ - 缺口:隐含假设(登录态、数据量、并发预期)是否已显式写出
13
+ - 缺口:边界场景(空数据、并发、服务不可用)是否已考虑
14
+
15
+ 发现问题 → 修改文档,重新自审。不确定的标注「⚠️ 自审存疑」让用户判断。
@@ -0,0 +1,3 @@
1
+ ⛔ 门禁步骤。
2
+
3
+ 展示设计方案,使用 AskUserQuestion 让用户三选一:确认 / 需要修改 / 推翻重来。
@@ -0,0 +1,7 @@
1
+ 用户确认后,确认 `.sillyspec/changes/<变更名>/design.md` 已包含完整内容(动机、需求、方案、文件变更、代码风格参照)。如上一步已保存则无需重复。
2
+
3
+ ## 关键原则
4
+ - YAGNI — 无情砍掉不需要的功能
5
+ - 总是探索替代方案
6
+ - 设计可以很短,但必须存在
7
+ - "简单"的项目更需要设计——未检视的假设造成最大浪费
@@ -0,0 +1,26 @@
1
+ phase: brainstorm
2
+ description: 需求探索与方案设计
3
+ requires: [scan]
4
+ steps:
5
+ - file: 01-load-context.md
6
+ name: 加载项目上下文
7
+ - file: 02-reuse-check.md
8
+ name: 协作与复用检查
9
+ - file: 03-prototype-analysis.md
10
+ name: 原型/设计图分析
11
+ - file: 04-module-split.md
12
+ name: 大模块拆分
13
+ - file: 05-dialog-explore.md
14
+ name: 对话式探索
15
+ - file: 06-propose-approaches.md
16
+ name: 提出方案
17
+ - file: 07-present-design.md
18
+ name: 分段展示设计
19
+ - file: 08-write-design.md
20
+ name: 写设计文档
21
+ - file: 09-self-review.md
22
+ name: AI 自审
23
+ - file: 10-user-confirm.md
24
+ name: 用户确认
25
+ - file: 11-output-spec.md
26
+ name: 输出技术方案
@@ -0,0 +1,41 @@
1
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
2
+
3
+ ## 核心约束(必须遵守)
4
+ - ❌ 跳步执行(不允许跳过 plan 直接 execute)
5
+ - ❌ 先写代码后补测试
6
+ - ❌ 编造不存在的方法/注解/路径/类/字段
7
+ - ❌ 自行补全缺失的接口/方法(应报告 BLOCKED)
8
+ - ❌ 意外修改了计划外的文件却不报告
9
+
10
+ **所有任务通过子代理执行,主代理负责调度和记录。**
11
+
12
+ ## 加载上下文
13
+
14
+ ```bash
15
+ ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
16
+ ```
17
+
18
+ **工作区模式:** 根据计划 Task 标注确定子项目,额外加载共享规范 + `.sillyspec/workspace/CODEBASE-OVERVIEW.md`。所有代码修改、测试运行在子项目目录中执行。
19
+
20
+ ```bash
21
+ PLAN=$(ls -t .sillyspec/changes/*/tasks.md 2>/dev/null | head -1); cat "$PLAN"
22
+ LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
23
+ cat "$LATEST"/{tasks,design}.md 2>/dev/null
24
+ cat .sillyspec/docs/<project>/scan/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
25
+ cat .sillyspec/local.yaml 2>/dev/null
26
+ ```
27
+
28
+ **知识库查询(强制步骤):**
29
+ ```bash
30
+ cat .sillyspec/knowledge/INDEX.md 2>/dev/null
31
+ ```
32
+ 根据当前 task 描述中的关键词匹配 INDEX.md 条目。命中时读取对应 knowledge 文件,注入子代理 prompt。未命中则跳过。
33
+
34
+ ## 确认频率
35
+
36
+ 用 AskUserQuestion 询问用户选择:
37
+ - **每个 Wave 确认** — 每个 Wave 完成后展示结果,等用户确认后继续下一 Wave
38
+ - **AI 自主判断** — AI 在遇到 BLOCKED 或计划外变更时才询问,其余自动推进
39
+ - **全自动** — 全部自动执行,不在中途打断用户
40
+
41
+ 如果 `$ARGUMENTS` 指定范围(如 `wave-1`、`task-3`),只执行对应部分。
@@ -0,0 +1,47 @@
1
+ 主代理在 dispatch 子代理前执行以下扫描。
2
+
3
+ ## 编码规范扫描
4
+
5
+ ```bash
6
+ for f in .eslintrc .eslintrc.js .eslintrc.cjs .eslintrc.json .eslintrc.yml \
7
+ .prettierrc .prettierrc.js .prettierrc.json .prettierrc.yml \
8
+ tsconfig.json tsconfig.base.json \
9
+ .editorconfig \
10
+ .tailwind.config.js .tailwind.config.ts \
11
+ .stylelintrc .stylelintrc.js .stylelintrc.json \
12
+ CONTRIBUTING.md CODE_STYLE.md; do
13
+ [ -f "$f" ] && echo "=== $f ===" && cat "$f"
14
+ done
15
+ cat package.json 2>/dev/null | grep -A5 '"lint\|"format\|"typecheck\|"type-check'
16
+ ```
17
+
18
+ 扫描后生成**编码规范摘要**(提炼关键约束,非原文粘贴),格式:
19
+
20
+ ```
21
+ ## 编码规范约束(自动扫描)
22
+ ### ESLint
23
+ {关键规则}
24
+ ### Prettier
25
+ {格式化规则}
26
+ ### TypeScript
27
+ {严格模式设置}
28
+ ### Import / 命名约定
29
+ {导入排序、命名风格}
30
+ ### 框架约定
31
+ {框架特定约定}
32
+ ```
33
+
34
+ 注入到子代理 prompt,追加铁律:**遵守编码规范:如规范与任务描述冲突,优先遵守规范并报告。**
35
+
36
+ ## 测试模式扫描(E2E/测试任务时执行)
37
+
38
+ ```bash
39
+ cat package.json 2>/dev/null | grep -E "playwright|cypress|jest|vitest|mocha"
40
+ find . -name "*.spec.ts" -o -name "*.test.ts" -o -name "*.spec.tsx" -o -name "*.spec.js" \
41
+ -o -name "playwright.config.*" -o -name "vitest.config.*" -o -name "jest.config.*" \
42
+ 2>/dev/null | grep -v node_modules | head -10
43
+ ```
44
+
45
+ 读取 1-2 个已有测试文件作为风格参考,生成测试模式摘要(框架、断言风格、Fixtures、文件组织、配置要点),注入到 E2E/测试子代理 prompt。
46
+
47
+ 追加铁律:**参照已有测试风格编写新测试,不要凭记忆写测试。**
@@ -0,0 +1,19 @@
1
+ ## Skill 扫描
2
+
3
+ ```bash
4
+ for skill_dir in .claude/skills/*/SKILL.md .cursor/skills/*/SKILL.md .opencode/skills/*/SKILL.md; do
5
+ [ -f "$skill_dir" ] && echo "=== $skill_dir ===" && cat "$skill_dir"
6
+ done
7
+ ```
8
+
9
+ 根据任务关键词匹配 skill,匹配到的 SKILL.md 全文注入子代理 prompt。
10
+
11
+ ## MCP 能力检测
12
+
13
+ 检查当前可用工具列表中是否存在以下 MCP 工具:
14
+ - Context7 / 文档查询工具
15
+ - 数据库工具(postgres/sqlite/mysql/redis)
16
+ - 浏览器工具(browser/chrome/playwright/devtools)
17
+
18
+ 有 Context7 → 提示子代理用 MCP 查文档;无 → 提示用 web search。
19
+ 有数据库 MCP → 在子代理 prompt 注入数据操作可用。
@@ -0,0 +1,22 @@
1
+ ## 执行流程
2
+
3
+ 1. 解析 tasks.md,按 Wave 分组
4
+ 2. 同一 Wave 内的任务**并行启动**子代理,不同 Wave **串行等待**
5
+ 3. 每个 Wave 完成后,根据用户选择的确认频率决定是否暂停
6
+ 4. 子代理返回结果后,主代理勾选 tasks.md、更新 STATE.md
7
+
8
+ ## 子代理 Prompt 模板
9
+
10
+ 主代理 dispatch 子代理前,必须准备以下 prompt(所有内容**内联**,不让子代理自己读文件)。prompt 格式见 `04b-prompt-template.md`。
11
+
12
+ 需要注入的变量:
13
+ - `{任务描述}` — tasks.md 中当前 task 的完整内容(包括步骤字段)
14
+ - `{CONVENTIONS.md 全文}` — 来自 `.sillyspec/docs/<project>/scan/CONVENTIONS.md`
15
+ - `{编码规范约束}` — 02-scan-conventions 步骤生成的规范摘要
16
+ - `{测试模式参考}` — 仅 E2E/测试任务注入,02-scan-conventions 步骤生成
17
+ - `{ARCHITECTURE.md 全文}` — 来自 `.sillyspec/docs/<project>/scan/ARCHITECTURE.md`
18
+ - `{构建命令}` — `.sillyspec/local.yaml` 中的 build 命令
19
+ - `{工作目录}` — 子项目目录路径
20
+ - `{相关知识}` — knowledge/ 中匹配到的内容,未命中则删除此段
21
+ - `{文档查询指引}` — MCP 检测结果动态注入
22
+ - `{本地 Skills}` — 匹配到的 SKILL.md 全文,无匹配则省略
@@ -0,0 +1,54 @@
1
+ 子代理 Prompt 模板(供 04-assign-task.md 引用,dispatch 时所有变量需内联):
2
+
3
+ ```
4
+ 你正在执行任务:
5
+
6
+ ## 任务描述
7
+ {任务描述}
8
+
9
+ ## 项目约定
10
+ {CONVENTIONS.md 全文}
11
+
12
+ ## 编码规范约束(自动扫描)
13
+ {编码规范约束}
14
+
15
+ ## 测试模式参考(仅 E2E/测试任务注入)
16
+ {测试模式参考}
17
+
18
+ ## 项目架构
19
+ {ARCHITECTURE.md 全文}
20
+
21
+ ## 构建命令 / 工作目录
22
+ {构建命令}
23
+ {工作目录}
24
+
25
+ ## 相关知识 / 文档查询指引 / 本地 Skills
26
+ {相关知识}
27
+ {文档查询指引}
28
+ {本地 Skills}
29
+
30
+ ## 数据操作
31
+ ⛔ 任何 DML/DDL 操作必须暂停并报告给用户确认。新建表不受此限制。
32
+
33
+ ## 铁律
34
+ 1. **先读后写:** 先 cat 要修改的文件和参考文件,确认风格后再写
35
+ 2. **grep 确认:** 调用已有方法前必须 grep 确认存在,grep 不到 → BLOCKED
36
+ 3. **不编造:** 不编造不存在的方法/注解/类/字段
37
+ 4. **不自行补全:** 缺失接口/方法 → BLOCKED
38
+ 5. **TDD 不跳步:** 按任务步骤逐步执行,每步必须运行测试并确认结果
39
+ 6. **测试直接通过 = 测了已有行为,重写测试**
40
+ 7. **E2E 任务:** 先 cat 相关代码,参考测试模式,查阅用法文档,写完立即跑确认通过
41
+ 8. **Lint 校验:** 完成后运行 lint,自动修复可修复的问题
42
+ 9. **暂存:** lint 通过后 git add -A(不要 commit)
43
+ 10. **遵守编码规范:** 规范与任务描述冲突时,优先遵守规范并报告
44
+ 11. **参照已有测试风格,不要凭记忆写测试**
45
+ 12. **先 grep 项目中类似功能的已有代码,照着现有模式写**
46
+
47
+ ## 完成后报告(严格格式)
48
+ - **Status:** DONE / DONE_WITH_CONCERNS / BLOCKED
49
+ - **改动文件:** {列表}
50
+ - **测试结果:** {通过/失败/跳过及原因}
51
+ - **Commit:** {hash 或 "无"}
52
+ - **问题:** {BLOCKED 原因 / DONE_WITH_CONCERNS 描述 / 无}
53
+ - **发现的坑:** {项目特有规律/陷阱/约定,无则写"无"}
54
+ ```
@@ -0,0 +1,7 @@
1
+ 子代理执行任务的第一步:写测试。
2
+
3
+ 按 tasks.md 中当前 task 的「步骤」字段第 1 步执行:写测试。
4
+
5
+ - 运行测试确认失败(TDD 红)
6
+ - 如果测试直接通过 → 重新写测试(测了已有行为)
7
+ - 纯配置/数据/文档类任务跳过此步骤
@@ -0,0 +1,8 @@
1
+ 子代理执行任务的核心步骤:写代码。
2
+
3
+ 按 tasks.md 中当前 task 的「步骤」字段第 3 步执行:写代码实现。
4
+
5
+ - 必须先 cat 要修改的文件和参考文件
6
+ - grep 确认调用的方法存在
7
+ - 遵守编码规范约束
8
+ - 纯配置/数据/文档类任务直接执行实现步骤
@@ -0,0 +1,26 @@
1
+ 子代理执行任务的验证步骤:运行测试。
2
+
3
+ 按 tasks.md 中当前 task 的「步骤」字段第 4 步执行:运行测试确认通过。
4
+
5
+ - 运行全部测试,确认通过
6
+ - 运行 lint,自动修复可修复的问题
7
+ - lint 通过后 git add -A
8
+
9
+ ## 子代理结果处理
10
+
11
+ 子代理返回后,主代理:
12
+
13
+ 1. **DONE** → 勾选 tasks.md,记录精确到秒的时间戳
14
+ 2. **DONE_WITH_CONCERNS** → 勾选 tasks.md,记录问题到报告
15
+ 3. **BLOCKED** → 不勾选,报告给用户,AskUserQuestion 三选一:
16
+ - 重试(重新 dispatch 同一任务)
17
+ - 跳过(勾选并标注 SKIPPED)
18
+ - 停止(暂停执行,用户处理后继续)
19
+
20
+ **知识库写入:** 如果子代理报告中「发现的坑」不为"无",追加到 `.sillyspec/knowledge/uncategorized.md`:
21
+ ```markdown
22
+ ### [待确认] {简短标题}
23
+ > 来源:{变更名} / {task 编号} | {时间戳}
24
+
25
+ {坑的具体描述}
26
+ ```
@@ -0,0 +1,28 @@
1
+ 如果测试失败或子代理返回 BLOCKED,主代理处理修复。
2
+
3
+ **测试失败修复循环:**
4
+
5
+ ```
6
+ ROUND = 1
7
+ MAX_ROUNDS = 5
8
+
9
+ while ROUND <= MAX_ROUNDS:
10
+ 1. 运行失败测试,捕获完整输出
11
+ 2. 全部通过 → 跳出循环,标记 ✅
12
+ 3. 对每个失败测试:
13
+ a. 读取 .sillyspec/local.yaml 中当前变更的 fixAttempts
14
+ b. fixAttempts >= MAX_ROUNDS → 跳过,标记 ❌ MAX_REACHED
15
+ c. 否则 → 重新 dispatch 子代理修复,prompt 包含:
16
+ - 失败的测试文件路径和测试名
17
+ - 完整错误信息(含期望值 vs 实际值)
18
+ - 相关源文件路径
19
+ - "只修复这个测试失败,不要改其他代码"
20
+ d. 修复后重跑确认
21
+ e. 通过 → fixAttempts 不变;仍失败 → fixAttempts + 1
22
+ 4. 写入 .sillyspec/local.yaml
23
+ 5. ROUND++
24
+ 6. 本轮无任何修复 → 跳出循环
25
+ ```
26
+
27
+ **BLOCKED 处理:**
28
+ - AskUserQuestion 三选一:重试 / 跳过 / 停止