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.
- package/.claude/commands/sillyspec/archive.md +14 -56
- package/.claude/commands/sillyspec/brainstorm.md +81 -483
- package/.claude/commands/sillyspec/continue.md +20 -30
- package/.claude/commands/sillyspec/execute.md +54 -173
- package/.claude/commands/sillyspec/explore.md +15 -68
- package/.claude/commands/sillyspec/export.md +10 -39
- package/.claude/commands/sillyspec/init.md +20 -127
- package/.claude/commands/sillyspec/plan.md +36 -187
- package/.claude/commands/sillyspec/propose.md +36 -186
- package/.claude/commands/sillyspec/quick.md +13 -48
- package/.claude/commands/sillyspec/resume.md +22 -79
- package/.claude/commands/sillyspec/scan.md +100 -511
- package/.claude/commands/sillyspec/status.md +16 -96
- package/.claude/commands/sillyspec/verify.md +22 -86
- package/.claude/commands/sillyspec/workspace.md +22 -95
- package/.sillyspec/config.yaml +13 -0
- package/package.json +7 -2
- package/src/index.js +2 -2
- package/src/init.js +232 -63
- package/templates/archive.md +14 -56
- package/templates/brainstorm.md +81 -483
- package/templates/continue.md +20 -30
- package/templates/execute.md +54 -173
- package/templates/explore.md +15 -68
- package/templates/export.md +10 -39
- package/templates/init.md +20 -127
- package/templates/plan.md +36 -187
- package/templates/propose.md +36 -186
- package/templates/quick.md +13 -48
- package/templates/resume.md +22 -79
- package/templates/scan.md +100 -511
- package/templates/status.md +16 -96
- package/templates/verify.md +22 -86
- package/templates/workspace.md +22 -95
package/templates/brainstorm.md
CHANGED
|
@@ -1,574 +1,172 @@
|
|
|
1
1
|
## 交互规范
|
|
2
|
-
|
|
3
2
|
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
你现在是 SillySpec 的需求探索器。
|
|
9
|
-
|
|
10
|
-
## 用户想法
|
|
11
|
-
$ARGUMENTS
|
|
12
|
-
|
|
13
|
-
## 流程总览
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
┌─────────────────────────────────────────────────┐
|
|
17
|
-
│ BRAINSTORM 流程 │
|
|
18
|
-
├─────────────────────────────────────────────────┤
|
|
19
|
-
│ │
|
|
20
|
-
│ ┌─── Step 0: 状态检查 ───┐ │
|
|
21
|
-
│ └────────────┬───────────┘ │
|
|
22
|
-
│ ▼ │
|
|
23
|
-
│ ┌─── Step 1: 加载项目上下文 ──┐ │
|
|
24
|
-
│ └────────────┬───────────────┘ │
|
|
25
|
-
│ ▼ │
|
|
26
|
-
│ ┌─── Step 1.5: 协作与复用检查 ─┐ │
|
|
27
|
-
│ └────────────┬────────────────┘ │
|
|
28
|
-
│ ▼ │
|
|
29
|
-
│ ┌─── Step 2: 原型/设计图分析 ─┐ ← 如有原型 │
|
|
30
|
-
│ └────────────┬────────────────┘ │
|
|
31
|
-
│ ▼ │
|
|
32
|
-
│ ┌─── Step 3: 对话式探索 ──┐ │
|
|
33
|
-
│ │ (一次一个问题,2-3轮) │ │
|
|
34
|
-
│ └────────────┬───────────┘ │
|
|
35
|
-
│ ▼ │
|
|
36
|
-
│ ┌─── Step 4: 提出 2-3 种方案 ─┐ │
|
|
37
|
-
│ └────────────┬───────────────┘ │
|
|
38
|
-
│ ▼ │
|
|
39
|
-
│ ┌─── Step 5: 分段展示设计 ──┐ │
|
|
40
|
-
│ │ (逐段确认) │ │
|
|
41
|
-
│ └────────────┬─────────────┘ │
|
|
42
|
-
│ ▼ │
|
|
43
|
-
│ ┌─── Step 6: 写设计文档 ────┐ │
|
|
44
|
-
│ └────────────┬─────────────┘ │
|
|
45
|
-
│ ▼ │
|
|
46
|
-
│ ┌─── Step 7: AI 自审 ──────┐ │
|
|
47
|
-
│ └────────────┬─────────────┘ │
|
|
48
|
-
│ ▼ │
|
|
49
|
-
│ ┌─── Step 8: 用户确认 ────┐ │
|
|
50
|
-
│ │ ⛔ 必须等用户明确确认 │ │
|
|
51
|
-
│ └────────────┬───────────┘ │
|
|
52
|
-
│ ▼ │
|
|
53
|
-
│ /sillyspec:propose │
|
|
54
|
-
│ (唯一出口 ✅) │
|
|
55
|
-
│ │
|
|
56
|
-
│ ❌ 禁止跳转:propose → execute(无此路径) │
|
|
57
|
-
│ ❌ 禁止跳转:brainstorm → 任何代码操作 │
|
|
58
|
-
└─────────────────────────────────────────────────┘
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**终态明确:** brainstorm 完成后,必须且只能调用 `/sillyspec:propose` 进入下一阶段。不允许直接进入 execute、plan 或任何代码操作。
|
|
62
|
-
|
|
63
|
-
## 结构化 Checklist(必须按顺序完成)
|
|
64
|
-
|
|
65
|
-
> ⚠️ AI 必须逐项完成以下清单,每步有明确产出后再进入下一步。
|
|
66
|
-
> 不允许跳步。不允许并行。不允许在完成当前步骤前开始下一步。
|
|
67
|
-
|
|
68
|
-
- [ ] **Step 0** — 检查 CLI 状态,确认当前处于 brainstorm 阶段
|
|
69
|
-
- [ ] **Step 1** — 加载项目上下文,理解现有代码结构和约定
|
|
70
|
-
- [ ] **Step 1.5** — 检查同名变更和全局模板,避免重复劳动
|
|
71
|
-
- [ ] **Step 2** — 分析原型/设计图(如有),提取页面结构和字段
|
|
72
|
-
- [ ] **Step 2b** — 评估需求范围,复杂需求先拆分子项目/阶段,生成 MASTER.md
|
|
73
|
-
- [ ] **Step 3** — 对话式探索需求,一次一个问题,2-3 轮内完成
|
|
74
|
-
- [ ] **Step 4** — 提出 2-3 个方案并给出推荐
|
|
75
|
-
- [ ] **Step 5** — 分段展示设计,逐段用户确认
|
|
76
|
-
- [ ] **Step 6** — 撰写 design 文档并保存
|
|
77
|
-
- [ ] **Step 7** — AI 自审 design 文档(对照约束检查)
|
|
78
|
-
- [ ] **Step 8** — 用户确认设计 → 调用 `/sillyspec:propose`
|
|
79
|
-
|
|
80
|
-
## 核心原则
|
|
81
|
-
|
|
82
|
-
**创建性工作前必须经过此流程。** 不管需求多简单,都必须先探索再动手。
|
|
83
|
-
|
|
84
|
-
<HARD-GATE>
|
|
85
|
-
在用户确认设计之前,不得调用任何实现技能、不写任何代码、不做任何脚手架、不安装任何依赖。
|
|
86
|
-
brainstorm 的唯一出口是 /sillyspec:propose。没有其他路径可以离开 brainstorm。
|
|
87
|
-
</HARD-GATE>
|
|
88
|
-
|
|
89
|
-
## 🚫 禁止事项
|
|
90
|
-
|
|
91
|
-
- ❌ 写实现代码(Java/JS/Python/任何语言)
|
|
4
|
+
## 核心约束(必须遵守)
|
|
5
|
+
- ❌ 写实现代码(任何语言)
|
|
92
6
|
- ❌ 修改任何源代码文件
|
|
93
7
|
- ❌ 安装依赖或执行构建命令
|
|
94
8
|
- ❌ 创建数据库迁移脚本
|
|
95
|
-
- ❌
|
|
96
|
-
- ❌ 跳过 brainstorm 直接进入 execute 或 plan
|
|
9
|
+
- ❌ 跳过 brainstorm 直接进入 execute/plan
|
|
97
10
|
- ❌ 在 checklist 未完成前开始写设计文档
|
|
98
11
|
- ❌ 编造不存在的表名、字段名、API 端点
|
|
12
|
+
- ❌ 一次性抛出多个问题(必须逐个等待回答)
|
|
13
|
+
- ❌ 用户确认前自行推进到 propose 或任何后续阶段
|
|
99
14
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
## 反模式:"这个太简单了不需要设计"
|
|
103
|
-
|
|
104
|
-
每个项目都走这个流程。Todo 列表、单函数工具、配置修改——都一样。"简单"的项目才是未检视的假设造成最大浪费的地方。设计可以很短,但必须呈现并获批准。
|
|
105
|
-
|
|
106
|
-
## 流程
|
|
107
|
-
|
|
108
|
-
### 0. 检查状态(必须先执行)
|
|
109
|
-
|
|
110
|
-
**在开始任何工作之前,先调用 SillySpec CLI 检查当前状态:**
|
|
15
|
+
## 状态检查(必须先执行)
|
|
111
16
|
|
|
112
17
|
```bash
|
|
113
18
|
sillyspec status --json
|
|
114
19
|
```
|
|
115
20
|
|
|
116
|
-
|
|
117
|
-
-
|
|
118
|
-
- `phase: "init"` → ❌ 还没扫描,提示 `sillyspec next` 获取正确的下一步
|
|
119
|
-
- 其他 phase → ⚠️ 提示用户当前阶段,建议先完成当前阶段
|
|
21
|
+
- `phase: "brainstorm"` → ✅ 继续
|
|
22
|
+
- 其他 phase → 提示用户当前阶段,建议先完成
|
|
120
23
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
### 1. 加载项目上下文
|
|
124
|
-
|
|
125
|
-
首先检查是否在工作区中:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
cat .sillyspec/config.yaml 2>/dev/null
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**如果是工作区模式:**
|
|
132
|
-
1. 询问本次需求属于哪个子项目:
|
|
133
|
-
请选择需求所属的子项目:
|
|
134
|
-
1. frontend — 前端 - Vue3 + TypeScript
|
|
135
|
-
2. backend — 后端 - Node.js + PostgreSQL
|
|
136
|
-
2. 加载该子项目的上下文 + 工作区共享规范:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
# 工作区共享规范
|
|
140
|
-
ls .sillyspec/shared/ 2>/dev/null
|
|
141
|
-
cat .sillyspec/shared/*.md 2>/dev/null
|
|
142
|
-
|
|
143
|
-
# 子项目上下文
|
|
144
|
-
cat <子项目路径>/.sillyspec/PROJECT.md 2>/dev/null
|
|
145
|
-
cat <子项目路径>/.sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
146
|
-
cat <子项目路径>/.sillyspec/ROADMAP.md 2>/dev/null
|
|
147
|
-
cat <子项目路径>/.sillyspec/codebase/STRUCTURE.md 2>/dev/null
|
|
148
|
-
cat <子项目路径>/.sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
149
|
-
# 工作区概览(了解其他子项目)
|
|
150
|
-
cat .sillyspec/workspace/CODEBASE-OVERVIEW.md 2>/dev/null
|
|
151
|
-
```
|
|
24
|
+
## 用户想法
|
|
25
|
+
$ARGUMENTS
|
|
152
26
|
|
|
153
|
-
|
|
154
|
-
4. 提问时考虑跨项目影响(如:这个需求是否需要其他子项目配合?)
|
|
27
|
+
---
|
|
155
28
|
|
|
156
|
-
|
|
29
|
+
## Checklist(必须按顺序完成,不允许跳步或并行)
|
|
157
30
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
# 进行中的变更
|
|
169
|
-
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
170
|
-
# 已有设计
|
|
171
|
-
ls .sillyspec/specs/ 2>/dev/null
|
|
172
|
-
```
|
|
31
|
+
- [ ] **Step 1** — 加载项目上下文
|
|
32
|
+
- [ ] **Step 1.5** — 协作与复用检查(同名变更 + 全局模板)
|
|
33
|
+
- [ ] **Step 2** — 原型/设计图分析(如有)
|
|
34
|
+
- [ ] **Step 2b** — 评估需求范围,复杂需求拆分子项目/阶段,生成 MASTER.md
|
|
35
|
+
- [ ] **Step 3** — 对话式探索(一次一个问题,2-3 轮内完成)
|
|
36
|
+
- [ ] **Step 4** — 提出 2-3 个方案并推荐
|
|
37
|
+
- [ ] **Step 5** — 分段展示设计,逐段确认
|
|
38
|
+
- [ ] **Step 6** — 写设计文档并保存
|
|
39
|
+
- [ ] **Step 7** — AI 自审(对照约束检查)
|
|
40
|
+
- [ ] **Step 8** — 用户确认 → 调用 `/sillyspec:propose`
|
|
173
41
|
|
|
174
|
-
|
|
42
|
+
**终态:** brainstorm 完成后唯一出口是 `/sillyspec:propose`。不允许直接进入 execute、plan 或任何代码操作。
|
|
175
43
|
|
|
176
|
-
|
|
44
|
+
---
|
|
177
45
|
|
|
178
|
-
|
|
46
|
+
## 各步骤详解
|
|
179
47
|
|
|
180
|
-
|
|
48
|
+
### Step 1: 加载项目上下文
|
|
181
49
|
|
|
182
50
|
```bash
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
如果发现有与当前想法相关的变更,输出:
|
|
187
|
-
```
|
|
188
|
-
⚠️ 检测到已有相关变更:
|
|
189
|
-
- user-auth(3 天前)— 用户认证功能
|
|
190
|
-
|
|
191
|
-
如果这是不同功能,请在 propose 时使用不同的变更名。
|
|
192
|
-
如果是同一功能,请先查看已有变更:cat .sillyspec/changes/user-auth/proposal.md
|
|
193
|
-
多人协作时,建议使用带人名的变更名(如 user-auth-zhangsan)避免冲突。
|
|
51
|
+
cat .sillyspec/config.yaml 2>/dev/null
|
|
194
52
|
```
|
|
195
53
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
**检查 B:全局模板检查**
|
|
54
|
+
**工作区模式:** AskUserQuestion 选子项目,加载子项目上下文 + 共享规范 + 工作区概览,设计文档保存到子项目 `.sillyspec/specs/`。
|
|
199
55
|
|
|
56
|
+
**单项目模式:**
|
|
200
57
|
```bash
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
```
|
|
206
|
-
📚 发现可复用模板:
|
|
207
|
-
- ~/.sillyspec/templates/user-auth/ — 用户认证方案
|
|
208
|
-
|
|
209
|
-
是否基于此模板开始?读取模板内容,结合当前项目上下文适配。
|
|
210
|
-
如果从零开始,请告知。
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
没有模板则跳过,不输出任何内容。
|
|
214
|
-
|
|
215
|
-
### 2. 原型/设计图分析(如有)
|
|
216
|
-
|
|
217
|
-
如果用户在想法描述中提供了截图、图片文件、或 HTML 原型:
|
|
218
|
-
|
|
219
|
-
**不要跳过这一步,不要只看描述文字。** 图片中包含布局、字段、流程线、交互关系等视觉信息,纯文字无法完整传达。
|
|
220
|
-
|
|
221
|
-
#### 分析步骤
|
|
222
|
-
|
|
223
|
-
**2a. 提取页面结构**
|
|
224
|
-
|
|
225
|
-
从图片中识别并列出:
|
|
226
|
-
|
|
227
|
-
```
|
|
228
|
-
页面结构分析:
|
|
229
|
-
|
|
230
|
-
页面 1:台账列表(/rp/rpLedger)
|
|
231
|
-
├── 搜索区
|
|
232
|
-
│ ├── 奖惩类型(下拉:奖励/处罚)
|
|
233
|
-
│ ├── 状态(下拉:待审核/已通过)
|
|
234
|
-
│ └── 查询/重置按钮
|
|
235
|
-
├── 操作栏
|
|
236
|
-
│ ├── 新建、批量删除、导出
|
|
237
|
-
│ └── 权限按钮(编辑/删除/详情)
|
|
238
|
-
└── 数据表格
|
|
239
|
-
├── 姓名、部门、奖惩类型、金额、状态、操作时间
|
|
240
|
-
└── 分页
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
**2b. 提取表单字段**
|
|
244
|
-
|
|
245
|
-
对每个表单/编辑页面,提取字段定义:
|
|
246
|
-
|
|
247
|
-
```
|
|
248
|
-
表单字段:
|
|
249
|
-
|
|
250
|
-
| 字段 | 类型 | 必填 | 说明 |
|
|
251
|
-
|---|---|---|---|
|
|
252
|
-
| 姓名 | 文本输入 | ✅ | |
|
|
253
|
-
| 奖惩类型 | 下拉选择 | ✅ | 选项:奖励/处罚 |
|
|
254
|
-
| 金额 | 数字输入 | ✅ | |
|
|
255
|
-
| 原因 | 文本域 | ❌ | 多行文本 |
|
|
256
|
-
| 附件 | 文件上传 | ❌ | 支持多文件 |
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
**2c. 提取交互流程**
|
|
260
|
-
|
|
261
|
-
识别页面间的跳转关系、流程线、按钮行为:
|
|
262
|
-
|
|
263
|
-
```
|
|
264
|
-
交互流程:
|
|
265
|
-
|
|
266
|
-
列表页 → [新建] → 新建表单 → [提交] → 审核页 → [通过] → 回到列表
|
|
267
|
-
列表页 → [详情] → 详情页(只读)
|
|
268
|
-
列表页 → [编辑] → 编辑表单(预填数据)→ [保存] → 回到列表
|
|
269
|
-
列表页 → [删除] → 确认弹窗 → [确定] → 列表刷新
|
|
58
|
+
cat .sillyspec/{PROJECT,REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
59
|
+
cat .sillyspec/codebase/{STRUCTURE,CONVENTIONS}.md 2>/dev/null
|
|
60
|
+
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
61
|
+
ls .sillyspec/specs/ 2>/dev/null
|
|
270
62
|
```
|
|
271
63
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
原型图中可能有用文字标注的业务规则、状态说明、权限说明,全部提取。
|
|
275
|
-
|
|
276
|
-
**2e. 展示分析结果,请用户确认**
|
|
277
|
-
|
|
278
|
-
将以上分析结果展示给用户,补充遗漏:
|
|
64
|
+
### Step 1.5: 协作与复用检查
|
|
279
65
|
|
|
280
|
-
|
|
66
|
+
- **同名变更:** `ls .sillyspec/changes/ | grep -v archive` — 有相关变更则提示避免冲突
|
|
67
|
+
- **全局模板:** `ls ~/.sillyspec/templates/ 2>/dev/null` — 有匹配模板则建议复用
|
|
281
68
|
|
|
282
|
-
|
|
283
|
-
1. 有没有漏掉的字段或功能?
|
|
284
|
-
2. 图中的流程线我理解得对吗?
|
|
285
|
-
3. 有没有业务规则只在口头说、没画在原型里的?
|
|
69
|
+
无匹配则跳过,不输出。
|
|
286
70
|
|
|
287
|
-
|
|
71
|
+
### Step 2: 原型/设计图分析(如有图片则必做)
|
|
288
72
|
|
|
289
|
-
|
|
290
|
-
- 逐页分析,不要一次全部输出
|
|
291
|
-
- 先分析列表页和表单页,再分析详情页和流程页
|
|
292
|
-
- 每页分析完后问用户"下一页?"
|
|
73
|
+
**不要只看描述文字,图片包含布局、字段、交互等视觉信息。**
|
|
293
74
|
|
|
294
|
-
|
|
75
|
+
对每张图逐页分析(先主页面后子页面):
|
|
76
|
+
1. **页面结构** — 识别搜索区、操作栏、表格、表单等区块
|
|
77
|
+
2. **表单字段** — 字段名、类型、必填、选项
|
|
78
|
+
3. **交互流程** — 页面跳转、按钮行为、流程线
|
|
79
|
+
4. **标注备注** — 业务规则、状态说明、权限说明
|
|
295
80
|
|
|
296
|
-
|
|
81
|
+
展示分析结果,问用户确认有无遗漏。
|
|
297
82
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
#### 大模块:建议拆分执行
|
|
301
|
-
|
|
302
|
-
如果分析发现原型内容复杂,应该建议用户拆分为多个阶段。判断标准不是页面数量,而是**内容复杂度**:
|
|
83
|
+
### Step 2b: 大模块拆分
|
|
303
84
|
|
|
304
85
|
**满足以下任意 2 条就建议拆分:**
|
|
305
|
-
-
|
|
306
|
-
-
|
|
307
|
-
-
|
|
308
|
-
-
|
|
309
|
-
- 无图时:brainstorm 提问阶段发现需求范围过大,无法在一次 execute 中高质量完成
|
|
310
|
-
|
|
311
|
-
**示例:**
|
|
312
|
-
- 5 张简单 CRUD 列表页 → 不拆
|
|
313
|
-
- 2 张带审批流 + 4 种角色的页面 → 拆
|
|
314
|
-
- 无图,"做一个完整 ERP" → 拆
|
|
315
|
-
- 1 张复杂表单 + 10+ 字段联动 + 多条件校验 → 可能不拆(内容集中)
|
|
316
|
-
|
|
317
|
-
```
|
|
318
|
-
📐 原型分析完成。提取到 15 个页面,功能模块较多,建议拆分执行:
|
|
319
|
-
|
|
320
|
-
阶段 1:列表页 + 搜索(4 张图)
|
|
321
|
-
- 台账列表、搜索表单、批量操作、分页
|
|
322
|
-
|
|
323
|
-
阶段 2:新建/编辑表单(4 张图)
|
|
324
|
-
- 新建表单、编辑表单、字段校验、附件上传
|
|
325
|
-
|
|
326
|
-
阶段 3:详情页 + 审核流程(4 张图)
|
|
327
|
-
- 详情查看、审核页、审批流程、状态流转
|
|
328
|
-
|
|
329
|
-
阶段 4:导出 + 其他(3 张图)
|
|
330
|
-
- 数据导出、权限配置、操作日志
|
|
331
|
-
|
|
332
|
-
建议每个阶段独立 brainstorm → propose → plan → execute → verify。
|
|
333
|
-
全部完成后统一归档。
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
**请用户确认拆分方案:**
|
|
337
|
-
- 拆分逻辑是否合理?
|
|
338
|
-
- 各阶段范围是否正确?
|
|
339
|
-
- 阶段顺序是否需要调整?
|
|
340
|
-
- 有没有遗漏的功能?
|
|
341
|
-
|
|
342
|
-
用户确认后,生成 **MASTER.md**(主变更文件),然后进入阶段 1。
|
|
343
|
-
|
|
344
|
-
#### 生成 MASTER.md
|
|
86
|
+
- 3+ 个可独立交付的功能模块
|
|
87
|
+
- 3+ 种角色有不同权限和视图
|
|
88
|
+
- 跨页面状态流转(审批流、多步表单)
|
|
89
|
+
- brainstorm 提问发现需求范围过大
|
|
345
90
|
|
|
346
|
-
|
|
91
|
+
确认拆分后生成 MASTER.md:
|
|
347
92
|
|
|
348
93
|
```bash
|
|
349
94
|
mkdir -p .sillyspec/changes/<变更名>/stages
|
|
350
95
|
```
|
|
351
96
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
```markdown
|
|
355
|
-
# <变更名> — 主变更
|
|
356
|
-
|
|
357
|
-
## 概述
|
|
358
|
-
[一句话描述整个模块的目标]
|
|
359
|
-
|
|
360
|
-
## 拆分计划
|
|
361
|
-
|
|
362
|
-
| 阶段 | 范围 | 页面数 | 状态 |
|
|
363
|
-
|---|---|---|---|
|
|
364
|
-
| 阶段 1 | 列表页 + 搜索 | 4 | ⬜ 待开始 |
|
|
365
|
-
| 阶段 2 | 新建/编辑表单 | 4 | ⬜ 待开始 |
|
|
366
|
-
| 阶段 3 | 详情页 + 审核流程 | 4 | ⬜ 待开始 |
|
|
367
|
-
| 阶段 4 | 导出 + 其他 | 3 | ⬜ 待开始 |
|
|
368
|
-
|
|
369
|
-
## 整体技术方向
|
|
370
|
-
- 基于现有 ARCHITECTURE.md 的架构风格
|
|
371
|
-
- 复用现有 CONVENTIONS.md 的编码规范
|
|
372
|
-
- 统一使用 [xxx] 组件库
|
|
373
|
-
|
|
374
|
-
## 阶段间依赖
|
|
375
|
-
- 阶段 2 依赖阶段 1(表单提交后回到列表)
|
|
376
|
-
- 阶段 3 依赖阶段 2(审核需要表单数据)
|
|
377
|
-
- 阶段 4 无强依赖,可并行
|
|
378
|
-
|
|
379
|
-
## 原型分析摘要
|
|
380
|
-
[各页面的简要描述,每个阶段用几句话概括]
|
|
381
|
-
|
|
382
|
-
## 经验记录
|
|
383
|
-
(每个阶段完成后在此记录踩坑和经验,供后续阶段参考)
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
**同时提交 Git:**
|
|
97
|
+
`MASTER.md` 内容:概述、拆分计划表(阶段/范围/状态)、整体技术方向、阶段间依赖、原型分析摘要、经验记录。
|
|
387
98
|
|
|
388
99
|
```bash
|
|
389
100
|
git add .sillyspec/changes/<变更名>/MASTER.md
|
|
390
101
|
git commit -m "docs: master change plan for <变更名>"
|
|
391
102
|
```
|
|
392
103
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
> ✅ 主变更已创建:`.sillyspec/changes/<变更名>/MASTER.md`
|
|
396
|
-
>
|
|
397
|
-
> 现在进入阶段 1。请运行:
|
|
398
|
-
> `/sillyspec:brainstorm <变更名>/stage-1`
|
|
399
|
-
>
|
|
400
|
-
> 阶段 1 的 brainstorm 会自动读取 MASTER.md,基于整体方向进行设计。
|
|
401
|
-
> 完成后依次:propose → plan → execute → verify。
|
|
402
|
-
> 阶段 1 完成后,进入阶段 2,以此类推。
|
|
403
|
-
> 全部阶段完成后,运行 `/sillyspec:archive <变更名>` 统一归档。
|
|
404
|
-
|
|
405
|
-
#### 如果是子阶段 brainstorm
|
|
406
|
-
|
|
407
|
-
如果 `$ARGUMENTS` 包含 `<变更名>/stage-N` 格式(如 `reward-punishment/stage-1`),说明这是大模块的子阶段:
|
|
408
|
-
|
|
409
|
-
1. 读取主变更:`cat .sillyspec/changes/<变更名>/MASTER.md`
|
|
410
|
-
2. 读取经验记录:MASTER.md 中的"经验记录"章节
|
|
411
|
-
3. 加载该阶段对应的原型图片(如果用户提供了)
|
|
412
|
-
4. 基于 MASTER.md 的整体方向 + 本阶段范围,进行设计
|
|
413
|
-
5. 设计文档保存到 `.sillyspec/changes/<变更名>/stages/<stage-N>/`
|
|
414
|
-
6. 读取前面已完成的阶段的设计(如果有),保持一致性
|
|
415
|
-
|
|
416
|
-
### 3. 对话式探索(不是问卷)
|
|
104
|
+
提示用户:`/sillyspec:brainstorm <变更名>/stage-1`
|
|
417
105
|
|
|
418
|
-
|
|
106
|
+
**子阶段 brainstorm:** 读取 MASTER.md + 前序阶段经验 + 对应原型,设计文档保存到 `.sillyspec/changes/<变更名>/stages/<stage-N>/`。
|
|
419
107
|
|
|
420
|
-
|
|
108
|
+
### Step 3: 对话式探索
|
|
421
109
|
|
|
422
|
-
|
|
423
|
-
1. 从**最核心的一个问题**开始(通常是:你到底想做什么?)
|
|
424
|
-
2. **等待用户回答**
|
|
425
|
-
3. 根据回答判断下一步:
|
|
426
|
-
- 信息够了 → 直接进入方案讨论,不再问更多问题
|
|
427
|
-
- 需要追问 → 只追问**一个**相关的问题
|
|
428
|
-
- 方向有歧义 → 提出 2-3 个选项让用户选
|
|
110
|
+
**核心规则:一次只问一个问题。**
|
|
429
111
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
4. **成功标准** — 怎么算做好了?
|
|
112
|
+
1. 从最核心的问题开始(用户到底想做什么?)
|
|
113
|
+
2. 等待回答,根据信息量决定追问还是进入方案讨论
|
|
114
|
+
3. 探索顺序按需:目的 → 约束 → 边界 → 成功标准
|
|
115
|
+
4. **大多数 brainstorm 2-3 轮就应进入方案讨论**
|
|
435
116
|
|
|
436
|
-
|
|
117
|
+
### Step 4: 提出 2-3 种方案
|
|
437
118
|
|
|
438
|
-
|
|
119
|
+
每种方案列优劣,给出推荐和理由。
|
|
439
120
|
|
|
440
|
-
|
|
121
|
+
### Step 5: 分段展示设计
|
|
441
122
|
|
|
442
|
-
|
|
123
|
+
简单项目几句话;复杂项目每段 200-300 字逐段确认。
|
|
443
124
|
|
|
444
|
-
|
|
445
|
-
- 简单项目:几句话就行
|
|
446
|
-
- 复杂项目:每段 200-300 字,逐段确认
|
|
125
|
+
### Step 6: 写设计文档
|
|
447
126
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
保存到 `.sillyspec/specs/YYYY-MM-DD-<topic>-design.md`
|
|
127
|
+
保存到 `.sillyspec/specs/YYYY-MM-DD-<topic>-design.md`:
|
|
451
128
|
|
|
452
129
|
```markdown
|
|
453
130
|
# [Feature Name] 设计
|
|
454
131
|
|
|
455
132
|
## 概述
|
|
456
|
-
[一句话描述]
|
|
457
|
-
|
|
458
133
|
## 功能描述
|
|
459
|
-
[详细描述用户交互流程]
|
|
460
|
-
|
|
461
134
|
## 技术方案
|
|
462
|
-
[架构决策和关键选择]
|
|
463
|
-
|
|
464
135
|
## 约束和假设
|
|
465
|
-
[已知的限制条件]
|
|
466
|
-
|
|
467
136
|
## 不在范围内
|
|
468
|
-
[明确排除的内容]
|
|
469
|
-
|
|
470
137
|
## 验收标准
|
|
471
138
|
- [ ] 标准 1
|
|
472
|
-
- [ ] 标准 2
|
|
473
139
|
```
|
|
474
140
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
写完设计文档后,**立即进行自审**,不要等用户来挑问题。
|
|
141
|
+
**注意:** 引用的表名必须来自 ARCHITECTURE.md 数据模型或明确标注"新增"。必须先读取 `.sillyspec/codebase/ARCHITECTURE.md`。
|
|
478
142
|
|
|
479
|
-
|
|
143
|
+
### Step 7: AI 自审(必须执行)
|
|
480
144
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
145
|
+
- 需求覆盖:是否完整覆盖 Step 3 确认的需求点?
|
|
146
|
+
- 约束一致性:技术方案是否与 ARCHITECTURE.md、CONVENTIONS.md 一致?
|
|
147
|
+
- 表名/字段真实性:是否来自真实 schema?
|
|
148
|
+
- 范围控制:是否包含不必要功能(YAGNI)?
|
|
149
|
+
- 验收标准:是否具体、可测试?
|
|
150
|
+
- 变更冲突:是否与 Step 1.5 检测到的已有变更冲突?
|
|
487
151
|
|
|
488
|
-
|
|
489
|
-
- 全部通过 → 进入 Step 8
|
|
490
|
-
- 发现问题 → 修改 design 文档,重新自审,全部通过后再进入 Step 8
|
|
491
|
-
- 不确定的问题 → 在 Step 8 展示给用户时标注「⚠️ 自审存疑」,请用户判断
|
|
152
|
+
发现问题 → 修改文档,重新自审。不确定的标注「⚠️ 自审存疑」让用户判断。
|
|
492
153
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
### 8. 提交 Git
|
|
496
|
-
|
|
497
|
-
```bash
|
|
498
|
-
git add .sillyspec/specs/
|
|
499
|
-
git commit -m "docs: design for <topic>"
|
|
500
|
-
```
|
|
501
|
-
|
|
502
|
-
### 9. 用户确认(⛔ 门禁)
|
|
503
|
-
|
|
504
|
-
**设计保存后,用 CLI 验证状态:**
|
|
154
|
+
### Step 8: 用户确认(⛔ 门禁)
|
|
505
155
|
|
|
506
156
|
```bash
|
|
507
157
|
sillyspec status --json
|
|
508
158
|
```
|
|
509
159
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
**⛔ 必须等待用户明确确认后才能进入下一阶段。** 展示给用户:
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
请确认设计方案:
|
|
516
|
-
1. ✅ 确认,进入 propose
|
|
517
|
-
2. ✏️ 需要修改(请说明要改什么)
|
|
518
|
-
3. ❌ 推翻重来
|
|
519
|
-
|
|
520
|
-
**用户选择 1** → 推荐下一步命令:
|
|
521
|
-
|
|
522
|
-
```bash
|
|
523
|
-
sillyspec next
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
将 CLI 返回的命令推荐给用户。**不要自己编建议。**
|
|
527
|
-
|
|
528
|
-
**用户选择 2** → 修改 design 文档,重新自审,再次进入确认门禁。
|
|
529
|
-
**用户选择 3** → 回到 Step 3 或 Step 4 重新探索。
|
|
160
|
+
展示设计方案,AskUserQuestion:确认进入 propose / 需要修改 / 推翻重来。
|
|
530
161
|
|
|
531
|
-
|
|
162
|
+
用户确认 → `sillyspec next`,将 CLI 返回命令推荐给用户。
|
|
532
163
|
|
|
533
|
-
###
|
|
534
|
-
|
|
535
|
-
每次 brainstorm 完成后,**必须自动更新** `.sillyspec/STATE.md`。
|
|
536
|
-
|
|
537
|
-
**如果 STATE.md 不存在则创建。** 追加或更新以下内容:
|
|
538
|
-
|
|
539
|
-
```markdown
|
|
540
|
-
# 项目状态
|
|
164
|
+
### Step 9: 更新 STATE.md
|
|
541
165
|
|
|
542
|
-
|
|
543
|
-
- 名称:<变更名>
|
|
544
|
-
- 当前阶段:brainstorm ✅
|
|
545
|
-
- 下一步:/sillyspec:propose <变更名>
|
|
546
|
-
|
|
547
|
-
## 阶段进度(大模块)
|
|
548
|
-
(如果有 MASTER.md,列出各阶段状态)
|
|
549
|
-
|
|
550
|
-
## 关键决策
|
|
551
|
-
- (brainstorm 中确定的关键技术决策)
|
|
552
|
-
|
|
553
|
-
## 历史记录
|
|
554
|
-
- <时间> brainstorm 完成:<主题>
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
**不需要 Git 提交 STATE.md。** 这是工作状态文件,随时变化,不需要版本控制(可以加入 `.gitignore`)。
|
|
166
|
+
自动更新 `.sillyspec/STATE.md`(不存在则创建):当前变更、阶段、下一步、关键决策、历史记录。不需要 Git 提交。
|
|
558
167
|
|
|
559
168
|
## 关键原则
|
|
560
|
-
- 🛑 **一次只问一个问题,等用户回答后再决定下一步**(这是铁律,违反等于 brainstorm 失败)
|
|
561
|
-
- 多选题优于开放式问题
|
|
562
169
|
- YAGNI — 无情砍掉不需要的功能
|
|
563
170
|
- 总是探索替代方案
|
|
564
171
|
- 设计可以很短,但必须存在
|
|
565
|
-
-
|
|
566
|
-
|
|
567
|
-
### 注意
|
|
568
|
-
|
|
569
|
-
在开始生成设计之前,必须先读取相关上下文:
|
|
570
|
-
- `.sillyspec/codebase/ARCHITECTURE.md` — 如果是棕地项目,**必须读取数据模型章节**,设计中引用的表名必须来自真实 schema
|
|
571
|
-
- `.sillyspec/codebase/` 下的其他文档
|
|
572
|
-
- 如果没有上下文文档,先询问用户是否有现有设计或需求文档
|
|
573
|
-
|
|
574
|
-
**禁止编造不存在的表名、字段名、API 端点。** 如果需要新建表/字段,明确标注为"新增"。
|
|
172
|
+
- "简单"的项目更需要设计——未检视的假设造成最大浪费
|