sillyspec 3.8.4 → 3.8.6

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 +121 -0
  83. package/templates/brainstorm.md +240 -0
  84. package/{.claude/skills/sillyspec-commit/SKILL.md → templates/commit.md} +47 -29
  85. package/templates/continue.md +32 -0
  86. package/templates/execute.md +314 -0
  87. package/templates/explore.md +60 -0
  88. package/templates/export.md +21 -0
  89. package/templates/init.md +61 -0
  90. package/templates/plan.md +157 -0
  91. package/templates/quick.md +135 -0
  92. package/templates/scan-quick.md +49 -0
  93. package/templates/scan.md +172 -0
  94. package/templates/skills/playwright-e2e/SKILL.md +340 -0
  95. package/templates/status.md +75 -0
  96. package/templates/verify.md +253 -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 -258
  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,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
- - [ ] 测试验证
@@ -1,43 +0,0 @@
1
- # derive-state 验证报告
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:21:00
5
-
6
- ## 结论:✅ PASS
7
-
8
- ## 检查结果
9
-
10
- ### 1. 规范文件加载
11
- - ✅ design.md
12
- - ✅ proposal.md
13
- - ✅ requirements.md
14
- - ✅ tasks.md
15
- - ✅ plan.md
16
-
17
- ### 2. 任务完成度:5/6 (83%)
18
- - ✅ 实现 derive.js 核心函数
19
- - ✅ 集成 run.js --done 轻量校验
20
- - ✅ 集成 doctor.js 全量扫描
21
- - ✅ 扩展 validate 支持 --deep
22
- - ✅ CLI parse --deep 参数
23
- - ⬜ 测试验证(本项目无自动化测试套件,通过手动验证替代)
24
-
25
- ### 3. 设计一致性
26
- - ✅ derive.js 纯函数模块,零外部依赖(仅 fs/path)
27
- - ✅ light/full 模式
28
- - ✅ fix 参数 + 安全修复策略
29
- - ✅ run.js --done 轻量校验集成
30
- - ✅ doctor.js 全量扫描集成
31
- - ✅ progress.js validate --deep 支持
32
- - ✅ index.js CLI --deep 参数
33
- - ✅ 改动文件范围与 design.md 一致
34
-
35
- ### 4. 测试和质量
36
- - ✅ derive.js 模块导入正常
37
- - ✅ sillyspec progress validate --deep 通过
38
- - ✅ 无 TODO/FIXME/HACK/XXX 技术债务
39
- - ✅ sillyspec run quick --status 正常
40
- - ✅ sillyspec run doctor --status 正常
41
-
42
- ## 下一步
43
- sillyspec run archive
@@ -1,50 +0,0 @@
1
- # auto mode — 设计文档
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:28:00
5
-
6
- ## 背景
7
-
8
- 当前 sillyspec 的每个阶段(brainstorm → plan → execute → verify)需要用户手动执行 `sillyspec run <stage>` 和 `sillyspec run <stage> --done`。用户希望一个自动模式,从 brainstorm 一路推进到 verify 完成。
9
-
10
- ## 需求
11
-
12
- 1. 用户启动一次,AI 自动循环所有阶段和步骤
13
- 2. 步骤内部的用户确认点保留不变
14
- 3. 不修改 CLI 代码,纯 skill 文件实现
15
-
16
- ## 设计
17
-
18
- ### 新增文件:`.claude/skills/sillyspec-auto/SKILL.md`
19
-
20
- **核心逻辑:**
21
-
22
- 1. 读 `$ARGUMENTS` 作为用户需求
23
- 2. 阶段循环(brainstorm → plan → execute → verify)
24
- 3. 每个阶段内步骤循环:
25
- - `sillyspec run <stage> --input "需求"` → 读 step prompt
26
- - 执行 prompt 中的操作
27
- - 需要用户确认的步骤 → 暂停等回复
28
- - 完成后自动 `sillyspec run <stage> --done --output "摘要"`
29
- - 读下一步 prompt,继续
30
- 4. 当前阶段全部完成 → 自动进入下一阶段
31
- 5. verify 完成 → 输出总结,停止
32
- 6. 命令失败 → 暂停,等用户介入
33
-
34
- **确认点保留规则:**
35
- - prompt 中有"请用户选择""等待用户回答""展示给用户"等字样 → 暂停
36
- - prompt 中有"自审""检查"等纯内部操作 → 自动完成
37
-
38
- ### 同步到 npm 包
39
-
40
- init.js 已有逻辑复制 `sillyspec-*` skills 到项目 `.claude/skills/`,新 skill 自动生效。
41
-
42
- ## 改动范围
43
-
44
- - 新增:`.claude/skills/sillyspec-auto/SKILL.md`(~60 行)
45
-
46
- ## 不做的事
47
-
48
- - 不修改任何 JS 源码
49
- - 不改变现有阶段流程
50
- - 不自动 commit 或发布
@@ -1,19 +0,0 @@
1
- # auto mode — 提案
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:29:00
5
-
6
- ## 动机
7
- 用户希望一次启动就自动完成 brainstorm → plan → execute → verify 全流程,不需要手动输入 `sillyspec run <stage>` 和 `--done`。
8
-
9
- ## 变更范围
10
- 新增 `.claude/skills/sillyspec-auto/SKILL.md`
11
-
12
- ## 不在范围内
13
- - 不修改 JS 源码
14
- - 不改变阶段流程
15
-
16
- ## 成功标准
17
- 1. `/sillyspec:auto "需求"` 能自动推进全流程
18
- 2. 步骤内部确认点正常暂停
19
- 3. 异常时暂停等用户介入
@@ -1,21 +0,0 @@
1
- # auto mode — 需求
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:29:00
5
-
6
- ## 功能需求
7
-
8
- ### FR1: 阶段自动推进
9
- - 按 brainstorm → plan → execute → verify 顺序自动执行
10
- - 当前阶段完成后自动进入下一阶段
11
-
12
- ### FR2: 步骤自动循环
13
- - 每个步骤:读 prompt → 执行 → 自动 --done → 读下一步
14
- - 不需要用户手动触发 --done
15
-
16
- ### FR3: 确认点保留
17
- - prompt 中有用户确认要求时暂停等回复
18
- - 纯内部操作步骤自动完成
19
-
20
- ### FR4: 异常处理
21
- - 命令失败时暂停,展示错误,等用户介入
@@ -1,7 +0,0 @@
1
- # auto mode — 任务
2
-
3
- author: qinyi
4
- created_at: 2026-04-08 07:29:00
5
-
6
- - [x] 编写 sillyspec-auto SKILL.md — `.claude/skills/sillyspec-auto/SKILL.md`
7
- - [x] 同步到 agents skills — `~/.agents/skills/sillyspec-auto/SKILL.md`