@heihei0299/matt-skills 1.2.0 → 1.3.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/.agents/skills/commit-check/SKILL.md +3 -1
- package/.agents/skills/tdd-implement/SKILL.md +26 -121
- package/.agents/skills/tdd-implement/references/orchestration.md +136 -0
- package/.agents/skills/tdd-implement/references/stages.md +105 -104
- package/config/proprietary.json +1 -0
- package/package.json +3 -1
- package/scripts/sync-upstream.js +315 -0
- package/template/.opencode/CONTEXT.md +4 -0
- package/template/.opencode/docs/agents/runtime-discipline.md +3 -2
- package/template/.opencode/docs/agents/skill-design.md +7 -2
- package/template/.opencode/skills/commit-check/SKILL.md +3 -1
- package/template/.opencode/skills/tdd-implement/SKILL.md +26 -121
- package/template/.opencode/skills/tdd-implement/references/orchestration.md +136 -0
- package/template/.opencode/skills/tdd-implement/references/stages.md +105 -104
- package/template/.pi/skills/commit-check/SKILL.md +3 -1
- package/template/.pi/skills/tdd-implement/SKILL.md +26 -121
- package/template/.pi/skills/tdd-implement/references/orchestration.md +136 -0
- package/template/.pi/skills/tdd-implement/references/stages.md +105 -104
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# 阶段详细定义
|
|
2
2
|
|
|
3
|
+
单线 ①→⑦ 的详细定义;多 issue 编排见 [orchestration.md](orchestration.md)。TDD 语义以 [tdd 技能](.agents/skills/tdd/SKILL.md) 为唯一事实源,不在此重写。
|
|
4
|
+
|
|
3
5
|
## 目录
|
|
4
6
|
|
|
5
7
|
- [阶段 ①:理解需求](#阶段-①理解需求)
|
|
@@ -9,23 +11,30 @@
|
|
|
9
11
|
- [阶段 ⑤:Code Review](#阶段-⑤code-review)
|
|
10
12
|
- [阶段 ⑥:Commit](#阶段-⑥commit)
|
|
11
13
|
- [阶段 ⑦:收尾(文档对齐 + issue 状态 + 实施总结)](#阶段-⑦收尾文档对齐--issue-状态--实施总结)
|
|
12
|
-
- [
|
|
14
|
+
- [Todo 规定](#todo-规定)
|
|
15
|
+
- [回退路由](#回退路由)
|
|
16
|
+
|
|
17
|
+
---
|
|
13
18
|
|
|
14
19
|
## 阶段 ①:理解需求
|
|
15
20
|
|
|
16
21
|
### 入口条件
|
|
22
|
+
|
|
17
23
|
- 用户提供了 spec 或一组 ticket
|
|
18
24
|
|
|
19
25
|
### 操作
|
|
26
|
+
|
|
20
27
|
1. 完整读取 spec/ticket 内容
|
|
21
28
|
2. 若存在 `CONTEXT.md` 和 `docs/adr/`,先阅读,确保术语和 ADR 决策不被违背
|
|
22
29
|
3. 如有歧义,先向用户澄清再继续
|
|
23
30
|
|
|
24
31
|
### 出口条件
|
|
32
|
+
|
|
25
33
|
- 能用自己的话复述需求
|
|
26
34
|
- 无未澄清的歧义
|
|
27
35
|
|
|
28
36
|
### 边界
|
|
37
|
+
|
|
29
38
|
- 本阶段只澄清需求——实现与测试设计在后续阶段进行
|
|
30
39
|
|
|
31
40
|
---
|
|
@@ -33,19 +42,23 @@
|
|
|
33
42
|
## 阶段 ②:确认 Seams(测试接缝)
|
|
34
43
|
|
|
35
44
|
### 入口条件
|
|
45
|
+
|
|
36
46
|
- 需求已澄清,无歧义
|
|
37
47
|
|
|
38
48
|
### 操作
|
|
49
|
+
|
|
39
50
|
1. 列出所有将要测试的公共接口(seams)
|
|
40
51
|
2. 每个 seam 需包含:名称、输入、预期输出
|
|
41
52
|
3. 向用户展示 seams 清单并确认
|
|
42
53
|
4. 用户确认后才写任何测试代码
|
|
43
|
-
5. seams 确认后生成 todo 清单(每 seam 一个 todo
|
|
54
|
+
5. seams 确认后生成 todo 清单(每 seam 一个 todo,格式与状态机见 [Todo 规定](#todo-规定))
|
|
44
55
|
|
|
45
56
|
### 出口条件
|
|
57
|
+
|
|
46
58
|
- 用户明确同意了 seams 清单
|
|
47
59
|
|
|
48
60
|
### 边界
|
|
61
|
+
|
|
49
62
|
- 一个 seam 对应一个公共接口上的一个待测行为(输入 + 预期输出):一个 seam = 一个测试 + 一个最小实现 cycle;同一接口的多个行为拆分为多个 seam,而非内部函数
|
|
50
63
|
|
|
51
64
|
> Seams 定义参考:[tdd 技能](.agents/skills/tdd/SKILL.md#seams--where-tests-go)
|
|
@@ -55,44 +68,66 @@
|
|
|
55
68
|
## 阶段 ③:TDD 开发循环
|
|
56
69
|
|
|
57
70
|
### 入口条件
|
|
71
|
+
|
|
58
72
|
- Seams 已确认
|
|
59
73
|
|
|
60
74
|
### 操作
|
|
61
75
|
|
|
76
|
+
#### Git 安全前置(历史保护)
|
|
77
|
+
|
|
78
|
+
- 进入本阶段前记录 `BASE_HEAD=$(git rev-parse HEAD)`,后续所有 `git` 操作必须满足 `git merge-base --is-ancestor $BASE_HEAD HEAD`(仅追加、不可后退)。若校验失败立即经 `git reflog` 恢复后才继续。
|
|
79
|
+
- 为达 `git status` 干净仅删本次产生的 `[DEBUG-...]`/一次性脚本等未跟踪临时文件,禁止执行 `git reset --hard`、`git checkout .`、`git clean -fd`、`git stash push --include-untracked`、`git push --force`、`git rebase -i` 等(需显式用户确认才可执行;`stash` 如需使用改用 `--keep-index` 并在 `pop` 后校验)。术语与禁令见 `CONTEXT.md` Git History Preservation 与 `docs/agents/skill-design.md` Rule 4。
|
|
80
|
+
|
|
81
|
+
#### TDD 编排
|
|
82
|
+
|
|
62
83
|
**红-绿循环前与循环中都查阅 tdd 技能各节**(Every section applies on every cycle):TDD 语义与测试规则以 [tdd 技能](.agents/skills/tdd/SKILL.md) 为唯一事实源,不再在此重写——好测试标准见 [tdd/tests.md](.agents/skills/tdd/tests.md),Mock 指南见 [tdd/mocking.md](.agents/skills/tdd/mocking.md)。
|
|
63
|
-
|
|
84
|
+
|
|
85
|
+
本阶段只执行编排:按阶段②生成的 todo 清单逐条推进(大小任务层次与 Subtodo 格式见 [Todo 规定](#todo-规定)),每完成一个 todo(红-绿 cycle + typecheck)立即更新其状态为 `done`,再进入下一个 todo。
|
|
64
86
|
|
|
65
87
|
#### 3a/3b. 红-绿(Red-Green)
|
|
88
|
+
|
|
66
89
|
红-绿循环的执行规则(Red before green、One slice at a time、Anti-patterns、垂直切片)以 tdd 技能为准,见 [tdd/SKILL.md](.agents/skills/tdd/SKILL.md) 与 [tdd/tests.md](.agents/skills/tdd/tests.md)。
|
|
67
90
|
|
|
68
91
|
#### 3c. 切换 seam
|
|
69
|
-
|
|
92
|
+
|
|
93
|
+
每完成一个 seam 立即进入下一个 seam,同一回合内串行推进,不等用户"继续"。
|
|
70
94
|
|
|
71
95
|
#### 3d. Typecheck
|
|
96
|
+
|
|
72
97
|
- 每个 cycle 结束后运行 typecheck
|
|
73
98
|
- 发现问题立即修复,修复后再继续
|
|
74
99
|
|
|
75
100
|
#### 3e. 回合连续性
|
|
76
|
-
|
|
77
|
-
-
|
|
101
|
+
|
|
102
|
+
- 每个红-绿 cycle 及其 typecheck 必须在一个回合内串行完成:测试 → 分析失败 → 修正 → 重跑 → 全绿,中途不输出、不停止、不等用户"继续"
|
|
103
|
+
- **单个 seam 全绿不是回合终点**:它只是阶段③的内部步骤;阶段③的出口是"所有 seams 红-绿完成 + typecheck 通过",在出口达成前不停顿、不等待确认,直接进入下一个 seam
|
|
78
104
|
- 预告下一步后立即执行该步骤,回合终点仅为合规交互点、外部阻塞或阶段出口条件满足
|
|
79
105
|
- 进度输出并入工具调用序列,不单独结束回合——输出后继续执行,直到三类终点之一达成
|
|
80
106
|
- 输出只发生在:合规交互点(用户确认)、外部阻塞(明确说明所需授权或替代路径)、阶段出口条件满足时
|
|
81
107
|
- 外部阻塞(如权限拒绝)时明确请求授权或改用不冲突的路径,不静默等待
|
|
82
108
|
|
|
83
109
|
#### 3f. 任务分解(Chunking)
|
|
110
|
+
|
|
84
111
|
- 单次 `write` 超过 ~150 行:先写骨架再分批补全
|
|
85
112
|
- 批量 `replace` 超过 ~5 处:分批执行,每批后立即 typecheck 验证
|
|
86
113
|
|
|
87
114
|
#### 3g. Todo 更新纪律
|
|
115
|
+
|
|
88
116
|
- 每完成一个红-绿 cycle(含 typecheck),按实际推进更新对应 todo 状态:`in-progress` → `done`
|
|
89
117
|
- 更新基于当前实际状态,不基于旧快照重写整个清单;已完成项(done)永不回退
|
|
90
118
|
|
|
119
|
+
#### 3h. Git 历史保护(Git History Preservation)
|
|
120
|
+
|
|
121
|
+
- 阶段出口前必做祖先校验:`git merge-base --is-ancestor $BASE_HEAD HEAD` 若为 false,说明历史被改写(`reset --hard`/`checkout .`/`clean -fd`/`stash --include-untracked` 等导致),立即经 `git reflog` 找回并恢复 `BASE_HEAD` 后的提交,校验通过才算出口条件满足。
|
|
122
|
+
- 为达 `git status` 干净仅删本次产生的 `[DEBUG-...]`/一次性脚本等未跟踪临时文件,禁止用 git 层命令达到干净。详见 `CONTEXT.md` Git History Preservation 与 `docs/agents/skill-design.md` Rule 4。
|
|
123
|
+
|
|
91
124
|
### 出口条件
|
|
125
|
+
|
|
92
126
|
- 所有 seams 的红-绿循环完成
|
|
93
127
|
- Typecheck 通过
|
|
94
128
|
|
|
95
129
|
### 边界
|
|
130
|
+
|
|
96
131
|
- 每个 cycle 后运行 typecheck
|
|
97
132
|
- 全部 todo 为 done 才进入阶段④
|
|
98
133
|
- 测试质量规则(公共接口验证、独立断言、mock 边界、重构归属 review)见 tdd 技能,不在本阶段重写
|
|
@@ -105,16 +140,20 @@
|
|
|
105
140
|
## 阶段 ④:完整测试套件
|
|
106
141
|
|
|
107
142
|
### 入口条件
|
|
143
|
+
|
|
108
144
|
- 阶段 ③ 完成,typecheck 通过
|
|
109
145
|
|
|
110
146
|
### 操作
|
|
147
|
+
|
|
111
148
|
1. 运行仓库的完整测试套件
|
|
112
149
|
2. 检查所有测试是否通过
|
|
113
150
|
|
|
114
151
|
### 出口条件
|
|
152
|
+
|
|
115
153
|
- 全部测试通过
|
|
116
154
|
|
|
117
155
|
### 边界
|
|
156
|
+
|
|
118
157
|
- 测试失败时回到阶段 ③ 修复,修复后重新运行完整套件——进入 review 前必须全绿
|
|
119
158
|
|
|
120
159
|
---
|
|
@@ -122,19 +161,24 @@
|
|
|
122
161
|
## 阶段 ⑤:Code Review
|
|
123
162
|
|
|
124
163
|
### 入口条件
|
|
164
|
+
|
|
125
165
|
- 完整测试套件通过
|
|
126
166
|
|
|
127
167
|
### 操作
|
|
168
|
+
|
|
128
169
|
1. 调用 [code-review 技能](.agents/skills/code-review/SKILL.md) 按**双轴**审查当前所有改动:
|
|
129
170
|
- **Standards 轴**:改动是否符合仓库文档化的编码标准(含 smell baseline 判断)
|
|
130
171
|
- **Spec 轴**:改动是否忠实实现来源 spec/issue(逐条对照验收要求)
|
|
131
172
|
- 两轴独立报告、**互不掩盖**——一轴通过另一轴失败时仍须修复后重审
|
|
132
173
|
2. **派发方式(强制)**:两轴必须用 subagent **single 模式**(`agent`+`task`)或 `subagent_consult` 逐个派发;**禁止 parallel `tasks` 数组**——pi-subagents 对 parallel 结果只保留前 160 字节摘要(`truncateUtf8(summary, 160)`),中文/多行报告必被截断(标记 `… [truncated by pi-subagents]`)。需要更完整输出时,要求子代理把报告写入临时文件,主代理再读取
|
|
133
|
-
3. 审查发现的问题按 [
|
|
174
|
+
3. 审查发现的问题按 [回退路由](#回退路由) 处理
|
|
175
|
+
|
|
134
176
|
### 出口条件
|
|
177
|
+
|
|
135
178
|
- Code review 通过
|
|
136
179
|
|
|
137
180
|
### 边界
|
|
181
|
+
|
|
138
182
|
- 重构在此阶段进行,而非 TDD 循环阶段
|
|
139
183
|
- review 通过后才进入 commit
|
|
140
184
|
- 审查结果只在对话输出,不生成书面审查报告(不落盘 `review-*.md` 类文件)
|
|
@@ -144,17 +188,21 @@
|
|
|
144
188
|
## 阶段 ⑥:Commit
|
|
145
189
|
|
|
146
190
|
### 入口条件
|
|
191
|
+
|
|
147
192
|
- Code review 通过
|
|
148
193
|
|
|
149
194
|
### 操作
|
|
195
|
+
|
|
150
196
|
1. 调用 [commit-check 技能](.agents/skills/commit-check/SKILL.md) 执行提交门禁——四项检查:①审查文档 ②对齐 README ③保持目录卫生 ④规范 commit message
|
|
151
|
-
2.
|
|
152
|
-
3.
|
|
197
|
+
2. **历史校验**:commit 前执行 `git merge-base --is-ancestor $BASE_HEAD HEAD`,若为 false 说明历史被改写,立即经 `git reflog` 恢复 `BASE_HEAD` 后的提交,校验通过才继续
|
|
198
|
+
3. 四项**全部通过才 commit**(含历史校验 `git merge-base --is-ancestor $BASE_HEAD HEAD` 通过):将工作提交到当前分支,附清晰的 commit message
|
|
153
199
|
|
|
154
200
|
### 出口条件
|
|
201
|
+
|
|
155
202
|
- Commit 完成
|
|
156
203
|
|
|
157
204
|
### 边界
|
|
205
|
+
|
|
158
206
|
- Commit message 格式与内容由 commit-check ④ 把关(描述变更内容而非过程)
|
|
159
207
|
|
|
160
208
|
---
|
|
@@ -162,9 +210,11 @@
|
|
|
162
210
|
## 阶段 ⑦:收尾(文档对齐 + issue 状态 + 实施总结)
|
|
163
211
|
|
|
164
212
|
### 入口条件
|
|
213
|
+
|
|
165
214
|
- Commit 完成(阶段⑥出口)
|
|
166
215
|
|
|
167
216
|
### 操作
|
|
217
|
+
|
|
168
218
|
1. **对齐文档**:检查 README 与 `docs/` 中涉及本次实现的描述(用法、CLI、配置、示例、架构、行为)是否与实现一致;不一致则更新文档,并单独 commit(message 遵循 commit-check ④ 规范,如 `docs: align README with <feature>`)
|
|
169
219
|
2. 若本次实现有关联 issue/ticket(`.scratch/<feature-slug>/issues/`):先审查该 issue——从 issue 提取验收标准(无显式验收标准节时以其正文行为要求为准),逐条转写为 checkbox 清单并逐条验证:通过标 `- [x]`,未通过保留 `- [ ]` 并注明缺口(证据:文件:行号 / 测试名)。全部打勾后才允许下一步:
|
|
170
220
|
3. 将 `Status:` 行改为 `resolved`(无该行则追加),不改动 spec 与既有 Comments
|
|
@@ -182,134 +232,85 @@
|
|
|
182
232
|
```
|
|
183
233
|
|
|
184
234
|
5. 无关联 issue(直接实现用户给的 spec)→ 跳过状态更新,将总结作为会话最终输出
|
|
185
|
-
6.
|
|
235
|
+
6. **保持目录卫生**:仅清理本次实现产生的临时产物——`[DEBUG-...]` 标记的调试代码/日志、一次性脚本、临时文件与备份文件;用 `git status` 确认工作区只含预期改动,无残留未跟踪文件后才结束。禁止为达干净而执行 `git reset --hard`、`git checkout .`、`git clean -fd`、`git stash push --include-untracked` 等(需显式用户确认;`stash` 如需使用改用 `--keep-index` 并在 `pop` 后校验 `git merge-base --is-ancestor $BASE_HEAD HEAD`)。
|
|
186
236
|
|
|
187
237
|
### 出口条件
|
|
238
|
+
|
|
188
239
|
- 文档与实现对齐(无相关文档或已更新)
|
|
189
240
|
- issue 状态已更新(或确认无 issue)
|
|
190
241
|
- 实施总结已落盘 / 输出
|
|
191
242
|
- 工作区干净(临时产物已清理,`git status` 无残留未跟踪文件)
|
|
192
243
|
|
|
193
244
|
### 边界
|
|
245
|
+
|
|
194
246
|
- 只追加不改写:不修改 spec.md 与既有 Comments 内容
|
|
195
247
|
- 文档对齐仅限与本次实现直接相关的描述,不顺手重构无关文档
|
|
196
248
|
- 总结写事实(提交 / 测试 / 遗留),不写过程叙述
|
|
197
249
|
|
|
198
250
|
---
|
|
199
251
|
|
|
200
|
-
##
|
|
252
|
+
## Todo 规定
|
|
201
253
|
|
|
202
|
-
|
|
254
|
+
本节为阶段②/③的共用规定,完成"任务拆分"到"回合内执行"的闭环。
|
|
203
255
|
|
|
204
|
-
###
|
|
205
|
-
- `.scratch/<feature>/issues/` 下存在多个 issue 文件
|
|
206
|
-
- 至少部分 issue 含 `Blocked by` 依赖声明
|
|
256
|
+
### 拆分层级(大小任务层次)
|
|
207
257
|
|
|
208
|
-
|
|
258
|
+
1. **大任务**:Goal/Ticket——整个实现单元,对应一次完整的 tdd-implement 流程
|
|
259
|
+
2. **中任务**:Seam(阶段②确认)——一个红-绿循环单元,每 seam 一个 Todo
|
|
260
|
+
3. **小任务**:Todo——seam 内可独立验证、可勾选的执行单元(T1/T2/T3…)
|
|
261
|
+
4. **执行步**:Subtodo——Todo 内的串行步骤(红 → 绿 → typecheck),回合内逐步勾选推进
|
|
209
262
|
|
|
210
|
-
|
|
211
|
-
- `Blocked by: None` / `Blocked by: (无` / 无此行 → 无依赖(frontier)
|
|
212
|
-
- `Blocked by: 01, 02` / `Blocked by: 01(…)` → 依赖 `01`、`02` 对应的 issue 文件(按编号前缀匹配)
|
|
213
|
-
- 无法解析的行 → 视为无依赖,并在编排总结中注明告警
|
|
214
|
-
2. 以 issue 编号为节点、`Blocked by` 为有向边构建 DAG;若检测到环,立即报错并列出环上节点,不进入调度。
|
|
215
|
-
3. 读取 `spec.md`(若存在)作为各子代理的共享上下文;同时读取 `CONTEXT.md` 与 `docs/adr/` 供一致性校验。
|
|
263
|
+
> 编排模式新增一层见 [orchestration.md](orchestration.md):**编排层** Feature——`.scratch/<feature>/` 下全部 issues,按 `Blocked by` 分层;每层一组并行子代理,每子代理一个 issue 的完整 ①→⑦。
|
|
216
264
|
|
|
217
|
-
###
|
|
265
|
+
### Todo 清单格式
|
|
218
266
|
|
|
219
|
-
|
|
267
|
+
阶段② seams 确认后立即生成 todo 清单,每个 seam 一个 todo:
|
|
220
268
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
```
|
|
269
|
+
- 编号:`T1`、`T2`、`T3`…
|
|
270
|
+
- 描述:seam 名称 + 输入 + 预期输出
|
|
271
|
+
- 状态:`pending` / `in-progress` / `done` / `blocked`
|
|
272
|
+
- 完成标准(DoD):该 seam 测试全绿 + typecheck 通过 + 既有测试不受影响
|
|
273
|
+
- 执行步(Subtodo):`T1-R` 红(写失败测试)→ `T1-G` 绿(最小实现)→ `T1-T` typecheck
|
|
227
274
|
|
|
228
|
-
|
|
275
|
+
编排模式下 Todo 清单为**分层清单**:`L1: [01, 02] → L2: [03, 04] → L3: [05]`,每层内 issue 并行,层间串行;每 issue 的 DoD 为 `Status: resolved` + 独立 commit + 实施总结已落盘。
|
|
229
276
|
|
|
230
|
-
###
|
|
277
|
+
### Todo 状态机
|
|
231
278
|
|
|
232
279
|
```
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
等待:阻塞直到 Li 全部子代理返回回执卡片
|
|
236
|
-
验收:编排器按 A3 验收清单逐 issue 验收(只认回执卡片的关键信息 + 抽检验证,不消费全量日志)
|
|
237
|
-
收敛:验收全通过进入 Li+1;有不通过按 A5 回退重派该 issue
|
|
238
|
-
全部层验收通过后进入 A4 全量收敛
|
|
280
|
+
pending → in-progress → done
|
|
281
|
+
↘ blocked(外部阻塞)→(授权/替代路径)→ in-progress
|
|
239
282
|
```
|
|
240
283
|
|
|
241
|
-
-
|
|
242
|
-
-
|
|
243
|
-
- **回合连续性**:编排器在层间不结束回合——一层收敛后立即派发下一层,直到全部层完成或外部阻塞;预告下一层后立即执行。
|
|
244
|
-
|
|
245
|
-
### A3. 子代理契约(单 issue 单代理)
|
|
284
|
+
- Subtodo 不单独设 `blocked`——阻塞状态归父 Todo,Subtodo 跟随父状态
|
|
285
|
+
- 编排模式下 issue 粒度状态机:`pending → in-progress(子代理已派发) → done(Status: resolved)`;`blocked` 表示 `Blocked by` 依赖未满足,待前层全 `resolved` 后自动解阻。
|
|
246
286
|
|
|
247
|
-
|
|
287
|
+
### 粒度与回合归属
|
|
248
288
|
|
|
249
|
-
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
-
|
|
254
|
-
-
|
|
255
|
-
|
|
256
|
-
- 该 issue 文件 `Status: resolved` + 底部 `## 实施总结`
|
|
257
|
-
- 该 issue 范围内的测试全绿 + typecheck 通过
|
|
258
|
-
- **禁止**:跨 issue 改动;修改其他 issue 文件;跳过 ⑤/⑥ 直接 commit。
|
|
259
|
-
|
|
260
|
-
#### 输出约束(子代理只返回回执卡片)
|
|
261
|
-
|
|
262
|
-
子代理不向编排器透传全量过程日志(各 seam 的红-绿细节、typecheck 原始输出、双轴 review 全文、完整测试日志)。只返回一张**回执卡片**(结构化关键信息,中文,≤ 30 行):
|
|
263
|
-
|
|
264
|
-
```
|
|
265
|
-
[回执] #NN <issue 标题>
|
|
266
|
-
- 提交:<commit hash> — <message>
|
|
267
|
-
- seams:<清单>
|
|
268
|
-
- 测试:<数量> 项,全绿 / 失败清单
|
|
269
|
-
- typecheck:通过 / 失败原因
|
|
270
|
-
- review:Standards <通过/问题> / Spec <通过/问题>
|
|
271
|
-
- 验收:checkbox <m/n 全绿,缺口说明>
|
|
272
|
-
- 文档:<更新文件 / 无需更新>
|
|
273
|
-
- 遗留:<如有>
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
卡片字段缺一不可;缺失字段视为验收不通过。详细过程与证据留在子代理的 commit 与 issue 文件中,编排器按需抽检而非全量消费。
|
|
277
|
-
|
|
278
|
-
#### 主代理验收(编排器逐 issue 验收)
|
|
279
|
-
|
|
280
|
-
编排器收到回执后逐 issue 验收,不盲信子代理自检:
|
|
281
|
-
|
|
282
|
-
1. **落盘校验**:`git log --oneline` 含该 commit 且 message 含 `#NN`;issue 文件 `Status: resolved` 且底部 `## 实施总结` 已落盘。
|
|
283
|
-
2. **抽检验证**:抽跑该 issue 相关测试(或 `tsc --noEmit` 抽检),不重跑全量套件;抽检失败即打回。
|
|
284
|
-
3. **改动边界**:`git diff <base>..HEAD --name-only` 核对无跨 issue 文件改动;有跨改视为不通过。
|
|
285
|
-
4. **卫生**:`git status` 无 `[DEBUG-...]` 残留与未跟踪临时文件。
|
|
286
|
-
|
|
287
|
-
任一项不通过 → 打回重派该子代理(仅该 issue),层内其他已通过不受影响;验收通过才计入层收敛。验收结论随层收敛一并输出。
|
|
288
|
-
|
|
289
|
-
子代理内部的回合连续性、任务分解、Todo 规定与单线模式完全一致(见 SKILL.md 回合连续性规则与 stages.md 阶段③ 3e/3f)。
|
|
289
|
+
- 一个 todo = 一个 seam 的红-绿 cycle + typecheck,不可再拆
|
|
290
|
+
- 一个 todo 必须在一个回合内完成(红→绿→typecheck→全绿)
|
|
291
|
+
- Subtodo 是 todo 内的执行步:每完成一步立即进入下一步(`T1-R` → `T1-G` → `T1-T`),禁止停在步间预告
|
|
292
|
+
- 每完成一个 todo 立即更新其状态,再进入下一个
|
|
293
|
+
- todo 状态只按实际推进更新(pending → in-progress → done),不基于旧快照重写整个清单;已完成项(done)永不回退
|
|
294
|
+
- 全部 todo 为 done 才进入阶段④
|
|
295
|
+
- 编排模式下:每层全部 issue `done` 才进入下一层;全部层 `done` 后编排器做全量收敛验证。
|
|
290
296
|
|
|
291
|
-
###
|
|
297
|
+
### 阻塞处理
|
|
292
298
|
|
|
293
|
-
|
|
299
|
+
- 外部阻塞(权限拒绝、缺失授权、依赖不可用)→ 标记 `blocked`,记录所需授权或替代路径
|
|
300
|
+
- 不静默停止;恢复后回到 `in-progress` 继续
|
|
301
|
+
- 编排模式下:`Blocked by` 依赖阻塞由编排器自动管理——前层未全 `resolved` 时后层 `blocked`,前层收敛后自动解阻派发;不需人工确认依赖满足。
|
|
294
302
|
|
|
295
|
-
|
|
296
|
-
2. **目录卫生**:`git status` 确认无 `[DEBUG-...]` 残留、无未跟踪临时文件;有残留则清理后重检。
|
|
297
|
-
3. **汇总总结**:在会话输出汇总各 issue 的回执卡片关键信息(提交 hash / seams / 验收 checkbox / 测试结果 / 文档对齐);不另写汇总文件,不透传子代理全量日志(各 issue 的 `## 实施总结` 已落盘,详查落盘文件)。
|
|
303
|
+
---
|
|
298
304
|
|
|
299
|
-
|
|
305
|
+
## 回退路由
|
|
300
306
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
307
|
+
| 当前阶段 | 回退条件 | 回退目标 |
|
|
308
|
+
|----------|----------|----------|
|
|
309
|
+
| ③ TDD 开发 | typecheck 失败 | → ③ 修复类型错误 |
|
|
310
|
+
| ④ 完整测试套件 | 测试失败 | → ③ 修复失败测试 |
|
|
311
|
+
| ⑤ Code Review | 实现错误 | → ③ 修复实现 |
|
|
312
|
+
| ⑤ Code Review | seams 遗漏 | → ② 补充 seams |
|
|
313
|
+
| ⑤ Code Review | 需求偏差 | → ① 澄清需求 |
|
|
306
314
|
|
|
307
|
-
|
|
308
|
-
- 全部 issue `Status: resolved` + 各自 `## 实施总结` 已落盘
|
|
309
|
-
- 全量测试套件通过
|
|
310
|
-
- 工作区干净(`git status` 无残留)
|
|
315
|
+
编排模式回退见 [orchestration.md#A5](orchestration.md#a5-回退与冲突):子代理内回退按上表在子代理内闭环;编排器层收敛失败(全量测试失败 / 目录不干净)→ 定位到失败 issue 所在层重派对应子代理。
|
|
311
316
|
|
|
312
|
-
### 边界
|
|
313
|
-
- 单 issue / 单 spec 不走本附录
|
|
314
|
-
- 子代理不跨 issue 改动;编排器不替子代理写实现代码
|
|
315
|
-
- 汇总总结只在对话输出,不落盘额外汇总文件
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
["tdd-implement", "grill-to-spec", "diagnose-fix", "commit-check", "instance-test"]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@heihei0299/matt-skills",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Agent skills + 项目配置模板:一条命令初始化 opencode / pi-agent 项目(含 mattpocock/skills 上游技能)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
"bin/",
|
|
11
11
|
"template/",
|
|
12
12
|
".agents/skills/",
|
|
13
|
+
"scripts/sync-upstream.js",
|
|
14
|
+
"config/proprietary.json",
|
|
13
15
|
"README.md"
|
|
14
16
|
],
|
|
15
17
|
"scripts": {
|