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/continue.md
CHANGED
|
@@ -1,39 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
## 核心约束(必须遵守)
|
|
2
|
+
- ❌ 跳过自动判断,直接执行某个阶段
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
---
|
|
4
5
|
|
|
5
6
|
## 判断逻辑
|
|
6
7
|
|
|
7
8
|
按顺序检查,第一个未完成的就执行:
|
|
8
9
|
|
|
9
10
|
```
|
|
10
|
-
1.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
5. 什么都没有?
|
|
27
|
-
→ 提示运行 /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
11
|
+
1. 有进行中的变更?
|
|
12
|
+
1a. 无文件 → 提示完善 proposal
|
|
13
|
+
1b. 无 design.md → 提示补充 design
|
|
14
|
+
1c. 无 tasks.md → 执行 /sillyspec:propose
|
|
15
|
+
1d. tasks.md 有未完成项 + 有计划 → 执行 /sillyspec:execute
|
|
16
|
+
1e. tasks.md 全完成 + 未验证 → 执行 /sillyspec:verify
|
|
17
|
+
1f. 已验证通过 → 执行 /sillyspec:archive
|
|
18
|
+
|
|
19
|
+
2. 有设计文档但无对应变更?
|
|
20
|
+
→ /sillyspec:propose <name>
|
|
21
|
+
|
|
22
|
+
3. 有 .sillyspec/codebase/ 但无进行中工作?
|
|
23
|
+
→ /sillyspec:brainstorm "你的想法"
|
|
24
|
+
|
|
25
|
+
4. 什么都没有?
|
|
26
|
+
→ /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
28
27
|
```
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
先报告检测结果,再执行:
|
|
33
|
-
|
|
34
|
-
> 🤖 SillySpec 自动检测
|
|
35
|
-
>
|
|
36
|
-
> 当前状态:[描述]
|
|
37
|
-
> 下一步:[执行的命令]
|
|
38
|
-
>
|
|
39
|
-
> [开始执行...]
|
|
29
|
+
先报告检测结果,再执行。
|
package/templates/execute.md
CHANGED
|
@@ -1,90 +1,71 @@
|
|
|
1
|
-
|
|
1
|
+
## 交互规范
|
|
2
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
2
3
|
|
|
3
|
-
##
|
|
4
|
+
## 核心约束(必须遵守)
|
|
5
|
+
- ❌ 跳过状态检查,自行推断阶段
|
|
6
|
+
- ❌ 跳步执行(不允许跳过 plan 直接 execute)
|
|
7
|
+
- ❌ 先写代码后补测试
|
|
8
|
+
- ❌ "先写草稿回头再测"
|
|
9
|
+
- ❌ 跳过测试因为"太简单"
|
|
10
|
+
- ❌ 测试意外通过时不重写
|
|
11
|
+
- ❌ 编造不存在的方法/注解/路径/类/字段
|
|
12
|
+
- ❌ 自行补全缺失的接口/方法(应报告给用户)
|
|
13
|
+
- ❌ 意外修改了计划外的文件却不报告
|
|
4
14
|
|
|
5
|
-
|
|
15
|
+
## 状态检查(必须先执行)
|
|
6
16
|
|
|
7
17
|
```bash
|
|
8
18
|
sillyspec status --json
|
|
9
19
|
```
|
|
10
20
|
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
- 其他 phase → ❌ 不允许跳步,提示用户运行 `sillyspec next` 获取正确步骤
|
|
14
|
-
|
|
15
|
-
**不要跳过状态检查。不要自己推断阶段。以 CLI 为准。**
|
|
21
|
+
- `phase: "execute"` → ✅ 继续
|
|
22
|
+
- 其他 phase → 提示用户 `sillyspec next`
|
|
16
23
|
|
|
17
24
|
## 执行范围
|
|
18
25
|
$ARGUMENTS
|
|
19
26
|
|
|
27
|
+
---
|
|
28
|
+
|
|
20
29
|
## 加载上下文
|
|
21
30
|
|
|
22
31
|
```bash
|
|
23
|
-
# 检查工作区模式
|
|
24
32
|
cat .sillyspec/config.yaml 2>/dev/null
|
|
25
33
|
```
|
|
26
34
|
|
|
27
|
-
|
|
28
|
-
1. 根据计划中的 Task 标注(如 `[frontend]`),确定每个任务应在哪个子项目目录执行
|
|
29
|
-
2. 额外加载共享规范:
|
|
30
|
-
```bash
|
|
31
|
-
cat .sillyspec/shared/*.md 2>/dev/null
|
|
32
|
-
cat .sillyspec/workspace/CODEBASE-OVERVIEW.md 2>/dev/null
|
|
33
|
-
```
|
|
34
|
-
3. **执行任务前先 cd 到对应子项目目录**
|
|
35
|
-
4. 文件路径需相对于子项目目录解析
|
|
36
|
-
|
|
37
|
-
**如果不是工作区模式:** 原有流程不变。
|
|
35
|
+
**工作区模式:** 根据计划 Task 标注确定子项目,额外加载共享规范 + CODEBASE-OVERVIEW.md,执行前 cd 到对应子项目目录。
|
|
38
36
|
|
|
37
|
+
**单项目模式:**
|
|
39
38
|
```bash
|
|
40
|
-
|
|
41
|
-
PLAN=$(ls -t .sillyspec/plans/*.md | head -1)
|
|
42
|
-
cat "$PLAN"
|
|
43
|
-
|
|
44
|
-
# 当前变更的规范
|
|
39
|
+
PLAN=$(ls -t .sillyspec/plans/*.md | head -1); cat "$PLAN"
|
|
45
40
|
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
46
|
-
cat "$LATEST/tasks.md
|
|
47
|
-
cat "$LATEST/design.md"
|
|
48
|
-
|
|
49
|
-
# 代码库约定
|
|
41
|
+
cat "$LATEST"/{tasks,design}.md 2>/dev/null
|
|
50
42
|
cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
51
43
|
```
|
|
52
44
|
|
|
53
|
-
###
|
|
54
|
-
|
|
55
|
-
读取相关规范文件。对于存在的文件,确认理解;对于不存在的文件,标注跳过:
|
|
45
|
+
### 锚定确认(必须完成)
|
|
56
46
|
|
|
47
|
+
确认实际存在的文件:
|
|
57
48
|
```
|
|
58
49
|
已读取并理解:
|
|
59
|
-
- [x] plan —
|
|
50
|
+
- [x] plan — 实现计划和执行顺序
|
|
60
51
|
- [x] tasks.md — 实现清单
|
|
61
|
-
- [x] design.md —
|
|
62
|
-
|
|
52
|
+
- [x] design.md — 技术方案和文件变更
|
|
63
53
|
所有可用上下文已加载,开始执行。
|
|
64
54
|
```
|
|
65
55
|
|
|
66
|
-
**文件不存在不是错误**。只确认实际存在的文件。不准跳过此步骤。
|
|
67
|
-
|
|
68
56
|
如果 `$ARGUMENTS` 指定范围(如 `wave-1`、`task-3`),只执行对应部分。
|
|
69
57
|
|
|
58
|
+
---
|
|
59
|
+
|
|
70
60
|
## 执行策略
|
|
71
61
|
|
|
72
62
|
### 有 subagent 能力时(推荐)
|
|
73
|
-
|
|
74
|
-
**检查:** 尝试使用子代理(如 `/agent` 或 Claude Code 的 subagent)。
|
|
75
|
-
|
|
76
63
|
1. 按计划的 Wave 分组
|
|
77
|
-
2. 每个 Task
|
|
78
|
-
3.
|
|
79
|
-
4. 提供给子代理的上下文:
|
|
80
|
-
- 任务描述(从计划中精确复制)
|
|
81
|
-
- TDD 纪律(见下方)
|
|
82
|
-
- 精确文件路径和代码示例
|
|
83
|
-
- 代码库约定(从 CONVENTIONS.md 中提取相关部分)
|
|
64
|
+
2. 每个 Task 启动独立子代理(不继承主 session 历史)
|
|
65
|
+
3. 子代理上下文:任务描述 + TDD 纪律 + 精确文件路径 + 相关约定
|
|
84
66
|
|
|
85
67
|
### 无 subagent 时
|
|
86
|
-
|
|
87
|
-
在当前会话中逐任务串行执行。每完成一个任务,简要总结后继续下一个。
|
|
68
|
+
当前会话逐任务串行执行。
|
|
88
69
|
|
|
89
70
|
## 每个任务的 TDD 铁律
|
|
90
71
|
|
|
@@ -92,159 +73,59 @@ cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
|
92
73
|
🔴 RED → 先写测试,运行确认失败
|
|
93
74
|
🟢 GREEN → 写最少代码让测试通过
|
|
94
75
|
🔵 REFACTOR → 清理,保持测试通过
|
|
95
|
-
✅ COMMIT → git
|
|
76
|
+
✅ COMMIT → git 提交
|
|
96
77
|
```
|
|
97
78
|
|
|
98
|
-
**Git
|
|
99
|
-
- 检查当前目录是否为 Git 仓库:`git rev-parse --is-inside-work-tree`
|
|
100
|
-
- 如果是 Git 仓库 → `git add -A && git commit`
|
|
101
|
-
- 如果不是 Git 仓库(工作区模式下子项目在父目录外):
|
|
102
|
-
1. 尝试 `cd` 到正在修改的子项目目录
|
|
103
|
-
2. 检查该子项目是否为 Git 仓库
|
|
104
|
-
3. 如果是 → 在子项目目录执行 `git add -A && git commit`
|
|
105
|
-
4. 如果不是 → 跳过提交,但记录在任务完成报告中
|
|
106
|
-
- **不要跳过可以提交的 Git 仓库。**
|
|
107
|
-
|
|
108
|
-
**绝对禁止:**
|
|
109
|
-
- ❌ 先写代码后补测试
|
|
110
|
-
- ❌ "先写草稿回头再测"
|
|
111
|
-
- ❌ 跳过测试因为"太简单"
|
|
112
|
-
- ❌ 测试意外通过时不重写
|
|
113
|
-
|
|
114
|
-
**违反规则 → 删掉代码,从测试重新开始。** 不能保留为"参考"。
|
|
79
|
+
**Git 提交:** 检查 Git 仓库 → `git add -A && git commit`。工作区模式下在子项目目录提交。跳过不可提交的情况但记录在报告中。
|
|
115
80
|
|
|
116
|
-
|
|
81
|
+
**违反 TDD → 删掉代码从测试重新开始。例外(需人工确认):** 抛弃型原型、生成代码、配置文件。
|
|
117
82
|
|
|
118
|
-
##
|
|
119
|
-
|
|
120
|
-
**在编写任何 Controller、Service、Model、SQL 之前,必须执行:**
|
|
121
|
-
|
|
122
|
-
### 1. 读取相关约定
|
|
83
|
+
## 写代码前必须读取现有源码(防幻觉)
|
|
123
84
|
|
|
124
85
|
```bash
|
|
125
|
-
|
|
126
|
-
cat .sillyspec/codebase/CONVENTIONS.md
|
|
127
|
-
# 读取架构(特别是 API 约定和数据模型摘要)
|
|
128
|
-
cat .sillyspec/codebase/ARCHITECTURE.md
|
|
86
|
+
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
129
87
|
```
|
|
130
88
|
|
|
131
|
-
|
|
132
|
-
|
|
89
|
+
然后读取同模块已有代码(根据语言过滤):
|
|
133
90
|
```bash
|
|
134
|
-
#
|
|
91
|
+
# Controller/Handler/Router
|
|
135
92
|
find . \( -path "*/controller*" -o -path "*/handler*" -o -path "*/router*" -o -path "*/api*" \) \
|
|
136
|
-
-type f \( -name "*.java" -o -name "*.ts" -o -name "*.py" -o -name "*.go" \
|
|
137
|
-
-
|
|
138
|
-
|
|
139
|
-
-not -path "*/vendor/*" -not -path "*/build/*" | head -15
|
|
140
|
-
|
|
141
|
-
# 如果要调用 Service/Manager/UseCase → 先读目标接口
|
|
93
|
+
-type f \( -name "*.java" -o -name "*.ts" -o -name "*.py" -o -name "*.go" \) \
|
|
94
|
+
-not -path "*/{node_modules,dist,.git,vendor,build}/*" | head -15
|
|
95
|
+
# Service/Manager/Repository
|
|
142
96
|
find . \( -name "*Service*" -o -name "*Manager*" -o -name "*UseCase*" -o -name "*Repository*" \) \
|
|
143
|
-
-type f \( -name "*.java" -o -name "*.ts" -o -name "*.py" -o -name "*.go" \
|
|
144
|
-
-
|
|
145
|
-
-not -path "*/node_modules/*" -not -path "*/dist/*" -not -path "*/.git/*" \
|
|
146
|
-
-not -path "*/vendor/*" -not -path "*/build/*" | head -15
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
根据项目语言只读取匹配的文件,忽略不相关的语言文件。
|
|
150
|
-
|
|
151
|
-
### 3. 铁律(违反 = 幻觉风险)
|
|
152
|
-
|
|
153
|
-
- ❌ **禁止编造不存在的方法调用** — 调用任何方法前必须确认该方法签名存在
|
|
154
|
-
- ❌ **禁止编造不存在的注解/装饰器** — 权限注解、校验注解必须与项目已有风格一致
|
|
155
|
-
- ❌ **禁止编造路径前缀/URL** — 必须确认项目的路由前缀是全局配置还是手动写
|
|
156
|
-
- ❌ **禁止编造不存在的类/字段/常量** — 必须来自已有源码定义
|
|
157
|
-
- ❌ **禁止自行补全缺失的接口/方法** — 发现缺失 → 告诉用户,不要自己实现
|
|
158
|
-
- ✅ 需要新增方法/接口 → 先在 plan 中声明,用户确认后再实现
|
|
159
|
-
|
|
160
|
-
### 4. 如果找不到相关代码
|
|
161
|
-
|
|
162
|
-
分两种情况:
|
|
163
|
-
|
|
164
|
-
**棕地项目(有已有代码但找不到同模块的):**
|
|
165
|
-
```
|
|
166
|
-
⚠️ 未找到相关的 [Controller/Service/Model] 源码。
|
|
167
|
-
请提供:
|
|
168
|
-
1. 同模块已有的 Controller 路径和风格参考
|
|
169
|
-
2. 目标 Service 的接口定义
|
|
97
|
+
-type f \( -name "*.java" -o -name "*.ts" -o -name "*.py" -o -name "*.go" \) \
|
|
98
|
+
-not -path "*/{node_modules,dist,.git,vendor,build}/*" | head -15
|
|
170
99
|
```
|
|
171
100
|
|
|
172
|
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
- 读 brainstorm 设计方案(`.sillyspec/specs/` 下的设计文档)
|
|
176
|
-
- 按 plan 中声明的文件路径和规范执行
|
|
177
|
-
- 首次编写某类文件时,先让用户确认风格是否正确
|
|
178
|
-
|
|
179
|
-
**核心原则:没有源码参考时靠约定和设计方案驱动,而不是靠猜。**
|
|
101
|
+
**找不到相关代码时:**
|
|
102
|
+
- 棕地项目 → 报告缺失,请用户提供参考路径
|
|
103
|
+
- 绿地项目 → 靠 CONVENTIONS.md + ARCHITECTURE.md + brainstorm 设计方案驱动
|
|
180
104
|
|
|
181
105
|
## 两阶段审查
|
|
182
106
|
|
|
183
107
|
每个任务完成后:
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
- tasks.md 中对应 checkbox 完成了?
|
|
187
|
-
- design.md 技术方案一致?
|
|
188
|
-
- 测试有意义?覆盖边界?
|
|
189
|
-
|
|
190
|
-
**阶段 B — 代码质量:**
|
|
191
|
-
- DRY — 重复代码?
|
|
192
|
-
- YAGNI — 不需要的抽象?
|
|
193
|
-
- 死代码?
|
|
194
|
-
- 错误处理充分?
|
|
195
|
-
- 符合 CONVENTIONS.md?
|
|
108
|
+
- **A 规范合规:** tasks checkbox 完成?design 方案一致?测试有意义?
|
|
109
|
+
- **B 代码质量:** DRY、YAGNI、死代码、错误处理、CONVENTIONS.md 合规?
|
|
196
110
|
|
|
197
111
|
**3 轮审查不通过 → 提交人工处理。**
|
|
198
112
|
|
|
199
113
|
## 偏差处理
|
|
200
114
|
|
|
201
|
-
|
|
202
|
-
1. **停** — 不要自作主张
|
|
203
|
-
2. **报告** — 列出问题和建议方案
|
|
204
|
-
3. **等** — 人工确认后再继续
|
|
205
|
-
4. 代码缺关键部分 → 报告缺失,不自行补充
|
|
206
|
-
5. Service 方法不存在 → 报告缺失,不要自己实现或调用不确认的方法
|
|
207
|
-
6. 缺少权限注解/路径前缀 → 先读已有 Controller 确认风格,再问用户
|
|
115
|
+
遇到问题:**停 → 报告 → 等人工确认。** 代码缺失、方法不存在、权限注解未知 → 先读已有代码确认风格,再问用户。
|
|
208
116
|
|
|
209
|
-
##
|
|
117
|
+
## 自检门控
|
|
210
118
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
| 简单修改 | 快速模型 |
|
|
216
|
-
|
|
217
|
-
> 有详细计划时,大部分实现是机械性的,便宜模型够用。
|
|
218
|
-
|
|
219
|
-
### 5. 自检门控(Hard Gate)
|
|
220
|
-
|
|
221
|
-
- [ ] 完成的 task 是否与 plan 一致?
|
|
222
|
-
- [ ] 是否意外修改了 plan 外的文件?(对比 plan 的文件变更清单)
|
|
223
|
-
- [ ] 每个 task 是否有 git commit?
|
|
224
|
-
- [ ] 测试是否全部通过?
|
|
225
|
-
|
|
226
|
-
**发现意外修改 → 报告给用户,不要自行决定。**
|
|
119
|
+
- [ ] 完成任务与 plan 一致?
|
|
120
|
+
- [ ] 未意外修改计划外文件?
|
|
121
|
+
- [ ] 每个任务有 git commit?
|
|
122
|
+
- [ ] 测试全部通过?
|
|
227
123
|
|
|
228
124
|
## 完成后
|
|
229
125
|
|
|
230
|
-
**用 CLI 验证并获取下一步:**
|
|
231
|
-
|
|
232
126
|
```bash
|
|
233
127
|
sillyspec status --json
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
展示给用户:
|
|
237
|
-
> 执行完成。共 N 个 Wave,M 个 Task。
|
|
238
|
-
> 下一步:
|
|
239
|
-
|
|
240
|
-
```bash
|
|
241
128
|
sillyspec next
|
|
242
129
|
```
|
|
243
130
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
**同时更新 `.sillyspec/STATE.md`:**
|
|
247
|
-
|
|
248
|
-
- 当前阶段改为 `execute ✅`(全部完成)或 `execute 🔄 (X/M)`(部分完成)
|
|
249
|
-
- 如果是子阶段,更新阶段进度
|
|
250
|
-
- 历史记录追加时间 + 执行结果
|
|
131
|
+
更新 `.sillyspec/STATE.md`:阶段改为 `execute ✅` 或 `execute 🔄 (X/M)`,历史记录追加执行结果。
|
package/templates/explore.md
CHANGED
|
@@ -1,91 +1,38 @@
|
|
|
1
1
|
## 交互规范
|
|
2
|
-
|
|
3
2
|
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
你现在是 SillySpec 的自由思考伙伴。
|
|
4
|
+
## 核心约束(必须遵守)
|
|
5
|
+
- ❌ 写实现代码
|
|
6
|
+
- ❌ 安装依赖
|
|
7
|
+
- ❌ 修改文件(除非用户明确要求保存发现)
|
|
8
|
+
- ❌ 强行下结论或强行结构化
|
|
11
9
|
|
|
12
10
|
## 话题
|
|
13
11
|
$ARGUMENTS
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
---
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
## 这是什么模式
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
**探索模式用于思考,不用于实现。** 读文件、搜代码、调查代码库,但绝对不能写代码。没有固定步骤、没有必需的输出。
|
|
20
18
|
|
|
21
19
|
## 姿态
|
|
22
20
|
|
|
23
|
-
-
|
|
24
|
-
- **开放式线程** —
|
|
21
|
+
- **好奇不说教** — 问自然产生的问题
|
|
22
|
+
- **开放式线程** — 展示多个有趣方向
|
|
25
23
|
- **可视化** — 大量使用 ASCII 图表
|
|
26
|
-
- **自适应** —
|
|
27
|
-
- **耐心** — 不急着下结论
|
|
24
|
+
- **自适应** — 追随有趣线索随时转向
|
|
28
25
|
- **务实** — 探索实际代码库,不只纸上谈兵
|
|
29
26
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
**探索问题空间:** 问澄清问题、挑战假设、重新定义问题
|
|
33
|
-
|
|
34
|
-
**调查代码库:** 映射相关架构、找集成点、识别已有模式、暴露隐藏复杂性
|
|
35
|
-
|
|
36
|
-
**比较选项:** 头脑风暴多种方案、建对比表、画权衡分析
|
|
37
|
-
|
|
38
|
-
**画图:**
|
|
39
|
-
```
|
|
40
|
-
┌─────────────────────────────────┐
|
|
41
|
-
│ 用 ASCII 图自由表达 │
|
|
42
|
-
├─────────────────────────────────┤
|
|
43
|
-
│ │
|
|
44
|
-
│ ┌────────┐ ┌────────┐ │
|
|
45
|
-
│ │ State │──────▶│ State │ │
|
|
46
|
-
│ │ A │ │ B │ │
|
|
47
|
-
│ └────────┘ └────────┘ │
|
|
48
|
-
│ │
|
|
49
|
-
└─────────────────────────────────┘
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**暴露风险:** 识别可能出错的地方、发现理解空白
|
|
53
|
-
|
|
54
|
-
## OpenSpec 上下文感知
|
|
55
|
-
|
|
56
|
-
### 检查已有上下文
|
|
27
|
+
## 上下文感知
|
|
57
28
|
|
|
58
29
|
```bash
|
|
59
|
-
# 查看进行中的变更
|
|
60
30
|
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
61
|
-
|
|
62
|
-
cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
63
|
-
cat .sillyspec/ROADMAP.md 2>/dev/null
|
|
31
|
+
cat .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
64
32
|
```
|
|
65
33
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
读取变更的 proposal、design、tasks,自然地引用它们。
|
|
69
|
-
|
|
70
|
-
当发现重要的决策时,**提议保存**(不自动保存):
|
|
71
|
-
|
|
72
|
-
请选择:
|
|
73
|
-
1. 写入 design.md
|
|
74
|
-
2. 加入 specs
|
|
75
|
-
3. 暂不保存
|
|
34
|
+
有进行中变更时读取其 proposal/design/tasks,自然引用。发现重要决策时可提议保存(不自动保存)。
|
|
76
35
|
|
|
77
36
|
## 没有必需的结束
|
|
78
37
|
|
|
79
|
-
|
|
80
|
-
1. 创建变更提案 — 流入 proposal
|
|
81
|
-
2. 产出文档更新
|
|
82
|
-
3. 继续探索
|
|
83
|
-
4. 结束探索
|
|
84
|
-
|
|
85
|
-
## 禁止事项
|
|
86
|
-
|
|
87
|
-
- ❌ 写实现代码
|
|
88
|
-
- ❌ 安装依赖
|
|
89
|
-
- ❌ 修改任何文件(除非用户明确要求保存发现)
|
|
90
|
-
- ❌ 强行下结论
|
|
91
|
-
- ❌ 强行结构化(让模式自然涌现)
|
|
38
|
+
探索可以创建变更提案、产出文档、继续探索或结束。
|
package/templates/export.md
CHANGED
|
@@ -1,48 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
你现在是 SillySpec 的模板导出器。
|
|
1
|
+
## 核心约束(必须遵守)
|
|
2
|
+
- ❌ 修改任何文件(只读)
|
|
4
3
|
|
|
5
4
|
## 参数解析
|
|
5
|
+
`$ARGUMENTS`:变更名 + 可选 `--to` 输出路径(默认 `~/.sillyspec/templates/<change-name>/`)
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- 第一个参数为变更名(如 `user-auth`)
|
|
9
|
-
- `--to` 指定输出路径(默认 `~/.sillyspec/templates/<change-name>/`)
|
|
7
|
+
---
|
|
10
8
|
|
|
11
9
|
## 流程
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
cat "$CHANGE_DIR/proposal.md"
|
|
18
|
-
cat "$CHANGE_DIR/design.md"
|
|
19
|
-
cat "$CHANGE_DIR/specs/requirements.md" 2>/dev/null
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
如果变更不存在 → 告诉用户"变更不存在,请确认变更名"
|
|
23
|
-
|
|
24
|
-
### 2. 清理为通用模板
|
|
25
|
-
|
|
26
|
-
读取文件后,进行清理:
|
|
27
|
-
- 移除项目特定的信息(具体类名、路径、端口号)
|
|
28
|
-
- 保留通用的设计方案、架构决策、需求场景
|
|
29
|
-
- 添加一个 `notes.md`,记录使用建议和适配要点
|
|
30
|
-
|
|
31
|
-
### 3. 导出到模板目录
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
mkdir -p ~/.sillyspec/templates/<change-name>
|
|
35
|
-
cp 清理后的文件到该目录
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### 4. 确认
|
|
39
|
-
|
|
40
|
-
展示导出内容摘要,告知模板路径。
|
|
11
|
+
1. **读取变更文件:** `cat .sillyspec/changes/$ARGUMENTS/{proposal,design}.md specs/requirements.md 2>/dev/null`。不存在则报错。
|
|
12
|
+
2. **清理为通用模板:** 移除项目特定信息,保留通用设计方案,添加 `notes.md` 使用建议。
|
|
13
|
+
3. **导出:** `mkdir -p ~/.sillyspec/templates/<change-name>` 并复制文件。
|
|
14
|
+
4. **确认:** 展示摘要和模板路径。
|
|
41
15
|
|
|
42
16
|
### 最后说:
|
|
43
17
|
|
|
44
|
-
> ✅
|
|
45
|
-
>
|
|
46
|
-
> 其他项目使用:`/sillyspec:brainstorm "你的想法"` → AI 会自动发现并建议复用此模板
|
|
47
|
-
>
|
|
48
|
-
> 手动查看:`ls ~/.sillyspec/templates/<change-name>/`
|
|
18
|
+
> ✅ 已导出到 `~/.sillyspec/templates/<change-name>/`
|
|
19
|
+
> 其他项目使用:`/sillyspec:brainstorm` → AI 自动发现并建议复用
|