sillyspec 2.4.4 → 2.5.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 +14 -56
  2. package/.claude/commands/sillyspec/brainstorm.md +81 -483
  3. package/.claude/commands/sillyspec/continue.md +20 -30
  4. package/.claude/commands/sillyspec/execute.md +54 -173
  5. package/.claude/commands/sillyspec/explore.md +15 -68
  6. package/.claude/commands/sillyspec/export.md +10 -39
  7. package/.claude/commands/sillyspec/init.md +20 -127
  8. package/.claude/commands/sillyspec/plan.md +36 -187
  9. package/.claude/commands/sillyspec/propose.md +36 -186
  10. package/.claude/commands/sillyspec/quick.md +13 -48
  11. package/.claude/commands/sillyspec/resume.md +22 -79
  12. package/.claude/commands/sillyspec/scan.md +100 -511
  13. package/.claude/commands/sillyspec/status.md +16 -96
  14. package/.claude/commands/sillyspec/verify.md +22 -86
  15. package/.claude/commands/sillyspec/workspace.md +22 -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 +232 -63
  20. package/templates/archive.md +14 -56
  21. package/templates/brainstorm.md +81 -483
  22. package/templates/continue.md +20 -30
  23. package/templates/execute.md +54 -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 +36 -187
  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 +100 -511
  32. package/templates/status.md +16 -96
  33. package/templates/verify.md +22 -86
  34. package/templates/workspace.md +22 -95
@@ -1,20 +1,18 @@
1
1
  ## 交互规范
2
-
3
2
  **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
4
3
 
5
- 不要用编号列表让用户手动输入数字。
6
- 如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
7
-
8
- ---
9
-
10
- 你现在是 SillySpec 的项目初始化器。
4
+ ## 核心约束(必须遵守)
5
+ - 写任何实现代码
6
+ - ❌ 安装任何依赖
7
+ - ❌ 一次问多个问题
8
+ - ❌ 接受模糊需求(❌"好用" → ✅"首屏加载 < 2 秒")
11
9
 
12
10
  ## 用户输入
13
11
  $ARGUMENTS
14
12
 
15
- ## 核心流程
13
+ ---
16
14
 
17
- 这是一个从零开始创建新项目的完整流程。你的目标是:**在开始写任何代码之前,把需求彻底搞清楚。**
15
+ ## 流程
18
16
 
19
17
  ### Step 1: 检查工作区模式
20
18
 
@@ -22,16 +20,7 @@ $ARGUMENTS
22
20
  cat .sillyspec/config.yaml 2>/dev/null
23
21
  ```
24
22
 
25
- 如果 config.yaml 存在且包含 `projects` → 工作区模式:
26
- 1. 列出所有子项目:
27
- 检测到工作区模式,请选择要初始化的子项目:
28
- > 1. frontend — 前端 - Vue3 + TypeScript
29
- > 2. backend — 后端 - Node.js + PostgreSQL
30
- > 3. 新建子项目(先运行 /sillyspec:workspace add)
31
- 2. 用户选择后,**切换到该子项目目录**执行后续所有步骤
32
- 3. 后续步骤中的所有文件路径相对于子项目目录
33
-
34
- 否则 → 单项目模式,继续。
23
+ `projects` → 工作区模式:AskUserQuestion 选子项目,切换到子项目目录执行。
35
24
 
36
25
  ### Step 2: 检查项目状态
37
26
 
@@ -39,128 +28,32 @@ cat .sillyspec/config.yaml 2>/dev/null
39
28
  ls -la
40
29
  ```
41
30
 
42
- 如果目录已经有代码/配置文件 → 提示用 `/sillyspec:scan` 代替。
43
- 如果是空目录 → 继续。
44
-
45
- ### Step 3: 深度提问
31
+ 已有代码/配置 → 提示用 `/sillyspec:scan`。空目录 → 继续。
46
32
 
47
- **一次只问一个问题**,按以下顺序探索:
33
+ ### Step 3: 深度提问(一次一个问题)
48
34
 
49
- 1. **项目本质** 这个项目要解决什么问题?给谁用?
50
- 2. **核心功能** — 用户能做的最重要的事情是什么?
51
- 3. **技术偏好** — 有偏好的语言/框架吗?还是让我建议?
52
- 4. **非功能需求** — 性能要求?安全要求?离线支持?多语言?
53
- 5. **设计偏好** — 有参考产品吗?喜欢什么风格?
54
- 6. **约束** — 预算?时间?团队规模?
55
- 7. **不在范围内** — 明确什么不做
35
+ 按需探索(不是每个都要):项目本质 核心功能 → 技术偏好 → 非功能需求 → 设计偏好 → 约束 → 不在范围内。
56
36
 
57
37
  ### Step 4: 技术选型(如需要)
58
38
 
59
- 如果用户没有明确偏好,基于项目需求推荐 2-3 套技术栈,列出优劣:
60
- - 语言 + 框架 + 数据库 + 部署方案
61
- - 给出推荐和理由
62
-
63
- ### Step 5: 可选调研
64
-
65
- 如果用户同意,对关键技术选型做快速调研:
66
- - 选定框架的当前版本和生态状态
67
- - 已知的坑和替代方案
68
- - 依赖的第三方服务的稳定性
69
-
70
- ### Step 6: 生成需求文档
71
-
72
- 保存到 `.sillyspec/REQUIREMENTS.md`:
73
-
74
- ```markdown
75
- # 需求文档
76
-
77
- ## 项目概述
78
- [一句话描述]
79
-
80
- ## 目标用户
81
- [谁在用、在什么场景下用]
39
+ 用户无明确偏好时,推荐 2-3 套技术栈并列优劣和推荐理由。可选快速调研选定框架的版本、生态、已知坑。
82
40
 
83
- ## 功能需求
84
- ### P0 — 必须有
85
- - [ ] 需求 1
86
- - [ ] 需求 2
41
+ ### Step 5: 生成文档
87
42
 
88
- ### P1 — 应该有
89
- - [ ] 需求 3
43
+ **`REQUIREMENTS.md`:** 概述、目标用户、功能需求(P0/P1/P2)、非功能需求、不在范围内、技术选型表。
90
44
 
91
- ### P2 有了更好
92
- - [ ] 需求 4
45
+ **`ROADMAP.md`:** Phase 分阶段路线图(目标 + 交付物)。
93
46
 
94
- ## 非功能需求
95
- - 性能:xxx
96
- - 安全:xxx
97
- - 部署:xxx
98
-
99
- ## 不在范围内
100
- - xxx
101
- - xxx
102
-
103
- ## 技术选型
104
- | 层 | 选择 | 理由 |
105
- |---|---|---|
106
- | 前端 | React + TypeScript | xxx |
107
- | 后端 | xxx | xxx |
108
- | 数据库 | xxx | xxx |
109
- ```
110
-
111
- ### Step 7: 生成路线图:
112
-
113
- ```markdown
114
- # 项目路线图
115
-
116
- ## Phase 1: 基础骨架
117
- - 目标:可运行的最小版本
118
- - 交付物:项目结构 + 基础配置 + 首个可运行页面/接口
119
-
120
- ## Phase 2: 核心功能
121
- - 目标:P0 功能全部可用
122
- - 交付物:xxx
123
-
124
- ## Phase 3: 完善
125
- - 目标:P1 + 测试 + 打磨
126
- - 交付物:xxx
127
- ```
128
-
129
- ### Step 8: 生成 PROJECT.md
130
-
131
- 保存到 `.sillyspec/PROJECT.md`:
132
-
133
- ```markdown
134
- # PROJECT.md
135
-
136
- ## 项目名:xxx
137
- ## 一句话:xxx
138
- ## 状态:已初始化,等待规划
139
- ```
47
+ **`PROJECT.md`:** 项目名、一句话描述、状态。
140
48
 
141
- ### Step 9: Git 初始化
49
+ ### Step 6: Git 初始化
142
50
 
143
51
  ```bash
144
- git init
145
- git add .
146
- git commit -m "chore: sillyspec init - project initialized"
52
+ git init && git add . && git commit -m "chore: sillyspec init - project initialized"
147
53
  ```
148
54
 
149
55
  ### 最后说:
150
56
 
151
57
  > ✅ 项目初始化完成!
152
- >
153
- > 生成文件:
154
- > - `.sillyspec/PROJECT.md` — 项目概述
155
- > - `.sillyspec/REQUIREMENTS.md` — 需求文档
156
- > - `.sillyspec/ROADMAP.md` — 路线图
157
- >
158
- > 下一步:
159
- > - 开始第一个功能:`/sillyspec:brainstorm "Phase 1: xxx"`
160
- > - 或修改需求:直接告诉我改什么
161
-
162
- ## 绝对规则
163
- - 不写任何实现代码
164
- - 不安装任何依赖
165
- - 提问阶段一次一个问题
166
- - 需求必须具体,不能模糊(❌"好用" → ✅"首屏加载 < 2 秒")
58
+ > 生成文件:PROJECT.md、REQUIREMENTS.md、ROADMAP.md
59
+ > 下一步:`/sillyspec:brainstorm "Phase 1: xxx"` 或直接告诉我改什么
@@ -1,233 +1,82 @@
1
- 你现在是 SillySpec 的计划编写器。
1
+ ## 交互规范
2
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
2
3
 
3
- ## 流程
4
-
5
- ### 0. 检查状态(必须先执行)
4
+ ## 核心约束(必须遵守)
5
+ - ❌ 写实现代码(只写计划中的代码示例)
6
+ - 每个步骤缺验证命令和预期输出
7
+ - ❌ 编造表名、字段名(必须来自 ARCHITECTURE.md 或 design.md)
6
8
 
7
- **在开始任何工作之前,先调用 SillySpec CLI 检查当前状态:**
9
+ ## 状态检查(必须先执行)
8
10
 
9
11
  ```bash
10
12
  sillyspec status --json
11
13
  ```
12
14
 
13
- **根据 CLI 返回的 phase 决定是否允许执行 plan:**
14
- - `phase: "plan"` 可以继续
15
- - 其他 phase → ❌ 不允许跳步,提示用户运行 `sillyspec next` 获取正确步骤
15
+ - `phase: "plan"` 继续
16
+ - 其他 phase → 提示 `sillyspec next`
16
17
 
17
- **不要跳过状态检查。不要自己推断阶段。以 CLI 为准。**
18
+ ---
18
19
 
19
- ### 1. 加载所有上下文
20
+ ## 流程
20
21
 
21
- 首先检查工作区配置:
22
+ ### 1. 加载上下文
22
23
 
23
24
  ```bash
24
25
  cat .sillyspec/config.yaml 2>/dev/null
25
26
  ```
26
27
 
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
- **如果不是工作区模式:**
28
+ **工作区模式:** 加载 CODEBASE-OVERVIEW.md + 共享规范 + 子项目的 CONVENTIONS/ARCHITECTURE/STACK + REQUIREMENTS.md。
54
29
 
30
+ **单项目模式:**
55
31
  ```bash
56
- # 规范(最近非归档变更)
57
32
  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"
33
+ cat "$LATEST"/{proposal,design,tasks}.md 2>/dev/null
61
34
  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
- # 项目需求
35
+ cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE,STACK}.md 2>/dev/null
69
36
  cat .sillyspec/REQUIREMENTS.md 2>/dev/null
70
37
  ```
71
38
 
72
39
  ### 1.5 锚定确认(必须完成)
73
40
 
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
- **文件不存在不是错误**。只确认实际存在的文件。不准跳过此步骤。
41
+ 确认实际存在的文件(proposal / design / tasks / requirements),不存在的标注跳过。
87
42
 
88
43
  ### 2. 逐任务展开
89
44
 
90
- 把 tasks.md 中每个 checkbox 展开为详细步骤。
91
-
92
- **工作区模式下,每个 Task 必须标注所属项目:**
93
-
94
- ```markdown
95
- ### Task 1: [frontend] 数据库 User 模型
96
-
97
- **项目:** frontend
98
- **文件:**
99
- ```
45
+ 把 tasks.md 每个 checkbox 展开为详细步骤。工作区模式下每个 Task 标注所属项目。
100
46
 
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
- ```
47
+ **每个 Task 必须包含:**
48
+ - 精确文件路径
49
+ - 完整可运行的代码示例(不写"添加验证逻辑"这种模糊描述)
50
+ - 运行命令和预期输出
51
+ - TDD 步骤:🔴 写失败测试 → 🟢 写最少代码 → 🔵 重构 → ✅ commit
150
52
 
151
53
  ### 3. 标注执行顺序
152
54
 
55
+ 按 Wave 分组,标注依赖关系:
153
56
  ```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: 验证流程(需要注册完成)
57
+ **Wave 1**(并行,无依赖):Task 1, Task 2
58
+ **Wave 2**(依赖 Wave 1):Task 3
165
59
  ```
166
60
 
167
- ### 4. 计划原则
168
-
169
- **假设执行者是:** 熟练开发者,但对你项目零上下文、品味存疑、讨厌写测试。
170
-
171
- - 每个步骤 2-5 分钟可完成
172
- - 包含完整可运行的代码(不要写"添加验证逻辑")
173
- - 包含精确文件路径(不要写"在适当位置")
174
- - 包含运行命令和预期输出
175
- - 频繁 commit,每个任务独立提交
176
- - 如果发现设计有矛盾 → 停下来告诉用户
177
-
178
- ### 5. 保存
61
+ ### 4. 保存
179
62
 
180
63
  保存到 `.sillyspec/plans/YYYY-MM-DD-<change-name>.md`
181
64
 
182
- ### 6. 自检门控(Hard Gate)
183
-
184
- - [ ] 每个 task 是否包含具体文件路径?
185
- - [ ] 每个 task 是否包含验证命令和预期输出?
186
- - [ ] 是否标注了 Wave 和执行顺序?
187
- - [ ] plan 是否与 design.md 的文件变更清单一致?
188
-
189
- **任何一项不通过 → 修正后重新检查。**
65
+ ### 5. 自检门控
190
66
 
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 验证并获取下一步:**
67
+ - [ ] 每个 task 有具体文件路径?
68
+ - [ ] 每个 task 有验证命令和预期输出?
69
+ - [ ] 标注了 Wave 和执行顺序?
70
+ - [ ] plan 与 design.md 文件变更清单一致?
205
71
 
206
72
  ```bash
207
- sillyspec status --json
73
+ bash scripts/validate-plan.sh .sillyspec/changes/<当前变更目录> 2>/dev/null
208
74
  ```
209
75
 
210
- 展示给用户:
211
- > 计划已保存到 `.sillyspec/plans/xxx.md`。
212
- > 下一步:
76
+ ### 6. 完成
213
77
 
214
78
  ```bash
215
- sillyspec next
79
+ sillyspec status --json && sillyspec next
216
80
  ```
217
81
 
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 中声明的新增表。禁止编造。**
82
+ 更新 `.sillyspec/STATE.md`:阶段改为 `plan ✅`,下一步 `/sillyspec:execute`。