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
@@ -0,0 +1,64 @@
1
+ export const definition = {
2
+ name: 'quick',
3
+ title: '快速任务',
4
+ description: '跳过完整流程,直接做',
5
+ auxiliary: true,
6
+ steps: [
7
+ {
8
+ name: '理解任务',
9
+ prompt: `解析任务参数,加载项目上下文。
10
+
11
+ ### 操作
12
+ 1. 检查是否携带 \`--change <变更名>\`,确定记录方式
13
+ 2. 理解任务:模糊则问一个问题确认
14
+ 3. 加载项目信息:\`cat .sillyspec/projects/*.yaml 2>/dev/null\`(了解项目结构和技术栈)
15
+ 4. 加载上下文:\`cat .sillyspec/docs/<project>/scan/CONVENTIONS.md 2>/dev/null\`
16
+ 5. 加载本地配置:\`cat .sillyspec/local.yaml 2>/dev/null\`(构建命令、测试命令、环境变量等)
17
+ 6. 如有 \`--change\`,加载设计文档:\`cat .sillyspec/changes/<变更名>/design.md 2>/dev/null\`(理解设计意图)
18
+ 7. 如有需要,查询知识库:\`cat .sillyspec/knowledge/INDEX.md 2>/dev/null\`
19
+
20
+ ### 输出
21
+ 任务理解 + 上下文摘要`,
22
+ outputHint: '任务理解',
23
+ optional: false
24
+ },
25
+ {
26
+ name: '实现并验证',
27
+ prompt: `实现任务。
28
+
29
+ ### 操作
30
+ 1. 先读后写:调用已有方法前 \`cat\` 源文件确认签名,\`grep\` 确认方法存在
31
+ 2. 写代码完成任务
32
+ 3. 如涉及逻辑变更,建议写单元测试验证(不强制,纯配置/文档/小改动可跳过)
33
+ 4. **不要编译!** 除非用户明确要求或改动量很大
34
+
35
+ ### 输出
36
+ 实现摘要 + 修改文件列表
37
+
38
+ ### 铁律
39
+ - 不要修改无关文件
40
+ - 不要编造不存在的 CLI 子命令
41
+ - **Reverse Sync**:如果发现 Bug 是 design.md 遗漏导致的,先修 design.md 再修代码`,
42
+ outputHint: '实现摘要',
43
+ optional: false
44
+ },
45
+ {
46
+ name: '暂存和记录',
47
+ prompt: `Git 暂存并记录任务。
48
+
49
+ ### 操作
50
+ 1. \`git add -A\` — **不要 commit**,由用户通过统一提交
51
+ 2. 记录:
52
+ - 有 \`--change\`:在 \`.sillyspec/changes/<变更名>/tasks.md\` 追加 task 并勾选,记录精确到秒的时间戳
53
+ - 无 \`--change\`:记录到 \`.sillyspec/quicklog/QUICKLOG-<git用户名>.md\`(按 git 用户名隔离)
54
+ 3. QUICKLOG 轮转:超过 500 行则重命名为 \`QUICKLOG-<USER>-YYYY-MM-DD.md\`
55
+ 4. 如果发现项目特有的坑,追加到 \`.sillyspec/knowledge/uncategorized.md\`
56
+ 5. 任务比预期复杂 → 建议用完整流程
57
+
58
+ ### 输出
59
+ 暂存确认 + 记录路径`,
60
+ outputHint: '暂存和记录确认',
61
+ optional: false
62
+ }
63
+ ]
64
+ }
@@ -0,0 +1,141 @@
1
+ export const definition = {
2
+ name: 'scan',
3
+ title: '代码扫描',
4
+ description: '分析项目结构、约定和架构',
5
+ auxiliary: true,
6
+ steps: [
7
+ {
8
+ name: '检查已有扫描文档和子项目列表',
9
+ prompt: `检查已有扫描文档和子项目列表。
10
+
11
+ ### 操作
12
+ 1. \`ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .\` — 检查已有文档
13
+ 1. \`ls docs/*/scan/ 2>/dev/null\` — 检查已有文档
14
+ 2. \`wc -l docs/*/scan/*.md 2>/dev/null\` — 文档行数
15
+ 3. 已有 3 份 → 建议升级深度扫描;已有 7 份 → 建议刷新或跳过
16
+ 5. 显示子项目列表供选择扫描范围
17
+
18
+ ### 输出
19
+ 已有文档状态 + 扫描建议`,
20
+ outputHint: '工作区和文档状态',
21
+ optional: false
22
+ },
23
+ {
24
+ name: '构建环境探测',
25
+ prompt: `探测项目的构建环境和依赖。
26
+
27
+ ### 操作
28
+ 1. \`cat package.json pom.xml build.gradle go.mod Cargo.toml requirements.txt pyproject.toml Gemfile composer.json 2>/dev/null\`
29
+ 2. \`find . -maxdepth 2 -name "*.config.*" -not -path "*/node_modules/*" -not -path "*/.git/*" | head -20 | xargs cat 2>/dev/null\`
30
+ 3. 结果保存到 \`docs/<project>/scan/_env-detect.md\`(临时文件,扫描完删除)
31
+
32
+ ### 输出
33
+ 环境探测结果摘要`,
34
+ outputHint: '环境探测摘要',
35
+ optional: false
36
+ },
37
+ {
38
+ name: '断点续扫检测',
39
+ prompt: `检测已有扫描文档,只生成缺失的。
40
+
41
+ ### 操作
42
+ 1. \`PROJECT=$(python3 -c "import sys,json; print(json.load(open('.sillyspec/.runtime/progress.json')).get('project',''))" 2>/dev/null || basename "$(pwd)")\`
43
+ 2. 检查 7 份文档是否存在:ARCHITECTURE、STRUCTURE、CONVENTIONS、INTEGRATIONS、TESTING、CONCERNS、PROJECT
44
+ 3. 列出已有 ✅ 和缺失 ⬜
45
+ 4. 只生成缺失的文档
46
+
47
+ ### 输出
48
+ 已有/缺失文档列表`,
49
+ outputHint: '断点续扫状态',
50
+ optional: false
51
+ },
52
+ {
53
+ name: '深度扫描 — 技术架构',
54
+ prompt: `扫描技术栈 + 数据库 Schema + 架构模式。参考 _env-detect.md。
55
+
56
+ ### 操作
57
+ 1. 用 grep/rg 搜索(\`@Entity\`、\`schema.prisma\`、\`models.py\` 等),**禁止读源码全文**
58
+ 2. Schema 只记表名+说明+字段数
59
+ 3. 写入 \`docs/<project>/scan/ARCHITECTURE.md\`
60
+ 4. 包含 \`## 技术栈\` \`## 架构概览\` \`## 数据模型(摘要)\`
61
+
62
+ ### 输出
63
+ ARCHITECTURE.md 路径
64
+
65
+ ### 注意
66
+ - 路径用反引号,不编造`,
67
+ outputHint: 'ARCHITECTURE.md 路径',
68
+ optional: false
69
+ },
70
+ {
71
+ name: '深度扫描 — 代码约定',
72
+ prompt: `扫描框架隐形规则 + 实体继承 + 代码风格。参考 _env-detect.md。
73
+
74
+ ### 操作
75
+ 1. 用 grep 搜索拦截器/插件/逻辑删除/基类/审计字段,**禁止读源码全文**
76
+ 2. 根据检测到的语言/框架自行决定搜索什么模式
77
+ 3. 提取 3-5 个典型示例
78
+ 4. 写入 \`docs/<project>/scan/CONVENTIONS.md\`
79
+ 5. 包含 \`## 框架隐形规则\` \`## 实体继承规范\` \`## 代码风格\`
80
+
81
+ ### 输出
82
+ CONVENTIONS.md 路径
83
+
84
+ ### 注意
85
+ - 路径用反引号,不编造`,
86
+ outputHint: 'CONVENTIONS.md 路径',
87
+ optional: false
88
+ },
89
+ {
90
+ name: '深度扫描 — 目录结构和集成',
91
+ prompt: `扫描目录结构 + 外部集成。参考 _env-detect.md。
92
+
93
+ ### 操作
94
+ 1. 用 find/ls/tree 和 grep,**禁止读源码全文**
95
+ 2. 搜索 API 调用、MQ 配置、缓存、第三方 SDK
96
+ 3. 写入 \`docs/<project>/scan/STRUCTURE.md\`(目录树+模块说明)
97
+ 4. 写入 \`docs/<project>/scan/INTEGRATIONS.md\`(按类型分组)
98
+
99
+ ### 输出
100
+ STRUCTURE.md 和 INTEGRATIONS.md 路径
101
+
102
+ ### 注意
103
+ - 路径用反引号,不编造`,
104
+ outputHint: 'STRUCTURE.md + INTEGRATIONS.md 路径',
105
+ optional: false
106
+ },
107
+ {
108
+ name: '深度扫描 — 测试和债务',
109
+ prompt: `扫描测试现状 + 技术债务 + 项目概览。参考 _env-detect.md。
110
+
111
+ ### 操作
112
+ 1. 用 grep 搜索测试文件、TODO/FIXME、过时依赖,**禁止读源码全文**
113
+ 2. 写入 \`docs/<project>/scan/TESTING.md\`(测试结构)
114
+ 3. 写入 \`docs/<project>/scan/CONCERNS.md\`(按严重程度分组)
115
+ 4. 写入 \`docs/<project>/scan/PROJECT.md\`(项目信息)
116
+
117
+ ### 输出
118
+ TESTING.md、CONCERNS.md、PROJECT.md 路径`,
119
+ outputHint: '三份文档路径',
120
+ optional: false
121
+ },
122
+ {
123
+ name: '自检和提交',
124
+ prompt: `验证扫描完整性,清理并提交。
125
+
126
+ ### 操作
127
+ 1. 检查 7 份文档是否全部生成
128
+ 2. 自检门控:ARCHITECTURE(技术栈+Schema摘要)、CONVENTIONS(隐形规则+代码风格)、STRUCTURE(目录结构)、INTEGRATIONS(外部依赖)、TESTING(测试现状)、CONCERNS(技术债务)、PROJECT(项目概览)
129
+ 3. 清理:\`rm -f docs/<project>/scan/_env-detect.md\`
130
+ 4. \`git add .\` — **不要 commit**,由用户通过统一提交工具处理
131
+
132
+ ### 输出
133
+ 扫描完整性报告
134
+
135
+ ### 注意
136
+ - ❌ 修改代码 / 编造路径 / 读源码全文`,
137
+ outputHint: '自检报告',
138
+ optional: false
139
+ }
140
+ ]
141
+ }
@@ -0,0 +1,65 @@
1
+ export const definition = {
2
+ name: 'status',
3
+ title: '状态查看',
4
+ description: '查看项目进度和状态',
5
+ auxiliary: true,
6
+ steps: [
7
+ {
8
+ name: '项目基础信息',
9
+ prompt: `收集项目基础信息。
10
+
11
+ ### 操作
12
+ 1. \`cat .sillyspec/PROJECT.md 2>/dev/null || echo "未初始化"\`
13
+ 2. 获取 project 名
14
+ 3. \`ls docs/<project>/scan/ 2>/dev/null | head -10\`
15
+ 4. \`cat .sillyspec/REQUIREMENTS.md 2>/dev/null | head -20\`
16
+ 5. \`cat .sillyspec/ROADMAP.md 2>/dev/null\`
17
+
18
+ ### 输出
19
+ 项目基础信息摘要`,
20
+ outputHint: '项目基础信息',
21
+ optional: false
22
+ },
23
+ {
24
+ name: '变更状态',
25
+ prompt: `检查进行中的变更和归档历史。
26
+
27
+ ### 操作
28
+ 1. \`ls .sillyspec/changes/ 2>/dev/null | grep -v archive\`
29
+ 2. 对每个进行中的变更:检查 proposal.md ✅/❌、design.md ✅/❌、requirements.md ✅/❌、tasks.md — X/Y 完成
30
+ 3. \`ls .sillyspec/changes/archive/ 2>/dev/null | wc -l\`
31
+ 4. \`cat .sillyspec/HANDOFF.json 2>/dev/null\`
32
+
33
+ ### 输出
34
+ 变更状态列表`,
35
+ outputHint: '变更状态',
36
+ optional: false
37
+ },
38
+ {
39
+ name: '输出状态报告',
40
+ prompt: `生成完整状态报告。
41
+
42
+ ### 输出格式:
43
+ \`\`\`
44
+ 📊 SillySpec 状态
45
+
46
+ 📋 项目:xxx(已初始化 / 未初始化)
47
+ 📂 代码库:已扫描(7 份文档)/ 未扫描
48
+
49
+ 🔄 进行中:N 个变更
50
+ - [change-1] Phase 3 (Execute) — tasks 5/8
51
+
52
+ ✅ 已归档:N 个变更
53
+ 📝 设计文档:N 份
54
+ 📝 实现计划:N 份
55
+
56
+ 💡 下一步:/sillyspec:continue
57
+ \`\`\`
58
+
59
+ ### 注意
60
+ - 不修改任何文件`,
61
+ outputHint: '状态报告',
62
+ optional: false
63
+ }
64
+ ]
65
+ }
@@ -0,0 +1,135 @@
1
+ export const definition = {
2
+ name: 'verify',
3
+ title: '验证确认',
4
+ description: '对照规范检查 + 测试套件',
5
+ steps: [
6
+ {
7
+ name: '状态检查',
8
+ prompt: `检查当前状态,确认可以执行 verify。
9
+
10
+ ### 操作
11
+ 1. 运行 \`sillyspec progress show\`
12
+ 2. 确认 currentStage 为 "verify"
13
+
14
+ ### 输出
15
+ 当前状态摘要`,
16
+ outputHint: '状态摘要',
17
+ optional: false
18
+ },
19
+ {
20
+ name: '加载规范并锚定',
21
+ prompt: `加载规范文件并确认。
22
+
23
+ ### 操作
24
+ 1. 读取 proposal.md、design.md、tasks.md、requirements.md
25
+ 2. 加载项目信息:\`cat .sillyspec/projects/*.yaml 2>/dev/null\`
26
+ 3. 加载本地配置:\`cat .sillyspec/local.yaml 2>/dev/null\`(构建命令、测试命令、lint 命令等)
27
+ 4. 加载代码规范:\`cat .sillyspec/docs/<project>/scan/CONVENTIONS.md 2>/dev/null\`
28
+ 5. 标注每个文件的存在/不存在状态
29
+
30
+ ### 输出
31
+ 文件加载确认清单`,
32
+ outputHint: '文件确认清单',
33
+ optional: false
34
+ },
35
+ {
36
+ name: '逐项检查任务',
37
+ prompt: `对照 tasks.md 检查每个任务完成状态。
38
+
39
+ ### 操作
40
+ 对每个 checkbox:
41
+ 1. 检查相关文件是否存在
42
+ 2. 检查代码是否实现了描述的功能
43
+ 3. 标记:✅ 已完成 / ❌ 未完成 / ⚠️ 部分完成
44
+
45
+ ### 批量模式验证指引
46
+ 如果 tasks.md 中有批量特征(引擎/模板/配置/批量生成),采用分层验证:
47
+ - **L1 自动化(100%)**:运行验证脚本(如有),检查所有实例的文件存在、格式正确、Schema 校验通过
48
+ - **L2 AI 抽查(5-10 个)**:选择最复杂的 3 个 + 最简单的 2 个 + 有特殊逻辑的,检查业务逻辑正确性
49
+ - **L3 模式性 bug 检测**:L2 发现 bug → 判断是否为系统性问题 → 系统性 bug 则回退修复引擎并重新生成所有实例
50
+
51
+ ### 输出
52
+ 任务完成度列表 + 完成率
53
+
54
+ ### 注意
55
+ - 不修改任何代码,只做检查和报告`,
56
+ outputHint: '任务完成度报告',
57
+ optional: false
58
+ },
59
+ {
60
+ name: '对照设计检查',
61
+ prompt: `对照 design.md 检查实现一致性。**design.md 是唯一 truth source,不符合 design.md 的实现 = Bug。**
62
+
63
+ ### 操作
64
+ 1. 架构决策是否遵循
65
+ 2. 文件变更清单是否一致
66
+ 3. 数据模型是否符合
67
+ 4. API 设计是否符合
68
+ 5. **Reverse Sync 检查**:如果发现实现合理但 design.md 未覆盖,先更新 design.md 补充遗漏
69
+
70
+ ### 输出
71
+ 一致性检查结果`,
72
+ outputHint: '设计一致性报告',
73
+ optional: false
74
+ },
75
+ {
76
+ name: '任务蓝图验收',
77
+ prompt: `检查每个 task-N.md 的验收标准是否全部满足。
78
+
79
+ ### 操作
80
+ 1. 检查变更目录下 tasks/ 是否存在
81
+ 2. 如果存在:
82
+ - 逐个读取 tasks/task-NN.md
83
+ - 检查每个文件的「验收标准」checkbox 是否全部勾选
84
+ - 未勾选的项列为不通过
85
+ 3. 如果不存在:跳过此步骤
86
+
87
+ ### 输出
88
+ 验收结果:通过/不通过 + 未通过的项`,
89
+ outputHint: '验收结果',
90
+ optional: false
91
+ },
92
+ {
93
+ name: '运行测试和质量扫描',
94
+ prompt: `运行测试和代码质量扫描。
95
+
96
+ ### 操作
97
+ 1. 读取 \`.sillyspec/local.yaml\` 获取构建和测试命令
98
+ 2. 如果 local.yaml 有 test 命令,使用它(仅测试变更涉及的模块,非全量)
99
+ 3. 如果 local.yaml 无 test 命令,根据项目类型选择:
100
+ - Maven:\`mvn test -pl <变更模块> -am\`(仅编译变更模块及其依赖)
101
+ - Gradle:\`./gradlew :<模块>:test\`
102
+ - npm/pnpm:\`pnpm test --filter=<包名>\` 或 \`npm test -- --testPathPattern=<相关文件>\`
103
+ - Python:\`pytest <变更模块路径>/\`
104
+ 4. 记录通过/失败数量,分析失败原因
105
+ 5. 搜索技术债务:grep TODO/FIXME/HACK/XXX(仅限变更文件)
106
+ 6. 如果 local.yaml 有 lint 命令,运行 lint 检查
107
+
108
+ ### 注意
109
+ - 不要全量编译/测试整个项目,只测变更涉及的模块
110
+ - 如果变更模块不确定,优先使用 local.yaml 中的命令
111
+
112
+ ### 输出
113
+ 测试结果 + 技术债务标记`,
114
+ outputHint: '测试结果 + 技术债务',
115
+ optional: false
116
+ },
117
+ {
118
+ name: '输出验证报告',
119
+ prompt: `生成完整验证报告。
120
+
121
+ ### 操作
122
+ 1. 汇总以上所有检查结果
123
+ 2. 给出结论:PASS / PASS WITH NOTES / FAIL
124
+
125
+ ### 输出
126
+ 验证报告 markdown + 下一步命令
127
+
128
+ ### 注意
129
+ - PASS → 下一步 archive
130
+ - FAIL → 修复后重新 verify`,
131
+ outputHint: '验证报告',
132
+ optional: false
133
+ }
134
+ ]
135
+ }
@@ -1,30 +0,0 @@
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
- ```
@@ -1,6 +0,0 @@
1
- 检查已有变更和可复用模板,避免冲突和重复劳动。
2
-
3
- - **同名变更:** `ls .sillyspec/changes/ | grep -v archive` — 有相关变更则提示避免冲突
4
- - **全局模板:** `ls ~/.sillyspec/templates/ 2>/dev/null` — 有匹配模板则建议复用
5
-
6
- 无匹配则跳过,不输出。
@@ -1,11 +0,0 @@
1
- **如有图片则必做。无图片则跳过此步骤。**
2
-
3
- **不要只看描述文字,图片包含布局、字段、交互等视觉信息。**
4
-
5
- 对每张图逐页分析(先主页面后子页面):
6
- 1. **页面结构** — 识别搜索区、操作栏、表格、表单等区块
7
- 2. **表单字段** — 字段名、类型、必填、选项
8
- 3. **交互流程** — 页面跳转、按钮行为、流程线
9
- 4. **标注备注** — 业务规则、状态说明、权限说明
10
-
11
- 展示分析结果,问用户确认有无遗漏。
@@ -1,23 +0,0 @@
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
- 不需要拆分则跳过此步骤。
@@ -1,8 +0,0 @@
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`
@@ -1,3 +0,0 @@
1
- 提出 2-3 种方案。
2
-
3
- 每种方案列优劣,给出推荐和理由。
@@ -1,3 +0,0 @@
1
- 分段展示设计,逐段确认。
2
-
3
- 简单项目几句话;复杂项目每段 200-300 字逐段确认。
@@ -1,21 +0,0 @@
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` 数据模型或明确标注"新增"。必须先读取该文件。
@@ -1,15 +0,0 @@
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
- 发现问题 → 修改文档,重新自审。不确定的标注「⚠️ 自审存疑」让用户判断。
@@ -1,3 +0,0 @@
1
- ⛔ 门禁步骤。
2
-
3
- 展示设计方案,使用 AskUserQuestion 让用户三选一:确认 / 需要修改 / 推翻重来。
@@ -1,7 +0,0 @@
1
- 用户确认后,确认 `.sillyspec/changes/<变更名>/design.md` 已包含完整内容(动机、需求、方案、文件变更、代码风格参照)。如上一步已保存则无需重复。
2
-
3
- ## 关键原则
4
- - YAGNI — 无情砍掉不需要的功能
5
- - 总是探索替代方案
6
- - 设计可以很短,但必须存在
7
- - "简单"的项目更需要设计——未检视的假设造成最大浪费
@@ -1,26 +0,0 @@
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: 输出技术方案
@@ -1,41 +0,0 @@
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`),只执行对应部分。
@@ -1,47 +0,0 @@
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
- 追加铁律:**参照已有测试风格编写新测试,不要凭记忆写测试。**