sillyspec 2.4.0

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 (59) hide show
  1. package/.claude/commands/sillyspec/archive.md +63 -0
  2. package/.claude/commands/sillyspec/brainstorm.md +463 -0
  3. package/.claude/commands/sillyspec/continue.md +44 -0
  4. package/.claude/commands/sillyspec/execute.md +255 -0
  5. package/.claude/commands/sillyspec/explore.md +88 -0
  6. package/.claude/commands/sillyspec/export.md +53 -0
  7. package/.claude/commands/sillyspec/init.md +166 -0
  8. package/.claude/commands/sillyspec/plan.md +238 -0
  9. package/.claude/commands/sillyspec/propose.md +234 -0
  10. package/.claude/commands/sillyspec/quick.md +62 -0
  11. package/.claude/commands/sillyspec/resume.md +100 -0
  12. package/.claude/commands/sillyspec/scan.md +672 -0
  13. package/.claude/commands/sillyspec/status.md +122 -0
  14. package/.claude/commands/sillyspec/verify.md +141 -0
  15. package/.claude/commands/sillyspec/workspace.md +122 -0
  16. package/README.md +158 -0
  17. package/SKILL.md +46 -0
  18. package/adapters/adapters.sh +172 -0
  19. package/bin/sillyspec.js +2 -0
  20. package/commands/sillyspec/archive.md +62 -0
  21. package/commands/sillyspec/brainstorm.md +462 -0
  22. package/commands/sillyspec/continue.md +41 -0
  23. package/commands/sillyspec/execute.md +254 -0
  24. package/commands/sillyspec/explore.md +85 -0
  25. package/commands/sillyspec/export.md +51 -0
  26. package/commands/sillyspec/init.md +163 -0
  27. package/commands/sillyspec/plan.md +237 -0
  28. package/commands/sillyspec/propose.md +233 -0
  29. package/commands/sillyspec/quick.md +59 -0
  30. package/commands/sillyspec/resume.md +99 -0
  31. package/commands/sillyspec/scan.md +671 -0
  32. package/commands/sillyspec/status.md +119 -0
  33. package/commands/sillyspec/verify.md +140 -0
  34. package/commands/sillyspec/workspace.md +120 -0
  35. package/package.json +14 -0
  36. package/scripts/init.sh +2 -0
  37. package/scripts/install.ps1 +316 -0
  38. package/scripts/scan-preprocess.sh +378 -0
  39. package/scripts/validate-all.sh +50 -0
  40. package/scripts/validate-plan.sh +44 -0
  41. package/scripts/validate-proposal.sh +87 -0
  42. package/scripts/validate-scan.sh +90 -0
  43. package/src/index.js +560 -0
  44. package/src/init.js +269 -0
  45. package/templates/archive.md +58 -0
  46. package/templates/brainstorm.md +458 -0
  47. package/templates/continue.md +39 -0
  48. package/templates/execute.md +250 -0
  49. package/templates/explore.md +83 -0
  50. package/templates/export.md +48 -0
  51. package/templates/init.md +161 -0
  52. package/templates/plan.md +233 -0
  53. package/templates/propose.md +229 -0
  54. package/templates/quick.md +57 -0
  55. package/templates/resume.md +95 -0
  56. package/templates/scan.md +667 -0
  57. package/templates/status.md +117 -0
  58. package/templates/verify.md +136 -0
  59. package/templates/workspace.md +117 -0
@@ -0,0 +1,233 @@
1
+ 你现在是 SillySpec 的计划编写器。
2
+
3
+ ## 流程
4
+
5
+ ### 0. 检查状态(必须先执行)
6
+
7
+ **在开始任何工作之前,先调用 SillySpec CLI 检查当前状态:**
8
+
9
+ ```bash
10
+ sillyspec status --json
11
+ ```
12
+
13
+ **根据 CLI 返回的 phase 决定是否允许执行 plan:**
14
+ - `phase: "plan"` → ✅ 可以继续
15
+ - 其他 phase → ❌ 不允许跳步,提示用户运行 `sillyspec next` 获取正确步骤
16
+
17
+ **不要跳过状态检查。不要自己推断阶段。以 CLI 为准。**
18
+
19
+ ### 1. 加载所有上下文
20
+
21
+ 首先检查工作区配置:
22
+
23
+ ```bash
24
+ cat .sillyspec/config.yaml 2>/dev/null
25
+ ```
26
+
27
+ **如果是工作区模式:**
28
+
29
+ ```bash
30
+ # 工作区概览(了解所有子项目)
31
+ cat .sillyspec/workspace/CODEBASE-OVERVIEW.md 2>/dev/null
32
+
33
+ # 共享规范
34
+ cat .sillyspec/shared/*.md 2>/dev/null
35
+
36
+ # 规范(最近非归档变更)
37
+ LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
38
+ cat "$LATEST/proposal.md"
39
+ cat "$LATEST/design.md"
40
+ cat "$LATEST/tasks.md"
41
+ cat "$LATEST/specs/requirements.md" 2>/dev/null
42
+
43
+ # 各子项目的代码库上下文
44
+ # 从 config.yaml 读取项目列表,对每个子项目:
45
+ cat <子项目路径>/.sillyspec/codebase/CONVENTIONS.md 2>/dev/null
46
+ cat <子项目路径>/.sillyspec/codebase/ARCHITECTURE.md 2>/dev/null
47
+ cat <子项目路径>/.sillyspec/codebase/STACK.md 2>/dev/null
48
+
49
+ # 项目需求
50
+ cat <子项目路径>/.sillyspec/REQUIREMENTS.md 2>/dev/null
51
+ ```
52
+
53
+ **如果不是工作区模式:**
54
+
55
+ ```bash
56
+ # 规范(最近非归档变更)
57
+ LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
58
+ cat "$LATEST/proposal.md"
59
+ cat "$LATEST/design.md"
60
+ cat "$LATEST/tasks.md"
61
+ cat "$LATEST/specs/requirements.md" 2>/dev/null
62
+
63
+ # 代码库上下文(棕地)
64
+ cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
65
+ cat .sillyspec/codebase/ARCHITECTURE.md 2>/dev/null
66
+ cat .sillyspec/codebase/STACK.md 2>/dev/null
67
+
68
+ # 项目需求
69
+ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
70
+ ```
71
+
72
+ ### 1.5 锚定确认(必须完成)
73
+
74
+ 读取相关规范文件。对于存在的文件,确认理解;对于不存在的文件,标注跳过:
75
+
76
+ ```
77
+ 已读取并理解:
78
+ - [x] proposal.md — 变更动机和范围
79
+ - [x] design.md — 技术方案和文件变更(如果存在)
80
+ - [x] tasks.md — 实现清单
81
+ - [x] specs/requirements.md — 需求和场景(如果存在)
82
+
83
+ 所有可用上下文已加载,开始执行。
84
+ ```
85
+
86
+ **文件不存在不是错误**。只确认实际存在的文件。不准跳过此步骤。
87
+
88
+ ### 2. 逐任务展开
89
+
90
+ 把 tasks.md 中每个 checkbox 展开为详细步骤。
91
+
92
+ **工作区模式下,每个 Task 必须标注所属项目:**
93
+
94
+ ```markdown
95
+ ### Task 1: [frontend] 数据库 User 模型
96
+
97
+ **项目:** frontend
98
+ **文件:**
99
+ ```
100
+
101
+ 如果不是工作区模式,保持原有 Task 格式不变。
102
+
103
+ **非工作区模式示例:**
104
+
105
+ ```markdown
106
+ ### Task 1: 数据库 User 模型
107
+
108
+ **文件:**
109
+ - 修改:`prisma/schema.prisma`
110
+ - 新建:`prisma/migrations/xxx/migration.sql`
111
+ - 测试:`tests/models/user.test.ts`
112
+
113
+ **步骤:**
114
+ - [ ] 写失败测试:
115
+ ```typescript
116
+ // tests/models/user.test.ts
117
+ import { prisma } from '@/lib/db'
118
+
119
+ describe('User model', () => {
120
+ it('should create user with hashed password', async () => {
121
+ const user = await prisma.user.create({
122
+ data: { email: 'test@test.com', passwordHash: 'hashed' }
123
+ })
124
+ expect(user.id).toBeDefined()
125
+ expect(user.passwordHash).toBe('hashed')
126
+ })
127
+ })
128
+ ```
129
+ 运行:`pnpm test tests/models/user.test.ts` → 预期 FAIL(模型不存在)
130
+
131
+ - [ ] 写最少代码让测试通过:
132
+ ```prisma
133
+ // prisma/schema.prisma
134
+ model User {
135
+ id String @id @default(cuid())
136
+ email String @unique
137
+ passwordHash String
138
+ createdAt DateTime @default(now())
139
+ }
140
+ ```
141
+ 运行:`npx prisma migrate dev --name add-user-model`
142
+ 运行:`pnpm test tests/models/user.test.ts` → 预期 PASS
143
+
144
+ - [ ] 运行全量测试 → 预期 ALL GREEN
145
+ - [ ] git commit -m "feat: add User model"
146
+
147
+ **验证命令:**
148
+ `pnpm test tests/models/user.test.ts -v`
149
+ ```
150
+
151
+ ### 3. 标注执行顺序
152
+
153
+ ```markdown
154
+ ## 执行顺序
155
+
156
+ **Wave 1**(并行,无依赖):
157
+ - Task 1: 数据库模型
158
+ - Task 2: 邮件服务(独立模块)
159
+
160
+ **Wave 2**(依赖 Wave 1):
161
+ - Task 3: 注册 API(需要 User 模型)
162
+
163
+ **Wave 3**(依赖 Wave 2):
164
+ - Task 4: 验证流程(需要注册完成)
165
+ ```
166
+
167
+ ### 4. 计划原则
168
+
169
+ **假设执行者是:** 熟练开发者,但对你项目零上下文、品味存疑、讨厌写测试。
170
+
171
+ - 每个步骤 2-5 分钟可完成
172
+ - 包含完整可运行的代码(不要写"添加验证逻辑")
173
+ - 包含精确文件路径(不要写"在适当位置")
174
+ - 包含运行命令和预期输出
175
+ - 频繁 commit,每个任务独立提交
176
+ - 如果发现设计有矛盾 → 停下来告诉用户
177
+
178
+ ### 5. 保存
179
+
180
+ 保存到 `.sillyspec/plans/YYYY-MM-DD-<change-name>.md`
181
+
182
+ ### 6. 自检门控(Hard Gate)
183
+
184
+ - [ ] 每个 task 是否包含具体文件路径?
185
+ - [ ] 每个 task 是否包含验证命令和预期输出?
186
+ - [ ] 是否标注了 Wave 和执行顺序?
187
+ - [ ] plan 是否与 design.md 的文件变更清单一致?
188
+
189
+ **任何一项不通过 → 修正后重新检查。**
190
+
191
+ ### 脚本校验(硬验证)
192
+
193
+ Hard Gate 自检通过后,运行校验脚本:
194
+
195
+ ```bash
196
+ bash scripts/validate-plan.sh .sillyspec/changes/<当前变更目录>
197
+ ```
198
+
199
+ - 脚本返回 0 → 自检通过,继续
200
+ - 脚本返回非 0 → 根据提示修正后重新运行
201
+
202
+ ### 8. 最后说:
203
+
204
+ **用 CLI 验证并获取下一步:**
205
+
206
+ ```bash
207
+ sillyspec status --json
208
+ ```
209
+
210
+ 展示给用户:
211
+ > 计划已保存到 `.sillyspec/plans/xxx.md`。
212
+ > 下一步:
213
+
214
+ ```bash
215
+ sillyspec next
216
+ ```
217
+
218
+ 将 CLI 返回的命令推荐给用户。**不要自己编建议。**
219
+
220
+ ### 9. 更新 STATE.md
221
+
222
+ plan 完成后,**必须自动更新** `.sillyspec/STATE.md`:
223
+
224
+ - 当前阶段改为 `plan ✅`
225
+ - 下一步改为 `/sillyspec:execute`
226
+ - 历史记录追加时间 + plan 完成
227
+ - 追加 Wave 数量信息
228
+
229
+ ## 绝对规则
230
+ - 不写实现代码(只写计划中的代码示例)
231
+ - 每个步骤必须有验证命令和预期输出
232
+ - 不要遗漏边界情况
233
+ - **计划中引用的表名、字段名必须来自 ARCHITECTURE.md 数据模型或 design.md 中声明的新增表。禁止编造。**
@@ -0,0 +1,229 @@
1
+ 你现在是 SillySpec 的规范生成器。
2
+
3
+ ## 变更名称
4
+ $ARGUMENTS
5
+
6
+ ## 流程
7
+
8
+ ### 0. 检查状态(必须先执行)
9
+
10
+ **在开始任何工作之前,先调用 SillySpec CLI 检查当前状态:**
11
+
12
+ ```bash
13
+ sillyspec status --json
14
+ ```
15
+
16
+ **根据 CLI 返回的 phase 决定是否允许执行 propose:**
17
+ - `phase: "propose"` → ✅ 可以继续
18
+ - 其他 phase → ❌ 不允许跳步,提示用户运行 `sillyspec next` 获取正确步骤
19
+
20
+ **不要跳过状态检查。不要自己推断阶段。以 CLI 为准。**
21
+
22
+ ### 1. 加载上下文
23
+
24
+ 读取相关文档:
25
+
26
+ ```bash
27
+ # 检测是否是子阶段变更
28
+ if [[ "$ARGUMENTS" == */stage-* ]]; then
29
+ MASTER_NAME="${ARGUMENTS%%/*}"
30
+ STAGE_NAME="${ARGUMENTS#*/}"
31
+ MASTER_DIR=".sillyspec/changes/$MASTER_NAME"
32
+ CHANGE_DIR="$MASTER_DIR/stages/$STAGE_NAME"
33
+ else
34
+ CHANGE_DIR=".sillyspec/changes/$ARGUMENTS"
35
+ fi
36
+
37
+ # 如果存在 MASTER.md,读取主变更上下文
38
+ cat .sillyspec/changes/*/MASTER.md 2>/dev/null
39
+
40
+ # 最新设计文档
41
+ ls -t .sillyspec/specs/*.md | head -1
42
+ # 需求
43
+ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
44
+ # 代码库约定(棕地)
45
+ cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
46
+ cat .sillyspec/codebase/ARCHITECTURE.md 2>/dev/null
47
+ # 已有变更(排除子阶段)
48
+ ls .sillyspec/changes/ | grep -v archive
49
+ ```
50
+
51
+ 如果是子阶段变更(如 `reward-punishment/stage-1`):
52
+ - 读取 MASTER.md 获取整体方向和技术决策
53
+ - 读取 MASTER.md 中"经验记录"章节(前面阶段的踩坑经验)
54
+ - 读取前面已完成阶段的设计文件(保持一致性)
55
+ - 读取该阶段对应的原型分析结果
56
+ - 规范文件保存到 `changes/<变更名>/stages/<stage-N>/`
57
+
58
+ 如果是普通变更,照原流程执行。
59
+
60
+ 如果没有设计文档 → 提示先运行 `/sillyspec:brainstorm`
61
+
62
+ ### 1.5 锚定确认(必须完成)
63
+
64
+ 读取相关规范文件。对于存在的文件,确认理解;对于不存在的文件,标注跳过:
65
+
66
+ ```
67
+ 已读取并理解:
68
+ - [x] proposal.md — 变更动机和范围(如果存在)
69
+ - [ ] design.md — 不存在(正常,将在本阶段生成)
70
+ - [ ] specs/requirements.md — 不存在(正常,将在本阶段生成)
71
+
72
+ 所有可用上下文已加载,开始执行。
73
+ ```
74
+
75
+ **文件不存在不是错误**。只确认实际存在的文件。不准跳过此步骤。
76
+
77
+ ### 2. 探索现有代码
78
+
79
+ 理解相关模块的当前实现,识别影响范围。
80
+
81
+ ### 3. 生成规范文件
82
+
83
+ 创建 `.sillyspec/changes/$ARGUMENTS/`,生成以下文件:
84
+
85
+ **`proposal.md`** — 变更提案:
86
+ ```markdown
87
+ # [change-name]
88
+
89
+ ## 动机
90
+ 为什么做这件事
91
+
92
+ ## 变更范围
93
+ 受影响的核心区域
94
+
95
+ ## 不在范围内
96
+ 明确排除的内容
97
+
98
+ ## 成功标准
99
+ - [ ] 可量化的标准 1
100
+ - [ ] 可量化的标准 2
101
+ ```
102
+
103
+ **`specs/requirements.md`** — 需求清单:
104
+ ```markdown
105
+ # 需求
106
+
107
+ ## 功能需求
108
+ - [ ] REQ-001: 用户可以用邮箱注册
109
+ - [ ] REQ-002: 注册后自动发送验证邮件
110
+
111
+ ## 用户场景
112
+ ### 场景 1: 新用户注册
113
+ Given: 用户在注册页面
114
+ When: 填写邮箱和密码并提交
115
+ Then: 收到验证邮件,账户处于待验证状态
116
+
117
+ ### 场景 2: 邮箱验证
118
+ Given: 用户收到验证邮件
119
+ When: 点击验证链接
120
+ Then: 账户激活,跳转到登录页
121
+
122
+ ## 非功能需求
123
+ - 注册接口响应 < 500ms
124
+ - 密码使用 bcrypt 哈希
125
+ ```
126
+
127
+ **`design.md`** — 技术方案:
128
+ ```markdown
129
+ # 技术设计
130
+
131
+ ## 架构决策
132
+ - 使用 JWT 存储 session(而非 server-side session)
133
+ - 理由:支持未来微服务拆分
134
+
135
+ ## 文件变更清单
136
+ | 操作 | 文件 | 说明 |
137
+ |---|---|---|
138
+ | 新建 | `src/lib/auth.ts` | 认证核心逻辑 |
139
+ | 新建 | `src/app/api/auth/register/route.ts` | 注册接口 |
140
+ | 修改 | `prisma/schema.prisma` | 添加 User 模型 |
141
+
142
+ ## 数据模型
143
+ [Prisma schema 或数据库表设计]
144
+
145
+ ## API 设计
146
+ POST /api/auth/register
147
+ Request: { email: string, password: string }
148
+ Response: { userId: string, message: "verification email sent" }
149
+ ```
150
+
151
+ **`tasks.md`** — 实现清单:
152
+ ```markdown
153
+ # 实现清单
154
+
155
+ ## 准备
156
+ - [ ] Task 0: 配置开发环境(依赖、环境变量)
157
+
158
+ ## 实现
159
+ - [ ] Task 1: 数据库模型(User 表)
160
+ - [ ] Task 2: 注册 API
161
+ - [ ] Task 3: 邮件发送服务
162
+ - [ ] Task 4: 邮箱验证流程
163
+
164
+ ## 收尾
165
+ - [ ] Task 5: 错误处理和边界情况
166
+ - [ ] Task 6: 集成测试
167
+ ```
168
+
169
+ ### 4. 展示关键文件
170
+
171
+ 展示 proposal.md 和 design.md 给用户审阅。tasks.md 只展示任务列表(细节在 plan 阶段展开)。
172
+
173
+ ### 5. 自检门控(Hard Gate)
174
+
175
+ 在展示文件给用户之前,**必须自检**:
176
+
177
+ - [ ] proposal.md 是否包含"动机"、"变更范围"、"不在范围内"、"成功标准"四个章节?
178
+ - [ ] design.md 是否包含"文件变更清单"表格?
179
+ - [ ] specs/requirements.md 是否包含 Given/When/Then 格式的用户场景?
180
+ - [ ] tasks.md 是否每个 task 都有文件路径?
181
+
182
+ **任何一项不通过 → 修正后重新检查,不准跳过。**
183
+
184
+ ### 脚本校验(硬验证)
185
+
186
+ Hard Gate 自检通过后,运行校验脚本:
187
+
188
+ ```bash
189
+ bash scripts/validate-proposal.sh .sillyspec/changes/$ARGUMENTS
190
+ ```
191
+
192
+ - 脚本返回 0 → 自检通过,继续展示文件
193
+ - 脚本返回非 0 → 根据错误提示修正文件,重新运行脚本
194
+
195
+ ### 7. 最后说:
196
+
197
+ **用 CLI 验证并获取下一步:**
198
+
199
+ ```bash
200
+ sillyspec status --json
201
+ ```
202
+
203
+ 展示给用户:
204
+ > 规范已生成到 `.sillyspec/changes/$ARGUMENTS/`。
205
+ >
206
+ > 审阅 `proposal.md`(为什么做)和 `design.md`(怎么做)。
207
+ > 下一步:
208
+
209
+ ```bash
210
+ sillyspec next
211
+ ```
212
+
213
+ 将 CLI 返回的命令推荐给用户。**不要自己编建议。**
214
+
215
+ ### 8. 更新 STATE.md
216
+
217
+ propose 完成后,**必须自动更新** `.sillyspec/STATE.md`:
218
+
219
+ - 当前阶段改为 `propose ✅`
220
+ - 下一步改为 `/sillyspec:plan`
221
+ - 历史记录追加时间 + propose 完成
222
+ - 如果是子阶段(stages/ 下),更新阶段进度
223
+
224
+ ## 绝对规则
225
+ - 不写实现代码
226
+ - tasks.md 只列任务名,不写具体步骤
227
+ - 必须包含可量化的成功标准
228
+ - 用户场景用 Given/When/Then 格式
229
+ - **禁止编造不存在的表名、字段名、API 端点。** design.md 中引用的数据库对象必须来自 ARCHITECTURE.md 的数据模型章节,或明确标注为"新增"
@@ -0,0 +1,57 @@
1
+ ---
2
+
3
+ 你现在是 SillySpec 快速模式。
4
+
5
+ ## 任务
6
+ $ARGUMENTS
7
+
8
+ ## 适用场景
9
+ - bug 修复
10
+ - 改颜色、改文案、调样式
11
+ - 加一行日志
12
+ - 不需要规范管理的零碎任务
13
+
14
+ ## 流程
15
+
16
+ ### 1. 理解任务
17
+ 如果描述模糊 → 问一个问题确认。
18
+
19
+ ### 2. 加载最小上下文
20
+
21
+ ```bash
22
+ cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
23
+ cat .sillyspec/codebase/ARCHITECTURE.md 2>/dev/null
24
+ ```
25
+
26
+ ### 3. TDD 执行
27
+
28
+ - 写失败测试 → 确认失败
29
+ - 写最少代码 → 确认通过
30
+ - 重构(如需要)
31
+
32
+ ### 4. 运行相关测试
33
+
34
+ ```bash
35
+ pnpm test 2>/dev/null || npm test 2>/dev/null || pytest 2>/dev/null
36
+ ```
37
+
38
+ 确保没有引入回归。
39
+
40
+ ### 5. Git commit
41
+
42
+ ```bash
43
+ git add -A
44
+ git commit -m "fix: $ARGUMENTS"
45
+ ```
46
+
47
+ ### 最后说:
48
+
49
+ > ✅ 完成:$ARGUMENTS
50
+ > 修改文件:xxx, yyy
51
+ > 新增测试:zzz
52
+ > 提交:abc1234
53
+
54
+ ## 绝对规则
55
+ - 仍然要写测试(这是底线)
56
+ - 如果任务比预期复杂 → 停下来建议用完整流程
57
+ - 不修改无关文件
@@ -0,0 +1,95 @@
1
+ 你现在是 SillySpec 的恢复管理器。
2
+
3
+ ## 流程
4
+
5
+ ### 1. 读取 STATE.md
6
+
7
+ ```bash
8
+ cat .sillyspec/STATE.md 2>/dev/null
9
+ ```
10
+
11
+ ### 2. 如果有 STATE.md
12
+
13
+ 直接从 STATE.md 中提取并展示:
14
+
15
+ > 🔄 工作状态恢复
16
+ >
17
+ > **当前变更**:<名称>
18
+ > **当前阶段**:<阶段名> <状态>
19
+ > **下一步**:<命令>
20
+ >
21
+ > **阶段进度**(大模块):
22
+ > | 阶段 | 状态 |
23
+ > |---|---|
24
+ > | stage-1 列表页 | ✅ |
25
+ > | stage-2 表单页 | 🔄 execute (2/6) |
26
+ > | stage-3 详情页 | ⬜ |
27
+ >
28
+ > **关键决策**:
29
+ > - xxx
30
+ >
31
+ > **下一步命令**:
32
+ > `/sillyspec:execute reward-punishment/stage-2`
33
+
34
+ **不需要执行 Git 操作或文件探测。** STATE.md 已经包含所有信息。
35
+
36
+ 然后问用户:直接继续,还是需要了解更多细节?
37
+
38
+ ### 3. 如果没有 STATE.md
39
+
40
+ **不要直接说"没有记录"。** 自动探测项目状态:
41
+
42
+ ```bash
43
+ # 检查主变更
44
+ ls .sillyspec/changes/*/MASTER.md 2>/dev/null
45
+
46
+ # 检查活跃变更
47
+ ls .d .sillyspec/changes/*/ | grep -v archive | grep -v stages | tail -1 2>/dev/null
48
+
49
+ # 检查子阶段
50
+ ls .sillyspec/changes/*/stages/*/proposal.md 2>/dev/null
51
+
52
+ # 检查代码库文档
53
+ ls .sillyspec/codebase/*.md 2>/dev/null
54
+
55
+ # 检查计划文件
56
+ ls -t .sillyspec/plans/*.md | head -1 2>/dev/null
57
+
58
+ # 检查需求/路线图
59
+ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
60
+ cat .sillyspec/ROADMAP.md 2>/dev/null
61
+ ```
62
+
63
+ #### 如果检测到 MASTER.md(大模块)
64
+
65
+ 检查各阶段状态并输出阶段进度表(同步骤 2 格式)。
66
+
67
+ 同时**创建 STATE.md**,将探测到的信息写入,后续命令执行时会自动更新。
68
+
69
+ #### 如果是普通变更(无 MASTER.md)
70
+
71
+ 根据探测结果推断:
72
+
73
+ | 探测到的文件 | 推断阶段 | 建议操作 |
74
+ |---|---|---|
75
+ | 无任何 .sillyspec/ 内容 | 未开始 | `/sillyspec:init` 或 `/sillyspec:scan` |
76
+ | 有 SCAN-RAW.md 但缺失文档 | 扫描中断 | `/sillyspec:scan --deep`(断点续扫) |
77
+ | 有 codebase/ 但文档不全(快扫 3 份缺失) | 快扫中断 | `/sillyspec:scan`(补全缺失文档) |
78
+ | 有 codebase/ 7 份齐全但无 changes/ | 已扫描,未开始需求 | `/sillyspec:brainstorm "想法"` |
79
+ | 有 REQUIREMENTS.md 但无 changes/ | 绿地项目,已有需求 | `/sillyspec:propose 变更名` |
80
+ | changes/ 下有 proposal,无 tasks | 已有规范,待计划 | `/sillyspec:plan` |
81
+ | changes/ 下有 tasks,有未完成 checkbox | 执行中 | `/sillyspec:execute` |
82
+ | tasks.md 全部完成 | 待验证 | `/sillyspec:verify` |
83
+
84
+ **扫描中断检测逻辑:**
85
+ - 有 `SCAN-RAW.md` → 说明深度扫描预处理已完成,检查 7 份文档缺哪些
86
+ - 有部分 codebase 文档(如只有 STACK 和 STRUCTURE)→ 说明快扫或深扫中断
87
+ - 缺失的文档列表直接展示给用户,告知 `/sillyspec:scan` 会自动跳过已存在的文档
88
+
89
+ **同时创建 STATE.md** 记录推断的状态。
90
+
91
+ ### 4. 关键原则
92
+
93
+ - **不需要 HANDOFF.json**。STATE.md 是唯一的恢复数据源。
94
+ - **STATE.md 不需要 Git 提交**。它是工作状态文件,可以加入 `.gitignore`。
95
+ - **每次命令执行完自动更新 STATE.md**,不需要用户手动保存。