sillyspec 3.8.5 → 3.8.7

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/README.md +0 -6
  2. package/docs/.vitepress/config.mts +45 -0
  3. package/docs/.vitepress/dist/404.html +25 -0
  4. package/docs/.vitepress/dist/assets/app.YytxICdd.js +1 -0
  5. package/docs/.vitepress/dist/assets/chunks/framework.Czhw_PXq.js +19 -0
  6. package/docs/.vitepress/dist/assets/chunks/theme.DusTRZQk.js +1 -0
  7. package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.js +1 -0
  8. package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.lean.js +1 -0
  9. package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  10. package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  11. package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  12. package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  13. package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  14. package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  15. package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  16. package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  17. package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  18. package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  19. package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  20. package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  21. package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  22. package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  23. package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.js +15 -0
  24. package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.lean.js +1 -0
  25. package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.js +4 -0
  26. package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.lean.js +1 -0
  27. package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.js +1 -0
  28. package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.lean.js +1 -0
  29. package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.js +4 -0
  30. package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.lean.js +1 -0
  31. package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.js +5 -0
  32. package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.lean.js +1 -0
  33. package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.js +28 -0
  34. package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.lean.js +1 -0
  35. package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.js +30 -0
  36. package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.lean.js +1 -0
  37. package/docs/.vitepress/dist/assets/style.DFTx90Kk.css +1 -0
  38. package/docs/.vitepress/dist/hashmap.json +1 -0
  39. package/docs/.vitepress/dist/index.html +28 -0
  40. package/docs/.vitepress/dist/sillyspec/commands.html +42 -0
  41. package/docs/.vitepress/dist/sillyspec/dashboard.html +31 -0
  42. package/docs/.vitepress/dist/sillyspec/file-io.html +28 -0
  43. package/docs/.vitepress/dist/sillyspec/getting-started.html +31 -0
  44. package/docs/.vitepress/dist/sillyspec/install.html +32 -0
  45. package/docs/.vitepress/dist/sillyspec/lifecycle.html +55 -0
  46. package/docs/.vitepress/dist/sillyspec/structure.html +57 -0
  47. package/docs/.vitepress/dist/vp-icons.css +1 -0
  48. package/docs/index.md +34 -0
  49. package/docs/sillyspec/commands.md +218 -0
  50. package/docs/sillyspec/dashboard.md +51 -0
  51. package/docs/sillyspec/file-io.md +34 -0
  52. package/docs/sillyspec/getting-started.md +61 -0
  53. package/docs/sillyspec/install.md +51 -0
  54. package/docs/sillyspec/lifecycle.md +146 -0
  55. package/docs/sillyspec/structure.md +62 -0
  56. package/package.json +11 -9
  57. package/packages/dashboard/dist/assets/index-Bh-GPjKY.css +1 -0
  58. package/packages/dashboard/dist/assets/index-CrCn5Gg6.js +17 -0
  59. package/packages/dashboard/dist/index.html +2 -2
  60. package/packages/dashboard/package-lock.json +0 -220
  61. package/packages/dashboard/package.json +5 -8
  62. package/packages/dashboard/server/index.js +106 -255
  63. package/packages/dashboard/server/parser.js +29 -333
  64. package/packages/dashboard/server/watcher.js +131 -203
  65. package/packages/dashboard/src/App.vue +10 -181
  66. package/packages/dashboard/src/components/ActionBar.vue +42 -26
  67. package/packages/dashboard/src/components/CommandPalette.vue +65 -40
  68. package/packages/dashboard/src/components/DetailPanel.vue +53 -68
  69. package/packages/dashboard/src/components/LogStream.vue +33 -13
  70. package/packages/dashboard/src/components/PipelineStage.vue +8 -8
  71. package/packages/dashboard/src/components/PipelineView.vue +45 -80
  72. package/packages/dashboard/src/components/ProjectList.vue +45 -103
  73. package/packages/dashboard/src/components/StageBadge.vue +13 -13
  74. package/packages/dashboard/src/components/StepCard.vue +15 -15
  75. package/packages/dashboard/src/composables/useDashboard.js +6 -20
  76. package/packages/dashboard/src/composables/useKeyboard.js +4 -6
  77. package/packages/dashboard/src/main.js +1 -4
  78. package/packages/dashboard/src/style.css +17 -17
  79. package/src/index.js +12 -123
  80. package/src/init.js +227 -86
  81. package/src/setup.js +9 -1
  82. package/templates/archive.md +120 -0
  83. package/templates/brainstorm.md +170 -0
  84. package/{.claude/skills/sillyspec-commit/SKILL.md → templates/commit.md} +45 -29
  85. package/templates/continue.md +32 -0
  86. package/templates/execute.md +304 -0
  87. package/templates/explore.md +59 -0
  88. package/templates/export.md +21 -0
  89. package/templates/init.md +61 -0
  90. package/templates/plan.md +146 -0
  91. package/templates/quick.md +135 -0
  92. package/templates/scan-quick.md +49 -0
  93. package/templates/scan.md +156 -0
  94. package/templates/skills/playwright-e2e/SKILL.md +340 -0
  95. package/templates/status.md +75 -0
  96. package/templates/verify.md +236 -0
  97. package/templates/workspace-sync.md +99 -0
  98. package/templates/workspace.md +70 -0
  99. package/.claude/skills/sillyspec-archive/SKILL.md +0 -17
  100. package/.claude/skills/sillyspec-auto/SKILL.md +0 -77
  101. package/.claude/skills/sillyspec-brainstorm/SKILL.md +0 -17
  102. package/.claude/skills/sillyspec-continue/SKILL.md +0 -44
  103. package/.claude/skills/sillyspec-doctor/SKILL.md +0 -22
  104. package/.claude/skills/sillyspec-execute/SKILL.md +0 -17
  105. package/.claude/skills/sillyspec-explore/SKILL.md +0 -96
  106. package/.claude/skills/sillyspec-export/SKILL.md +0 -53
  107. package/.claude/skills/sillyspec-init/SKILL.md +0 -170
  108. package/.claude/skills/sillyspec-plan/SKILL.md +0 -52
  109. package/.claude/skills/sillyspec-propose/SKILL.md +0 -17
  110. package/.claude/skills/sillyspec-quick/SKILL.md +0 -17
  111. package/.claude/skills/sillyspec-resume/SKILL.md +0 -111
  112. package/.claude/skills/sillyspec-scan/SKILL.md +0 -17
  113. package/.claude/skills/sillyspec-state/SKILL.md +0 -54
  114. package/.claude/skills/sillyspec-status/SKILL.md +0 -17
  115. package/.claude/skills/sillyspec-verify/SKILL.md +0 -17
  116. package/.claude/skills/sillyspec-workspace/SKILL.md +0 -149
  117. package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +0 -97
  118. package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +0 -51
  119. package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +0 -29
  120. package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +0 -34
  121. package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +0 -13
  122. package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +0 -43
  123. package/.sillyspec/changes/auto-mode/design.md +0 -50
  124. package/.sillyspec/changes/auto-mode/proposal.md +0 -19
  125. package/.sillyspec/changes/auto-mode/requirements.md +0 -21
  126. package/.sillyspec/changes/auto-mode/tasks.md +0 -7
  127. package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +0 -199
  128. package/.sillyspec/changes/dashboard/design.md.braindraft +0 -206
  129. package/.sillyspec/changes/run-command-design/design.md +0 -1230
  130. package/.sillyspec/changes/unified-docs-design/design.md +0 -199
  131. package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
  132. package/.sillyspec/knowledge/INDEX.md +0 -8
  133. package/.sillyspec/knowledge/uncategorized.md +0 -3
  134. package/.sillyspec/projects/sillyspec.yaml +0 -3
  135. package/packages/dashboard/dist/assets/index-D1EVTLmc.js +0 -7446
  136. package/packages/dashboard/dist/assets/index-DGe8CqeP.css +0 -1
  137. package/packages/dashboard/public/logo.jpg +0 -0
  138. package/packages/dashboard/src/components/DocPreview.vue +0 -160
  139. package/packages/dashboard/src/components/DocTree.vue +0 -58
  140. package/packages/dashboard/src/components/ProjectOverview.vue +0 -178
  141. package/packages/dashboard/src/components/detail/DocsDetail.vue +0 -48
  142. package/packages/dashboard/src/components/detail/GitDetail.vue +0 -61
  143. package/packages/dashboard/src/components/detail/TechDetail.vue +0 -43
  144. package/src/derive.js +0 -147
  145. package/src/migrate.js +0 -117
  146. package/src/progress.js +0 -495
  147. package/src/run.js +0 -640
  148. package/src/stages/archive.js +0 -54
  149. package/src/stages/brainstorm.js +0 -239
  150. package/src/stages/doctor.js +0 -312
  151. package/src/stages/execute.js +0 -259
  152. package/src/stages/index.js +0 -35
  153. package/src/stages/plan.js +0 -259
  154. package/src/stages/propose.js +0 -115
  155. package/src/stages/quick.js +0 -64
  156. package/src/stages/scan.js +0 -141
  157. package/src/stages/status.js +0 -65
  158. package/src/stages/verify.js +0 -135
  159. /package/.sillyspec/{changes/brainstorm-archive → specs}/2026-04-05-dashboard-design.md +0 -0
  160. /package/{packages/dashboard → docs/.vitepress}/dist/favicon.jpg +0 -0
  161. /package/{logo.jpg → docs/.vitepress/dist/logo.jpg} +0 -0
  162. /package/{packages/dashboard → docs}/public/favicon.jpg +0 -0
  163. /package/{packages/dashboard/dist → docs/public}/logo.jpg +0 -0
@@ -1,52 +0,0 @@
1
- ---
2
- name: sillyspec:plan
3
- description: 编写实现计划 — 2-5 分钟粒度,精确到文件路径和代码
4
- ---
5
-
6
- ## 执行
7
-
8
- **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
-
10
- 1. 运行 `sillyspec run plan` — 读取输出的步骤 prompt
11
- 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
- 3. 步骤完成后,运行 `sillyspec run plan --done --output "你的摘要"`
13
- 4. 重复 2-3 直到阶段完成
14
- 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
-
16
- ## 子代理并行优化(可选)
17
-
18
- 当 CLI 进入"写任务蓝图 task-N.md"步骤时(Step 5 之后),可以用子代理并行加速:
19
-
20
- 1. 读取 plan.md,统计任务数量
21
- 2. 为每个 task-N.md 启动一个独立子代理
22
- 3. 每个子代理的任务:
23
- - 读取 design.md 和 plan.md
24
- - 读取相关源文件
25
- - 按格式要求写 task-N.md 并保存
26
- 4. 所有子代理完成后,继续 CLI 的下一步(审查一致性)
27
-
28
- **子代理 prompt 模板:**
29
- ```
30
- 你是计划编写者。请为以下任务编写详细蓝图。
31
-
32
- 任务:${taskName}
33
- 变更目录:${changeDir}
34
- 文件路径:${changeDir}/tasks/task-${taskNum}.md
35
-
36
- 要求:
37
- 1. 读取 design.md 和 plan.md 了解上下文
38
- 2. 读取相关源文件了解现有代码
39
- 3. 按以下格式编写任务蓝图并保存到文件:
40
- - 修改文件列表
41
- - 实现要求
42
- - 接口定义/数据结构
43
- - 边界处理
44
- - 参考
45
- - TDD 步骤
46
- - 验收标准(checkbox)
47
- ```
48
-
49
- **注意:** 手动跑 plan 时不用子代理(串行即可),auto skill 中建议用子代理并行。
50
-
51
- ## 用户指令
52
- $ARGUMENTS
@@ -1,17 +0,0 @@
1
- ---
2
- name: sillyspec:propose
3
- description: 生成结构化规范 — proposal + design + tasks
4
- ---
5
-
6
- ## 执行
7
-
8
- **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
-
10
- 1. 运行 `sillyspec run propose` — 读取输出的步骤 prompt
11
- 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
- 3. 步骤完成后,运行 `sillyspec run propose --done --output "你的摘要"`
13
- 4. 重复 2-3 直到阶段完成
14
- 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
-
16
- ## 用户指令
17
- $ARGUMENTS
@@ -1,17 +0,0 @@
1
- ---
2
- name: sillyspec:quick
3
- description: 快速任务 — 跳过完整流程,直接做
4
- ---
5
-
6
- ## 执行
7
-
8
- **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
-
10
- 1. 运行 `sillyspec run quick` — 读取输出的步骤 prompt
11
- 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
- 3. 步骤完成后,运行 `sillyspec run quick --done --output "你的摘要"`
13
- 4. 重复 2-3 直到阶段完成
14
- 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
-
16
- ## 用户指令
17
- $ARGUMENTS
@@ -1,111 +0,0 @@
1
- ---
2
- name: sillyspec:resume
3
- description: 恢复工作 — 从中断处继续
4
- ---
5
-
6
- ## 交互规范
7
-
8
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
9
-
10
- 不要用编号列表让用户手动输入数字。
11
- 如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
12
-
13
- 你现在是 SillySpec 的恢复管理器。
14
-
15
- ## 流程
16
-
17
- ### 1. 读取 progress.json
18
-
19
- ```bash
20
- sillyspec progress show 2>/dev/null
21
- ```
22
-
23
- ### 2. 如果有 progress.json
24
-
25
- 直接从 progress.json 中提取并展示:
26
-
27
- > 🔄 工作状态恢复
28
- >
29
- > **当前变更**:<名称>
30
- > **当前阶段**:<阶段名> <状态>
31
- > **下一步**:<命令>
32
- >
33
- > **阶段进度**(大模块):
34
- > | 阶段 | 状态 |
35
- > |---|---|
36
- > | stage-1 列表页 | ✅ |
37
- > | stage-2 表单页 | 🔄 execute (2/6) |
38
- > | stage-3 详情页 | ⬜ |
39
- >
40
- > **关键决策**:
41
- > - xxx
42
- >
43
- > **下一步命令**:
44
- > `/sillyspec:execute reward-punishment/stage-2`
45
-
46
- **不需要执行 Git 操作或文件探测。** progress.json 已经包含所有信息。
47
-
48
- 使用 `sillyspec progress show` 查看。
49
-
50
- 然后问用户:
51
- 1. 直接继续执行下一步
52
- 2. 查看更多细节
53
-
54
- ### 3. 如果没有 progress.json
55
-
56
- **不要直接说"没有记录"。** 自动探测项目状态:
57
-
58
- ```bash
59
- # 检查主变更
60
- ls .sillyspec/changes/*/MASTER.md 2>/dev/null
61
-
62
- # 检查活跃变更
63
- ls .d .sillyspec/changes/*/ | grep -v archive | grep -v stages | tail -1 2>/dev/null
64
-
65
- # 检查子阶段
66
- ls .sillyspec/changes/*/stages/*/proposal.md 2>/dev/null
67
-
68
- # 检查代码库文档
69
- ls .sillyspec/codebase/*.md 2>/dev/null
70
-
71
- # 检查计划文件
72
- ls -t .sillyspec/plans/*.md | head -1 2>/dev/null
73
-
74
- # 检查需求/路线图
75
- cat .sillyspec/REQUIREMENTS.md 2>/dev/null
76
- cat .sillyspec/ROADMAP.md 2>/dev/null
77
- ```
78
-
79
- #### 如果检测到 MASTER.md(大模块)
80
-
81
- 检查各阶段状态并输出阶段进度表(同步骤 2 格式)。
82
-
83
- 同时**运行 `sillyspec progress init`**,将探测到的信息写入 progress.json,后续命令执行时会自动更新。
84
-
85
- #### 如果是普通变更(无 MASTER.md)
86
-
87
- 根据探测结果推断:
88
-
89
- | 探测到的文件 | 推断阶段 | 建议操作 |
90
- |---|---|---|
91
- | 无任何 .sillyspec/ 内容 | 未开始 | `/sillyspec:init` 或 `/sillyspec:scan` |
92
- | 有 SCAN-RAW.md 但缺失文档 | 扫描中断 | `/sillyspec:scan --deep`(断点续扫) |
93
- | 有 codebase/ 但文档不全(快扫 3 份缺失) | 快扫中断 | `/sillyspec:scan`(补全缺失文档) |
94
- | 有 codebase/ 7 份齐全但无 changes/ | 已扫描,未开始需求 | `/sillyspec:brainstorm "想法"` |
95
- | 有 REQUIREMENTS.md 但无 changes/ | 绿地项目,已有需求 | `/sillyspec:brainstorm "想法"` |
96
- | changes/ 下有 proposal,无 tasks | 已有规范,待计划 | `/sillyspec:plan` |
97
- | changes/ 下有 tasks,有未完成 checkbox | 执行中 | `/sillyspec:execute` |
98
- | tasks.md 全部完成 | 待验证 | `/sillyspec:verify` |
99
-
100
- **扫描中断检测逻辑:**
101
- - 有 `SCAN-RAW.md` → 说明深度扫描预处理已完成,检查 7 份文档缺哪些
102
- - 有部分 codebase 文档(如只有 STACK 和 STRUCTURE)→ 说明快扫或深扫中断
103
- - 缺失的文档列表直接展示给用户,告知 `/sillyspec:scan` 会自动跳过已存在的文档
104
-
105
- **同时运行 `sillyspec progress init`** 记录推断的状态。
106
-
107
- ### 4. 关键原则
108
-
109
- - **不需要 HANDOFF.json**。progress.json 是唯一的恢复数据源。
110
- - **progress.json 不需要 Git 提交**(已在 .runtime/ 下,被 .gitignore 忽略)。
111
- - **每次命令执行完自动更新 progress.json**(通过 `sillyspec progress` CLI),不需要用户手动保存。
@@ -1,17 +0,0 @@
1
- ---
2
- name: sillyspec:scan
3
- description: 代码扫描 — 分析项目结构、约定和架构
4
- ---
5
-
6
- ## 执行
7
-
8
- **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
-
10
- 1. 运行 `sillyspec run scan` — 读取输出的步骤 prompt
11
- 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
- 3. 步骤完成后,运行 `sillyspec run scan --done --output "你的摘要"`
13
- 4. 重复 2-3 直到阶段完成
14
- 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
-
16
- ## 用户指令
17
- $ARGUMENTS
@@ -1,54 +0,0 @@
1
- ---
2
- name: sillyspec:state
3
- description: 查看当前工作状态 — 显示 progress.json 内容
4
- ---
5
-
6
- 你现在是 SillySpec 的状态查看器。
7
-
8
- ## 流程
9
-
10
- ### 1. 读取 progress.json
11
-
12
- ```bash
13
- sillyspec progress show 2>/dev/null
14
- ```
15
-
16
- ### 2. 如果有 progress.json
17
-
18
- 格式化展示当前状态:
19
-
20
- > 📊 当前状态
21
- >
22
- > **变更**:<名称>
23
- > **阶段**:<当前阶段>
24
- > **进度**:<具体进度>
25
- > **下一步**:<命令>
26
- >
27
- > **阶段进度**(大模块):
28
- > (显示各阶段状态表)
29
- >
30
- > **关键决策**:
31
- > - xxx
32
- >
33
- > **阻塞项**:
34
- > - xxx(如无则省略)
35
-
36
- ### 3. 如果没有 progress.json
37
-
38
- 提示用户项目还没有开始,或 progress.json 尚未生成:
39
-
40
- > 📊 还没有工作记录。
41
- >
42
- > 开始使用:
43
- > - 新项目:`/sillyspec:init`
44
- > - 已有项目:`/sillyspec:scan`
45
- > - 恢复中断的工作:`/sillyspec:resume`
46
- >
47
- > progress.json 会在 `sillyspec init` 时自动创建。
48
-
49
- ### 注意
50
-
51
- - 这是只读命令,**不修改任何文件**
52
- - `/sillyspec:status` 查看项目整体进度(change 文件级别)
53
- - `/sillyspec:state` 查看当前工作状态(progress.json 级别)
54
- - 两者互补:status 看"有什么",state 看"在做什么"
@@ -1,17 +0,0 @@
1
- ---
2
- name: sillyspec:status
3
- description: 查看项目进度和状态
4
- ---
5
-
6
- ## 执行
7
-
8
- **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
-
10
- 1. 运行 `sillyspec run status` — 读取输出的步骤 prompt
11
- 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
- 3. 步骤完成后,运行 `sillyspec run status --done --output "你的摘要"`
13
- 4. 重复 2-3 直到阶段完成
14
- 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
-
16
- ## 用户指令
17
- $ARGUMENTS
@@ -1,17 +0,0 @@
1
- ---
2
- name: sillyspec:verify
3
- description: 验证实现 — 对照规范检查 + 测试套件
4
- ---
5
-
6
- ## 执行
7
-
8
- **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
-
10
- 1. 运行 `sillyspec run verify` — 读取输出的步骤 prompt
11
- 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
- 3. 步骤完成后,运行 `sillyspec run verify --done --output "你的摘要"`
13
- 4. 重复 2-3 直到阶段完成
14
- 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
-
16
- ## 用户指令
17
- $ARGUMENTS
@@ -1,149 +0,0 @@
1
- ---
2
- name: sillyspec:workspace
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
- ### Step 1: 检查工作区配置
23
-
24
- ```bash
25
- ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
26
- ```
27
-
28
- 如果不存在 → 这是一个尚未配置工作区的项目。询问用户:
29
- 1. 初始化工作区
30
- 2. 跳过
31
-
32
- ### Step 2: 解析指令
33
-
34
- 根据 `$ARGUMENTS` 或默认行为:
35
-
36
- - **无参数 / `status`** → 显示工作区状态
37
- - **`add`** → 添加子项目
38
- - **`remove`** → 移除子项目
39
- - **`info`** → 显示某个子项目详情
40
- - 无参数且 projects/*.yaml 不存在 → 初始化工作区
41
-
42
- ### Step 3: 执行对应操作
43
-
44
- #### 3a. 初始化工作区(projects/ 不存在时)
45
-
46
- 1. 询问工作区名称(默认用当前目录名)
47
- 2. 逐个添加子项目:
48
- - 询问子项目名称(如 `frontend`、`backend`)
49
- - 询问子项目路径(相对于工作区根目录,如 `./frontend`)
50
- - 询问子项目角色描述(如 `前端 - Vue3 + TypeScript`)
51
- - 询问仓库地址(可选)
52
- - 验证路径存在
53
- 添加完后询问:
54
- > 1. 继续添加子项目
55
- > 2. 完成,配置共享规范
56
- 3. 询问共享规范文件
57
- 4. 为每个子项目创建 `.sillyspec/projects/<name>.yaml`:
58
- ```yaml
59
- name: <name>
60
- path: <relative-path>
61
- status: active
62
- role: <description>
63
- repo: <repo-url> # 可选
64
- ```
65
- 5. 创建 `.sillyspec/shared/` 目录
66
-
67
- #### 3b. 添加子项目(`add`)
68
-
69
- 1. 询问名称、路径、角色
70
- 2. 验证路径存在
71
- 3. 创建/更新 `.sillyspec/projects/<name>.yaml`
72
- 4. Git 提交
73
-
74
- #### 3c. 移除子项目(`remove`)
75
-
76
- 1. 显示当前所有子项目列表
77
- 2. 询问要移除哪个:
78
- > 1. (列出子项目名称)
79
- > 2. 取消
80
- 3. 删除 `.sillyspec/projects/<name>.yaml`
81
- 4. Git 提交
82
-
83
- #### 3d. 工作区状态(`status`,默认)
84
-
85
- 读取所有 `projects/*.yaml`,对每个子项目检查:
86
-
87
- ```bash
88
- # 读取子项目列表
89
- for f in .sillyspec/projects/*.yaml; do
90
- [ -f "$f" ] || continue
91
- proj_name=$(basename "$f" .yaml)
92
- proj_path=$(grep '^path:' "$f" | head -1 | sed 's/^path:[[:space:]]*//')
93
- proj_role=$(grep '^role:' "$f" | head -1 | sed 's/^role:[[:space:]]*//')
94
- # 检查子项目状态
95
- cd "$proj_path"
96
- ls .sillyspec/ 2>/dev/null
97
- cat .sillyspec/PROJECT.md 2>/dev/null
98
- ls docs/${proj_name}/scan/ 2>/dev/null | wc -l
99
- cd -
100
- done
101
- ```
102
-
103
- 输出格式:
104
-
105
- ```
106
- 🏢 工作区:<workspace-name>
107
-
108
- 📦 子项目(N 个):
109
- ✅ frontend ./frontend 前端 - Vue3 + TypeScript 已扫描(7 份文档)
110
- ⚠️ backend ./backend 后端 - Node.js 已初始化(未扫描)
111
- ❌ miniprogram ./miniprogram 小程序 - Taro 未初始化
112
-
113
- 📄 共享规范:2 份
114
- - api-contract.md
115
- - data-models.md
116
-
117
- 💡 操作:
118
- /sillyspec:workspace add — 添加子项目
119
- /sillyspec:workspace remove — 移除子项目
120
- /sillyspec:init — 初始化子项目
121
- /sillyspec:scan — 扫描子项目
122
- ```
123
-
124
- #### 3e. 子项目详情(`info <name>`)
125
-
126
- 显示指定子项目的详细信息,包括 PROJECT.md、REQUIREMENTS.md 内容摘要、扫描文档列表。
127
-
128
- ### Step 4: projects/*.yaml 格式
129
-
130
- 每个子项目对应 `.sillyspec/projects/<name>.yaml`:
131
-
132
- ```yaml
133
- name: frontend
134
- path: ./frontend
135
- status: active
136
- role: 前端 - Vue3 + TypeScript
137
- repo: https://github.com/xxx/frontend.git # 可选
138
- ```
139
-
140
- ### 最后说:
141
-
142
- > 工作区已更新。
143
- > 下一步:对子项目运行 `/sillyspec:init` 或 `/sillyspec:scan`。
144
-
145
- ## 绝对规则
146
- - 不修改子项目目录下的任何文件
147
- - projects/*.yaml 必须是合法 YAML
148
- - 子项目路径必须是相对于工作区根目录的相对路径
149
- - 路径必须验证存在性
@@ -1,97 +0,0 @@
1
- # deriveState 状态推导
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:10:00
5
-
6
- ## 背景
7
-
8
- 当前 sillyspec 的状态管理依赖 `progress.json` 作为唯一数据源。如果 AI 崩溃或异常中断,progress.json 可能与实际产出不一致(如 artifacts 文件已生成但步骤未标记完成)。
9
-
10
- 借鉴 GSD v2 的 deriveState 架构,从文件系统反推状态,与 progress.json 交叉校验。
11
-
12
- ## 需求
13
-
14
- 1. `--done` 完成步骤时轻量校验当前步骤
15
- 2. `doctor` 自检时全量扫描所有阶段
16
- 3. `progress validate --deep` 支持手动触发全量校验
17
- 4. 安全修复策略:明显正确的情况自动修复,有歧义的不动
18
-
19
- ## 设计
20
-
21
- ### 新增文件:`src/derive.js`
22
-
23
- 纯函数模块,零外部依赖(仅 fs/path)。
24
-
25
- ```js
26
- export function deriveState(cwd, options = {}) {
27
- // options.mode: 'light' | 'full'(默认 light)
28
- // options.fix: boolean(默认 false,只报告不修复)
29
- // 返回 { issues: [{type, severity, step, artifact, suggestion}], fixed: number }
30
- }
31
- ```
32
-
33
- #### 扫描逻辑
34
-
35
- 1. 读取 progress.json,获取所有阶段步骤状态
36
- 2. 扫描 `.sillyspec/.runtime/artifacts/` 目录
37
- 3. 文件名格式:`{stage}-step{N}-{timestamp}.txt`
38
- 4. 解析文件名提取 stage、stepIndex 信息
39
- 5. 对比规则:
40
-
41
- | 情况 | 严重度 | 自动修复 |
42
- |------|--------|----------|
43
- | artifacts 有文件但 progress 标记未完成 | issue | ✅ 标记为 done |
44
- | progress 标记已完成但 artifacts 无文件 | warning | ❌ 可能被手动清理 |
45
- | artifacts 有 step5 但 progress 只到 step3 | issue | ✅ 补齐中间步骤 |
46
-
47
- #### 模式
48
-
49
- - **light**:只检查 currentStage 的当前步骤和前一步
50
- - **full**:检查所有阶段所有步骤
51
-
52
- ### 集成方式
53
-
54
- #### 1. run.js — `--done` 轻量校验
55
-
56
- 在 `completeStep` 末尾:
57
- ```js
58
- import { deriveState } from './derive.js';
59
- const result = deriveState(cwd, { mode: 'light', fix: true });
60
- if (result.fixed > 0) {
61
- console.log(`⚠️ 状态修复:${result.fixed} 个步骤已从 artifacts 恢复`);
62
- }
63
- ```
64
-
65
- #### 2. doctor.js — 全量扫描
66
-
67
- 第一步(SillySpec 内部检查)调用:
68
- ```js
69
- const result = deriveState(cwd, { mode: 'full', fix: false });
70
- // 将 issues 加入自检报告
71
- ```
72
-
73
- #### 3. progress.js — `validate --deep`
74
-
75
- validate 方法支持 deep 参数:
76
- ```js
77
- validate(cwd, deep = false) {
78
- // ...现有校验逻辑...
79
- if (deep) {
80
- const result = deriveState(cwd, { mode: 'full', fix: true });
81
- // 输出校验结果
82
- }
83
- }
84
- ```
85
-
86
- CLI:`sillyspec progress validate --deep`
87
-
88
- ## 改动范围
89
-
90
- - 新增:`src/derive.js`(~80 行)
91
- - 修改:`src/run.js`(2 行)、`src/stages/doctor.js`(3 行)、`src/progress.js`(5 行)、`src/index.js`(parse --deep)
92
-
93
- ## 不做的事
94
-
95
- - 不引入 SQLite 或其他新依赖
96
- - 不改变 progress.json 的数据结构
97
- - 不自动删除 progress 中有但 artifacts 无的步骤(可能被手动清理)
@@ -1,51 +0,0 @@
1
- # deriveState 状态推导 — 实现计划
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:12:00
5
-
6
- ## Wave 1(核心,无依赖)
7
-
8
- - [ ] 实现 derive.js 核心函数
9
- - 新增: `src/derive.js`
10
- - 步骤:
11
- 1. 实现 `deriveState(cwd, options)` 纯函数
12
- 2. 实现 artifacts 文件名解析(`{stage}-step{N}-{timestamp}.txt`)
13
- 3. 实现 light/full 模式扫描逻辑
14
- 4. 实现安全修复策略(issues 分类 + fix 逻辑)
15
- 5. 验证: 在 sillyspec 项目上手动创建测试 artifacts,运行 `node -e "import('./src/derive.js').then(m => console.log(m.deriveState(process.cwd(), {mode:'full'})))"` 确认输出
16
-
17
- ## Wave 2(集成,依赖 Wave 1)
18
-
19
- - [ ] 集成 run.js --done 轻量校验
20
- - 修改: `src/run.js`
21
- - 参考: `completeStep` 函数末尾
22
- - 步骤:
23
- 1. 在 completeStep 末尾 import 并调用 deriveState(cwd, {mode:'light', fix:true})
24
- 2. 有修复时输出警告信息
25
- 3. 验证: 运行 brainstorm 完成 --done,确认无报错
26
-
27
- - [ ] 扩展 validate 支持 --deep
28
- - 修改: `src/progress.js`
29
- - 参考: `validate()` 方法
30
- - 步骤:
31
- 1. validate 方法加 deep 参数
32
- 2. deep=true 时调用 deriveState(cwd, {mode:'full', fix:true})
33
- 3. 验证: `sillyspec progress validate --deep` 确认输出校验结果
34
-
35
- - [ ] CLI parse --deep 参数
36
- - 修改: `src/index.js`
37
- - 参考: progress 子命令的参数解析
38
- - 步骤:
39
- 1. 在 progress validate 命令中解析 --deep flag
40
- 2. 传递给 validate 方法
41
- 3. 验证: `sillyspec progress validate --deep` 确认 flag 生效
42
-
43
- ## Wave 3(集成,依赖 Wave 1)
44
-
45
- - [ ] 集成 doctor.js 全量扫描
46
- - 修改: `src/stages/doctor.js`
47
- - 参考: doctor 第一步(SillySpec 内部检查)的 prompt
48
- - 步骤:
49
- 1. 在第一步 prompt 中加入 deriveState 全量扫描指令
50
- 2. 将 issues 列表纳入自检报告
51
- 3. 验证: `sillyspec run doctor` 确认第一步输出包含状态一致性检查
@@ -1,29 +0,0 @@
1
- # deriveState 状态推导 — 提案
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:11:00
5
-
6
- ## 动机
7
-
8
- 当前 progress.json 是 sillyspec 唯一的状态数据源。AI 崩溃或异常中断时,progress.json 可能与实际产出不一致(artifacts 已生成但步骤未标记完成)。需要从文件系统反推状态,交叉校验。
9
-
10
- ## 变更范围
11
-
12
- - 新增 `src/derive.js`(状态推导纯函数)
13
- - 修改 `src/run.js`(--done 轻量校验)
14
- - 修改 `src/stages/doctor.js`(全量扫描)
15
- - 修改 `src/progress.js`(validate --deep)
16
- - 修改 `src/index.js`(parse --deep 参数)
17
-
18
- ## 不在范围内
19
-
20
- - 不改 progress.json 数据结构
21
- - 不引入新依赖
22
- - 不自动删除 progress 中有但 artifacts 无的步骤
23
-
24
- ## 成功标准
25
-
26
- 1. `--done` 完成步骤时自动校验并修复当前步骤
27
- 2. `doctor` 输出全量状态一致性报告
28
- 3. `sillyspec progress validate --deep` 可手动触发全量校验
29
- 4. 所有校验通过现有测试
@@ -1,34 +0,0 @@
1
- # deriveState 状态推导 — 需求
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:11:00
5
-
6
- ## 功能需求
7
-
8
- ### FR1: deriveState 核心函数
9
- - 从 artifacts 目录扫描文件,解析 `{stage}-step{N}-{timestamp}.txt` 格式
10
- - 与 progress.json 步骤状态对比
11
- - 返回 issues 列表和修复计数
12
-
13
- ### FR2: 轻量模式(light)
14
- - 只检查 currentStage 的当前步骤和前一步
15
- - 用于 `--done` 完成时
16
-
17
- ### FR3: 全量模式(full)
18
- - 检查所有阶段所有步骤
19
- - 用于 doctor 和 validate --deep
20
-
21
- ### FR4: 安全修复策略
22
- - artifacts 有但 progress 漏记 → 自动修复为 done
23
- - artifacts 有 step5 但 progress 只到 step3 → 自动补齐
24
- - progress 有但 artifacts 无 → 只警告,不修复
25
-
26
- ### FR5: CLI 集成
27
- - `--done` 时静默调用轻量校验,有修复才输出
28
- - `doctor` 第一步输出全量报告
29
- - `sillyspec progress validate --deep` 手动触发
30
-
31
- ## 非功能需求
32
- - 零外部依赖(仅 fs/path)
33
- - 纯函数,易于测试
34
- - 不改变现有 API 行为
@@ -1,13 +0,0 @@
1
- # deriveState 状态推导 — 任务
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:11:00
5
-
6
- ## 任务列表
7
-
8
- - [x] 实现 derive.js 核心函数 — `src/derive.js`
9
- - [x] 集成 run.js --done 轻量校验 — `src/run.js`
10
- - [x] 集成 doctor.js 全量扫描 — `src/stages/doctor.js`
11
- - [x] 扩展 validate 支持 --deep — `src/progress.js`
12
- - [x] CLI parse --deep 参数 — `src/index.js`
13
- - [ ] 测试验证