sillyspec 2.5.0 → 2.6.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 +45 -10
- package/.claude/commands/sillyspec/brainstorm.md +5 -0
- package/.claude/commands/sillyspec/continue.md +5 -0
- package/.claude/commands/sillyspec/execute.md +15 -6
- package/.claude/commands/sillyspec/explore.md +5 -0
- package/.claude/commands/sillyspec/export.md +5 -0
- package/.claude/commands/sillyspec/init.md +5 -0
- package/.claude/commands/sillyspec/plan.md +4 -1
- package/.claude/commands/sillyspec/propose.md +1 -1
- package/.claude/commands/sillyspec/quick.md +5 -0
- package/.claude/commands/sillyspec/resume.md +1 -1
- package/.claude/commands/sillyspec/scan.md +13 -0
- package/.claude/commands/sillyspec/status.md +5 -0
- package/.claude/commands/sillyspec/verify.md +5 -0
- package/.claude/commands/sillyspec/workspace.md +5 -0
- package/package.json +1 -1
- package/src/init.js +8 -12
- package/templates/archive.md +45 -10
- package/templates/execute.md +15 -6
- package/templates/plan.md +4 -1
- package/templates/propose.md +1 -1
- package/templates/resume.md +1 -1
- package/templates/scan.md +13 -0
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
## 核心约束(必须遵守)
|
|
5
5
|
- ❌ 未经验证就归档(必须先确认验证通过)
|
|
6
|
+
- ❌ 未勾选的 checkbox 未告知用户就归档
|
|
6
7
|
- ❌ 归档后留下活跃变更的残留状态
|
|
8
|
+
- ❌ 覆盖已存在的归档目录
|
|
7
9
|
|
|
8
10
|
## 变更名称
|
|
9
11
|
$ARGUMENTS
|
|
@@ -12,16 +14,49 @@ $ARGUMENTS
|
|
|
12
14
|
|
|
13
15
|
## 流程
|
|
14
16
|
|
|
15
|
-
1.
|
|
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>"`
|
|
17
|
+
### 1. 前置检查(门禁)
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
读取 `.sillyspec/changes/<change-name>/` 下所有必要文件,逐项检查:
|
|
20
|
+
|
|
21
|
+
- [ ] **verify 状态:** 检查是否有验证记录,无则提示先执行 `/sillyspec:verify`
|
|
22
|
+
- [ ] **文件完整性:** 检查 `proposal.md` 和 `design.md` 是否存在,缺失则警告
|
|
23
|
+
- [ ] **任务完成度:** 读取 `tasks.md`,统计已完成/未完成任务数。**有未完成的 → 用 AskUserQuestion 询问:**
|
|
24
|
+
- ① 继续归档(未完成任务将被标记完成)
|
|
25
|
+
- ② 取消,回去完成任务
|
|
26
|
+
|
|
27
|
+
> 任一门禁不通过且用户选择取消 → 终止流程。
|
|
28
|
+
|
|
29
|
+
### 2. 展示归档清单
|
|
30
|
+
|
|
31
|
+
展示即将归档的内容摘要:
|
|
32
|
+
- 变更目录名
|
|
33
|
+
- 包含的文件列表
|
|
34
|
+
- 任务完成统计(✅ 已完成 / ⬜ 未完成)
|
|
35
|
+
- 一句话总结本次变更
|
|
36
|
+
|
|
37
|
+
### 3. Spec 沉淀
|
|
38
|
+
|
|
39
|
+
将 `.sillyspec/changes/<change-name>/specs/` 下的设计文档**复制到 `.sillyspec/specs/` 主目录**,确保已完成的设计规范可被后续变更参考。如目标已存在同名文件则跳过并提示。
|
|
24
40
|
|
|
25
|
-
|
|
41
|
+
### 4. 用户确认
|
|
42
|
+
|
|
43
|
+
用 AskUserQuestion 让用户确认:
|
|
44
|
+
- ① 确认归档
|
|
45
|
+
- ② 取消
|
|
46
|
+
|
|
47
|
+
### 5. 执行归档
|
|
48
|
+
|
|
49
|
+
- 目标路径:`.sillyspec/changes/archive/YYYY-MM-DD-<change-name>/`
|
|
50
|
+
- **检查目标路径是否已存在**,存在则中止并报错,防止覆盖
|
|
51
|
+
- 移动变更目录到归档路径
|
|
52
|
+
|
|
53
|
+
### 6. 归档后更新
|
|
54
|
+
|
|
55
|
+
- **tasks.md:** 确保所有 checkbox 都已勾选 `[x]`
|
|
56
|
+
- **ROADMAP.md**(如存在):标记对应 Phase 已完成
|
|
57
|
+
- **STATE.md:** 清除当前变更信息,历史记录追加归档完成
|
|
58
|
+
- **Git 提交:** `git add .sillyspec/ && git commit -m "docs: archive sillyspec change <change-name>"`
|
|
59
|
+
|
|
60
|
+
### 最后说:
|
|
26
61
|
|
|
27
|
-
|
|
62
|
+
> ✅ 变更 `<change-name>` 已归档到 `archive/YYYY-MM-DD-<change-name>/`。继续:`/sillyspec:brainstorm "新想法"`
|
|
@@ -36,7 +36,7 @@ cat .sillyspec/config.yaml 2>/dev/null
|
|
|
36
36
|
|
|
37
37
|
**单项目模式:**
|
|
38
38
|
```bash
|
|
39
|
-
PLAN=$(ls -t .sillyspec/
|
|
39
|
+
PLAN=$(ls -t .sillyspec/changes/*/plan.md 2>/dev/null | head -1); cat "$PLAN"
|
|
40
40
|
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
41
41
|
cat "$LATEST"/{tasks,design}.md 2>/dev/null
|
|
42
42
|
cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
@@ -59,13 +59,17 @@ cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
|
59
59
|
|
|
60
60
|
## 执行策略
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
用 AskUserQuestion 询问用户选择执行模式:
|
|
63
|
+
1. 串行执行 — 当前会话逐任务执行,适合简单变更
|
|
64
|
+
2. 子代理并行 — 每个 Task 启动独立子代理,适合多任务独立变更(需要 subagent 能力)
|
|
65
|
+
|
|
66
|
+
选择子代理模式时:
|
|
63
67
|
1. 按计划的 Wave 分组
|
|
64
68
|
2. 每个 Task 启动独立子代理(不继承主 session 历史)
|
|
65
|
-
3. 子代理上下文:任务描述 + TDD 纪律 + 精确文件路径 + 相关约定
|
|
69
|
+
3. 子代理上下文:任务描述 + TDD 纪律 + 精确文件路径 + 相关约定 + **要修改文件的当前源码** + **被调用类的源码**
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
选择串行模式时:
|
|
72
|
+
当前会话逐任务串行执行,每完成一个任务展示结果并等待用户确认。
|
|
69
73
|
|
|
70
74
|
## 每个任务的 TDD 铁律
|
|
71
75
|
|
|
@@ -80,7 +84,12 @@ cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
|
80
84
|
|
|
81
85
|
**违反 TDD → 删掉代码从测试重新开始。例外(需人工确认):** 抛弃型原型、生成代码、配置文件。
|
|
82
86
|
|
|
83
|
-
##
|
|
87
|
+
## 写代码前必须读取现有源码(先读后写)
|
|
88
|
+
|
|
89
|
+
**⛔ 铁律:**
|
|
90
|
+
- 没有读过相关源文件,不允许写任何代码
|
|
91
|
+
- 方法签名必须来自已有代码或 plan 中的明确定义,禁止凭空编造
|
|
92
|
+
- 调用已有方法时,必须先 `cat` 源文件确认方法签名(参数、返回值、异常)
|
|
84
93
|
|
|
85
94
|
```bash
|
|
86
95
|
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
@@ -46,7 +46,10 @@ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
|
46
46
|
|
|
47
47
|
**每个 Task 必须包含:**
|
|
48
48
|
- 精确文件路径
|
|
49
|
+
- **精确方法签名**(参数类型、返回值类型、注解)— ❌ "实现用户创建接口" → ✅ `public Result<UserVO> createUser(@RequestBody @Valid UserDTO dto)`,参考 `RoleController.createRole`
|
|
49
50
|
- 完整可运行的代码示例(不写"添加验证逻辑"这种模糊描述)
|
|
51
|
+
- 涉及已有类调用时,标注"参考 `XxxService.java` 的 `xxx` 方法"
|
|
52
|
+
- 新增方法必须列出方法签名,方法签名必须来自已有代码风格或 design.md
|
|
50
53
|
- 运行命令和预期输出
|
|
51
54
|
- TDD 步骤:🔴 写失败测试 → 🟢 写最少代码 → 🔵 重构 → ✅ commit
|
|
52
55
|
|
|
@@ -60,7 +63,7 @@ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
|
60
63
|
|
|
61
64
|
### 4. 保存
|
|
62
65
|
|
|
63
|
-
保存到 `.sillyspec/
|
|
66
|
+
保存到 `.sillyspec/changes/<变更名>/plan.md`
|
|
64
67
|
|
|
65
68
|
### 5. 自检门控
|
|
66
69
|
|
|
@@ -51,7 +51,7 @@ ls .sillyspec/changes/ | grep -v archive
|
|
|
51
51
|
|
|
52
52
|
**`specs/requirements.md`:** 功能需求(REQ-001 格式)、Given/When/Then 用户场景、非功能需求
|
|
53
53
|
|
|
54
|
-
**`design.md`:** 架构决策及理由、文件变更清单表格、数据模型、API
|
|
54
|
+
**`design.md`:** 架构决策及理由、文件变更清单表格、数据模型、API 设计、**代码风格参照**(参考已有的 Controller/Service/Entity 源文件,标注返回值类型、异常类型、注解风格)
|
|
55
55
|
|
|
56
56
|
**`tasks.md`:** 准备 → 实现 → 收尾的任务列表(每个 task 标注文件路径)
|
|
57
57
|
|
|
@@ -23,7 +23,7 @@ cat .sillyspec/STATE.md 2>/dev/null
|
|
|
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
25
|
ls .sillyspec/changes/*/stages/*/proposal.md 2>/dev/null
|
|
26
|
-
ls .sillyspec/codebase/*.md .sillyspec/
|
|
26
|
+
ls .sillyspec/codebase/*.md .sillyspec/changes/*/plan.md .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
**探测结果推断:**
|
|
@@ -163,6 +163,19 @@ find . -name "*.java" -not -path "*/{node_modules,.git}/*" | xargs grep -l "@Map
|
|
|
163
163
|
|
|
164
164
|
无基类 → 写"本项目没有实体基类"。
|
|
165
165
|
|
|
166
|
+
### D. 代码风格深度提取
|
|
167
|
+
|
|
168
|
+
读取 2-3 个典型的 Controller、Service、ServiceImpl、Entity 源文件,提取具体风格(从源码提取,禁止编造):
|
|
169
|
+
|
|
170
|
+
1. **注解风格**:Controller 用 `@RestController` 还是 `@Controller`?方法用什么映射注解?参数校验方式?
|
|
171
|
+
2. **返回值约定**:统一返回 `Result<T>` / `ResponseEntity<T>` / 其他?
|
|
172
|
+
3. **异常处理**:用什么异常类?有没有全局异常处理器?
|
|
173
|
+
4. **Service 层约定**:实现类命名、是否继承基类、基类通用方法、事务注解用法
|
|
174
|
+
5. **实体/POJO 风格**:是否继承基类、Lombok 用法、ID 生成策略、`@TableId`
|
|
175
|
+
6. **Mapper/DAO 风格**:XML Mapper 还是注解?有没有通用 Mapper 基类?
|
|
176
|
+
|
|
177
|
+
将以上信息写入 CONVENTIONS.md「代码风格」章节。非 Java 项目参考同等概念提取。前端-only 项目写"不适用"。
|
|
178
|
+
|
|
166
179
|
---
|
|
167
180
|
|
|
168
181
|
## 深度扫描
|
package/package.json
CHANGED
package/src/init.js
CHANGED
|
@@ -175,20 +175,16 @@ function isTTY() {
|
|
|
175
175
|
|
|
176
176
|
async function doInstall(projectDir, tools, isWorkspace, subprojects = []) {
|
|
177
177
|
// 创建基础目录
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
];
|
|
178
|
+
// 不预创建子目录,由各命令按需创建
|
|
179
|
+
// .sillyspec/codebase/ → scan
|
|
180
|
+
// .sillyspec/changes/ → brainstorm/propose
|
|
181
|
+
// .sillyspec/changes/archive/ → archive
|
|
182
|
+
// .sillyspec/plans/ → plan
|
|
183
|
+
// .sillyspec/specs/ → propose
|
|
185
184
|
if (isWorkspace) {
|
|
186
|
-
|
|
185
|
+
mkdirSync(join(projectDir, '.sillyspec', 'shared'), { recursive: true });
|
|
186
|
+
mkdirSync(join(projectDir, '.sillyspec', 'workspace'), { recursive: true });
|
|
187
187
|
}
|
|
188
|
-
for (const d of dirs) {
|
|
189
|
-
mkdirSync(join(projectDir, d), { recursive: true });
|
|
190
|
-
}
|
|
191
|
-
mkdirSync(join(homedir(), '.sillyspec', 'templates'), { recursive: true });
|
|
192
188
|
|
|
193
189
|
// .gitignore
|
|
194
190
|
const gitignorePath = join(projectDir, '.gitignore');
|
package/templates/archive.md
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
## 核心约束(必须遵守)
|
|
5
5
|
- ❌ 未经验证就归档(必须先确认验证通过)
|
|
6
|
+
- ❌ 未勾选的 checkbox 未告知用户就归档
|
|
6
7
|
- ❌ 归档后留下活跃变更的残留状态
|
|
8
|
+
- ❌ 覆盖已存在的归档目录
|
|
7
9
|
|
|
8
10
|
## 变更名称
|
|
9
11
|
$ARGUMENTS
|
|
@@ -12,16 +14,49 @@ $ARGUMENTS
|
|
|
12
14
|
|
|
13
15
|
## 流程
|
|
14
16
|
|
|
15
|
-
1.
|
|
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>"`
|
|
17
|
+
### 1. 前置检查(门禁)
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
读取 `.sillyspec/changes/<change-name>/` 下所有必要文件,逐项检查:
|
|
20
|
+
|
|
21
|
+
- [ ] **verify 状态:** 检查是否有验证记录,无则提示先执行 `/sillyspec:verify`
|
|
22
|
+
- [ ] **文件完整性:** 检查 `proposal.md` 和 `design.md` 是否存在,缺失则警告
|
|
23
|
+
- [ ] **任务完成度:** 读取 `tasks.md`,统计已完成/未完成任务数。**有未完成的 → 用 AskUserQuestion 询问:**
|
|
24
|
+
- ① 继续归档(未完成任务将被标记完成)
|
|
25
|
+
- ② 取消,回去完成任务
|
|
26
|
+
|
|
27
|
+
> 任一门禁不通过且用户选择取消 → 终止流程。
|
|
28
|
+
|
|
29
|
+
### 2. 展示归档清单
|
|
30
|
+
|
|
31
|
+
展示即将归档的内容摘要:
|
|
32
|
+
- 变更目录名
|
|
33
|
+
- 包含的文件列表
|
|
34
|
+
- 任务完成统计(✅ 已完成 / ⬜ 未完成)
|
|
35
|
+
- 一句话总结本次变更
|
|
36
|
+
|
|
37
|
+
### 3. Spec 沉淀
|
|
38
|
+
|
|
39
|
+
将 `.sillyspec/changes/<change-name>/specs/` 下的设计文档**复制到 `.sillyspec/specs/` 主目录**,确保已完成的设计规范可被后续变更参考。如目标已存在同名文件则跳过并提示。
|
|
24
40
|
|
|
25
|
-
|
|
41
|
+
### 4. 用户确认
|
|
42
|
+
|
|
43
|
+
用 AskUserQuestion 让用户确认:
|
|
44
|
+
- ① 确认归档
|
|
45
|
+
- ② 取消
|
|
46
|
+
|
|
47
|
+
### 5. 执行归档
|
|
48
|
+
|
|
49
|
+
- 目标路径:`.sillyspec/changes/archive/YYYY-MM-DD-<change-name>/`
|
|
50
|
+
- **检查目标路径是否已存在**,存在则中止并报错,防止覆盖
|
|
51
|
+
- 移动变更目录到归档路径
|
|
52
|
+
|
|
53
|
+
### 6. 归档后更新
|
|
54
|
+
|
|
55
|
+
- **tasks.md:** 确保所有 checkbox 都已勾选 `[x]`
|
|
56
|
+
- **ROADMAP.md**(如存在):标记对应 Phase 已完成
|
|
57
|
+
- **STATE.md:** 清除当前变更信息,历史记录追加归档完成
|
|
58
|
+
- **Git 提交:** `git add .sillyspec/ && git commit -m "docs: archive sillyspec change <change-name>"`
|
|
59
|
+
|
|
60
|
+
### 最后说:
|
|
26
61
|
|
|
27
|
-
|
|
62
|
+
> ✅ 变更 `<change-name>` 已归档到 `archive/YYYY-MM-DD-<change-name>/`。继续:`/sillyspec:brainstorm "新想法"`
|
package/templates/execute.md
CHANGED
|
@@ -36,7 +36,7 @@ cat .sillyspec/config.yaml 2>/dev/null
|
|
|
36
36
|
|
|
37
37
|
**单项目模式:**
|
|
38
38
|
```bash
|
|
39
|
-
PLAN=$(ls -t .sillyspec/
|
|
39
|
+
PLAN=$(ls -t .sillyspec/changes/*/plan.md 2>/dev/null | head -1); cat "$PLAN"
|
|
40
40
|
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
41
41
|
cat "$LATEST"/{tasks,design}.md 2>/dev/null
|
|
42
42
|
cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
@@ -59,13 +59,17 @@ cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
|
59
59
|
|
|
60
60
|
## 执行策略
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
用 AskUserQuestion 询问用户选择执行模式:
|
|
63
|
+
1. 串行执行 — 当前会话逐任务执行,适合简单变更
|
|
64
|
+
2. 子代理并行 — 每个 Task 启动独立子代理,适合多任务独立变更(需要 subagent 能力)
|
|
65
|
+
|
|
66
|
+
选择子代理模式时:
|
|
63
67
|
1. 按计划的 Wave 分组
|
|
64
68
|
2. 每个 Task 启动独立子代理(不继承主 session 历史)
|
|
65
|
-
3. 子代理上下文:任务描述 + TDD 纪律 + 精确文件路径 + 相关约定
|
|
69
|
+
3. 子代理上下文:任务描述 + TDD 纪律 + 精确文件路径 + 相关约定 + **要修改文件的当前源码** + **被调用类的源码**
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
选择串行模式时:
|
|
72
|
+
当前会话逐任务串行执行,每完成一个任务展示结果并等待用户确认。
|
|
69
73
|
|
|
70
74
|
## 每个任务的 TDD 铁律
|
|
71
75
|
|
|
@@ -80,7 +84,12 @@ cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
|
80
84
|
|
|
81
85
|
**违反 TDD → 删掉代码从测试重新开始。例外(需人工确认):** 抛弃型原型、生成代码、配置文件。
|
|
82
86
|
|
|
83
|
-
##
|
|
87
|
+
## 写代码前必须读取现有源码(先读后写)
|
|
88
|
+
|
|
89
|
+
**⛔ 铁律:**
|
|
90
|
+
- 没有读过相关源文件,不允许写任何代码
|
|
91
|
+
- 方法签名必须来自已有代码或 plan 中的明确定义,禁止凭空编造
|
|
92
|
+
- 调用已有方法时,必须先 `cat` 源文件确认方法签名(参数、返回值、异常)
|
|
84
93
|
|
|
85
94
|
```bash
|
|
86
95
|
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
package/templates/plan.md
CHANGED
|
@@ -46,7 +46,10 @@ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
|
46
46
|
|
|
47
47
|
**每个 Task 必须包含:**
|
|
48
48
|
- 精确文件路径
|
|
49
|
+
- **精确方法签名**(参数类型、返回值类型、注解)— ❌ "实现用户创建接口" → ✅ `public Result<UserVO> createUser(@RequestBody @Valid UserDTO dto)`,参考 `RoleController.createRole`
|
|
49
50
|
- 完整可运行的代码示例(不写"添加验证逻辑"这种模糊描述)
|
|
51
|
+
- 涉及已有类调用时,标注"参考 `XxxService.java` 的 `xxx` 方法"
|
|
52
|
+
- 新增方法必须列出方法签名,方法签名必须来自已有代码风格或 design.md
|
|
50
53
|
- 运行命令和预期输出
|
|
51
54
|
- TDD 步骤:🔴 写失败测试 → 🟢 写最少代码 → 🔵 重构 → ✅ commit
|
|
52
55
|
|
|
@@ -60,7 +63,7 @@ cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
|
60
63
|
|
|
61
64
|
### 4. 保存
|
|
62
65
|
|
|
63
|
-
保存到 `.sillyspec/
|
|
66
|
+
保存到 `.sillyspec/changes/<变更名>/plan.md`
|
|
64
67
|
|
|
65
68
|
### 5. 自检门控
|
|
66
69
|
|
package/templates/propose.md
CHANGED
|
@@ -51,7 +51,7 @@ ls .sillyspec/changes/ | grep -v archive
|
|
|
51
51
|
|
|
52
52
|
**`specs/requirements.md`:** 功能需求(REQ-001 格式)、Given/When/Then 用户场景、非功能需求
|
|
53
53
|
|
|
54
|
-
**`design.md`:** 架构决策及理由、文件变更清单表格、数据模型、API
|
|
54
|
+
**`design.md`:** 架构决策及理由、文件变更清单表格、数据模型、API 设计、**代码风格参照**(参考已有的 Controller/Service/Entity 源文件,标注返回值类型、异常类型、注解风格)
|
|
55
55
|
|
|
56
56
|
**`tasks.md`:** 准备 → 实现 → 收尾的任务列表(每个 task 标注文件路径)
|
|
57
57
|
|
package/templates/resume.md
CHANGED
|
@@ -23,7 +23,7 @@ cat .sillyspec/STATE.md 2>/dev/null
|
|
|
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
25
|
ls .sillyspec/changes/*/stages/*/proposal.md 2>/dev/null
|
|
26
|
-
ls .sillyspec/codebase/*.md .sillyspec/
|
|
26
|
+
ls .sillyspec/codebase/*.md .sillyspec/changes/*/plan.md .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
**探测结果推断:**
|
package/templates/scan.md
CHANGED
|
@@ -163,6 +163,19 @@ find . -name "*.java" -not -path "*/{node_modules,.git}/*" | xargs grep -l "@Map
|
|
|
163
163
|
|
|
164
164
|
无基类 → 写"本项目没有实体基类"。
|
|
165
165
|
|
|
166
|
+
### D. 代码风格深度提取
|
|
167
|
+
|
|
168
|
+
读取 2-3 个典型的 Controller、Service、ServiceImpl、Entity 源文件,提取具体风格(从源码提取,禁止编造):
|
|
169
|
+
|
|
170
|
+
1. **注解风格**:Controller 用 `@RestController` 还是 `@Controller`?方法用什么映射注解?参数校验方式?
|
|
171
|
+
2. **返回值约定**:统一返回 `Result<T>` / `ResponseEntity<T>` / 其他?
|
|
172
|
+
3. **异常处理**:用什么异常类?有没有全局异常处理器?
|
|
173
|
+
4. **Service 层约定**:实现类命名、是否继承基类、基类通用方法、事务注解用法
|
|
174
|
+
5. **实体/POJO 风格**:是否继承基类、Lombok 用法、ID 生成策略、`@TableId`
|
|
175
|
+
6. **Mapper/DAO 风格**:XML Mapper 还是注解?有没有通用 Mapper 基类?
|
|
176
|
+
|
|
177
|
+
将以上信息写入 CONVENTIONS.md「代码风格」章节。非 Java 项目参考同等概念提取。前端-only 项目写"不适用"。
|
|
178
|
+
|
|
166
179
|
---
|
|
167
180
|
|
|
168
181
|
## 深度扫描
|