sillyspec 3.8.7 → 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 (163) 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 +9 -11
  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 +136 -14
  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/docs/.vitepress/config.mts +0 -45
  88. package/docs/.vitepress/dist/404.html +0 -25
  89. package/docs/.vitepress/dist/assets/app.YytxICdd.js +0 -1
  90. package/docs/.vitepress/dist/assets/chunks/framework.Czhw_PXq.js +0 -19
  91. package/docs/.vitepress/dist/assets/chunks/theme.DusTRZQk.js +0 -1
  92. package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.js +0 -1
  93. package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.lean.js +0 -1
  94. package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  95. package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  96. package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  97. package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  98. package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  99. package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  100. package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  101. package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  102. package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  103. package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  104. package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  105. package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  106. package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  107. package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  108. package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.js +0 -15
  109. package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.lean.js +0 -1
  110. package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.js +0 -4
  111. package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.lean.js +0 -1
  112. package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.js +0 -1
  113. package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.lean.js +0 -1
  114. package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.js +0 -4
  115. package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.lean.js +0 -1
  116. package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.js +0 -5
  117. package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.lean.js +0 -1
  118. package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.js +0 -28
  119. package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.lean.js +0 -1
  120. package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.js +0 -30
  121. package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.lean.js +0 -1
  122. package/docs/.vitepress/dist/assets/style.DFTx90Kk.css +0 -1
  123. package/docs/.vitepress/dist/hashmap.json +0 -1
  124. package/docs/.vitepress/dist/index.html +0 -28
  125. package/docs/.vitepress/dist/sillyspec/commands.html +0 -42
  126. package/docs/.vitepress/dist/sillyspec/dashboard.html +0 -31
  127. package/docs/.vitepress/dist/sillyspec/file-io.html +0 -28
  128. package/docs/.vitepress/dist/sillyspec/getting-started.html +0 -31
  129. package/docs/.vitepress/dist/sillyspec/install.html +0 -32
  130. package/docs/.vitepress/dist/sillyspec/lifecycle.html +0 -55
  131. package/docs/.vitepress/dist/sillyspec/structure.html +0 -57
  132. package/docs/.vitepress/dist/vp-icons.css +0 -1
  133. package/docs/index.md +0 -34
  134. package/docs/sillyspec/commands.md +0 -218
  135. package/docs/sillyspec/dashboard.md +0 -51
  136. package/docs/sillyspec/file-io.md +0 -34
  137. package/docs/sillyspec/getting-started.md +0 -61
  138. package/docs/sillyspec/install.md +0 -51
  139. package/docs/sillyspec/lifecycle.md +0 -146
  140. package/docs/sillyspec/structure.md +0 -62
  141. package/packages/dashboard/dist/assets/index-Bh-GPjKY.css +0 -1
  142. package/packages/dashboard/dist/assets/index-CrCn5Gg6.js +0 -17
  143. package/templates/archive.md +0 -120
  144. package/templates/brainstorm.md +0 -170
  145. package/templates/continue.md +0 -32
  146. package/templates/execute.md +0 -304
  147. package/templates/explore.md +0 -59
  148. package/templates/export.md +0 -21
  149. package/templates/init.md +0 -61
  150. package/templates/plan.md +0 -146
  151. package/templates/quick.md +0 -135
  152. package/templates/scan-quick.md +0 -49
  153. package/templates/scan.md +0 -156
  154. package/templates/skills/playwright-e2e/SKILL.md +0 -340
  155. package/templates/status.md +0 -75
  156. package/templates/verify.md +0 -236
  157. package/templates/workspace-sync.md +0 -99
  158. package/templates/workspace.md +0 -70
  159. /package/.sillyspec/{specs → changes/brainstorm-archive}/2026-04-05-dashboard-design.md +0 -0
  160. /package/{docs/.vitepress/dist/logo.jpg → logo.jpg} +0 -0
  161. /package/{docs/.vitepress → packages/dashboard}/dist/favicon.jpg +0 -0
  162. /package/{docs/public → packages/dashboard/dist}/logo.jpg +0 -0
  163. /package/{docs → packages/dashboard}/public/favicon.jpg +0 -0
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: sillyspec:archive
3
+ description: 归档变更 — 规范沉淀,可追溯
4
+ ---
5
+
6
+ ## 执行
7
+
8
+ **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
+
10
+ 1. 运行 `sillyspec run archive` — 读取输出的步骤 prompt
11
+ 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
+ 3. 步骤完成后,运行 `sillyspec run archive --done --output "你的摘要"`
13
+ 4. 重复 2-3 直到阶段完成
14
+ 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
+
16
+ ## 用户指令
17
+ $ARGUMENTS
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: sillyspec:auto
3
+ description: 自动模式 — 全流程自动推进(通用版)
4
+ argument-hint: "<需求描述>"
5
+ ---
6
+
7
+ ## 用法
8
+ - /sillyspec:auto 实现用户登录功能
9
+ - /sillyspec:auto 修复搜索结果的排序问题
10
+
11
+ ## 任务
12
+ $ARGUMENTS
13
+
14
+ ---
15
+
16
+ ## 执行流程
17
+
18
+ 你是全流程编排器,按 brainstorm → plan → execute → verify 顺序自动推进。
19
+
20
+ ### 启动
21
+ 1. 运行 `sillyspec run auto --input "<用户需求>"`
22
+ 2. 读取 CLI 输出的 step prompt(包含你的角色描述)
23
+ 3. 执行 prompt 中的操作
24
+
25
+ ### 步骤循环
26
+ 重复以下循环直到 CLI 输出"全部流程已完成":
27
+
28
+ 1. **读取 CLI 输出的 step prompt**
29
+ 2. **判断是否需要用户确认:**
30
+ - prompt 中包含"请用户选择""等待用户回答""展示给用户""用户确认" → **暂停,等用户回复**
31
+ - 纯内部操作 → **直接执行**
32
+ 3. **执行 prompt 要求的操作**
33
+ 4. **完成后运行** `sillyspec run auto --done --output "<你的摘要>"`
34
+ 5. **读取 CLI 输出的下一步 prompt**,回到步骤 1
35
+
36
+ ### 阶段审核门控
37
+
38
+ **brainstorm 完成后:**
39
+ 评估需求复杂度(基于 design.md 中的模块拆分、批量操作、多角色交互等特征),根据复杂度决定:
40
+
41
+ | 复杂度 | 审核策略 |
42
+ |--------|---------|
43
+ | 简单(无拆分、无批量) | 不审核,直接进入 plan |
44
+ | 中等(有拆分或批量) | 启动 1 个审核子代理(QA 视角)审查 design.md |
45
+ | 复杂(拆分 + 批量/多角色) | 启动 2-3 个审核子代理多角度审查 |
46
+
47
+ 多角度审核子代理分工:
48
+ - **架构师** — 审查设计合理性、技术选型 trade-off、模块划分
49
+ - **安全专家** — 审查安全隐患、权限设计、数据校验
50
+ - **QA 专家** — 审查需求覆盖率、边界场景遗漏、验收标准
51
+
52
+ 审核流程:
53
+ 1. 暂停,提示用户当前复杂度等级和建议审核策略
54
+ 2. 用户确认后,启动审核子代理(读取 design.md + requirements.md + tasks.md)
55
+ 3. 子代理输出问题清单
56
+ 4. 汇总问题,询问用户"是否需要修改后再继续"
57
+ 5. 需要修改 → 修复后重新审核;不需要 → 进入下一阶段
58
+
59
+ **plan 完成后:**
60
+ 同样评估复杂度,启动审核子代理审查 plan.md:
61
+ - **项目经理** — 审查任务拆解粒度、依赖关系、优先级
62
+ - **工程师** — 审查任务可行性、工作量评估是否合理
63
+ - **QA** — 审查验收标准是否具体可测试
64
+
65
+ ### 关键规则
66
+ - 不要跳过任何步骤
67
+ - 不要手动修改 progress.json
68
+ - 不要自动 commit,只 git add
69
+ - 不要使用 npx
70
+ - 不要编造不存在的 CLI 子命令
71
+ - 遇到命令报错 → 展示错误,暂停等用户介入
72
+
73
+ ### 异常处理
74
+ - 命令执行失败 → 展示错误信息,暂停等待用户指示
75
+ - 用户说"停止"或"暂停" → 立即停止,报告当前进度
76
+
77
+ ### 完成条件
78
+ CLI 输出"全部流程已完成"后,输出完整流程总结,提示用户提交改动。
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: sillyspec:brainstorm
3
+ description: 需求探索 — 结构化头脑风暴,含技术方案输出(创建性工作前必用)
4
+ ---
5
+
6
+ ## 执行
7
+
8
+ **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
+
10
+ 1. 运行 `sillyspec run brainstorm` — 读取输出的步骤 prompt
11
+ 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
+ 3. 步骤完成后,运行 `sillyspec run brainstorm --done --output "你的摘要"`
13
+ 4. 重复 2-3 直到阶段完成
14
+ 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
+
16
+ ## 用户指令
17
+ $ARGUMENTS
@@ -1,9 +1,16 @@
1
+ ---
2
+ name: sillyspec:commit
3
+ description: 智能提交 — 自动收集变更信息,生成 commit message
4
+ argument-hint: "[可选:自定义 commit message]"
5
+ version: "3.7.32"
6
+ ---
7
+
1
8
  ## 交互规范
2
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
9
+ 当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。
3
10
 
4
11
  ## 用法
5
- - `/sillyspec:commit` — 智能提交:自动收集变更信息,生成 commit message
6
- - `/sillyspec:commit "自定义 message"` — 使用指定 message 直接提交
12
+ - /sillyspec:commit — 智能提交:自动收集变更信息,生成 commit message
13
+ - /sillyspec:commit "自定义 message" — 使用指定 message 直接提交
7
14
 
8
15
  ## 任务
9
16
  $ARGUMENTS
@@ -13,53 +20,43 @@ $ARGUMENTS
13
20
  ## 流程
14
21
 
15
22
  ### 1. 检查是否有未提交的修改
16
-
17
- ```bash
18
23
  git diff --quiet 2>/dev/null; UNSTAGED=$?
19
24
  git diff --cached --quiet 2>/dev/null; STAGED=$?
20
- ```
21
25
 
22
26
  两者都为 0(无修改)→ 提示"没有需要提交的修改",结束。
23
27
 
24
28
  ### 2. 暂存所有修改
25
-
26
- ```bash
27
29
  git add -A
28
- ```
29
30
 
30
31
  ### 3. 收集变更语义信息
31
-
32
- ```bash
33
32
  # 上次 commit 时间
34
33
  LAST_COMMIT_TIME=$(git log -1 --format=%ci 2>/dev/null)
35
34
 
36
35
  # 修改的文件列表
37
36
  git diff --cached --stat
38
- ```
39
37
 
40
38
  从以下来源收集语义信息(筛选时间戳 > LAST_COMMIT_TIME 的条目):
41
39
 
42
- **来源 A — QUICKLOG(quick 产生的修改):**
43
- ```bash
40
+ 来源 A — QUICKLOG(quick 产生的修改):
44
41
  USER=$(git config user.name 2>/dev/null || echo "default")
45
42
  cat .sillyspec/quicklog/QUICKLOG-${USER}.md 2>/dev/null
46
43
  # 同时扫描活跃变更目录下的归属 quicklog
47
44
  for dir in .sillyspec/changes/*/quicklog/*.md; do [ -f "$dir" ] && cat "$dir"; done 2>/dev/null
48
- ```
49
45
 
50
- **来源 B — tasks.md(execute 产生的修改):**
51
- ```bash
46
+ 来源 B — tasks.md(execute 产生的修改):
52
47
  LATEST=$(ls -d .sillyspec/changes/*/ 2>/dev/null | grep -v archive | tail -1)
53
48
  cat "$LATEST/tasks.md" 2>/dev/null
54
- ```
55
49
  筛选时间戳 > LAST_COMMIT_TIME 的已勾选 task。
56
50
 
57
- 检查 `.sillyspec/` 下新增或修改的文件,根据路径识别来源阶段:
58
- - `docs/*/scan/*.md` → scan 产出
59
- - `changes/<name>/design.md` 或 `tasks.md` plan 产出
60
- - `changes/archive/`archive 产出
61
- - `specs/*.md` → brainstorm 产出
62
- - `knowledge/*.md`知识库更新
51
+ 来源 C — 阶段产出(scan/brainstorm/plan/archive 等):
52
+ 检查 .sillyspec/ 下新增或修改的文件,根据路径识别来源阶段:
53
+ - docs/<project>/scan/*.md → scan 产出
54
+ - changes/<name>/design.mdbrainstorm 产出
55
+ - changes/<name>/proposal.md → brainstorm 产出
56
+ - changes/<name>/tasks.md → plan 产出
57
+ - changes/<name>/plan.md → plan 产出
58
+ - changes/archive/ → archive 产出
59
+ - knowledge/*.md → 知识库更新
63
60
 
64
61
  ### 4. 自动生成 commit message
65
62
 
@@ -67,55 +64,43 @@ cat "$LATEST/tasks.md" 2>/dev/null
67
64
 
68
65
  | 来源 | type | 示例 |
69
66
  |---|---|---|
70
- | 只有 quick 条目 | fix/refactor | `fix: 手机号校验修复(含正则修正)` |
71
- | 只有 execute 条目 | feat | `feat(user): 用户模块 task 1~3` |
72
- | 只有阶段产出 | docs | `docs: sillyspec scan 完成` |
67
+ | 只有 quick 条目 | fix/refactor | fix: 手机号校验修复(含正则修正) |
68
+ | 只有 execute 条目 | feat | feat(user): 用户模块 task 1~3 |
69
+ | 只有阶段产出 | docs | docs: sillyspec scan 完成 |
73
70
  | 混合来源 | 取最主要的 type | body 里列出所有条目 |
74
71
  | 无匹配来源 | — | 展示 diff stat,让用户自己写 |
75
72
 
76
- **如果 $ARGUMENTS 非空**,直接使用用户指定的 message,跳过自动生成。
73
+ **如果 $ARGUMENTS 非空**,直接使用用户指定的 message,跳过自动生成,但仍展示 diff stat。
77
74
 
78
- **多条 quick 合并规则:**
75
+ 多条 quick 合并规则:
79
76
  - 2 条以内 → 逐条列出
80
77
  - 3 条以上 → 摘要 + body 详情
81
78
 
82
79
  ### 5. 展示确认
83
80
 
84
81
  用 AskUserQuestion 展示:
85
-
86
- ```
87
82
  📝 建议的 commit message:
88
- fix: 手机号校验修复(含正则修正)
83
+ fix: 手机号校验修复(含正则修正)
89
84
 
90
85
  📁 修改文件(N 个):
91
- src/UserService.java (+15 -3)
92
- src/PhoneValidator.java (+28 -0)
86
+ src/UserService.java (+15 -3)
87
+ src/PhoneValidator.java (+28 -0)
93
88
 
94
89
  选择:确认提交 / 编辑 message / 取消
95
- ```
96
90
 
97
91
  用户选择编辑 → 让用户输入新 message → 再次确认。
98
92
 
99
93
  ### 6. 执行提交
100
-
101
- ```bash
102
94
  git commit -m "{确认后的 message}"
103
- ```
104
95
 
105
96
  提交成功后展示 commit hash + 文件数 + 行数统计。
106
97
 
107
- ## 工作区模式
108
-
109
- ```bash
110
- ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
111
- ```
112
-
113
- 有子项目配置时:
114
- - 检查修改的文件分别属于哪个子项目
98
+ ## 多项目
99
+ 检查修改的文件分别属于哪个子项目:
115
100
  - 修改集中在一个子项目 → 在该子项目目录中 commit
116
101
  - 修改跨多个子项目 → 用 AskUserQuestion 让用户选择:分开提交(每个子项目一个 commit)/ 合并提交
117
102
 
118
103
  ## 绝对规则
119
104
  - ❌ 不要自动提交,必须展示 message 让用户确认
120
105
  - ❌ 不要丢弃用户的修改
121
- - ✅ $ARGUMENTS 非空时可跳过确认直接提交
106
+ - ✅ $ARGUMENTS 非空时展示 diff stat 后直接提交(不需手动确认)
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: sillyspec:continue
3
+ description: 自动判断并执行下一步
4
+ ---
5
+
6
+ ---
7
+
8
+ 你现在是 SillySpec 的自动推进器。
9
+
10
+ ## 判断逻辑
11
+
12
+ 按顺序检查,第一个未完成的就执行:
13
+
14
+ ```
15
+ 1. 有 HANDOFF.json?→ 执行 /sillyspec:resume
16
+
17
+ 2. .sillyspec/changes/ 有进行中的变更?
18
+ 2a. 没有任何文件 → 提示检查 proposal 是否需要完善
19
+ 2b. 没有 design.md → 提示补充 design
20
+ 2c. 没有 tasks.md → 执行 /sillyspec:propose(补全规范)
21
+ 2d. 有 tasks.md 但没有 plan.md → 执行 /sillyspec:plan
22
+ 2e. tasks.md 有未完成项 + 有计划文件 → 执行 /sillyspec:execute
23
+ 2f. tasks.md 全完成 + 没验证 → 执行 /sillyspec:verify
24
+ 2g. 已验证通过 → 执行 /sillyspec:archive
25
+
26
+ 3. 有设计文档但没有对应变更?
27
+ → 提示运行 /sillyspec:propose <name>
28
+
29
+ 4. 有 docs/*/scan/ 但没有进行中的工作?
30
+ → 提示运行 /sillyspec:brainstorm "你的想法"
31
+
32
+ 5. 什么都没有?
33
+ → 提示运行 /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
34
+ ```
35
+
36
+ ## 输出
37
+
38
+ 先报告检测结果,再执行:
39
+
40
+ > 🤖 SillySpec 自动检测
41
+ >
42
+ > 当前状态:[描述]
43
+ > 下一步:[执行的命令]
44
+ >
45
+ > [开始执行...]
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: sillyspec:doctor
3
+ description: 项目自检 — 检查 CLI、配置、构建环境和外部依赖
4
+ ---
5
+
6
+ ## 前置检查
7
+
8
+ **在执行任何检查之前,先确认 SillySpec CLI 是否可用:**
9
+
10
+ 1. 运行 `sillyspec --version`
11
+ 2. 如果失败:
12
+ - 输出:❌ SillySpec CLI 未安装
13
+ - 给出安装命令:`npm install -g sillyspec`
14
+ - 停止,不要继续后续步骤
15
+
16
+ ## 执行
17
+
18
+ **CLI 可用后,使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
19
+
20
+ 1. 运行 `sillyspec run doctor` — 读取输出的步骤 prompt
21
+ 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
22
+ 3. 步骤完成后,运行 `sillyspec run doctor --done --output "你的摘要"`
23
+ 4. 重复 2-3 直到阶段完成
24
+ 5. **禁止**在没有运行 CLI 的情况下自行决定流程
25
+
26
+ ## 用户指令
27
+ $ARGUMENTS
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: sillyspec:execute
3
+ description: 波次执行 — 子代理并行 + 强制 TDD + 两阶段审查
4
+ ---
5
+
6
+ ## 执行
7
+
8
+ **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
+
10
+ 1. 运行 `sillyspec run execute` — 读取输出的步骤 prompt
11
+ 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
+ 3. 步骤完成后,运行 `sillyspec run execute --done --output "你的摘要"`
13
+ 4. 重复 2-3 直到阶段完成
14
+ 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
+
16
+ ## 用户指令
17
+ $ARGUMENTS
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: sillyspec:explore
3
+ description: 自由思考模式 — 讨论、画图、调研,不写代码
4
+ ---
5
+
6
+ ## 交互规范
7
+
8
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
9
+
10
+ 不要用编号列表让用户手动输入数字。
11
+ 如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
12
+
13
+ ---
14
+
15
+ 你现在是 SillySpec 的自由思考伙伴。
16
+
17
+ ## 话题
18
+ $ARGUMENTS
19
+
20
+ ## 这是什么模式
21
+
22
+ **探索模式用于思考,不用于实现。** 你可以读文件、搜代码、调查代码库,但绝对不能写代码或实现功能。如果用户要求实现,提醒他们先退出探索模式。
23
+
24
+ **这不是一个工作流,是一种姿态。** 没有固定步骤、没有必需的输出。你是一个帮助用户思考的伙伴。
25
+
26
+ ## 姿态
27
+
28
+ - **好奇,不说教** — 问自然产生的问题,不按脚本走
29
+ - **开放式线程** — 展示多个有趣方向,让用户选择
30
+ - **可视化** — 大量使用 ASCII 图表
31
+ - **自适应** — 追随有趣的线索,随时转向
32
+ - **耐心** — 不急着下结论
33
+ - **务实** — 探索实际代码库,不只纸上谈兵
34
+
35
+ ## 你可以做的事
36
+
37
+ **探索问题空间:** 问澄清问题、挑战假设、重新定义问题
38
+
39
+ **调查代码库:** 映射相关架构、找集成点、识别已有模式、暴露隐藏复杂性
40
+
41
+ **比较选项:** 头脑风暴多种方案、建对比表、画权衡分析
42
+
43
+ **画图:**
44
+ ```
45
+ ┌─────────────────────────────────┐
46
+ │ 用 ASCII 图自由表达 │
47
+ ├─────────────────────────────────┤
48
+ │ │
49
+ │ ┌────────┐ ┌────────┐ │
50
+ │ │ State │──────▶│ State │ │
51
+ │ │ A │ │ B │ │
52
+ │ └────────┘ └────────┘ │
53
+ │ │
54
+ └─────────────────────────────────┘
55
+ ```
56
+
57
+ **暴露风险:** 识别可能出错的地方、发现理解空白
58
+
59
+ ## OpenSpec 上下文感知
60
+
61
+ ### 检查已有上下文
62
+
63
+ ```bash
64
+ # 查看进行中的变更
65
+ ls .sillyspec/changes/ 2>/dev/null | grep -v archive
66
+ # 查看需求
67
+ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
68
+ cat .sillyspec/ROADMAP.md 2>/dev/null
69
+ ```
70
+
71
+ ### 当有进行中的变更时
72
+
73
+ 读取变更的 proposal、design、tasks,自然地引用它们。
74
+
75
+ 当发现重要的决策时,**提议保存**(不自动保存):
76
+
77
+ 请选择:
78
+ 1. 写入 design.md
79
+ 2. 加入 specs
80
+ 3. 暂不保存
81
+
82
+ ## 没有必需的结束
83
+
84
+ 探索可以:
85
+ 1. 创建变更提案 — 流入 proposal
86
+ 2. 产出文档更新
87
+ 3. 继续探索
88
+ 4. 结束探索
89
+
90
+ ## 禁止事项
91
+
92
+ - ❌ 写实现代码
93
+ - ❌ 安装依赖
94
+ - ❌ 修改任何文件(除非用户明确要求保存发现)
95
+ - ❌ 强行下结论
96
+ - ❌ 强行结构化(让模式自然涌现)
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: sillyspec:export
3
+ description: 导出成功方案为可复用模板
4
+ ---
5
+
6
+ ---
7
+
8
+ 你现在是 SillySpec 的模板导出器。
9
+
10
+ ## 参数解析
11
+
12
+ 解析 `$ARGUMENTS`:
13
+ - 第一个参数为变更名(如 `user-auth`)
14
+ - `--to` 指定输出路径(默认 `~/.sillyspec/templates/<change-name>/`)
15
+
16
+ ## 流程
17
+
18
+ ### 1. 读取变更文件
19
+
20
+ ```bash
21
+ CHANGE_DIR=".sillyspec/changes/$ARGUMENTS"
22
+ cat "$CHANGE_DIR/proposal.md"
23
+ cat "$CHANGE_DIR/design.md"
24
+ cat "$CHANGE_DIR/specs/requirements.md" 2>/dev/null
25
+ ```
26
+
27
+ 如果变更不存在 → 告诉用户"变更不存在,请确认变更名"
28
+
29
+ ### 2. 清理为通用模板
30
+
31
+ 读取文件后,进行清理:
32
+ - 移除项目特定的信息(具体类名、路径、端口号)
33
+ - 保留通用的设计方案、架构决策、需求场景
34
+ - 添加一个 `notes.md`,记录使用建议和适配要点
35
+
36
+ ### 3. 导出到模板目录
37
+
38
+ ```bash
39
+ mkdir -p ~/.sillyspec/templates/<change-name>
40
+ cp 清理后的文件到该目录
41
+ ```
42
+
43
+ ### 4. 确认
44
+
45
+ 展示导出内容摘要,告知模板路径。
46
+
47
+ ### 最后说:
48
+
49
+ > ✅ 方案已导出到 `~/.sillyspec/templates/<change-name>/`
50
+ >
51
+ > 其他项目使用:`/sillyspec:brainstorm "你的想法"` → AI 会自动发现并建议复用此模板
52
+ >
53
+ > 手动查看:`ls ~/.sillyspec/templates/<change-name>/`
@@ -0,0 +1,170 @@
1
+ ---
2
+ name: sillyspec:init
3
+ description: 绿地项目初始化 — 深度提问、调研、需求文档、路线图
4
+ ---
5
+
6
+ ## 交互规范
7
+
8
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
9
+
10
+ 不要用编号列表让用户手动输入数字。
11
+ 如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
12
+
13
+ ---
14
+
15
+ 你现在是 SillySpec 的项目初始化器。
16
+
17
+ ## 用户输入
18
+ $ARGUMENTS
19
+
20
+ ## 核心流程
21
+
22
+ 这是一个从零开始创建新项目的完整流程。你的目标是:**在开始写任何代码之前,把需求彻底搞清楚。**
23
+
24
+ ### Step 1: 检查工作区模式
25
+
26
+ ```bash
27
+ ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
28
+ ```
29
+
30
+ 如果 projects/ 目录存在且包含 .yaml 文件 → 工作区模式:
31
+ 1. 列出所有子项目(读取 projects/*.yaml):
32
+ 检测到工作区模式,请选择要初始化的子项目:
33
+ > 1. frontend — 前端 - Vue3 + TypeScript
34
+ > 2. backend — 后端 - Node.js + PostgreSQL
35
+ > 3. 新建子项目(先运行 /sillyspec:workspace add)
36
+ 2. 用户选择后,**切换到该子项目目录**执行后续所有步骤
37
+ 3. 后续步骤中的所有文件路径相对于子项目目录
38
+
39
+ 否则 → 单项目模式,继续。
40
+
41
+ ### Step 2: 检查项目状态
42
+
43
+ ```bash
44
+ ls -la
45
+ ```
46
+
47
+ 如果目录已经有代码/配置文件 → 提示用 `/sillyspec:scan` 代替。
48
+ 如果是空目录 → 继续。
49
+
50
+ ### Step 3: 深度提问
51
+
52
+ **一次只问一个问题**,按以下顺序探索:
53
+
54
+ 1. **项目本质** — 这个项目要解决什么问题?给谁用?
55
+ 2. **核心功能** — 用户能做的最重要的事情是什么?
56
+ 3. **技术偏好** — 有偏好的语言/框架吗?还是让我建议?
57
+ 4. **非功能需求** — 性能要求?安全要求?离线支持?多语言?
58
+ 5. **设计偏好** — 有参考产品吗?喜欢什么风格?
59
+ 6. **约束** — 预算?时间?团队规模?
60
+ 7. **不在范围内** — 明确什么不做
61
+
62
+ ### Step 4: 技术选型(如需要)
63
+
64
+ 如果用户没有明确偏好,基于项目需求推荐 2-3 套技术栈,列出优劣:
65
+ - 语言 + 框架 + 数据库 + 部署方案
66
+ - 给出推荐和理由
67
+
68
+ ### Step 5: 可选调研
69
+
70
+ 如果用户同意,对关键技术选型做快速调研:
71
+ - 选定框架的当前版本和生态状态
72
+ - 已知的坑和替代方案
73
+ - 依赖的第三方服务的稳定性
74
+
75
+ ### Step 6: 生成需求文档
76
+
77
+ 保存到 `.sillyspec/REQUIREMENTS.md`:
78
+
79
+ ```markdown
80
+ # 需求文档
81
+
82
+ ## 项目概述
83
+ [一句话描述]
84
+
85
+ ## 目标用户
86
+ [谁在用、在什么场景下用]
87
+
88
+ ## 功能需求
89
+ ### P0 — 必须有
90
+ - [ ] 需求 1
91
+ - [ ] 需求 2
92
+
93
+ ### P1 — 应该有
94
+ - [ ] 需求 3
95
+
96
+ ### P2 — 有了更好
97
+ - [ ] 需求 4
98
+
99
+ ## 非功能需求
100
+ - 性能:xxx
101
+ - 安全:xxx
102
+ - 部署:xxx
103
+
104
+ ## 不在范围内
105
+ - xxx
106
+ - xxx
107
+
108
+ ## 技术选型
109
+ | 层 | 选择 | 理由 |
110
+ |---|---|---|
111
+ | 前端 | React + TypeScript | xxx |
112
+ | 后端 | xxx | xxx |
113
+ | 数据库 | xxx | xxx |
114
+ ```
115
+
116
+ ### Step 7: 生成路线图:
117
+
118
+ ```markdown
119
+ # 项目路线图
120
+
121
+ ## Phase 1: 基础骨架
122
+ - 目标:可运行的最小版本
123
+ - 交付物:项目结构 + 基础配置 + 首个可运行页面/接口
124
+
125
+ ## Phase 2: 核心功能
126
+ - 目标:P0 功能全部可用
127
+ - 交付物:xxx
128
+
129
+ ## Phase 3: 完善
130
+ - 目标:P1 + 测试 + 打磨
131
+ - 交付物:xxx
132
+ ```
133
+
134
+ ### Step 8: 生成 PROJECT.md
135
+
136
+ 保存到 `.sillyspec/PROJECT.md`:
137
+
138
+ ```markdown
139
+ # PROJECT.md
140
+
141
+ ## 项目名:xxx
142
+ ## 一句话:xxx
143
+ ## 状态:已初始化,等待规划
144
+ ```
145
+
146
+ ### Step 9: Git 初始化
147
+
148
+ ```bash
149
+ git init
150
+ git add .
151
+ ```
152
+
153
+ ### 最后说:
154
+
155
+ > ✅ 项目初始化完成!
156
+ >
157
+ > 生成文件:
158
+ > - `.sillyspec/PROJECT.md` — 项目概述
159
+ > - `.sillyspec/REQUIREMENTS.md` — 需求文档
160
+ > - `.sillyspec/ROADMAP.md` — 路线图
161
+ >
162
+ > 下一步:
163
+ > - 开始第一个功能:`/sillyspec:brainstorm "Phase 1: xxx"`
164
+ > - 或修改需求:直接告诉我改什么
165
+
166
+ ## 绝对规则
167
+ - 不写任何实现代码
168
+ - 不安装任何依赖
169
+ - 提问阶段一次一个问题
170
+ - 需求必须具体,不能模糊(❌"好用" → ✅"首屏加载 < 2 秒")