sillyspec 3.0.0 → 3.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/.claude/commands/sillyspec/archive.md +2 -2
- package/.claude/commands/sillyspec/brainstorm.md +14 -13
- package/.claude/commands/sillyspec/continue.md +7 -11
- package/.claude/commands/sillyspec/execute.md +43 -90
- package/.claude/commands/sillyspec/explore.md +1 -1
- package/.claude/commands/sillyspec/export.md +7 -1
- package/.claude/commands/sillyspec/plan.md +13 -23
- package/.claude/commands/sillyspec/propose.md +5 -9
- package/.claude/commands/sillyspec/quick.md +2 -2
- package/.claude/commands/sillyspec/resume.md +3 -4
- package/.claude/commands/sillyspec/scan.md +19 -18
- package/.claude/commands/sillyspec/status.md +1 -1
- package/.claude/commands/sillyspec/verify.md +1 -1
- package/.claude/commands/sillyspec/workspace.md +11 -0
- package/README.md +9 -10
- package/SKILL.md +5 -6
- package/package.json +1 -1
- package/src/init.js +11 -7
- package/templates/archive.md +2 -2
- package/templates/brainstorm.md +14 -13
- package/templates/continue.md +7 -11
- package/templates/execute.md +43 -90
- package/templates/explore.md +1 -1
- package/templates/export.md +1 -1
- package/templates/plan.md +13 -23
- package/templates/propose.md +5 -9
- package/templates/quick.md +2 -2
- package/templates/resume.md +3 -4
- package/templates/scan.md +19 -18
- package/templates/status.md +1 -1
- package/templates/verify.md +1 -1
|
@@ -18,7 +18,7 @@ $ARGUMENTS
|
|
|
18
18
|
|
|
19
19
|
读取 `.sillyspec/changes/<change-name>/` 下所有必要文件,逐项检查:
|
|
20
20
|
|
|
21
|
-
- [ ] **文件完整性:** 检查 `
|
|
21
|
+
- [ ] **文件完整性:** 检查 `design.md` 是否存在,缺失则警告
|
|
22
22
|
- [ ] **任务完成度:** 读取 `tasks.md`,统计已完成/未完成任务数。**有未完成的 → 用 AskUserQuestion 询问:**
|
|
23
23
|
- ① 继续归档(未完成任务将被标记完成)
|
|
24
24
|
- ② 取消,回去完成任务
|
|
@@ -35,7 +35,7 @@ $ARGUMENTS
|
|
|
35
35
|
|
|
36
36
|
### 3. Spec 沉淀
|
|
37
37
|
|
|
38
|
-
将 `.sillyspec/changes/<change-name
|
|
38
|
+
将 `.sillyspec/changes/<change-name>/` 下的设计文档**复制到 `.sillyspec/knowledge/` 主目录**,确保已完成的设计规范可被后续变更参考。如目标已存在同名文件则跳过并提示。
|
|
39
39
|
|
|
40
40
|
### 4. 用户确认
|
|
41
41
|
|
|
@@ -53,14 +53,14 @@ $ARGUMENTS
|
|
|
53
53
|
cat .sillyspec/config.yaml 2>/dev/null
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
**工作区模式:** AskUserQuestion 选子项目,加载子项目上下文 + 共享规范 + 工作区概览,设计文档保存到子项目 `.sillyspec/
|
|
56
|
+
**工作区模式:** AskUserQuestion 选子项目,加载子项目上下文 + 共享规范 + 工作区概览,设计文档保存到子项目 `.sillyspec/changes/`。
|
|
57
57
|
|
|
58
58
|
**单项目模式:**
|
|
59
59
|
```bash
|
|
60
60
|
cat .sillyspec/{PROJECT,REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
61
61
|
cat .sillyspec/codebase/{STRUCTURE,CONVENTIONS}.md 2>/dev/null
|
|
62
62
|
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
63
|
-
ls .sillyspec/
|
|
63
|
+
ls .sillyspec/knowledge/ 2>/dev/null
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
### Step 1.5: 协作与复用检查
|
|
@@ -126,18 +126,24 @@ git commit -m "docs: master change plan for <变更名>"
|
|
|
126
126
|
|
|
127
127
|
### Step 6: 写设计文档
|
|
128
128
|
|
|
129
|
-
保存到 `.sillyspec/
|
|
129
|
+
保存到 `.sillyspec/changes/<变更名>/design.md`:
|
|
130
130
|
|
|
131
131
|
```markdown
|
|
132
132
|
# [Feature Name] 设计
|
|
133
133
|
|
|
134
|
-
##
|
|
135
|
-
|
|
134
|
+
## 动机与范围
|
|
135
|
+
(为什么做、范围边界、成功标准)
|
|
136
|
+
|
|
137
|
+
## 功能需求
|
|
138
|
+
(需求场景、验收标准)
|
|
139
|
+
- [ ] 标准 1
|
|
140
|
+
|
|
136
141
|
## 技术方案
|
|
137
142
|
## 约束和假设
|
|
138
143
|
## 不在范围内
|
|
139
|
-
##
|
|
140
|
-
|
|
144
|
+
## 文件变更
|
|
145
|
+
## 代码风格参照
|
|
146
|
+
(参考已有源文件,标注返回值类型、异常类型、注解风格)
|
|
141
147
|
```
|
|
142
148
|
|
|
143
149
|
**注意:** 引用的表名必须来自 ARCHITECTURE.md 数据模型或明确标注"新增"。必须先读取 `.sillyspec/codebase/ARCHITECTURE.md`。
|
|
@@ -163,12 +169,7 @@ sillyspec status --json
|
|
|
163
169
|
|
|
164
170
|
### Step 9: 输出技术方案
|
|
165
171
|
|
|
166
|
-
|
|
167
|
-
- 架构决策及理由
|
|
168
|
-
- 文件变更清单表格
|
|
169
|
-
- 数据模型
|
|
170
|
-
- API 设计
|
|
171
|
-
- 代码风格参照(参考已有 Controller/Service/Entity 源文件,标注返回值类型、异常类型、注解风格)
|
|
172
|
+
用户确认后,确认 design.md 已包含完整内容(动机、需求、方案、文件变更、代码风格参照)。如 Step 6 已保存则无需重复。
|
|
172
173
|
|
|
173
174
|
### Step 10: 更新 STATE.md
|
|
174
175
|
|
|
@@ -14,20 +14,16 @@ argument-hint: ""
|
|
|
14
14
|
|
|
15
15
|
```
|
|
16
16
|
1. 有进行中的变更?
|
|
17
|
-
1a.
|
|
18
|
-
1b. 无
|
|
19
|
-
1c.
|
|
20
|
-
1d. tasks.md
|
|
21
|
-
1e.
|
|
22
|
-
1f. 已验证通过 → 执行 /sillyspec:archive
|
|
17
|
+
1a. 无 design.md → 提示补充设计(/sillyspec:brainstorm)
|
|
18
|
+
1b. 无 tasks.md → 执行 /sillyspec:plan
|
|
19
|
+
1c. tasks.md 有未完成项 + 有计划 → 执行 /sillyspec:execute
|
|
20
|
+
1d. tasks.md 全完成 + 未验证 → 执行 /sillyspec:verify(可选)
|
|
21
|
+
1e. 已验证通过 → 执行 /sillyspec:archive
|
|
23
22
|
|
|
24
|
-
2.
|
|
25
|
-
→ /sillyspec:propose <name>
|
|
26
|
-
|
|
27
|
-
3. 有 .sillyspec/codebase/ 但无进行中工作?
|
|
23
|
+
2. 有 .sillyspec/codebase/ 但无进行中工作?
|
|
28
24
|
→ /sillyspec:brainstorm "你的想法"
|
|
29
25
|
|
|
30
|
-
|
|
26
|
+
3. 什么都没有?
|
|
31
27
|
→ /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
32
28
|
```
|
|
33
29
|
|
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
- ❌ 跳过状态检查,自行推断阶段
|
|
6
6
|
- ❌ 跳步执行(不允许跳过 plan 直接 execute)
|
|
7
7
|
- ❌ 先写代码后补测试
|
|
8
|
-
- ❌ "先写草稿回头再测"
|
|
9
|
-
- ❌ 跳过测试因为"太简单"
|
|
10
|
-
- ❌ 测试意外通过时不重写
|
|
11
8
|
- ❌ 编造不存在的方法/注解/路径/类/字段
|
|
12
9
|
- ❌ 自行补全缺失的接口/方法(应报告给用户)
|
|
13
10
|
- ❌ 意外修改了计划外的文件却不报告
|
|
@@ -42,121 +39,78 @@ cat "$LATEST"/{tasks,design}.md 2>/dev/null
|
|
|
42
39
|
cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
43
40
|
```
|
|
44
41
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
确认实际存在的文件:
|
|
48
|
-
```
|
|
49
|
-
已读取并理解:
|
|
50
|
-
- [x] plan — 实现计划和执行顺序
|
|
51
|
-
- [x] tasks.md — 实现清单
|
|
52
|
-
- [x] design.md — 技术方案和文件变更
|
|
53
|
-
所有可用上下文已加载,开始执行。
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
如果 `$ARGUMENTS` 指定范围(如 `wave-1`、`task-3`),只执行对应部分。
|
|
42
|
+
确认实际存在的文件,不存在的标注跳过。如果 `$ARGUMENTS` 指定范围(如 `wave-1`、`task-3`),只执行对应部分。
|
|
57
43
|
|
|
58
44
|
---
|
|
59
45
|
|
|
60
46
|
## 执行策略
|
|
61
47
|
|
|
62
|
-
用 AskUserQuestion
|
|
63
|
-
|
|
64
|
-
|
|
48
|
+
用 AskUserQuestion 询问用户选择:
|
|
49
|
+
|
|
50
|
+
**1. 执行模式:**
|
|
51
|
+
- 串行执行 — 当前会话逐任务执行,适合简单变更
|
|
52
|
+
- 子代理并行 — 每个 Task 启动独立子代理,适合多任务独立变更
|
|
53
|
+
|
|
54
|
+
**2. 确认频率:**
|
|
55
|
+
- 每个任务确认 — 每完成一个 task 展示结果,等用户确认后继续
|
|
56
|
+
- 每 N 个任务确认 — 每完成 N 个 task 汇总展示,用户一次性确认
|
|
57
|
+
- AI 自主判断 — AI 在遇到歧义、风险、计划外变更时才询问,其余自动推进
|
|
58
|
+
- 全自动 — 全部自动执行,不在中途打断用户
|
|
65
59
|
|
|
66
60
|
选择子代理模式时:
|
|
67
61
|
1. 按计划的 Wave 分组
|
|
68
62
|
2. 每个 Task 启动独立子代理(不继承主 session 历史)
|
|
69
|
-
3. 子代理上下文:任务描述 +
|
|
70
|
-
|
|
71
|
-
选择串行模式时:
|
|
72
|
-
当前会话逐任务串行执行,每完成一个任务展示结果并等待用户确认。
|
|
73
|
-
|
|
74
|
-
## 每个任务的 TDD 铁律
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
🔴 RED → 先写测试,运行确认失败
|
|
78
|
-
🟢 GREEN → 写最少代码让测试通过
|
|
79
|
-
🔵 REFACTOR → 清理,保持测试通过
|
|
80
|
-
✅ COMMIT → git 提交(测试文件必须包含在提交中)
|
|
81
|
-
☑️ CHECK → 勾选 tasks.md 中对应的 checkbox
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**Git 提交:** 检查 Git 仓库 → `git add -A` → 生成 commit message → **用 AskUserQuestion 展示 commit message 给用户确认**:
|
|
85
|
-
1. 确认提交 — 执行 `git commit`
|
|
86
|
-
2. 修改提交信息 — 用户调整后重新确认
|
|
87
|
-
3. 跳过提交 — 本任务不 commit(记录原因)
|
|
88
|
-
|
|
89
|
-
用户确认后才执行 `git commit`。工作区模式下在子项目目录提交。
|
|
90
|
-
|
|
91
|
-
**勾选 tasks:** 每个 Task 完成后,**必须立即**在 `.sillyspec/changes/<变更名>/tasks.md` 中将对应 checkbox 标记为 `[x]`,并附上完成时间:`- [x] [YYYY-MM-DD HH:MM:SS] 任务描述`。这是 Task 完成的最后一步,不允许跳过。
|
|
92
|
-
|
|
93
|
-
**测试文件必须保留:** 测试是产出物,不是草稿。写完的测试文件必须保留在项目中,随代码一起 commit,不能删除。
|
|
63
|
+
3. 子代理上下文:任务描述 + 相关约定 + 要修改文件和被调用类的源码
|
|
94
64
|
|
|
95
|
-
|
|
96
|
-
- 纯配置文件(YAML、properties、.env、JSON 配置)
|
|
97
|
-
- 纯数据文件(SQL seed、fixture)
|
|
98
|
-
- 纯文档(README、注释)
|
|
65
|
+
---
|
|
99
66
|
|
|
100
|
-
|
|
67
|
+
## 每个任务的执行流程
|
|
101
68
|
|
|
102
|
-
|
|
69
|
+
### 1. 先读后写
|
|
103
70
|
|
|
104
|
-
|
|
71
|
+
写代码前,读取相关源文件确认风格和方法签名:
|
|
105
72
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
73
|
+
```bash
|
|
74
|
+
# 读取 CONVENTIONS
|
|
75
|
+
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
76
|
+
# 读取要修改的文件和同模块参考文件
|
|
77
|
+
cat <要修改的文件路径>
|
|
78
|
+
cat <参考文件路径>
|
|
79
|
+
```
|
|
111
80
|
|
|
81
|
+
**调用已有方法前,grep 确认存在:**
|
|
112
82
|
```bash
|
|
113
|
-
# 调用 userService.getById() 之前
|
|
114
83
|
grep -rn "public.*getById" --include="*.java" src/main/java/**/service/
|
|
115
|
-
# 调用 result.success() 之前
|
|
116
|
-
grep -rn "public.*success" --include="*.java" src/main/java/**/common/
|
|
117
84
|
```
|
|
85
|
+
grep 不到 → 不许调用,先查清楚或报告给用户。
|
|
118
86
|
|
|
119
|
-
|
|
87
|
+
### 2. TDD
|
|
120
88
|
|
|
121
|
-
```bash
|
|
122
|
-
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
123
89
|
```
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
# Controller/Handler/Router
|
|
128
|
-
find . \( -path "*/controller*" -o -path "*/handler*" -o -path "*/router*" -o -path "*/api*" \) \
|
|
129
|
-
-type f \( -name "*.java" -o -name "*.ts" -o -name "*.py" -o -name "*.go" \) \
|
|
130
|
-
-not -path "*/{node_modules,dist,.git,vendor,build}/*" | head -15
|
|
131
|
-
# Service/Manager/Repository
|
|
132
|
-
find . \( -name "*Service*" -o -name "*Manager*" -o -name "*UseCase*" -o -name "*Repository*" \) \
|
|
133
|
-
-type f \( -name "*.java" -o -name "*.ts" -o -name "*.py" -o -name "*.go" \) \
|
|
134
|
-
-not -path "*/{node_modules,dist,.git,vendor,build}/*" | head -15
|
|
90
|
+
🔴 RED → 写测试,运行确认失败
|
|
91
|
+
🟢 GREEN → 写最少代码让测试通过
|
|
92
|
+
🔵 REFACTOR → 清理,保持测试通过
|
|
135
93
|
```
|
|
136
94
|
|
|
137
|
-
|
|
138
|
-
- 棕地项目 → 报告缺失,请用户提供参考路径
|
|
139
|
-
- 绿地项目 → 靠 CONVENTIONS.md + ARCHITECTURE.md + brainstorm 设计方案驱动
|
|
95
|
+
TDD 中间步骤(RED→GREEN→REFACTOR)连续执行,不需要每步等用户确认。
|
|
140
96
|
|
|
141
|
-
|
|
97
|
+
**测试文件必须保留**,随代码一起 commit。违反 TDD → 删代码重来。
|
|
142
98
|
|
|
143
|
-
|
|
144
|
-
- **A 规范合规:** tasks checkbox 完成?design 方案一致?测试有意义?
|
|
145
|
-
- **B 代码质量:** DRY、YAGNI、死代码、错误处理、CONVENTIONS.md 合规?
|
|
99
|
+
**可跳过 TDD(不需要确认):** 纯配置(YAML/properties)、纯数据(SQL seed)、纯文档(README/注释)。
|
|
146
100
|
|
|
147
|
-
|
|
101
|
+
### 3. 勾选 tasks
|
|
148
102
|
|
|
149
|
-
|
|
103
|
+
完成后在 `.sillyspec/changes/<变更名>/tasks.md` 勾选对应 checkbox:`- [x] [YYYY-MM-DD HH:MM:SS] 任务描述`
|
|
104
|
+
|
|
105
|
+
### 4. Git commit
|
|
150
106
|
|
|
151
|
-
|
|
107
|
+
`git add -A` → 生成 commit message → **根据用户选择的确认频率决定是否立即确认或批量确认**。
|
|
152
108
|
|
|
153
|
-
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 偏差处理
|
|
154
112
|
|
|
155
|
-
|
|
156
|
-
- [ ] tasks.md 所有 checkbox 都已勾选为 `[x]`?
|
|
157
|
-
- [ ] 未意外修改计划外文件?
|
|
158
|
-
- [ ] 每个任务有 git commit?
|
|
159
|
-
- [ ] 测试全部通过?
|
|
113
|
+
遇到问题:**停 → 报告 → 等人工确认。** 代码缺失、方法不存在、计划外变更 → 先读已有代码,再问用户。
|
|
160
114
|
|
|
161
115
|
## 完成后
|
|
162
116
|
|
|
@@ -166,8 +120,7 @@ find . \( -name "*Service*" -o -name "*Manager*" -o -name "*UseCase*" -o -name "
|
|
|
166
120
|
3. **继续开发** — 不结束当前阶段
|
|
167
121
|
|
|
168
122
|
```bash
|
|
169
|
-
sillyspec status --json
|
|
170
|
-
sillyspec next
|
|
123
|
+
sillyspec status --json && sillyspec next
|
|
171
124
|
```
|
|
172
125
|
|
|
173
126
|
更新 `.sillyspec/STATE.md`:阶段改为 `execute ✅` 或 `execute 🔄 (X/M)`,历史记录追加执行结果。
|
|
@@ -9,11 +9,17 @@ argument-hint: "<change-name> [--to <path>]"
|
|
|
9
9
|
## 参数解析
|
|
10
10
|
`$ARGUMENTS`:变更名 + 可选 `--to` 输出路径(默认 `~/.sillyspec/templates/<change-name>/`)
|
|
11
11
|
|
|
12
|
+
## 核心约束(必须遵守)
|
|
13
|
+
- ❌ 修改任何文件(只读)
|
|
14
|
+
|
|
15
|
+
## 参数解析
|
|
16
|
+
`$ARGUMENTS`:变更名 + 可选 `--to` 输出路径(默认 `~/.sillyspec/templates/<change-name>/`)
|
|
17
|
+
|
|
12
18
|
---
|
|
13
19
|
|
|
14
20
|
## 流程
|
|
15
21
|
|
|
16
|
-
1. **读取变更文件:** `cat .sillyspec/changes/$ARGUMENTS/{
|
|
22
|
+
1. **读取变更文件:** `cat .sillyspec/changes/$ARGUMENTS/{design}.md 2>/dev/null`。不存在则报错。
|
|
17
23
|
2. **清理为通用模板:** 移除项目特定信息,保留通用设计方案,添加 `notes.md` 使用建议。
|
|
18
24
|
3. **导出:** `mkdir -p ~/.sillyspec/templates/<change-name>` 并复制文件。
|
|
19
25
|
4. **确认:** 展示摘要和模板路径。
|
|
@@ -30,28 +30,26 @@ cat .sillyspec/config.yaml 2>/dev/null
|
|
|
30
30
|
**单项目模式:**
|
|
31
31
|
```bash
|
|
32
32
|
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
33
|
-
cat "$LATEST"/{
|
|
34
|
-
cat
|
|
35
|
-
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE,STACK}.md 2>/dev/null
|
|
33
|
+
cat "$LATEST"/{design,tasks}.md 2>/dev/null
|
|
34
|
+
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
36
35
|
cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
37
36
|
```
|
|
38
37
|
|
|
39
38
|
### 1.5 锚定确认(必须完成)
|
|
40
39
|
|
|
41
|
-
确认实际存在的文件(
|
|
40
|
+
确认实际存在的文件(design / tasks),不存在的标注跳过。
|
|
42
41
|
|
|
43
42
|
### 2. 逐任务展开
|
|
44
43
|
|
|
45
|
-
把 tasks.md 每个 checkbox
|
|
44
|
+
把 tasks.md 每个 checkbox 展开为任务描述,按 Wave 分组组织。工作区模式下每个 Task 标注所属项目。
|
|
46
45
|
|
|
47
|
-
**每个 Task
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- TDD 步骤:🔴 写失败测试 → 🟢 写最少代码 → 🔵 重构 → ✅ commit
|
|
46
|
+
**每个 Task 包含:**
|
|
47
|
+
- 精确文件路径(修改哪个文件)
|
|
48
|
+
- 任务描述(做什么,一两句话说清楚)
|
|
49
|
+
- 涉及已有类调用时,标注参考文件(如"参考 `RoleController.createRole`)
|
|
50
|
+
- 依赖关系
|
|
51
|
+
|
|
52
|
+
**注意:不需要写精确方法签名和代码示例。** 方法签名和代码风格由 execute 阶段先读后写确认。plan 专注"做什么",execute 负责"怎么做"。
|
|
55
53
|
|
|
56
54
|
### 3. 标注执行顺序
|
|
57
55
|
|
|
@@ -59,10 +57,8 @@ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
|
59
57
|
```markdown
|
|
60
58
|
### Wave 1(并行,无依赖)
|
|
61
59
|
- [ ] 添加用户创建接口
|
|
62
|
-
- 修改: `UserController.java`
|
|
63
|
-
- 方法签名: `public Result<UserVO> createUser(@RequestBody @Valid UserDTO dto)`
|
|
60
|
+
- 修改: `UserController.java`、`UserService.java`
|
|
64
61
|
- 参考: `RoleController.createRole`
|
|
65
|
-
- TDD: 🔴 测试 → 🟢 实现 → 🔵 重构
|
|
66
62
|
|
|
67
63
|
- [ ] 添加角色创建接口
|
|
68
64
|
- ...
|
|
@@ -79,13 +75,7 @@ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
|
79
75
|
### 5. 自检门控
|
|
80
76
|
|
|
81
77
|
- [ ] 每个 task 有具体文件路径?
|
|
82
|
-
- [ ]
|
|
83
|
-
- [ ] 标注了 Wave 和执行顺序?
|
|
84
|
-
- [ ] 与 design.md 文件变更清单一致?
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
bash scripts/validate-plan.sh .sillyspec/changes/<当前变更目录> 2>/dev/null
|
|
88
|
-
```
|
|
78
|
+
- [ ] 标注了 Wave 和依赖关系?
|
|
89
79
|
|
|
90
80
|
### 6. 完成
|
|
91
81
|
|
|
@@ -28,7 +28,7 @@ $ARGUMENTS
|
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
30
|
cat .sillyspec/changes/*/MASTER.md 2>/dev/null # 子阶段变更
|
|
31
|
-
ls -t .sillyspec/
|
|
31
|
+
ls -t .sillyspec/knowledge/*.md | head -1
|
|
32
32
|
cat .sillyspec/{REQUIREMENTS}.md .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
33
33
|
ls .sillyspec/changes/ | grep -v archive
|
|
34
34
|
```
|
|
@@ -49,23 +49,19 @@ ls .sillyspec/changes/ | grep -v archive
|
|
|
49
49
|
|
|
50
50
|
创建 `.sillyspec/changes/$ARGUMENTS/`:
|
|
51
51
|
|
|
52
|
-
**`
|
|
53
|
-
|
|
54
|
-
**`specs/requirements.md`:** 功能需求(REQ-001 格式)、Given/When/Then 用户场景、非功能需求
|
|
55
|
-
|
|
56
|
-
**`design.md`:** 架构决策及理由、文件变更清单表格、数据模型、API 设计、**代码风格参照**(参考已有的 Controller/Service/Entity 源文件,标注返回值类型、异常类型、注解风格)
|
|
52
|
+
**`design.md`:** 动机与范围、功能需求(REQ-001 格式、Given/When/Then 用户场景、非功能需求)、架构决策及理由、文件变更清单表格、数据模型、API 设计、**代码风格参照**(参考已有的 Controller/Service/Entity 源文件,标注返回值类型、异常类型、注解风格)
|
|
57
53
|
|
|
58
54
|
**`tasks.md`:** 准备 → 实现 → 收尾的任务列表(每个 task 标注文件路径)
|
|
59
55
|
|
|
60
56
|
### 4. 展示关键文件
|
|
61
57
|
|
|
62
|
-
展示
|
|
58
|
+
展示 design.md 给用户审阅。tasks.md 只展示任务列表。
|
|
63
59
|
|
|
64
60
|
### 5. 自检门控
|
|
65
61
|
|
|
66
|
-
- [ ]
|
|
62
|
+
- [ ] design.md 含"动机、变更范围、功能需求"?
|
|
67
63
|
- [ ] design.md 含"文件变更清单"表格?
|
|
68
|
-
- [ ]
|
|
64
|
+
- [ ] design.md 含 Given/When/Then 用户场景?
|
|
69
65
|
- [ ] tasks.md 每个 task 有文件路径?
|
|
70
66
|
|
|
71
67
|
```bash
|
|
@@ -36,12 +36,12 @@ $ARGUMENTS
|
|
|
36
36
|
7. **Git commit:** 展示 commit message 给用户确认后提交
|
|
37
37
|
8. **记录:**
|
|
38
38
|
- **有 `--change`:** 在 `.sillyspec/changes/<变更名>/tasks.md` 追加 task 并勾选 `[x]`
|
|
39
|
-
- **无 `--change`:** 记录到 `.sillyspec/QUICKLOG.md`(见下方规则)
|
|
39
|
+
- **无 `--change`:** 记录到 `.sillyspec/quicklog/QUICKLOG.md`(见下方规则)
|
|
40
40
|
9. **检查复杂度:** 任务比预期复杂 → 建议用完整流程
|
|
41
41
|
|
|
42
42
|
### QUICKLOG.md 规则
|
|
43
43
|
|
|
44
|
-
文件路径:`.sillyspec/QUICKLOG.md`
|
|
44
|
+
文件路径:`.sillyspec/quicklog/QUICKLOG.md`
|
|
45
45
|
|
|
46
46
|
**追加记录格式:**
|
|
47
47
|
```markdown
|
|
@@ -22,8 +22,7 @@ cat .sillyspec/STATE.md 2>/dev/null
|
|
|
22
22
|
```bash
|
|
23
23
|
ls .sillyspec/changes/*/MASTER.md 2>/dev/null
|
|
24
24
|
ls -d .sillyspec/changes/*/ | grep -v archive | grep -v stages | tail -1 2>/dev/null
|
|
25
|
-
ls .sillyspec/changes/*/
|
|
26
|
-
ls .sillyspec/codebase/*.md .sillyspec/changes/*/tasks.md .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
25
|
+
ls .sillyspec/codebase/*.md .sillyspec/codebase/details/*.md .sillyspec/changes/*/tasks.md .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
27
26
|
```
|
|
28
27
|
|
|
29
28
|
**探测结果推断:**
|
|
@@ -32,9 +31,9 @@ ls .sillyspec/codebase/*.md .sillyspec/changes/*/tasks.md .sillyspec/{REQUIREMEN
|
|
|
32
31
|
|---|---|---|
|
|
33
32
|
| 无 .sillyspec/ 内容 | 未开始 | `/sillyspec:init` 或 `/sillyspec:scan` |
|
|
34
33
|
| 有 SCAN-RAW.md 或 codebase 文档不全 | 扫描中断 | `/sillyspec:scan`(断点续扫) |
|
|
35
|
-
| codebase
|
|
34
|
+
| codebase 文档齐全无 changes/ | 已扫描未开始需求 | `/sillyspec:brainstorm` |
|
|
36
35
|
| 有 REQUIREMENTS.md 无 changes/ | 绿地有需求 | `/sillyspec:brainstorm` |
|
|
37
|
-
| changes/ 有
|
|
36
|
+
| changes/ 有 design 无 tasks | 待计划 | `/sillyspec:plan` |
|
|
38
37
|
| tasks.md 有未完成 checkbox | 执行中 | `/sillyspec:execute` |
|
|
39
38
|
| tasks.md 全完成 | 待验证 | `/sillyspec:verify` |
|
|
40
39
|
|
|
@@ -61,7 +61,7 @@ AskUserQuestion 依次确认:快速⚡/深度🔍、扫描范围(留空全
|
|
|
61
61
|
|
|
62
62
|
**只读入口和配置文件,不读源码。** 生成 3 份文档到 `mkdir -p .sillyspec/codebase`:
|
|
63
63
|
|
|
64
|
-
1. `
|
|
64
|
+
1. `ARCHITECTURE.md` — 架构 + 技术栈(合并原 STACK.md)
|
|
65
65
|
2. `STRUCTURE.md` — 目录结构
|
|
66
66
|
3. `PROJECT.md` — 项目概览
|
|
67
67
|
|
|
@@ -191,8 +191,8 @@ bash scripts/scan-preprocess.sh [扫描区域] 2>/dev/null
|
|
|
191
191
|
### Step 1: 断点续扫
|
|
192
192
|
|
|
193
193
|
```bash
|
|
194
|
-
for f in
|
|
195
|
-
[ -f ".sillyspec/codebase/${f}.md" ] && echo "✅ ${f}" || echo "⬜ ${f}"
|
|
194
|
+
for f in ARCHITECTURE STRUCTURE CONVENTIONS INTEGRATIONS TESTING CONCERNS; do
|
|
195
|
+
[ -f ".sillyspec/codebase/${f}.md" ] || [ -f ".sillyspec/codebase/details/${f}.md" ] && echo "✅ ${f}" || echo "⬜ ${f}"
|
|
196
196
|
done
|
|
197
197
|
```
|
|
198
198
|
|
|
@@ -202,18 +202,19 @@ done
|
|
|
202
202
|
|
|
203
203
|
**不直接读原始源码。** 读 SCAN-RAW.md,按需深挖相关文件。
|
|
204
204
|
|
|
205
|
-
|
|
205
|
+
按顺序生成文档(写完立即保存,中断不丢失):
|
|
206
206
|
|
|
207
|
-
1. `
|
|
208
|
-
2. `
|
|
209
|
-
3. `STRUCTURE.md` —
|
|
210
|
-
4. `
|
|
211
|
-
5. `
|
|
212
|
-
6. `
|
|
213
|
-
7. `CONCERNS.md` — 技术债务和风险
|
|
207
|
+
1. `ARCHITECTURE.md` — 架构 + 技术栈 + 数据模型摘要(合并原 STACK.md)
|
|
208
|
+
2. `CONVENTIONS.md` — 编码约定(含框架隐形规则、实体继承规范)
|
|
209
|
+
3. `codebase/details/STRUCTURE.md` — 目录结构(深扫详情)
|
|
210
|
+
4. `codebase/details/INTEGRATIONS.md` — 集成(深扫详情)
|
|
211
|
+
5. `codebase/details/TESTING.md` — 测试现状(深扫详情)
|
|
212
|
+
6. `codebase/details/CONCERNS.md` — 技术债务和风险(深扫详情)
|
|
214
213
|
|
|
215
214
|
同时更新 `.sillyspec/PROJECT.md`。
|
|
216
215
|
|
|
216
|
+
> **注意:** `SCAN-RAW.md` 是临时文件,扫描完成后可删除。
|
|
217
|
+
|
|
217
218
|
---
|
|
218
219
|
|
|
219
220
|
## 完成后
|
|
@@ -237,19 +238,19 @@ git commit -m "chore: sillyspec scan - codebase mapped"
|
|
|
237
238
|
**路径校验:** 每份文档写完后检查必须在 `.sillyspec/codebase/` 下,误放则自动修正:
|
|
238
239
|
|
|
239
240
|
```bash
|
|
240
|
-
for f in $(find . -maxdepth 2 -name "{ARCHITECTURE,
|
|
241
|
+
for f in $(find . -maxdepth 2 -name "{ARCHITECTURE,STRUCTURE,CONVENTIONS,INTEGRATIONS,TESTING,CONCERNS,PROJECT,SCAN-RAW}.md" ! -path "./.sillyspec/codebase/*" ! -path "./.sillyspec/codebase/details/*"); do
|
|
241
242
|
[ -f "$f" ] && mkdir -p .sillyspec/codebase && mv "$f" ".sillyspec/codebase/$(basename $f)"
|
|
242
243
|
done
|
|
243
244
|
```
|
|
244
245
|
|
|
245
246
|
**自检门控:**
|
|
246
|
-
- [ ]
|
|
247
|
-
- [ ] ARCHITECTURE.md
|
|
248
|
-
- [ ] STRUCTURE.md
|
|
247
|
+
- [ ] ARCHITECTURE.md 含主要语言、框架和整体架构?
|
|
248
|
+
- [ ] ARCHITECTURE.md 含数据模型摘要?(深扫)
|
|
249
|
+
- [ ] STRUCTURE.md 含目录结构?(深扫,位于 details/)
|
|
249
250
|
- [ ] CONVENTIONS.md 含编码约定?(深扫)
|
|
250
|
-
- [ ] INTEGRATIONS.md
|
|
251
|
-
- [ ] TESTING.md
|
|
252
|
-
- [ ] CONCERNS.md
|
|
251
|
+
- [ ] INTEGRATIONS.md 列出外部依赖?(深扫,位于 details/)
|
|
252
|
+
- [ ] TESTING.md 描述测试状况?(深扫,位于 details/)
|
|
253
|
+
- [ ] CONCERNS.md 列出技术债务?(深扫,位于 details/)
|
|
253
254
|
- [ ] PROJECT.md 已生成?
|
|
254
255
|
|
|
255
256
|
```bash
|
|
@@ -26,7 +26,7 @@ cat .sillyspec/config.yaml 2>/dev/null
|
|
|
26
26
|
### Step 2-5: 单项目检查
|
|
27
27
|
|
|
28
28
|
1. **项目基础:** PROJECT.md、codebase 文档、REQUIREMENTS.md、ROADMAP.md
|
|
29
|
-
2. **进行中变更:** 对每个变更检查
|
|
29
|
+
2. **进行中变更:** 对每个变更检查 design/tasks 完成度
|
|
30
30
|
3. **归档历史:** `ls .sillyspec/changes/archive/ | wc -l`
|
|
31
31
|
4. **代码库文档:** `ls .sillyspec/codebase/`
|
|
32
32
|
|
|
@@ -25,7 +25,7 @@ sillyspec status --json
|
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
28
|
-
cat "$LATEST"/{
|
|
28
|
+
cat "$LATEST"/{design,tasks}.md 2>/dev/null
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
锚定确认实际存在的文件。
|
|
@@ -14,6 +14,17 @@ argument-hint: "[可选:add/remove/status/info]"
|
|
|
14
14
|
## 用户指令
|
|
15
15
|
$ARGUMENTS
|
|
16
16
|
|
|
17
|
+
## 交互规范
|
|
18
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
19
|
+
|
|
20
|
+
## 核心约束(必须遵守)
|
|
21
|
+
- ❌ 修改子项目目录下的任何文件
|
|
22
|
+
- ❌ 写非法 YAML
|
|
23
|
+
- ❌ 使用绝对路径(必须是相对路径)
|
|
24
|
+
|
|
25
|
+
## 用户指令
|
|
26
|
+
$ARGUMENTS
|
|
27
|
+
|
|
17
28
|
---
|
|
18
29
|
|
|
19
30
|
## 流程
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SillySpec
|
|
1
|
+
# SillySpec v3.0 — 规范驱动开发工具包
|
|
2
2
|
|
|
3
3
|
> 融合 Superpowers + OpenSpec + GSD,从"你说要啥"到"代码能跑"的完整流程。
|
|
4
4
|
> Claude Code / Cursor / Codex / OpenCode / OpenClaw 都能用。
|
|
@@ -63,8 +63,8 @@ claude --dangerously-skip-permissions
|
|
|
63
63
|
## 完整工作流
|
|
64
64
|
|
|
65
65
|
```
|
|
66
|
-
绿地:init → brainstorm →
|
|
67
|
-
棕地:scan → brainstorm →
|
|
66
|
+
绿地:init → brainstorm → plan → execute → [verify] → archive
|
|
67
|
+
棕地:scan → brainstorm → plan → execute → [verify] → archive
|
|
68
68
|
大模块:brainstorm(多图) → 拆分 → MASTER.md → stage-1 全流程 → stage-2 全流程 → ... → archive
|
|
69
69
|
```
|
|
70
70
|
|
|
@@ -83,12 +83,11 @@ claude --dangerously-skip-permissions
|
|
|
83
83
|
|---|---|
|
|
84
84
|
| `/sillyspec:init` | 绿地项目:深度提问→需求→路线图 |
|
|
85
85
|
| `/sillyspec:scan` | 棕地项目:交互式引导扫描,生成代码库文档 |
|
|
86
|
-
| `/sillyspec:brainstorm` |
|
|
87
|
-
| `/sillyspec:
|
|
88
|
-
| `/sillyspec:
|
|
89
|
-
| `/sillyspec:
|
|
90
|
-
| `/sillyspec:
|
|
91
|
-
| `/sillyspec:archive` | 归档:规范沉淀 |
|
|
86
|
+
| `/sillyspec:brainstorm` | 需求探索+规范生成:直接产出 design.md + tasks.md |
|
|
87
|
+
| `/sillyspec:plan` | 实现计划:文件路径+任务描述+Wave 分组 |
|
|
88
|
+
| `/sillyspec:execute` | TDD 执行:子代理并行+用户自选确认频率 |
|
|
89
|
+
| `/sillyspec:verify` | 验证(可选):对照规范+测试套件 |
|
|
90
|
+
| `/sillyspec:archive` | 归档:规范沉淀到 knowledge/ |
|
|
92
91
|
|
|
93
92
|
### 辅助工具
|
|
94
93
|
|
|
@@ -107,7 +106,7 @@ claude --dangerously-skip-permissions
|
|
|
107
106
|
|
|
108
107
|
SillySpec 不仅仅是 prompt,还有硬校验:
|
|
109
108
|
|
|
110
|
-
- **锚定确认** —
|
|
109
|
+
- **锚定确认** — brainstorm/plan/execute/verify 执行前必须逐个确认读过规范文件
|
|
111
110
|
- **Hard Gate 自检** — 关键命令生成文件后强制自检格式,不通过则修正
|
|
112
111
|
- **校验脚本** — shell 脚本可自动化验证 AI 输出(validate-proposal/plan/scan/all)
|
|
113
112
|
- **框架隐形规则扫描** — scan 阶段自动检测多租户/逻辑删除/审计字段/实体基类,写入 CONVENTIONS.md
|