sillyspec 2.4.4 → 2.6.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 (34) hide show
  1. package/.claude/commands/sillyspec/archive.md +36 -43
  2. package/.claude/commands/sillyspec/brainstorm.md +86 -483
  3. package/.claude/commands/sillyspec/continue.md +24 -29
  4. package/.claude/commands/sillyspec/execute.md +63 -173
  5. package/.claude/commands/sillyspec/explore.md +20 -68
  6. package/.claude/commands/sillyspec/export.md +13 -37
  7. package/.claude/commands/sillyspec/init.md +25 -127
  8. package/.claude/commands/sillyspec/plan.md +40 -188
  9. package/.claude/commands/sillyspec/propose.md +36 -186
  10. package/.claude/commands/sillyspec/quick.md +17 -47
  11. package/.claude/commands/sillyspec/resume.md +22 -79
  12. package/.claude/commands/sillyspec/scan.md +109 -507
  13. package/.claude/commands/sillyspec/status.md +20 -95
  14. package/.claude/commands/sillyspec/verify.md +27 -86
  15. package/.claude/commands/sillyspec/workspace.md +27 -95
  16. package/.sillyspec/config.yaml +13 -0
  17. package/package.json +7 -2
  18. package/src/index.js +2 -2
  19. package/src/init.js +240 -75
  20. package/templates/archive.md +36 -43
  21. package/templates/brainstorm.md +81 -483
  22. package/templates/continue.md +20 -30
  23. package/templates/execute.md +63 -173
  24. package/templates/explore.md +15 -68
  25. package/templates/export.md +10 -39
  26. package/templates/init.md +20 -127
  27. package/templates/plan.md +40 -188
  28. package/templates/propose.md +36 -186
  29. package/templates/quick.md +13 -48
  30. package/templates/resume.md +22 -79
  31. package/templates/scan.md +109 -507
  32. package/templates/status.md +16 -96
  33. package/templates/verify.md +22 -86
  34. package/templates/workspace.md +22 -95
@@ -1,229 +1,79 @@
1
- 你现在是 SillySpec 的规范生成器。
1
+ ## 交互规范
2
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
2
3
 
3
- ## 变更名称
4
- $ARGUMENTS
5
-
6
- ## 流程
4
+ ## 核心约束(必须遵守)
5
+ - ❌ 写实现代码
6
+ - ❌ tasks.md 写具体步骤(只列任务名)
7
+ - ❌ 编造表名、字段名、API 端点(必须来自 ARCHITECTURE.md 或明确标注"新增")
7
8
 
8
- ### 0. 检查状态(必须先执行)
9
-
10
- **在开始任何工作之前,先调用 SillySpec CLI 检查当前状态:**
9
+ ## 状态检查(必须先执行)
11
10
 
12
11
  ```bash
13
12
  sillyspec status --json
14
13
  ```
15
14
 
16
- **根据 CLI 返回的 phase 决定是否允许执行 propose:**
17
- - `phase: "propose"` 可以继续
18
- - 其他 phase → ❌ 不允许跳步,提示用户运行 `sillyspec next` 获取正确步骤
15
+ - `phase: "propose"` 继续
16
+ - 其他 phase → 提示 `sillyspec next`
19
17
 
20
- **不要跳过状态检查。不要自己推断阶段。以 CLI 为准。**
18
+ ## 变更名称
19
+ $ARGUMENTS
21
20
 
22
- ### 1. 加载上下文
21
+ ---
22
+
23
+ ## 流程
23
24
 
24
- 读取相关文档:
25
+ ### 1. 加载上下文
25
26
 
26
27
  ```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
- # 最新设计文档
28
+ cat .sillyspec/changes/*/MASTER.md 2>/dev/null # 子阶段变更
41
29
  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
- # 已有变更(排除子阶段)
30
+ cat .sillyspec/{REQUIREMENTS}.md .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
48
31
  ls .sillyspec/changes/ | grep -v archive
49
32
  ```
50
33
 
51
- 如果是子阶段变更(如 `reward-punishment/stage-1`):
52
- - 读取 MASTER.md 获取整体方向和技术决策
53
- - 读取 MASTER.md 中"经验记录"章节(前面阶段的踩坑经验)
54
- - 读取前面已完成阶段的设计文件(保持一致性)
55
- - 读取该阶段对应的原型分析结果
56
- - 规范文件保存到 `changes/<变更名>/stages/<stage-N>/`
57
-
58
- 如果是普通变更,照原流程执行。
34
+ **子阶段变更(如 `name/stage-1`):** 读 MASTER.md 获取方向 + 前序经验 + 原型分析。规范保存到 `changes/<name>/stages/<stage-N>/`。
59
35
 
60
- 如果没有设计文档提示先运行 `/sillyspec:brainstorm`
36
+ 无设计文档提示先 `/sillyspec:brainstorm`。
61
37
 
62
38
  ### 1.5 锚定确认(必须完成)
63
39
 
64
- 读取相关规范文件。对于存在的文件,确认理解;对于不存在的文件,标注跳过:
65
-
66
- ```
67
- 已读取并理解:
68
- - [x] proposal.md — 变更动机和范围(如果存在)
69
- - [ ] design.md — 不存在(正常,将在本阶段生成)
70
- - [ ] specs/requirements.md — 不存在(正常,将在本阶段生成)
71
-
72
- 所有可用上下文已加载,开始执行。
73
- ```
74
-
75
- **文件不存在不是错误**。只确认实际存在的文件。不准跳过此步骤。
40
+ 确认实际存在的文件。
76
41
 
77
42
  ### 2. 探索现有代码
78
43
 
79
- 理解相关模块的当前实现,识别影响范围。
44
+ 理解相关模块当前实现,识别影响范围。
80
45
 
81
46
  ### 3. 生成规范文件
82
47
 
83
- 创建 `.sillyspec/changes/$ARGUMENTS/`,生成以下文件:
48
+ 创建 `.sillyspec/changes/$ARGUMENTS/`:
84
49
 
85
- **`proposal.md`** — 变更提案:
86
- ```markdown
87
- # [change-name]
50
+ **`proposal.md`:** 动机、变更范围、不在范围内、可量化成功标准
88
51
 
89
- ## 动机
90
- 为什么做这件事
52
+ **`specs/requirements.md`:** 功能需求(REQ-001 格式)、Given/When/Then 用户场景、非功能需求
91
53
 
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
- ```
54
+ **`design.md`:** 架构决策及理由、文件变更清单表格、数据模型、API 设计、**代码风格参照**(参考已有的 Controller/Service/Entity 源文件,标注返回值类型、异常类型、注解风格)
126
55
 
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
- ```
56
+ **`tasks.md`:** 准备 → 实现 → 收尾的任务列表(每个 task 标注文件路径)
168
57
 
169
58
  ### 4. 展示关键文件
170
59
 
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 都有文件路径?
60
+ 展示 proposal.md 和 design.md 给用户审阅。tasks.md 只展示任务列表。
181
61
 
182
- **任何一项不通过 修正后重新检查,不准跳过。**
62
+ ### 5. 自检门控
183
63
 
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 验证并获取下一步:**
64
+ - [ ] proposal.md 含"动机、变更范围、不在范围内、成功标准"?
65
+ - [ ] design.md 含"文件变更清单"表格?
66
+ - [ ] requirements.md 含 Given/When/Then 用户场景?
67
+ - [ ] tasks.md 每个 task 有文件路径?
198
68
 
199
69
  ```bash
200
- sillyspec status --json
70
+ bash scripts/validate-proposal.sh .sillyspec/changes/$ARGUMENTS 2>/dev/null
201
71
  ```
202
72
 
203
- 展示给用户:
204
- > 规范已生成到 `.sillyspec/changes/$ARGUMENTS/`。
205
- >
206
- > 审阅 `proposal.md`(为什么做)和 `design.md`(怎么做)。
207
- > 下一步:
73
+ ### 6. 完成
208
74
 
209
75
  ```bash
210
- sillyspec next
76
+ sillyspec status --json && sillyspec next
211
77
  ```
212
78
 
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 的数据模型章节,或明确标注为"新增"
79
+ 更新 `.sillyspec/STATE.md`:阶段改为 `propose ✅`,下一步 `/sillyspec:plan`。
@@ -1,57 +1,22 @@
1
- ---
1
+ ## 交互规范
2
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
2
3
 
3
- 你现在是 SillySpec 快速模式。
4
+ ## 核心约束(必须遵守)
5
+ - ❌ 不写测试(底线是仍然要写测试)
6
+ - ❌ 修改无关文件
7
+ - ❌ 跳过测试因为"任务太简单"
4
8
 
5
9
  ## 任务
6
10
  $ARGUMENTS
7
11
 
8
- ## 适用场景
9
- - bug 修复
10
- - 改颜色、改文案、调样式
11
- - 加一行日志
12
- - 不需要规范管理的零碎任务
12
+ ---
13
13
 
14
14
  ## 流程
15
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
16
+ 1. **理解任务:** 模糊则问一个问题确认
17
+ 2. **加载最小上下文:** `cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null`
18
+ 3. **TDD 执行:** 🔴 写失败测试 → 🟢 写最少代码 → 🔵 重构
19
+ 4. **运行相关测试:** `pnpm test 2>/dev/null || npm test 2>/dev/null || pytest 2>/dev/null`
20
+ 5. **Git commit:** `git add -A && git commit -m "fix: $ARGUMENTS"`
53
21
 
54
- ## 绝对规则
55
- - 仍然要写测试(这是底线)
56
- - 如果任务比预期复杂 → 停下来建议用完整流程
57
- - 不修改无关文件
22
+ 如果任务比预期复杂 → 停下来建议用完整流程。
@@ -1,104 +1,47 @@
1
1
  ## 交互规范
2
-
3
2
  **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
4
3
 
5
- 不要用编号列表让用户手动输入数字。
6
- 如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"
4
+ ## 核心约束(必须遵守)
5
+ - 直接说"没有记录"(无 STATE.md 时应自动探测)
6
+ - ❌ 修改任何文件(只读展示,但探测后可创建 STATE.md)
7
7
 
8
- 你现在是 SillySpec 的恢复管理器。
8
+ ---
9
9
 
10
10
  ## 流程
11
11
 
12
- ### 1. 读取 STATE.md
12
+ ### Step 1: 读取 STATE.md
13
13
 
14
14
  ```bash
15
15
  cat .sillyspec/STATE.md 2>/dev/null
16
16
  ```
17
17
 
18
- ### 2. 如果有 STATE.md
19
-
20
- 直接从 STATE.md 中提取并展示:
21
-
22
- > 🔄 工作状态恢复
23
- >
24
- > **当前变更**:<名称>
25
- > **当前阶段**:<阶段名> <状态>
26
- > **下一步**:<命令>
27
- >
28
- > **阶段进度**(大模块):
29
- > | 阶段 | 状态 |
30
- > |---|---|
31
- > | stage-1 列表页 | ✅ |
32
- > | stage-2 表单页 | 🔄 execute (2/6) |
33
- > | stage-3 详情页 | ⬜ |
34
- >
35
- > **关键决策**:
36
- > - xxx
37
- >
38
- > **下一步命令**:
39
- > `/sillyspec:execute reward-punishment/stage-2`
40
-
41
- **不需要执行 Git 操作或文件探测。** STATE.md 已经包含所有信息。
18
+ **有 STATE.md:** 提取并展示当前变更、阶段、进度、下一步命令、阶段进度表、关键决策。AskUserQuestion:直接继续 / 查看更多细节。
42
19
 
43
- 然后问用户:
44
- 1. 直接继续执行下一步
45
- 2. 查看更多细节
46
-
47
- ### 3. 如果没有 STATE.md
48
-
49
- **不要直接说"没有记录"。** 自动探测项目状态:
20
+ **无 STATE.md:** 自动探测:
50
21
 
51
22
  ```bash
52
- # 检查主变更
53
23
  ls .sillyspec/changes/*/MASTER.md 2>/dev/null
54
-
55
- # 检查活跃变更
56
- ls .d .sillyspec/changes/*/ | grep -v archive | grep -v stages | tail -1 2>/dev/null
57
-
58
- # 检查子阶段
24
+ ls -d .sillyspec/changes/*/ | grep -v archive | grep -v stages | tail -1 2>/dev/null
59
25
  ls .sillyspec/changes/*/stages/*/proposal.md 2>/dev/null
60
-
61
- # 检查代码库文档
62
- ls .sillyspec/codebase/*.md 2>/dev/null
63
-
64
- # 检查计划文件
65
- ls -t .sillyspec/plans/*.md | head -1 2>/dev/null
66
-
67
- # 检查需求/路线图
68
- cat .sillyspec/REQUIREMENTS.md 2>/dev/null
69
- cat .sillyspec/ROADMAP.md 2>/dev/null
26
+ ls .sillyspec/codebase/*.md .sillyspec/changes/*/plan.md .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
70
27
  ```
71
28
 
72
- #### 如果检测到 MASTER.md(大模块)
73
-
74
- 检查各阶段状态并输出阶段进度表(同步骤 2 格式)。
75
-
76
- 同时**创建 STATE.md**,将探测到的信息写入,后续命令执行时会自动更新。
77
-
78
- #### 如果是普通变更(无 MASTER.md)
79
-
80
- 根据探测结果推断:
29
+ **探测结果推断:**
81
30
 
82
31
  | 探测到的文件 | 推断阶段 | 建议操作 |
83
32
  |---|---|---|
84
- | 无任何 .sillyspec/ 内容 | 未开始 | `/sillyspec:init` 或 `/sillyspec:scan` |
85
- | 有 SCAN-RAW.md 但缺失文档 | 扫描中断 | `/sillyspec:scan --deep`(断点续扫) |
86
- | codebase/ 但文档不全(快扫 3 份缺失) | 快扫中断 | `/sillyspec:scan`(补全缺失文档) |
87
- | 有 codebase/ 7 份齐全但无 changes/ | 已扫描,未开始需求 | `/sillyspec:brainstorm "想法"` |
88
- | 有 REQUIREMENTS.md 但无 changes/ | 绿地项目,已有需求 | `/sillyspec:propose 变更名` |
89
- | changes/ 下有 proposal,无 tasks | 已有规范,待计划 | `/sillyspec:plan` |
90
- | changes/ 下有 tasks,有未完成 checkbox | 执行中 | `/sillyspec:execute` |
91
- | tasks.md 全部完成 | 待验证 | `/sillyspec:verify` |
92
-
93
- **扫描中断检测逻辑:**
94
- - 有 `SCAN-RAW.md` → 说明深度扫描预处理已完成,检查 7 份文档缺哪些
95
- - 有部分 codebase 文档(如只有 STACK 和 STRUCTURE)→ 说明快扫或深扫中断
96
- - 缺失的文档列表直接展示给用户,告知 `/sillyspec:scan` 会自动跳过已存在的文档
33
+ | .sillyspec/ 内容 | 未开始 | `/sillyspec:init` 或 `/sillyspec:scan` |
34
+ | 有 SCAN-RAW.md codebase 文档不全 | 扫描中断 | `/sillyspec:scan`(断点续扫) |
35
+ | codebase 7 份齐全无 changes/ | 已扫描未开始需求 | `/sillyspec:brainstorm` |
36
+ | 有 REQUIREMENTS.md changes/ | 绿地有需求 | `/sillyspec:propose` |
37
+ | changes/ proposal tasks | 待计划 | `/sillyspec:plan` |
38
+ | tasks.md 有未完成 checkbox | 执行中 | `/sillyspec:execute` |
39
+ | tasks.md 全完成 | 待验证 | `/sillyspec:verify` |
97
40
 
98
- **同时创建 STATE.md** 记录推断的状态。
41
+ **同时创建 STATE.md 记录推断状态。**
99
42
 
100
- ### 4. 关键原则
43
+ ### 关键原则
101
44
 
102
- - **不需要 HANDOFF.json**。STATE.md 是唯一的恢复数据源。
103
- - **STATE.md 不需要 Git 提交**。它是工作状态文件,可以加入 `.gitignore`。
104
- - **每次命令执行完自动更新 STATE.md**,不需要用户手动保存。
45
+ - STATE.md 是唯一恢复数据源(不需要 HANDOFF.json
46
+ - STATE.md 不需要 Git 提交(可加入 `.gitignore`)
47
+ - 每次命令执行完自动更新