sillyspec 3.9.0 → 3.9.1

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 (212) hide show
  1. package/.claude/skills/sillyspec-archive/SKILL.md +17 -0
  2. package/.claude/skills/sillyspec-auto/SKILL.md +78 -0
  3. package/.claude/skills/sillyspec-brainstorm/SKILL.md +17 -0
  4. package/{templates/commit.md → .claude/skills/sillyspec-commit/SKILL.md} +32 -47
  5. package/.claude/skills/sillyspec-continue/SKILL.md +45 -0
  6. package/.claude/skills/sillyspec-doctor/SKILL.md +27 -0
  7. package/.claude/skills/sillyspec-execute/SKILL.md +17 -0
  8. package/.claude/skills/sillyspec-explore/SKILL.md +96 -0
  9. package/.claude/skills/sillyspec-export/SKILL.md +53 -0
  10. package/.claude/skills/sillyspec-init/SKILL.md +170 -0
  11. package/.claude/skills/sillyspec-plan/SKILL.md +52 -0
  12. package/.claude/skills/sillyspec-propose/SKILL.md +17 -0
  13. package/.claude/skills/sillyspec-quick/SKILL.md +17 -0
  14. package/.claude/skills/sillyspec-resume/SKILL.md +111 -0
  15. package/.claude/skills/sillyspec-scan/SKILL.md +17 -0
  16. package/.claude/skills/sillyspec-state/SKILL.md +54 -0
  17. package/.claude/skills/sillyspec-status/SKILL.md +17 -0
  18. package/.claude/skills/sillyspec-verify/SKILL.md +17 -0
  19. package/.claude/skills/sillyspec-workspace/SKILL.md +149 -0
  20. package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +97 -0
  21. package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +51 -0
  22. package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +29 -0
  23. package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +34 -0
  24. package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +13 -0
  25. package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +43 -0
  26. package/.sillyspec/changes/auto-mode/design.md +50 -0
  27. package/.sillyspec/changes/auto-mode/proposal.md +19 -0
  28. package/.sillyspec/changes/auto-mode/requirements.md +21 -0
  29. package/.sillyspec/changes/auto-mode/tasks.md +7 -0
  30. package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +199 -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/projects/sillyspec.yaml +3 -0
  38. package/README.md +12 -5
  39. package/package.json +7 -9
  40. package/packages/dashboard/dist/assets/index-CntACGUN.css +1 -0
  41. package/packages/dashboard/dist/assets/index-RsLVPAy7.js +7446 -0
  42. package/packages/dashboard/dist/index.html +3 -2
  43. package/packages/dashboard/package-lock.json +226 -6
  44. package/packages/dashboard/package.json +8 -5
  45. package/packages/dashboard/public/logo.jpg +0 -0
  46. package/packages/dashboard/server/executor.js +1 -1
  47. package/packages/dashboard/server/index.js +336 -113
  48. package/packages/dashboard/server/parser.js +333 -29
  49. package/packages/dashboard/server/watcher.js +203 -131
  50. package/packages/dashboard/src/App.vue +187 -11
  51. package/packages/dashboard/src/components/ActionBar.vue +26 -42
  52. package/packages/dashboard/src/components/CommandPalette.vue +40 -65
  53. package/packages/dashboard/src/components/DetailPanel.vue +68 -53
  54. package/packages/dashboard/src/components/DocPreview.vue +160 -0
  55. package/packages/dashboard/src/components/DocTree.vue +58 -0
  56. package/packages/dashboard/src/components/LogStream.vue +13 -33
  57. package/packages/dashboard/src/components/PipelineStage.vue +8 -8
  58. package/packages/dashboard/src/components/PipelineView.vue +80 -45
  59. package/packages/dashboard/src/components/ProjectList.vue +103 -45
  60. package/packages/dashboard/src/components/ProjectOverview.vue +178 -0
  61. package/packages/dashboard/src/components/StageBadge.vue +13 -13
  62. package/packages/dashboard/src/components/StepCard.vue +15 -15
  63. package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -0
  64. package/packages/dashboard/src/components/detail/GitDetail.vue +61 -0
  65. package/packages/dashboard/src/components/detail/TechDetail.vue +43 -0
  66. package/packages/dashboard/src/composables/useDashboard.js +20 -6
  67. package/packages/dashboard/src/composables/useKeyboard.js +6 -4
  68. package/packages/dashboard/src/main.js +4 -1
  69. package/packages/dashboard/src/style.css +17 -17
  70. package/src/index.js +134 -22
  71. package/src/init.js +83 -228
  72. package/src/migrate.js +117 -0
  73. package/src/progress.js +459 -0
  74. package/src/run.js +624 -0
  75. package/src/setup.js +2 -72
  76. package/src/stages/archive.js +54 -0
  77. package/src/stages/brainstorm.js +239 -0
  78. package/src/stages/doctor.js +303 -0
  79. package/src/stages/execute.js +262 -0
  80. package/src/stages/index.js +26 -0
  81. package/src/stages/plan.js +282 -0
  82. package/src/stages/propose.js +115 -0
  83. package/src/stages/quick.js +64 -0
  84. package/src/stages/scan.js +141 -0
  85. package/src/stages/status.js +65 -0
  86. package/src/stages/verify.js +135 -0
  87. package/dist/steps/brainstorm/01-load-context.md +0 -30
  88. package/dist/steps/brainstorm/02-reuse-check.md +0 -6
  89. package/dist/steps/brainstorm/03-prototype-analysis.md +0 -11
  90. package/dist/steps/brainstorm/04-module-split.md +0 -23
  91. package/dist/steps/brainstorm/05-dialog-explore.md +0 -8
  92. package/dist/steps/brainstorm/06-propose-approaches.md +0 -3
  93. package/dist/steps/brainstorm/07-present-design.md +0 -3
  94. package/dist/steps/brainstorm/08-write-design.md +0 -21
  95. package/dist/steps/brainstorm/09-self-review.md +0 -15
  96. package/dist/steps/brainstorm/10-user-confirm.md +0 -3
  97. package/dist/steps/brainstorm/11-output-spec.md +0 -7
  98. package/dist/steps/brainstorm/manifest.yaml +0 -26
  99. package/dist/steps/execute/01-load-context.md +0 -41
  100. package/dist/steps/execute/02-scan-conventions.md +0 -47
  101. package/dist/steps/execute/03-skill-mcp.md +0 -19
  102. package/dist/steps/execute/04-assign-task.md +0 -22
  103. package/dist/steps/execute/04b-prompt-template.md +0 -54
  104. package/dist/steps/execute/05-write-test.md +0 -7
  105. package/dist/steps/execute/06-write-code.md +0 -8
  106. package/dist/steps/execute/07-run-test.md +0 -26
  107. package/dist/steps/execute/08-fix-issues.md +0 -28
  108. package/dist/steps/execute/09-next-task.md +0 -33
  109. package/dist/steps/execute/manifest.yaml +0 -28
  110. package/dist/steps/plan/01-load-context.md +0 -22
  111. package/dist/steps/plan/02-anchor-confirm.md +0 -1
  112. package/dist/steps/plan/03-expand-tasks.md +0 -33
  113. package/dist/steps/plan/04-mark-order.md +0 -15
  114. package/dist/steps/plan/05-e2e-planning.md +0 -17
  115. package/dist/steps/plan/06-self-check.md +0 -16
  116. package/dist/steps/plan/07-save.md +0 -1
  117. package/dist/steps/plan/manifest.yaml +0 -18
  118. package/dist/steps/scan/01-env-detect.md +0 -51
  119. package/dist/steps/scan/02-tech-stack.md +0 -16
  120. package/dist/steps/scan/03-conventions.md +0 -16
  121. package/dist/steps/scan/04-structure.md +0 -19
  122. package/dist/steps/scan/05-quality.md +0 -18
  123. package/dist/steps/scan/06-complete.md +0 -49
  124. package/dist/steps/scan/manifest.yaml +0 -16
  125. package/dist/steps/verify/01-load-specs.md +0 -28
  126. package/dist/steps/verify/02-check-tasks.md +0 -1
  127. package/dist/steps/verify/03-check-design.md +0 -6
  128. package/dist/steps/verify/04-run-tests.md +0 -7
  129. package/dist/steps/verify/05-e2e-tests.md +0 -27
  130. package/dist/steps/verify/05b-e2e-fix.md +0 -33
  131. package/dist/steps/verify/06-code-quality.md +0 -25
  132. package/dist/steps/verify/07-lint-check.md +0 -27
  133. package/dist/steps/verify/08-output-report.md +0 -14
  134. package/dist/steps/verify/manifest.yaml +0 -22
  135. package/docs/.vitepress/config.mts +0 -45
  136. package/docs/.vitepress/dist/404.html +0 -25
  137. package/docs/.vitepress/dist/assets/app.YytxICdd.js +0 -1
  138. package/docs/.vitepress/dist/assets/chunks/framework.Czhw_PXq.js +0 -19
  139. package/docs/.vitepress/dist/assets/chunks/theme.DusTRZQk.js +0 -1
  140. package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.js +0 -1
  141. package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.lean.js +0 -1
  142. package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  143. package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  144. package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  145. package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  146. package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  147. package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  148. package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  149. package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  150. package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  151. package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  152. package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  153. package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  154. package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  155. package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  156. package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.js +0 -15
  157. package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.lean.js +0 -1
  158. package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.js +0 -4
  159. package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.lean.js +0 -1
  160. package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.js +0 -1
  161. package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.lean.js +0 -1
  162. package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.js +0 -4
  163. package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.lean.js +0 -1
  164. package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.js +0 -5
  165. package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.lean.js +0 -1
  166. package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.js +0 -28
  167. package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.lean.js +0 -1
  168. package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.js +0 -30
  169. package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.lean.js +0 -1
  170. package/docs/.vitepress/dist/assets/style.DFTx90Kk.css +0 -1
  171. package/docs/.vitepress/dist/hashmap.json +0 -1
  172. package/docs/.vitepress/dist/index.html +0 -28
  173. package/docs/.vitepress/dist/sillyspec/commands.html +0 -42
  174. package/docs/.vitepress/dist/sillyspec/dashboard.html +0 -31
  175. package/docs/.vitepress/dist/sillyspec/file-io.html +0 -28
  176. package/docs/.vitepress/dist/sillyspec/getting-started.html +0 -31
  177. package/docs/.vitepress/dist/sillyspec/install.html +0 -32
  178. package/docs/.vitepress/dist/sillyspec/lifecycle.html +0 -55
  179. package/docs/.vitepress/dist/sillyspec/structure.html +0 -57
  180. package/docs/.vitepress/dist/vp-icons.css +0 -1
  181. package/docs/index.md +0 -34
  182. package/docs/sillyspec/commands.md +0 -218
  183. package/docs/sillyspec/dashboard.md +0 -51
  184. package/docs/sillyspec/file-io.md +0 -34
  185. package/docs/sillyspec/getting-started.md +0 -61
  186. package/docs/sillyspec/install.md +0 -51
  187. package/docs/sillyspec/lifecycle.md +0 -146
  188. package/docs/sillyspec/structure.md +0 -62
  189. package/packages/dashboard/dist/assets/index-Bh-GPjKY.css +0 -1
  190. package/packages/dashboard/dist/assets/index-CrCn5Gg6.js +0 -17
  191. package/src/step.js +0 -543
  192. package/templates/archive.md +0 -120
  193. package/templates/brainstorm.md +0 -170
  194. package/templates/continue.md +0 -32
  195. package/templates/execute.md +0 -304
  196. package/templates/explore.md +0 -59
  197. package/templates/export.md +0 -21
  198. package/templates/init.md +0 -61
  199. package/templates/plan.md +0 -146
  200. package/templates/quick.md +0 -135
  201. package/templates/scan-quick.md +0 -49
  202. package/templates/scan.md +0 -156
  203. package/templates/skills/playwright-e2e/SKILL.md +0 -340
  204. package/templates/status.md +0 -75
  205. package/templates/verify.md +0 -236
  206. package/templates/workspace-sync.md +0 -99
  207. package/templates/workspace.md +0 -70
  208. /package/.sillyspec/{specs → changes/brainstorm-archive}/2026-04-05-dashboard-design.md +0 -0
  209. /package/{docs/.vitepress/dist/logo.jpg → logo.jpg} +0 -0
  210. /package/{docs/.vitepress → packages/dashboard}/dist/favicon.jpg +0 -0
  211. /package/{docs/public → packages/dashboard/dist}/logo.jpg +0 -0
  212. /package/{docs → packages/dashboard}/public/favicon.jpg +0 -0
@@ -1,19 +0,0 @@
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 注入数据操作可用。
@@ -1,22 +0,0 @@
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 全文,无匹配则省略
@@ -1,54 +0,0 @@
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
- ```
@@ -1,7 +0,0 @@
1
- 子代理执行任务的第一步:写测试。
2
-
3
- 按 tasks.md 中当前 task 的「步骤」字段第 1 步执行:写测试。
4
-
5
- - 运行测试确认失败(TDD 红)
6
- - 如果测试直接通过 → 重新写测试(测了已有行为)
7
- - 纯配置/数据/文档类任务跳过此步骤
@@ -1,8 +0,0 @@
1
- 子代理执行任务的核心步骤:写代码。
2
-
3
- 按 tasks.md 中当前 task 的「步骤」字段第 3 步执行:写代码实现。
4
-
5
- - 必须先 cat 要修改的文件和参考文件
6
- - grep 确认调用的方法存在
7
- - 遵守编码规范约束
8
- - 纯配置/数据/文档类任务直接执行实现步骤
@@ -1,26 +0,0 @@
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
- ```
@@ -1,28 +0,0 @@
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 三选一:重试 / 跳过 / 停止
@@ -1,33 +0,0 @@
1
- 当前任务完成后,推进到下一个任务。
2
-
3
- 1. 检查当前 Wave 是否还有未完成任务 → 继续分配
4
- 2. 当前 Wave 完成 → 根据确认频率决定是否暂停
5
- 3. 所有 Wave 完成 → 执行以下收尾
6
-
7
- ## 任务勾选自检(必须执行)
8
-
9
- ```bash
10
- cat .sillyspec/changes/*/tasks.md 2>/dev/null
11
- ```
12
-
13
- 逐条验证:
14
- 1. 所有返回 DONE/DONE_WITH_CONCERNS 的任务是否已勾选 `- [x]`?
15
- 2. 勾选的任务是否都记录了精确到秒的时间戳 `[YYYY-MM-DD HH:MM:SS]`?
16
- 3. tasks.md 中是否还有未勾选 `- [ ]` 的已完成任务?
17
-
18
- 发现遗漏 → 立即补勾选 + 补时间戳。
19
-
20
- ## 知识库审阅
21
-
22
- ```bash
23
- grep -c '^\### \[待确认\]' .sillyspec/knowledge/uncategorized.md 2>/dev/null
24
- ```
25
-
26
- 如果有待确认条目,提示用户审阅 `.sillyspec/knowledge/uncategorized.md`。
27
-
28
- ## 下一步
29
-
30
- 用 AskUserQuestion 询问用户:
31
- 1. **验证** — 执行 verify 全面验证
32
- 2. **归档** — 跳过 verify,执行 archive
33
- 3. **继续开发** — 不结束当前阶段
@@ -1,28 +0,0 @@
1
- phase: execute
2
- description: 任务执行
3
- requires: [plan]
4
- loop:
5
- start: 5
6
- end: 9
7
- description: 写测试→写代码→跑测试→修复→下一个任务,循环直到所有任务完成
8
- steps:
9
- - file: 01-load-context.md
10
- name: 加载上下文
11
- - file: 02-scan-conventions.md
12
- name: 规范扫描
13
- - file: 03-skill-mcp.md
14
- name: Skill/MCP 检测
15
- - file: 04-assign-task.md
16
- name: 分配任务
17
- - file: 04b-prompt-template.md
18
- name: 子代理 Prompt 模板
19
- - file: 05-write-test.md
20
- name: 写测试
21
- - file: 06-write-code.md
22
- name: 写代码
23
- - file: 07-run-test.md
24
- name: 运行测试
25
- - file: 08-fix-issues.md
26
- name: 修复问题
27
- - file: 09-next-task.md
28
- name: 下一个任务
@@ -1,22 +0,0 @@
1
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
2
-
3
- ## 核心约束(必须遵守)
4
- - ❌ 写实现代码(只写计划中的代码示例)
5
- - ❌ 每个步骤缺验证命令和预期输出
6
- - ❌ 编造表名、字段名(必须来自 ARCHITECTURE.md 或 design.md)
7
-
8
- ## 加载上下文
9
-
10
- ```bash
11
- ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
12
- ```
13
-
14
- **工作区模式:** 加载 `.sillyspec/workspace/CODEBASE-OVERVIEW.md` + 共享规范 + 子项目的 CONVENTIONS/ARCHITECTURE/STACK + `.sillyspec/REQUIREMENTS.md`。
15
-
16
- **单项目模式:**
17
- ```bash
18
- LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
19
- cat "$LATEST"/{design,tasks}.md 2>/dev/null
20
- cat .sillyspec/docs/<project>/scan/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
21
- cat .sillyspec/REQUIREMENTS.md 2>/dev/null
22
- ```
@@ -1 +0,0 @@
1
- 确认实际存在的文件(design / tasks),不存在的标注跳过。
@@ -1,33 +0,0 @@
1
- 把 tasks.md 每个 checkbox **保留 `- [ ]` 格式**并展开为任务描述,按 Wave 分组组织。工作区模式下每个 Task 标注所属项目。
2
-
3
- **输出格式要求(必须严格遵守):**
4
-
5
- ```markdown
6
- ### Wave 1(并行,无依赖)
7
- - [ ] 添加用户创建接口
8
- - 修改: `UserController.java`、`UserService.java`
9
- - 参考: `RoleController.createRole`
10
- - 步骤:
11
- 1. 写测试 UserControllerTest.testCreateUser
12
- 2. 运行测试确认失败
13
- 3. 写 UserController.createUser
14
- 4. 运行测试确认通过
15
-
16
- - [ ] 添加角色创建接口
17
- - ...
18
- ```
19
-
20
- **每个 Task 必须保留 `- [ ]` checkbox,这是 execute 阶段勾选完成状态的依据。** 禁止写成纯文本列表。
21
-
22
- **每个 Task 必须包含「步骤」字段,列出 TDD 执行顺序:**
23
- - 1. 写测试 → 2. 运行确认失败 → 3. 写代码 → 4. 运行确认通过
24
-
25
- **纯配置/数据/文档类任务可跳过 TDD,步骤简化为:1. 实现 → 2. 验证**
26
-
27
- **注意:不需要写精确方法签名和代码示例。** 方法签名和代码风格由 execute 阶段先读后写确认。plan 专注"做什么"和"执行顺序"。
28
-
29
- **每个 Task 包含:**
30
- - 精确文件路径(修改哪个文件)
31
- - 任务描述(做什么,一两句话说清楚)
32
- - 涉及已有类调用时,标注参考文件(如"参考 `RoleController.createRole`)
33
- - 依赖关系
@@ -1,15 +0,0 @@
1
- 按 Wave 分组,标注依赖关系:
2
-
3
- ```markdown
4
- ### Wave 1(并行,无依赖)
5
- - [ ] 添加用户创建接口
6
- - 修改: `UserController.java`、`UserService.java`
7
- - 参考: `RoleController.createRole`
8
-
9
- - [ ] 添加角色创建接口
10
- - ...
11
-
12
- ### Wave 2(依赖 Wave 1)
13
- - [ ] 添加用户列表查询(依赖用户创建完成)
14
- - ...
15
- ```
@@ -1,17 +0,0 @@
1
- 识别 design.md 中是否有 UI 交互功能(页面跳转、表单提交、按钮操作等),如有则:
2
-
3
- **检测测试能力(按优先级):**
4
- ```bash
5
- # 优先级 1:专业 E2E 框架
6
- cat package.json 2>/dev/null | grep -E "playwright|cypress" ; ls node_modules/playwright node_modules/cypress 2>/dev/null
7
- # 优先级 2:通用测试框架
8
- cat package.json 2>/dev/null | grep -E "jest|vitest|mocha" ; ls node_modules/jest node_modules/vitest 2>/dev/null
9
- # 优先级 3:浏览器 MCP
10
- cat .claude/mcp.json .cursor/mcp.json 2>/dev/null | grep -i "browser\|chrome\|devtools"
11
- ```
12
-
13
- - **有 E2E/测试框架** → tasks.md 中添加 E2E 测试任务(同波次,编码后编写)
14
- - **无框架但有浏览器 MCP** → tasks.md 中添加"编写 e2e-steps.md 测试步骤"任务
15
- - **什么都没有** → 提示用户运行 `sillyspec setup` 安装 MCP 工具,或手动安装测试框架
16
-
17
- 纯后端/无 UI 的变更跳过此步骤。
@@ -1,16 +0,0 @@
1
- 自检门控:
2
-
3
- - [ ] 每个 task 有具体文件路径?
4
- - [ ] 标注了 Wave 和依赖关系?
5
- - [ ] 涉及 UI 的任务是否有对应的 E2E 测试任务?
6
- - [ ] **design.md 中的每个功能点是否都在 tasks.md 中有对应任务?**
7
-
8
- ### 设计完整性对照(必须完成)
9
-
10
- 逐条检查 design.md 中的功能描述,确保每个功能点都有对应的 task。特别关注:
11
-
12
- 1. **逐功能点扫描:** 将 design.md 中描述的每个功能点(含子功能)列出,与 tasks.md 逐条对照
13
- 2. **前后端覆盖检查:** 涉及前后端协作的功能,确认前端和后端各有独立 task
14
- 3. **遗漏项处理:** 发现未覆盖的功能点 → 追加 task 到对应 Wave,并提示用户确认
15
-
16
- 发现遗漏时用 AskUserQuestion 确认追加内容,用户确认后再写入 tasks.md。
@@ -1 +0,0 @@
1
- **直接覆盖** `.sillyspec/changes/<变更名>/tasks.md`。不再生成单独的 plan.md 文件。
@@ -1,18 +0,0 @@
1
- phase: plan
2
- description: 任务分解与执行计划
3
- requires: [brainstorm]
4
- steps:
5
- - file: 01-load-context.md
6
- name: 加载上下文
7
- - file: 02-anchor-confirm.md
8
- name: 锚定确认
9
- - file: 03-expand-tasks.md
10
- name: 逐任务展开
11
- - file: 04-mark-order.md
12
- name: 标注执行顺序
13
- - file: 05-e2e-planning.md
14
- name: E2E 测试规划
15
- - file: 06-self-check.md
16
- name: 自检门控
17
- - file: 07-save.md
18
- name: 保存
@@ -1,51 +0,0 @@
1
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
2
-
3
- 你现在是 SillySpec 代码库扫描器(编排器)。**你不读源码,只编排子代理或串行执行。**
4
-
5
- ## 绝对规则
6
- - ❌ 修改代码 / 编造路径 / 主代理读源码全文
7
- - ✅ 交互模式每步等用户 / 文档只写 `.sillyspec/docs/<project>/scan/`
8
-
9
- ## 参数处理
10
- - 空白 → 交互式引导(逐步询问)
11
- - `--deep` → 直接深度扫描
12
- - 其他 → 快速扫描该区域
13
-
14
- ## 交互式引导(参数为空时)
15
-
16
- ### 检查工作区 & 已有文档
17
-
18
- ```bash
19
- ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q . # 有子项目配置 → 工作区模式
20
- ls .sillyspec/docs/<project>/scan/ 2>/dev/null # 检查已有文档
21
- wc -l .sillyspec/docs/<project>/scan/*.md 2>/dev/null
22
- ```
23
-
24
- - 已有 3 份 → 建议升级深度扫描
25
- - 已有 7 份 → 建议刷新或跳过
26
- - 工作区 → 逐个扫描 / 选子项目 / 退出
27
-
28
- ### 选择扫描模式、范围、排除目录、确认
29
- 按原流程交互,确认后进入扫描。
30
-
31
- ## 构建环境探测(主代理执行)
32
-
33
- ```bash
34
- cat package.json pom.xml build.gradle go.mod Cargo.toml requirements.txt pyproject.toml Gemfile composer.json 2>/dev/null
35
- find . -maxdepth 2 -name "*.config.*" -not -path "*/node_modules/*" -not -path "*/.git/*" | head -20 | xargs cat 2>/dev/null
36
- ```
37
-
38
- 结果保存到 `.sillyspec/docs/<project>/scan/_env-detect.md`(临时文件,扫描完删除)。
39
-
40
- ## 断点续扫
41
-
42
- ```bash
43
- for f in ARCHITECTURE STRUCTURE CONVENTIONS INTEGRATIONS TESTING CONCERNS PROJECT; do
44
- [ -f ".sillyspec/docs/<project>/scan/${f}.md" ] && echo "✅ ${f}.md" || echo "⬜ ${f}.md"
45
- done
46
- ```
47
-
48
- 只生成缺失的文档。
49
-
50
- ## 子代理可用性检测
51
- 检查是否有 Task/Spawn 工具。有 → 子代理模式,无 → 串行模式。
@@ -1,16 +0,0 @@
1
- 扫描技术栈 + 数据库 Schema + 架构模式,生成 `ARCHITECTURE.md`。
2
-
3
- 参考 `.sillyspec/docs/<project>/scan/_env-detect.md`。
4
-
5
- 用 grep/rg 搜索(`@Entity`、`schema.prisma`、`models.py` 等),**禁止读源码全文**。
6
-
7
- Schema 只记表名+说明+字段数。
8
-
9
- 输出文件必须包含以下章节:
10
- - `## 技术栈`
11
- - `## 架构概览`
12
- - `## 数据模型(摘要)`
13
-
14
- 路径用反引号,不编造。保存到 `.sillyspec/docs/<project>/scan/ARCHITECTURE.md`。
15
-
16
- 完成后立即写文件,下一个 area 开始前清除源码上下文。
@@ -1,16 +0,0 @@
1
- 扫描框架隐形规则 + 实体继承 + 代码风格,生成 `CONVENTIONS.md`。
2
-
3
- 参考 `.sillyspec/docs/<project>/scan/_env-detect.md`。
4
-
5
- 用 grep 搜索拦截器/插件/逻辑删除/基类/审计字段,**禁止读源码全文**。
6
-
7
- 根据检测到的语言/框架自行决定搜索什么模式,提取 3-5 个典型示例。
8
-
9
- 输出文件必须包含以下章节:
10
- - `## 框架隐形规则`
11
- - `## 实体继承规范`
12
- - `## 代码风格`
13
-
14
- 路径用反引号,不编造。保存到 `.sillyspec/docs/<project>/scan/CONVENTIONS.md`。
15
-
16
- 完成后立即写文件,下一个 area 开始前清除源码上下文。
@@ -1,19 +0,0 @@
1
- 扫描目录结构 + 外部集成,生成 `STRUCTURE.md` 和 `INTEGRATIONS.md`。
2
-
3
- 参考 `.sillyspec/docs/<project>/scan/_env-detect.md`。
4
-
5
- 用 find/ls/tree 和 grep,**禁止读源码全文**。
6
-
7
- 搜索 API 调用、MQ 配置、缓存、第三方 SDK。
8
-
9
- **STRUCTURE.md** 必须包含:
10
- - 目录树(用 tree 或 find 生成)
11
- - 模块说明
12
-
13
- **INTEGRATIONS.md** 按类型分组(数据库、缓存、MQ、第三方 API 等)。
14
-
15
- 路径用反引号,不编造。分别保存到:
16
- - `.sillyspec/docs/<project>/scan/STRUCTURE.md`
17
- - `.sillyspec/docs/<project>/scan/INTEGRATIONS.md`
18
-
19
- 完成后立即写文件,下一个 area 开始前清除源码上下文。
@@ -1,18 +0,0 @@
1
- 扫描测试现状 + 技术债务 + 项目概览,生成 `TESTING.md`、`CONCERNS.md`、`PROJECT.md`。
2
-
3
- 参考 `.sillyspec/docs/<project>/scan/_env-detect.md`。
4
-
5
- 用 grep 搜索测试文件、TODO/FIXME、过时依赖,**禁止读源码全文**。
6
-
7
- **TESTING.md** 必须包含测试结构(框架、目录、覆盖情况)。
8
-
9
- **CONCERNS.md** 按严重程度分组(🔴 必须 / 🟡 建议 / 🔵 优化)。
10
-
11
- **PROJECT.md** 包含项目基本信息。
12
-
13
- 路径用反引号,不编造。分别保存到:
14
- - `.sillyspec/docs/<project>/scan/TESTING.md`
15
- - `.sillyspec/docs/<project>/scan/CONCERNS.md`
16
- - `.sillyspec/docs/<project>/scan/PROJECT.md`
17
-
18
-
@@ -1,49 +0,0 @@
1
- ## 扫描完成
2
-
3
- ```bash
4
- # 路径校验
5
- for f in ARCHITECTURE STRUCTURE CONVENTIONS INTEGRATIONS TESTING CONCERNS PROJECT; do
6
- [ -f ".sillyspec/docs/<project>/scan/${f}.md" ] && echo "✅ ${f}.md"
7
- done
8
-
9
- # 生成知识库骨架
10
- mkdir -p .sillyspec/knowledge
11
- if [ ! -f ".sillyspec/knowledge/INDEX.md" ]; then
12
- cat > .sillyspec/knowledge/INDEX.md << 'EOF'
13
- # Knowledge Index
14
-
15
- > 子代理任务开始前查询此文件,按关键词匹配,只读命中的知识文件。
16
- > execute/quick 执行中发现的坑自动追加到 uncategorized.md,经用户确认后归类到对应文件。
17
-
18
- <!-- 格式:关键词1|关键词2|关键词3 → 文件路径 -->
19
- EOF
20
- fi
21
- if [ ! -f ".sillyspec/knowledge/uncategorized.md" ]; then
22
- cat > .sillyspec/knowledge/uncategorized.md << 'EOF'
23
- # 未分类知识
24
-
25
- > execute/quick 执行中发现的坑暂存于此,用户审阅后归类到对应文件并更新 INDEX.md。
26
- EOF
27
- fi
28
-
29
- # 记录状态
30
- cat > .sillyspec/STATE.md << 'EOF'
31
- # 项目状态
32
-
33
- ## 最近活动
34
- - $(date '+%Y-%m-%d %H:%M:%S') scan 完成
35
- EOF
36
-
37
- # 清理
38
- rm -f .sillyspec/docs/<project>/scan/_env-detect.md
39
- git add .sillyspec/
40
- ```
41
-
42
- ### 自检门控
43
- - [ ] ARCHITECTURE.md:技术栈 + Schema 摘要?
44
- - [ ] CONVENTIONS.md:隐形规则 + 代码风格?
45
- - [ ] STRUCTURE.md:目录结构?
46
- - [ ] INTEGRATIONS.md:外部依赖?
47
- - [ ] TESTING.md:测试现状?
48
- - [ ] CONCERNS.md:技术债务?
49
- - [ ] PROJECT.md:项目概览?
@@ -1,16 +0,0 @@
1
- phase: scan
2
- description: 项目代码库扫描
3
- requires: []
4
- steps:
5
- - file: 01-env-detect.md
6
- name: 环境探测
7
- - file: 02-tech-stack.md
8
- name: 技术栈识别
9
- - file: 03-conventions.md
10
- name: 代码风格提取
11
- - file: 04-structure.md
12
- name: 项目结构分析
13
- - file: 05-quality.md
14
- name: 质量评估
15
- - file: 06-complete.md
16
- name: 扫描完成
@@ -1,28 +0,0 @@
1
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
2
-
3
- ## 核心约束(必须遵守)
4
- - ❌ 修改任何代码(只做检查和报告)
5
- - ❌ 自行推进到下一阶段
6
-
7
- ## 加载规范
8
-
9
- ```bash
10
- # 确定变更目录
11
- if [ -n "$ARGUMENTS" ]; then
12
- CHANGE_DIR=".sillyspec/changes/$ARGUMENTS"
13
- else
14
- CHANGE_DIR=$(ls -d .sillyspec/changes/*/ 2>/dev/null | grep -v archive | tail -1)
15
- fi
16
- cat "$CHANGE_DIR"/{design,tasks}.md 2>/dev/null
17
- cat .sillyspec/local.yaml 2>/dev/null
18
- ```
19
-
20
- 锚定确认实际存在的文件。
21
-
22
- ## 工作区模式处理
23
-
24
- 如果 `.sillyspec/projects/` 目录下有 yaml 文件:
25
- 1. 检查工作区根目录 `.sillyspec/changes/` 下的未归档变更
26
- 2. 检查每个子项目 `<子项目路径>/.sillyspec/changes/` 下的未归档变更
27
- 3. 列出所有未归档变更,让用户选择要验证哪个
28
- 4. 根据 $ARGUMENTS 或用户选择,cd 到对应目录执行验证
@@ -1 +0,0 @@
1
- 逐项检查 tasks.md,对每个 checkbox 报告:✅ 已完成 / ❌ 未完成 / ⚠️ 部分完成
@@ -1,6 +0,0 @@
1
- 对照 design.md 检查:
2
-
3
- - 架构决策是否落实?
4
- - 文件变更是否一致?
5
- - 数据模型是否正确?
6
- - API 设计是否符合预期?
@@ -1,7 +0,0 @@
1
- 运行单元测试:
2
-
3
- ```bash
4
- pnpm test 2>/dev/null || npm test 2>/dev/null || pytest 2>/dev/null || go test ./... 2>/dev/null
5
- ```
6
-
7
- 报告测试结果(通过/失败数量)。
@@ -1,27 +0,0 @@
1
- 检测项目中是否有 E2E 测试或测试步骤文件:
2
- ```bash
3
- ls tests/e2e/ e2e/ cypress/e2e/ 2>/dev/null | head -5
4
- cat .sillyspec/changes/*/e2e-steps.md 2>/dev/null | head -5
5
- ```
6
-
7
- **无任何测试** → 跳过此步骤。
8
-
9
- **有测试** → 确认修复策略(AskUserQuestion):
10
- 1. 自动修复,同一用例最多 5 次(超过停止,提示人工介入)
11
- 2. 一直修复直到全绿
12
- 3. 只报告,不自动修复
13
-
14
- **按优先级执行:**
15
-
16
- **优先级 1:专业 E2E 框架(Playwright/Cypress)**
17
- ```bash
18
- npx playwright test 2>/dev/null || npx cypress run 2>/dev/null
19
- ```
20
-
21
- **优先级 2:通用测试框架(jest/vitest)**
22
- ```bash
23
- npx vitest run 2>/dev/null || npx jest 2>/dev/null
24
- ```
25
-
26
- **优先级 3:浏览器 MCP + e2e-steps.md(兜底)**
27
- 读取 `.sillyspec/changes/<变更名>/e2e-steps.md`,按步骤逐条执行。每条标注 ✅/❌。