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.
- package/.claude/commands/sillyspec/archive.md +63 -0
- package/.claude/commands/sillyspec/brainstorm.md +463 -0
- package/.claude/commands/sillyspec/continue.md +44 -0
- package/.claude/commands/sillyspec/execute.md +255 -0
- package/.claude/commands/sillyspec/explore.md +88 -0
- package/.claude/commands/sillyspec/export.md +53 -0
- package/.claude/commands/sillyspec/init.md +166 -0
- package/.claude/commands/sillyspec/plan.md +238 -0
- package/.claude/commands/sillyspec/propose.md +234 -0
- package/.claude/commands/sillyspec/quick.md +62 -0
- package/.claude/commands/sillyspec/resume.md +100 -0
- package/.claude/commands/sillyspec/scan.md +672 -0
- package/.claude/commands/sillyspec/status.md +122 -0
- package/.claude/commands/sillyspec/verify.md +141 -0
- package/.claude/commands/sillyspec/workspace.md +122 -0
- package/README.md +158 -0
- package/SKILL.md +46 -0
- package/adapters/adapters.sh +172 -0
- package/bin/sillyspec.js +2 -0
- package/commands/sillyspec/archive.md +62 -0
- package/commands/sillyspec/brainstorm.md +462 -0
- package/commands/sillyspec/continue.md +41 -0
- package/commands/sillyspec/execute.md +254 -0
- package/commands/sillyspec/explore.md +85 -0
- package/commands/sillyspec/export.md +51 -0
- package/commands/sillyspec/init.md +163 -0
- package/commands/sillyspec/plan.md +237 -0
- package/commands/sillyspec/propose.md +233 -0
- package/commands/sillyspec/quick.md +59 -0
- package/commands/sillyspec/resume.md +99 -0
- package/commands/sillyspec/scan.md +671 -0
- package/commands/sillyspec/status.md +119 -0
- package/commands/sillyspec/verify.md +140 -0
- package/commands/sillyspec/workspace.md +120 -0
- package/package.json +14 -0
- package/scripts/init.sh +2 -0
- package/scripts/install.ps1 +316 -0
- package/scripts/scan-preprocess.sh +378 -0
- package/scripts/validate-all.sh +50 -0
- package/scripts/validate-plan.sh +44 -0
- package/scripts/validate-proposal.sh +87 -0
- package/scripts/validate-scan.sh +90 -0
- package/src/index.js +560 -0
- package/src/init.js +269 -0
- package/templates/archive.md +58 -0
- package/templates/brainstorm.md +458 -0
- package/templates/continue.md +39 -0
- package/templates/execute.md +250 -0
- package/templates/explore.md +83 -0
- package/templates/export.md +48 -0
- package/templates/init.md +161 -0
- package/templates/plan.md +233 -0
- package/templates/propose.md +229 -0
- package/templates/quick.md +57 -0
- package/templates/resume.md +95 -0
- package/templates/scan.md +667 -0
- package/templates/status.md +117 -0
- package/templates/verify.md +136 -0
- package/templates/workspace.md +117 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 归档变更 — 规范沉淀,可追溯
|
|
3
|
+
argument-hint: "[变更名]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
你现在是 SillySpec 的归档器。
|
|
7
|
+
|
|
8
|
+
## 变更名称
|
|
9
|
+
$ARGUMENTS
|
|
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 为已完成。
|
|
37
|
+
|
|
38
|
+
### 5. Git 提交
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
git add .sillyspec/
|
|
42
|
+
git commit -m "docs: archive sillyspec change <change-name>"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 最后说:
|
|
46
|
+
|
|
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`:
|
|
59
|
+
|
|
60
|
+
- 清除当前变更信息(归档后不再活跃)
|
|
61
|
+
- 如果是主变更(有 MASTER.md),标记所有阶段为 ✅,然后清除
|
|
62
|
+
- 历史记录追加时间 + 归档完成
|
|
63
|
+
- 下一步改为 `/sillyspec:brainstorm "新想法"` 或留空
|
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 需求探索 — 结构化头脑风暴,生成设计文档(创建性工作前必用)
|
|
3
|
+
argument-hint: "[需求或想法描述]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
你现在是 SillySpec 的需求探索器。
|
|
7
|
+
|
|
8
|
+
## 用户想法
|
|
9
|
+
$ARGUMENTS
|
|
10
|
+
|
|
11
|
+
## 核心原则
|
|
12
|
+
|
|
13
|
+
**创建性工作前必须经过此流程。** 不管需求多简单,都必须先探索再动手。
|
|
14
|
+
|
|
15
|
+
<HARD-GATE>
|
|
16
|
+
在用户确认设计之前,不得调用任何实现技能、不写任何代码、不做任何脚手架、不安装任何依赖。
|
|
17
|
+
</HARD-GATE>
|
|
18
|
+
|
|
19
|
+
## 反模式:"这个太简单了不需要设计"
|
|
20
|
+
|
|
21
|
+
每个项目都走这个流程。Todo 列表、单函数工具、配置修改——都一样。"简单"的项目才是未检视的假设造成最大浪费的地方。设计可以很短,但必须呈现并获批准。
|
|
22
|
+
|
|
23
|
+
## 流程
|
|
24
|
+
|
|
25
|
+
### 0. 检查状态(必须先执行)
|
|
26
|
+
|
|
27
|
+
**在开始任何工作之前,先调用 SillySpec CLI 检查当前状态:**
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
sillyspec status --json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**根据 CLI 返回的 phase 决定是否允许执行 brainstorm:**
|
|
34
|
+
- `phase: "brainstorm"` → ✅ 可以继续
|
|
35
|
+
- `phase: "init"` → ❌ 还没扫描,提示 `sillyspec next` 获取正确的下一步
|
|
36
|
+
- 其他 phase → ⚠️ 提示用户当前阶段,建议先完成当前阶段
|
|
37
|
+
|
|
38
|
+
**不要跳过状态检查。不要自己推断阶段。以 CLI 为准。**
|
|
39
|
+
|
|
40
|
+
### 1. 加载项目上下文
|
|
41
|
+
|
|
42
|
+
首先检查是否在工作区中:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
cat .sillyspec/config.yaml 2>/dev/null
|
|
46
|
+
```
|
|
47
|
+
|
|
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
|
+
**如果不是工作区模式:** 加载原有上下文:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# 项目概述
|
|
79
|
+
cat .sillyspec/PROJECT.md 2>/dev/null
|
|
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
|
+
# 进行中的变更
|
|
88
|
+
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
89
|
+
# 已有设计
|
|
90
|
+
ls .sillyspec/specs/ 2>/dev/null
|
|
91
|
+
```
|
|
92
|
+
|
|
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
|
+
原型图中可能有用文字标注的业务规则、状态说明、权限说明,全部提取。
|
|
194
|
+
|
|
195
|
+
**2e. 展示分析结果,请用户确认**
|
|
196
|
+
|
|
197
|
+
将以上分析结果展示给用户,补充遗漏:
|
|
198
|
+
|
|
199
|
+
> 📐 原型分析完成。提取到 3 个页面、15 个字段、4 个交互流程。
|
|
200
|
+
>
|
|
201
|
+
> 请确认:
|
|
202
|
+
> 1. 有没有漏掉的字段或功能?
|
|
203
|
+
> 2. 图中的流程线我理解得对吗?
|
|
204
|
+
> 3. 有没有业务规则只在口头说、没画在原型里的?
|
|
205
|
+
|
|
206
|
+
**2f. 如果原型页面太多**
|
|
207
|
+
|
|
208
|
+
原型包含多个页面时:
|
|
209
|
+
- 逐页分析,不要一次全部输出
|
|
210
|
+
- 先分析列表页和表单页,再分析详情页和流程页
|
|
211
|
+
- 每页分析完后问用户"下一页?"
|
|
212
|
+
|
|
213
|
+
**多张图片时**,按页面逻辑顺序分析(先主页面后子页面)。
|
|
214
|
+
|
|
215
|
+
#### 分析完成后
|
|
216
|
+
|
|
217
|
+
将原型分析结果保存为 Brainstorm 的参考上下文,后续提问时基于这个分析结果来问,而不是问用户"页面长什么样"这类图片里已经回答了的问题。
|
|
218
|
+
|
|
219
|
+
#### 大模块:建议拆分执行
|
|
220
|
+
|
|
221
|
+
如果分析发现原型内容复杂,应该建议用户拆分为多个阶段。判断标准不是页面数量,而是**内容复杂度**:
|
|
222
|
+
|
|
223
|
+
**满足以下任意 2 条就建议拆分:**
|
|
224
|
+
- 包含 3+ 个可独立交付的功能模块(如列表 + 审批 + 权限管理 + 报表)
|
|
225
|
+
- 涉及 3+ 种角色有不同的操作权限和视图
|
|
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
|
+
```
|
|
254
|
+
|
|
255
|
+
**请用户确认拆分方案:**
|
|
256
|
+
- 拆分逻辑是否合理?
|
|
257
|
+
- 各阶段范围是否正确?
|
|
258
|
+
- 阶段顺序是否需要调整?
|
|
259
|
+
- 有没有遗漏的功能?
|
|
260
|
+
|
|
261
|
+
用户确认后,生成 **MASTER.md**(主变更文件),然后进入阶段 1。
|
|
262
|
+
|
|
263
|
+
#### 生成 MASTER.md
|
|
264
|
+
|
|
265
|
+
如果用户确认了拆分方案,生成主变更文件:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
mkdir -p .sillyspec/changes/<变更名>/stages
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
**`.sillyspec/changes/<变更名>/MASTER.md`:**
|
|
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:**
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
git add .sillyspec/changes/<变更名>/MASTER.md
|
|
309
|
+
git commit -m "docs: master change plan for <变更名>"
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
**然后提示用户:**
|
|
313
|
+
|
|
314
|
+
> ✅ 主变更已创建:`.sillyspec/changes/<变更名>/MASTER.md`
|
|
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 <变更名>` 统一归档。
|
|
323
|
+
|
|
324
|
+
#### 如果是子阶段 brainstorm
|
|
325
|
+
|
|
326
|
+
如果 `$ARGUMENTS` 包含 `<变更名>/stage-N` 格式(如 `reward-punishment/stage-1`),说明这是大模块的子阶段:
|
|
327
|
+
|
|
328
|
+
1. 读取主变更:`cat .sillyspec/changes/<变更名>/MASTER.md`
|
|
329
|
+
2. 读取经验记录:MASTER.md 中的"经验记录"章节
|
|
330
|
+
3. 加载该阶段对应的原型图片(如果用户提供了)
|
|
331
|
+
4. 基于 MASTER.md 的整体方向 + 本阶段范围,进行设计
|
|
332
|
+
5. 设计文档保存到 `.sillyspec/changes/<变更名>/stages/<stage-N>/`
|
|
333
|
+
6. 读取前面已完成的阶段的设计(如果有),保持一致性
|
|
334
|
+
|
|
335
|
+
### 3. 对话式探索(不是问卷)
|
|
336
|
+
|
|
337
|
+
**🛑 绝对禁止一次性抛出多个问题。**
|
|
338
|
+
|
|
339
|
+
不要预先准备问题清单。不要想"我需要先搞清楚 A、B、C、D、E 再给方案"。
|
|
340
|
+
|
|
341
|
+
正确做法:
|
|
342
|
+
1. 从**最核心的一个问题**开始(通常是:你到底想做什么?)
|
|
343
|
+
2. **等待用户回答**
|
|
344
|
+
3. 根据回答判断下一步:
|
|
345
|
+
- 信息够了 → 直接进入方案讨论,不再问更多问题
|
|
346
|
+
- 需要追问 → 只追问**一个**相关的问题
|
|
347
|
+
- 方向有歧义 → 提出 2-3 个选项让用户选
|
|
348
|
+
|
|
349
|
+
探索顺序(按需,不是每次都要走到最后):
|
|
350
|
+
1. **目的** — 用户想要什么?(不要问"怎么做")
|
|
351
|
+
2. **约束** — 技术限制、时间、兼容性要求
|
|
352
|
+
3. **边界** — 什么不在范围内
|
|
353
|
+
4. **成功标准** — 怎么算做好了?
|
|
354
|
+
|
|
355
|
+
**目标:用最少的轮次搞清楚需求。** 大多数 brainstorm 2-3 轮问答就应该能进入方案讨论了。如果你发现自己列出了超过 2 个问题还没开始,说明你问错方向了——回到用户的核心需求,重新提问。
|
|
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`
|
|
370
|
+
|
|
371
|
+
```markdown
|
|
372
|
+
# [Feature Name] 设计
|
|
373
|
+
|
|
374
|
+
## 概述
|
|
375
|
+
[一句话描述]
|
|
376
|
+
|
|
377
|
+
## 功能描述
|
|
378
|
+
[详细描述用户交互流程]
|
|
379
|
+
|
|
380
|
+
## 技术方案
|
|
381
|
+
[架构决策和关键选择]
|
|
382
|
+
|
|
383
|
+
## 约束和假设
|
|
384
|
+
[已知的限制条件]
|
|
385
|
+
|
|
386
|
+
## 不在范围内
|
|
387
|
+
[明确排除的内容]
|
|
388
|
+
|
|
389
|
+
## 验收标准
|
|
390
|
+
- [ ] 标准 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
|
+
```
|
|
400
|
+
|
|
401
|
+
### 8. 用户确认
|
|
402
|
+
|
|
403
|
+
**设计保存后,用 CLI 验证状态:**
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
sillyspec status --json
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
CLI 应返回 `phase: "propose"`。
|
|
410
|
+
|
|
411
|
+
展示给用户:
|
|
412
|
+
> 设计已保存到 `.sillyspec/specs/xxx-design.md`。
|
|
413
|
+
>
|
|
414
|
+
> 下一步:
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
sillyspec next
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
将 CLI 返回的命令推荐给用户。**不要自己编建议。**
|
|
421
|
+
|
|
422
|
+
### 9. 更新 STATE.md
|
|
423
|
+
|
|
424
|
+
每次 brainstorm 完成后,**必须自动更新** `.sillyspec/STATE.md`。
|
|
425
|
+
|
|
426
|
+
**如果 STATE.md 不存在则创建。** 追加或更新以下内容:
|
|
427
|
+
|
|
428
|
+
```markdown
|
|
429
|
+
# 项目状态
|
|
430
|
+
|
|
431
|
+
## 当前变更
|
|
432
|
+
- 名称:<变更名>
|
|
433
|
+
- 当前阶段:brainstorm ✅
|
|
434
|
+
- 下一步:/sillyspec:propose <变更名>
|
|
435
|
+
|
|
436
|
+
## 阶段进度(大模块)
|
|
437
|
+
(如果有 MASTER.md,列出各阶段状态)
|
|
438
|
+
|
|
439
|
+
## 关键决策
|
|
440
|
+
- (brainstorm 中确定的关键技术决策)
|
|
441
|
+
|
|
442
|
+
## 历史记录
|
|
443
|
+
- <时间> brainstorm 完成:<主题>
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
**不需要 Git 提交 STATE.md。** 这是工作状态文件,随时变化,不需要版本控制(可以加入 `.gitignore`)。
|
|
447
|
+
|
|
448
|
+
## 关键原则
|
|
449
|
+
- 🛑 **一次只问一个问题,等用户回答后再决定下一步**(这是铁律,违反等于 brainstorm 失败)
|
|
450
|
+
- 多选题优于开放式问题
|
|
451
|
+
- YAGNI — 无情砍掉不需要的功能
|
|
452
|
+
- 总是探索替代方案
|
|
453
|
+
- 设计可以很短,但必须存在
|
|
454
|
+
- **2-3 轮问答就应该进入方案讨论**,不要变成问答马拉松
|
|
455
|
+
|
|
456
|
+
### 注意
|
|
457
|
+
|
|
458
|
+
在开始生成设计之前,必须先读取相关上下文:
|
|
459
|
+
- `.sillyspec/codebase/ARCHITECTURE.md` — 如果是棕地项目,**必须读取数据模型章节**,设计中引用的表名必须来自真实 schema
|
|
460
|
+
- `.sillyspec/codebase/` 下的其他文档
|
|
461
|
+
- 如果没有上下文文档,先询问用户是否有现有设计或需求文档
|
|
462
|
+
|
|
463
|
+
**禁止编造不存在的表名、字段名、API 端点。** 如果需要新建表/字段,明确标注为"新增"。
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 自动判断并执行下一步
|
|
3
|
+
argument-hint: ""
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
你现在是 SillySpec 的自动推进器。
|
|
9
|
+
|
|
10
|
+
## 判断逻辑
|
|
11
|
+
|
|
12
|
+
按顺序检查,第一个未完成的就执行:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
1. 有 HANDOFF.json?→ 执行 /sillyspec:resume
|
|
16
|
+
|
|
17
|
+
2. .sillyspec/changes/ 有进行中的变更?
|
|
18
|
+
2a. 没有任何文件 → 提示检查 proposal 是否需要完善
|
|
19
|
+
2b. 没有 design.md → 提示补充 design
|
|
20
|
+
2c. 没有 tasks.md → 执行 /sillyspec:propose(补全规范)
|
|
21
|
+
2d. tasks.md 有未完成项 + 有计划文件 → 执行 /sillyspec:execute
|
|
22
|
+
2e. tasks.md 全完成 + 没验证 → 执行 /sillyspec:verify
|
|
23
|
+
2f. 已验证通过 → 执行 /sillyspec:archive
|
|
24
|
+
|
|
25
|
+
3. 有设计文档但没有对应变更?
|
|
26
|
+
→ 提示运行 /sillyspec:propose <name>
|
|
27
|
+
|
|
28
|
+
4. 有 .sillyspec/codebase/ 但没有进行中的工作?
|
|
29
|
+
→ 提示运行 /sillyspec:brainstorm "你的想法"
|
|
30
|
+
|
|
31
|
+
5. 什么都没有?
|
|
32
|
+
→ 提示运行 /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 输出
|
|
36
|
+
|
|
37
|
+
先报告检测结果,再执行:
|
|
38
|
+
|
|
39
|
+
> 🤖 SillySpec 自动检测
|
|
40
|
+
>
|
|
41
|
+
> 当前状态:[描述]
|
|
42
|
+
> 下一步:[执行的命令]
|
|
43
|
+
>
|
|
44
|
+
> [开始执行...]
|