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