ai-spec-tool 0.1.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/LICENSE +21 -0
- package/README.md +35 -0
- package/assets/.agents/skills/bugfix/SKILL.md +32 -0
- package/assets/.agents/skills/plan/SKILL.md +323 -0
- package/assets/.agents/skills/plan-executor/SKILL.md +310 -0
- package/assets/.agents/skills/rules-creator/SKILL.md +19 -0
- package/assets/.agents/skills/rules-creator/assets/architecture-gen.md +214 -0
- package/assets/.agents/skills/rules-creator/assets/naming-rule-gen.md +77 -0
- package/assets/.agents/skills/rules-creator/assets/ui-architecture-gen.md +332 -0
- package/assets/.agents/skills/rules-creator/assets/ui-template-gen.md +127 -0
- package/assets/.agents/skills/rules-creator/assets/vision-gen.md +613 -0
- package/assets/.agents/skills/spec-executor/SKILL.md +120 -0
- package/assets/AGENTS.md +30 -0
- package/bin/ai-spec-tool.js +150 -0
- package/package.json +25 -0
|
@@ -0,0 +1,613 @@
|
|
|
1
|
+
# Vision File Generator (Spec) — 逐步询问版
|
|
2
|
+
|
|
3
|
+
## 0) 生成目标(不可变,不询问用户)
|
|
4
|
+
|
|
5
|
+
* 输出文件:`./docs/global/vision.md`
|
|
6
|
+
* 输出格式:Markdown
|
|
7
|
+
* 语言:中文为主
|
|
8
|
+
* 目标:通过逐步提问收集信息,形成项目愿景与边界
|
|
9
|
+
* 禁止使用默认内容、禁止跳过提问
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1) 交互入口(必须逐步询问)
|
|
14
|
+
|
|
15
|
+
### 1.0 启动语(必须最先执行)
|
|
16
|
+
|
|
17
|
+
第一句只说:
|
|
18
|
+
|
|
19
|
+
> 现在开始创建项目愿景(Vision)。
|
|
20
|
+
> 我会一步一步问你问题,你只需要按问题回答即可。
|
|
21
|
+
> 先从第 1 题开始:这个项目要解决的核心问题是什么?
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2) 必问题清单(严格顺序、一次只问一题)
|
|
26
|
+
|
|
27
|
+
### Q1. 核心问题(Problem)
|
|
28
|
+
|
|
29
|
+
询问:
|
|
30
|
+
|
|
31
|
+
> 这个项目要解决的**核心问题**是什么?
|
|
32
|
+
> 用一句话描述:谁在什么情况下遇到什么痛点?
|
|
33
|
+
|
|
34
|
+
补问规则(若过于模糊):
|
|
35
|
+
|
|
36
|
+
* 追问:痛点发生的场景是什么?
|
|
37
|
+
* 追问:现有解决方案为什么不够好?
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
### Q2. 目标用户(Target User)
|
|
42
|
+
|
|
43
|
+
询问:
|
|
44
|
+
|
|
45
|
+
> 主要用户是谁?
|
|
46
|
+
> A) 个人用户
|
|
47
|
+
> B) 开发者
|
|
48
|
+
> C) 团队/公司
|
|
49
|
+
> D) 仅自己内部使用
|
|
50
|
+
> E) 其他(说明)
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### Q3. 成功结果(Outcome)
|
|
55
|
+
|
|
56
|
+
询问:
|
|
57
|
+
|
|
58
|
+
> 做完这个项目后,用户能完成什么“之前做不到或很麻烦的事”?
|
|
59
|
+
> 请写 1–3 条可验证的结果。
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
>>>>
|
|
64
|
+
|
|
65
|
+
<<<<
|
|
66
|
+
|
|
67
|
+
## Q4. 核心范围(Scope / MVP 设计)
|
|
68
|
+
|
|
69
|
+
### 目的
|
|
70
|
+
|
|
71
|
+
基于用户已回答的 **Q1–Q3(核心问题 / 目标用户 / 成功结果)**,
|
|
72
|
+
**由系统先生成一个合理的 MVP 能力草案**,再由用户确认或调整,
|
|
73
|
+
而不是要求用户从零开始自己列功能。
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### 执行流程(严格顺序)
|
|
78
|
+
|
|
79
|
+
#### Step 1:系统生成 MVP 草案(必须)
|
|
80
|
+
|
|
81
|
+
在询问用户前,你必须先:
|
|
82
|
+
|
|
83
|
+
* 综合以下已知信息:
|
|
84
|
+
|
|
85
|
+
* Q1:核心问题
|
|
86
|
+
* Q2:目标用户
|
|
87
|
+
* Q3:成功结果
|
|
88
|
+
* 推导出一个 **合理、克制、可落地的 MVP 功能清单**
|
|
89
|
+
* 数量控制在 **3–5 项**,每一项必须:
|
|
90
|
+
|
|
91
|
+
* 直接服务于“成功结果”
|
|
92
|
+
* 避免实现细节
|
|
93
|
+
* 用一句话描述“能力”,而不是“实现方式”
|
|
94
|
+
|
|
95
|
+
然后向用户展示,例如:
|
|
96
|
+
|
|
97
|
+
> 基于你目前的回答,我为你整理了一个**第一阶段 MVP 能力草案**:
|
|
98
|
+
>
|
|
99
|
+
> 1. …
|
|
100
|
+
> 2. …
|
|
101
|
+
> 3. …
|
|
102
|
+
> 4. …
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
#### Step 2:请求用户确认或调整(必须)
|
|
107
|
+
|
|
108
|
+
紧接着询问用户(只能二选一,不开放发散):
|
|
109
|
+
|
|
110
|
+
> 你希望如何处理这个 MVP 草案?
|
|
111
|
+
> A) 接受这个版本
|
|
112
|
+
> B) 我来调整(请直接修改或增删)
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
#### Step 3:用户反馈处理规则
|
|
117
|
+
|
|
118
|
+
* 若用户选择 **A(接受)**:
|
|
119
|
+
|
|
120
|
+
* 将该清单作为 MVP Scope
|
|
121
|
+
* 进入下一题(Q5)
|
|
122
|
+
|
|
123
|
+
* 若用户选择 **B(我来调整)**:
|
|
124
|
+
|
|
125
|
+
* 用户可以:
|
|
126
|
+
|
|
127
|
+
* 删除某项
|
|
128
|
+
* 合并某项
|
|
129
|
+
* 新增能力
|
|
130
|
+
* 你只做 **整理与澄清**,不得擅自加入新能力
|
|
131
|
+
* 整理完成后,**必须再次让用户确认最终版本**
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### 数量与收敛规则(防止 scope 爆炸)
|
|
136
|
+
|
|
137
|
+
* 若最终功能点 > 7:
|
|
138
|
+
|
|
139
|
+
* 必须提示:
|
|
140
|
+
|
|
141
|
+
> 当前功能点较多,已超出典型 MVP 范围
|
|
142
|
+
> 请圈出 **最关键的 5 条**
|
|
143
|
+
* 若用户坚持保留全部:
|
|
144
|
+
|
|
145
|
+
* 接受,但在文档中标注:`⚠️ 范围偏大(用户确认)`
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
### 禁止事项(非常重要)
|
|
150
|
+
|
|
151
|
+
* ❌ 不允许直接让用户“自己随便列”
|
|
152
|
+
* ❌ 不允许系统擅自决定最终范围
|
|
153
|
+
* ❌ 不允许引入未出现在 Q1–Q3 中的目标
|
|
154
|
+
* ❌ 不允许讨论实现方式(技术、框架、架构)
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Q5. 非目标(Non-goals)— 强制(协作式收敛)
|
|
159
|
+
|
|
160
|
+
### 目的
|
|
161
|
+
|
|
162
|
+
基于 **Q1–Q4(核心问题 / 用户 / 成功结果 / MVP 范围)**,
|
|
163
|
+
**由系统先提出“合理的不做清单”**,
|
|
164
|
+
再由用户确认或调整,用于**明确边界、防止范围膨胀**。
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### 执行流程(严格顺序)
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
### Step 1:系统生成 Non-goals 建议清单(必须)
|
|
173
|
+
|
|
174
|
+
在询问用户前,你必须先:
|
|
175
|
+
|
|
176
|
+
* 综合以下信息:
|
|
177
|
+
|
|
178
|
+
* Q1:核心问题(项目为何存在)
|
|
179
|
+
* Q2:目标用户(谁在用)
|
|
180
|
+
* Q3:成功结果(做到什么算成功)
|
|
181
|
+
* Q4:已确认的 MVP 范围(现在只做什么)
|
|
182
|
+
|
|
183
|
+
* 推导出一个 **“合理且克制”的 Non-goals 建议清单**
|
|
184
|
+
|
|
185
|
+
* 数量为 **3–6 条**
|
|
186
|
+
|
|
187
|
+
* 每一条必须满足:
|
|
188
|
+
|
|
189
|
+
* 明确排除一个「常见但当前不必要」的扩展方向
|
|
190
|
+
* 与当前 MVP 目标 **不直接冲突**
|
|
191
|
+
* 使用“不做……”句式
|
|
192
|
+
|
|
193
|
+
然后向用户展示,例如:
|
|
194
|
+
|
|
195
|
+
> 基于你目前的回答,以及当前 MVP 范围,我建议在第一阶段**明确不做以下内容**:
|
|
196
|
+
>
|
|
197
|
+
> * 不做多端同步
|
|
198
|
+
> * 不做社交 / 社区功能
|
|
199
|
+
> * 不做复杂权限与角色系统
|
|
200
|
+
> * 不做付费 / 订阅机制
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### Step 2:请求用户确认或调整(必须)
|
|
205
|
+
|
|
206
|
+
紧接着询问用户(只能以下几种操作):
|
|
207
|
+
|
|
208
|
+
> 对这份「非目标」清单,你希望如何处理?
|
|
209
|
+
> A) 全部接受
|
|
210
|
+
> B) 删除某几项(请指出)
|
|
211
|
+
> C) 新增我认为现在不做的项(请补充)
|
|
212
|
+
|
|
213
|
+
> ⚠️ 不允许回答“随便 / 都可以”
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
### Step 3:用户反馈处理规则
|
|
218
|
+
|
|
219
|
+
* 若用户选择 **A(全部接受)**:
|
|
220
|
+
|
|
221
|
+
* 该清单直接作为 Non-goals
|
|
222
|
+
* 进入下一题(Q6)
|
|
223
|
+
|
|
224
|
+
* 若用户选择 **B(删除)**:
|
|
225
|
+
|
|
226
|
+
* 删除指定项
|
|
227
|
+
* 不自动补新项
|
|
228
|
+
* 若剩余项 < 3:
|
|
229
|
+
|
|
230
|
+
* 提示用户需至少保留 3 条,并请其补充
|
|
231
|
+
|
|
232
|
+
* 若用户选择 **C(新增)**:
|
|
233
|
+
|
|
234
|
+
* 接受用户新增内容
|
|
235
|
+
* 只做语言整理,不改变含义
|
|
236
|
+
* 新增项必须使用“不做……”句式
|
|
237
|
+
|
|
238
|
+
* 任何情况下:
|
|
239
|
+
|
|
240
|
+
* 最终 Non-goals 数量必须 ≥ 3
|
|
241
|
+
* 若不足,必须要求用户补齐
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
### 防失控规则(非常重要)
|
|
246
|
+
|
|
247
|
+
* 若用户试图删除**所有** Non-goals:
|
|
248
|
+
|
|
249
|
+
* 必须提醒:
|
|
250
|
+
|
|
251
|
+
> 如果没有明确的非目标,项目范围会持续膨胀
|
|
252
|
+
> 请至少保留 3 条当前阶段明确不做的内容
|
|
253
|
+
|
|
254
|
+
* 若用户新增的 Non-goals 与 Q4 MVP 范围冲突:
|
|
255
|
+
|
|
256
|
+
* 必须指出冲突并请求澄清
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
### 禁止事项
|
|
261
|
+
|
|
262
|
+
* ❌ 不允许系统擅自决定最终 Non-goals
|
|
263
|
+
* ❌ 不允许引入与 Q1–Q4 无关的排除项
|
|
264
|
+
* ❌ 不允许讨论“以后可能做”(那是 roadmap,不是 Non-goals)
|
|
265
|
+
* ❌ 不允许出现模糊描述(如:不做太复杂的东西)
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
### Q6. 约束与偏好(Constraints)
|
|
270
|
+
|
|
271
|
+
询问:
|
|
272
|
+
|
|
273
|
+
> 有哪些硬约束或偏好吗?(可多选/补充)
|
|
274
|
+
> A) 技术栈固定(说明)
|
|
275
|
+
> B) 时间限制(说明)
|
|
276
|
+
> C) 预算限制(说明)
|
|
277
|
+
> D) 必须可扩展/长期维护
|
|
278
|
+
> E) 需要快速上线验证
|
|
279
|
+
> F) 其他(说明)
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Q7. 成功标准(Success Criteria)— 强制(协作式定义)
|
|
284
|
+
|
|
285
|
+
### 目的
|
|
286
|
+
|
|
287
|
+
基于 **Q1–Q6(核心问题 / 目标用户 / 成功结果 / MVP 范围 / 非目标 / 约束)**,
|
|
288
|
+
**由系统先提出一组“可验证、可执行的成功标准建议”**,
|
|
289
|
+
再由用户确认或调整,用于:
|
|
290
|
+
|
|
291
|
+
* 明确「什么算完成」
|
|
292
|
+
* 作为后续 bugfix / update / refactor / plan 的最高验收依据
|
|
293
|
+
* 防止项目在“感觉差不多了”时失控
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
### 执行流程(严格顺序)
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
### Step 1:系统生成成功标准建议(必须)
|
|
302
|
+
|
|
303
|
+
在询问用户前,你必须先:
|
|
304
|
+
|
|
305
|
+
* 综合以下信息:
|
|
306
|
+
|
|
307
|
+
* Q1:核心问题(解决什么)
|
|
308
|
+
* Q2:目标用户(给谁用)
|
|
309
|
+
* Q3:成功结果(用户能做到什么)
|
|
310
|
+
* Q4:已确认 MVP 范围(现在只做什么)
|
|
311
|
+
* Q5:非目标(明确不做什么)
|
|
312
|
+
* Q6:约束与偏好(时间 / 技术 / 质量侧重)
|
|
313
|
+
|
|
314
|
+
* 推导出一组 **“与当前阶段匹配的成功标准建议”**
|
|
315
|
+
|
|
316
|
+
* 数量控制在 **3–6 条**
|
|
317
|
+
|
|
318
|
+
* 每一条必须满足:
|
|
319
|
+
|
|
320
|
+
* **可观察 / 可验证**(不是感觉好不好)
|
|
321
|
+
* 不依赖未来功能或 Non-goals
|
|
322
|
+
* 明确指向“是否达成项目目标”
|
|
323
|
+
* 使用客观描述,而非情绪或主观判断
|
|
324
|
+
|
|
325
|
+
#### 成功标准类型(至少覆盖 3 个维度)
|
|
326
|
+
|
|
327
|
+
系统生成的建议中,**必须覆盖以下维度中的至少 3 类**:
|
|
328
|
+
|
|
329
|
+
* 功能达成(用户是否能完成核心任务)
|
|
330
|
+
* 稳定性(错误 / 崩溃 / 异常)
|
|
331
|
+
* 性能或响应(如有明确交互)
|
|
332
|
+
* 可维护性(结构、边界、可扩展)
|
|
333
|
+
* 可用性(用户是否无需额外指导)
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
### Step 2:向用户展示并请求确认(必须)
|
|
338
|
+
|
|
339
|
+
向用户展示生成的建议清单,例如:
|
|
340
|
+
|
|
341
|
+
> 基于目前对项目的理解,我为你整理了一组**第一阶段的成功标准建议**:
|
|
342
|
+
>
|
|
343
|
+
> 1. …
|
|
344
|
+
> 2. …
|
|
345
|
+
> 3. …
|
|
346
|
+
> 4. …
|
|
347
|
+
|
|
348
|
+
然后询问(只能以下几种操作):
|
|
349
|
+
|
|
350
|
+
> 对这组成功标准,你希望如何处理?
|
|
351
|
+
> A) 全部接受
|
|
352
|
+
> B) 修改其中某几条(请指出)
|
|
353
|
+
> C) 新增我认为必要的标准(请补充)
|
|
354
|
+
|
|
355
|
+
> ⚠️ 不允许回答“随便 / 都可以”
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
### Step 3:用户反馈处理规则
|
|
360
|
+
|
|
361
|
+
* 若用户选择 **A(全部接受)**:
|
|
362
|
+
|
|
363
|
+
* 将该清单作为最终 Success Criteria
|
|
364
|
+
* 进入下一题或生成阶段
|
|
365
|
+
|
|
366
|
+
* 若用户选择 **B(修改)**:
|
|
367
|
+
|
|
368
|
+
* 只允许修改表述或阈值,不允许引入新维度
|
|
369
|
+
* 修改后,必须再次向用户确认最终版本
|
|
370
|
+
|
|
371
|
+
* 若用户选择 **C(新增)**:
|
|
372
|
+
|
|
373
|
+
* 接受用户新增内容
|
|
374
|
+
* 检查是否与 Q4 MVP 或 Q5 Non-goals 冲突
|
|
375
|
+
* 若冲突,必须指出并请求澄清
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
### 数量与质量控制规则(强制)
|
|
380
|
+
|
|
381
|
+
* 最终成功标准数量必须在 **3–6 条** 之间
|
|
382
|
+
* 若用户新增导致 >6 条:
|
|
383
|
+
|
|
384
|
+
* 必须提示:
|
|
385
|
+
|
|
386
|
+
> 当前成功标准偏多,建议保留最关键的 5 条
|
|
387
|
+
* 不允许出现以下模糊表述:
|
|
388
|
+
|
|
389
|
+
* “用户觉得好用”
|
|
390
|
+
* “性能还不错”
|
|
391
|
+
* “系统比较稳定”
|
|
392
|
+
* 必须将模糊表述转换为**可验证描述**
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
### 禁止事项(非常重要)
|
|
397
|
+
|
|
398
|
+
* ❌ 不允许系统擅自决定最终成功标准
|
|
399
|
+
* ❌ 不允许引入尚未定义的未来功能
|
|
400
|
+
* ❌ 不允许与 Non-goals 冲突
|
|
401
|
+
* ❌ 不允许使用时间型承诺(如:上线一周内)
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## Q8. 关键风险(Risks)— 强制(协作式识别)
|
|
406
|
+
|
|
407
|
+
### 目的
|
|
408
|
+
|
|
409
|
+
基于 **Q1–Q7(问题 / 用户 / 成功结果 / MVP 范围 / 非目标 / 约束 / 成功标准)**,
|
|
410
|
+
**由系统先识别并提出“当前阶段最可能影响项目成功的关键风险”**,
|
|
411
|
+
再由用户确认或调整,用于:
|
|
412
|
+
|
|
413
|
+
* 提前暴露高风险点
|
|
414
|
+
* 影响后续架构、实现顺序与验证策略
|
|
415
|
+
* 防止“做完才发现根本跑不通”
|
|
416
|
+
|
|
417
|
+
---
|
|
418
|
+
|
|
419
|
+
### 执行流程(严格顺序)
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
### Step 1:系统生成关键风险建议(必须)
|
|
424
|
+
|
|
425
|
+
在询问用户前,你必须先:
|
|
426
|
+
|
|
427
|
+
* 综合以下信息:
|
|
428
|
+
|
|
429
|
+
* Q1:核心问题(问题是否真实、是否可解)
|
|
430
|
+
* Q2:目标用户(是否能触达、是否真的需要)
|
|
431
|
+
* Q3:成功结果(是否可验证)
|
|
432
|
+
* Q4:已确认 MVP 范围(是否过大 / 过小)
|
|
433
|
+
* Q5:非目标(是否留下关键空洞)
|
|
434
|
+
* Q6:约束与偏好(时间 / 技术 / 资源)
|
|
435
|
+
* Q7:成功标准(是否过于严格或模糊)
|
|
436
|
+
|
|
437
|
+
* 识别出 **当前阶段最可能阻碍成功的风险**
|
|
438
|
+
|
|
439
|
+
* 提出 **2–4 条风险建议**(不少于 2 条)
|
|
440
|
+
|
|
441
|
+
* 每一条风险必须:
|
|
442
|
+
|
|
443
|
+
* 与现有信息直接相关(不是泛泛而谈)
|
|
444
|
+
* 明确“风险来源”
|
|
445
|
+
* 用一句话说明“为什么这是风险”
|
|
446
|
+
|
|
447
|
+
#### 常见风险类型(用于推导,不必全部覆盖)
|
|
448
|
+
|
|
449
|
+
* 需求风险(问题是否被正确理解)
|
|
450
|
+
* 技术风险(实现难度、性能、依赖不确定)
|
|
451
|
+
* 数据风险(数据来源、质量、权限)
|
|
452
|
+
* 用户风险(获取、留存、使用成本)
|
|
453
|
+
* 范围风险(scope 过大 / MVP 不聚焦)
|
|
454
|
+
* 合规与安全风险(若相关)
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
### Step 2:向用户展示并请求确认(必须)
|
|
459
|
+
|
|
460
|
+
向用户展示生成的风险清单,例如:
|
|
461
|
+
|
|
462
|
+
> 基于目前对项目的理解,我识别出以下**第一阶段关键风险**:
|
|
463
|
+
>
|
|
464
|
+
> 1. …(原因说明)
|
|
465
|
+
> 2. …
|
|
466
|
+
> 3. …
|
|
467
|
+
|
|
468
|
+
然后询问(只能以下几种操作):
|
|
469
|
+
|
|
470
|
+
> 对这组风险判断,你希望如何处理?
|
|
471
|
+
> A) 全部接受
|
|
472
|
+
> B) 删除我认为不成立的风险(请指出)
|
|
473
|
+
> C) 新增你认为重要但未列出的风险(请补充)
|
|
474
|
+
|
|
475
|
+
> ⚠️ 不允许回答“随便 / 都可以”
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
### Step 3:用户反馈处理规则
|
|
480
|
+
|
|
481
|
+
* 若用户选择 **A(全部接受)**:
|
|
482
|
+
|
|
483
|
+
* 将该清单作为最终关键风险
|
|
484
|
+
* 结束 Vision 访谈流程,进入生成阶段
|
|
485
|
+
|
|
486
|
+
* 若用户选择 **B(删除)**:
|
|
487
|
+
|
|
488
|
+
* 删除指定项
|
|
489
|
+
* 若剩余风险 < 1:
|
|
490
|
+
|
|
491
|
+
* 提示用户至少需要 1 条关键风险
|
|
492
|
+
|
|
493
|
+
* 若用户选择 **C(新增)**:
|
|
494
|
+
|
|
495
|
+
* 接受用户新增风险
|
|
496
|
+
* 仅做语言整理,不改变含义
|
|
497
|
+
* 若新增风险与现有信息冲突:
|
|
498
|
+
|
|
499
|
+
* 必须指出并请求澄清
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
### 风险数量与质量控制(强制)
|
|
504
|
+
|
|
505
|
+
* 最终风险数量必须在 **1–4 条** 之间
|
|
506
|
+
* 不允许出现以下模糊表述:
|
|
507
|
+
|
|
508
|
+
* “可能会有点难”
|
|
509
|
+
* “风险不大”
|
|
510
|
+
* “应该没问题”
|
|
511
|
+
* 必须将模糊描述转换为**具体风险来源**
|
|
512
|
+
|
|
513
|
+
---
|
|
514
|
+
|
|
515
|
+
### 禁止事项(非常重要)
|
|
516
|
+
|
|
517
|
+
* ❌ 不允许系统擅自决定最终风险
|
|
518
|
+
* ❌ 不允许引入与 Q1–Q7 无关的泛化风险
|
|
519
|
+
* ❌ 不允许将“以后可以优化”当作风险
|
|
520
|
+
* ❌ 不允许讨论解决方案(风险 ≠ 对策)
|
|
521
|
+
|
|
522
|
+
> 风险对策应在后续 `plan / architecture / roadmap` 中处理
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
## 3) 用户回答不足时的处理(统一规则)
|
|
527
|
+
|
|
528
|
+
* 若用户回答过短/模糊:只追问当前题的澄清点,不跳题
|
|
529
|
+
* 若用户说「随便/你定」:
|
|
530
|
+
|
|
531
|
+
* 你必须给出 2–3 个具体可选项让用户选
|
|
532
|
+
* 禁止直接替用户决定
|
|
533
|
+
* 若用户长篇发散:
|
|
534
|
+
|
|
535
|
+
* 先摘要为要点
|
|
536
|
+
* 要求用户确认摘要是否正确
|
|
537
|
+
* 再进入下一题
|
|
538
|
+
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
## 4) 生成规则(不可违反)
|
|
542
|
+
|
|
543
|
+
* 不引入未经用户确认的产品方向
|
|
544
|
+
* 不把实现细节写进 vision(实现归 `spec/architecture`)
|
|
545
|
+
* 每节最多 5–8 条要点,保持可读
|
|
546
|
+
* 明确写出「范围」与「非目标」
|
|
547
|
+
* 语言中性,面向长期维护
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
## 5) 输出结构(固定,不依赖默认内容)
|
|
552
|
+
|
|
553
|
+
```md
|
|
554
|
+
# 项目愿景(Vision)
|
|
555
|
+
|
|
556
|
+
## 核心问题
|
|
557
|
+
- ...
|
|
558
|
+
|
|
559
|
+
## 目标用户
|
|
560
|
+
- ...
|
|
561
|
+
|
|
562
|
+
## 成功结果
|
|
563
|
+
- ...
|
|
564
|
+
|
|
565
|
+
## 范围(MVP)
|
|
566
|
+
- ...
|
|
567
|
+
|
|
568
|
+
## 非目标
|
|
569
|
+
- ...
|
|
570
|
+
|
|
571
|
+
## 约束与偏好
|
|
572
|
+
- ...
|
|
573
|
+
|
|
574
|
+
## 成功标准
|
|
575
|
+
- ...
|
|
576
|
+
|
|
577
|
+
## 关键风险
|
|
578
|
+
- ...
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-executor
|
|
3
|
+
description: 执行已进入 processing 状态的 plan,按 execution_steps 读取 module spec 并落实到代码,同时更新 spec/plan 文件后缀
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 前置依赖(强制)
|
|
7
|
+
|
|
8
|
+
## 依赖的规范文件(必须全部存在)
|
|
9
|
+
- docs/global/vision.md
|
|
10
|
+
- docs/global/architecture.md
|
|
11
|
+
- docs/global/naming-rule.md
|
|
12
|
+
|
|
13
|
+
## 依赖检查流程(不可跳过)
|
|
14
|
+
- 你必须先尝试读取并理解所有依赖文件内容
|
|
15
|
+
- 若任何依赖文件无法读取 / 不存在 / 内容为空:
|
|
16
|
+
- **只能输出以下内容(禁止输出任何其他文字)**
|
|
17
|
+
> 缺少依赖[<依赖名称>]
|
|
18
|
+
> 回复「Y」开始创建依赖
|
|
19
|
+
- 下一次 run 必须使用 skill: rules-creator
|
|
20
|
+
- 若所有依赖均存在,才可继续
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Prompt:Processing Plan → Code Executor
|
|
25
|
+
|
|
26
|
+
你是「Spec Executor」。你的任务是:从 `docs/plan` 中找出**最早进入 processing 的 plan**,读取其 `execution_steps` 与 module specs(`.update.md`),并**按步骤修改代码**。每完成一个 module 的变更,就把对应 spec 文件从 `.update.md` 改名为 `.md`;当所有模块完成后,把 plan 从 `.processing.md` 改为 `.done.md`。
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 1) 选择要执行的 plan(强制)
|
|
31
|
+
|
|
32
|
+
1. 扫描 `./docs/plan/` 下所有 `*.processing.md`
|
|
33
|
+
2. 若不存在:**停止并输出**
|
|
34
|
+
> 未发现可执行的 plan(.processing.md)
|
|
35
|
+
3. 若存在多个:
|
|
36
|
+
- **优先使用文件名 index**(如 `001-xxx.processing.md`)判断最老 → 取最小 index
|
|
37
|
+
- 若无 index 可用,则以文件修改时间最早者为准
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2) 读取 plan 并建立执行清单(强制)
|
|
42
|
+
|
|
43
|
+
从选定的 plan 文件中读取:
|
|
44
|
+
- `intent`(理解目标)
|
|
45
|
+
- `modules[]`(知道涉及哪些 module / type)
|
|
46
|
+
- `execution_steps`(执行顺序)
|
|
47
|
+
|
|
48
|
+
**硬规则:**
|
|
49
|
+
- `execution_steps` 必须为有序列表(1. 2. 3.)
|
|
50
|
+
- **每一步只能提到一个 module**
|
|
51
|
+
- `execution_steps` 必须覆盖 plan 中所有 `modules[]`
|
|
52
|
+
- 若任一规则不满足:**停止并要求补齐 plan**
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 3) 定位与校验 module spec(强制)
|
|
57
|
+
|
|
58
|
+
对每个 `execution_steps` 中提到的 module:
|
|
59
|
+
|
|
60
|
+
1. 推导 module spec 路径:
|
|
61
|
+
`./docs/spec/<module-type>/<module-name>.update.md`
|
|
62
|
+
2. 读取 spec 的 YAML frontmatter,**必须包含**:
|
|
63
|
+
- `module name`
|
|
64
|
+
- `module type`
|
|
65
|
+
- `source plan`
|
|
66
|
+
3. `source plan` 匹配规则:
|
|
67
|
+
- 去除后缀的 plan 基名要等于`source plan`除后缀的 plan 基名(如 `001-多语言内容管理`)
|
|
68
|
+
4. 若 spec 不存在或 frontmatter 不一致:**停止并要求修正**
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 4) 执行代码修改(强制)
|
|
73
|
+
|
|
74
|
+
按 `execution_steps` 顺序逐一处理 module:
|
|
75
|
+
|
|
76
|
+
1. 阅读该 module 的 `.update.md` spec(只用于理解职责与边界)
|
|
77
|
+
2. 根据 plan 的 intent + rules + flows + spec 要求修改代码
|
|
78
|
+
- **必须遵守 docs/global/architecture.md 的依赖规则与目录落点**
|
|
79
|
+
- **不得违背 spec 的「不做什么 / 禁止依赖 / 禁止扩充方向」**
|
|
80
|
+
3. 若当前模块属于 UI 显示组件类型(见 `docs/global/ui/module-ui-types.md`):
|
|
81
|
+
- 执行前必须读取对应的 Component Rules
|
|
82
|
+
- 必须遵守 `docs/global/ui/design-tokens.md`、`layout-and-responsive.md`、`patterns.md` 的约束
|
|
83
|
+
- 若缺失任一 UI 规范文件:**停止并要求补齐**
|
|
84
|
+
- 若存在 `docs/global/ui/accessibility.md`:**应遵守其约束**(可选)
|
|
85
|
+
4. 每完成一个 module 的代码改动:
|
|
86
|
+
- 将该 module spec 文件从
|
|
87
|
+
`<module-name>.update.md` → `<module-name>.md`
|
|
88
|
+
|
|
89
|
+
> 说明:如果模块不存在,需要创建其对应目录与基础结构;若已存在,只修改必要部分。
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 5) 完成收尾(强制)
|
|
94
|
+
|
|
95
|
+
当所有 module 都完成并已改名为 `.md`:
|
|
96
|
+
- 将 plan 文件从
|
|
97
|
+
`<plan>.processing.md` → `<plan>.done.md`
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 6) 对话输出(唯一允许的文字输出)
|
|
102
|
+
|
|
103
|
+
完成后,只允许输出以下结构:
|
|
104
|
+
|
|
105
|
+
> 已完成 Plan 执行:
|
|
106
|
+
> `<plan文件名>`(需为可点击超链接)
|
|
107
|
+
>
|
|
108
|
+
> 已完成 Module:
|
|
109
|
+
> 1.`<module spec 文件名>`
|
|
110
|
+
> 2.`<module spec 文件名>`
|
|
111
|
+
> 3.`<module spec 文件名>`
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 7) 失败时的输出(强制)
|
|
116
|
+
|
|
117
|
+
若因缺失文件或规则不满足而停止,只允许输出:
|
|
118
|
+
|
|
119
|
+
> 无法执行:<原因>
|
|
120
|
+
> 请修正后再执行。
|