@heihei0299/matt-skills 2.1.2 → 2.1.5
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/grill-to-spec/SKILL.md +9 -9
- package/.agents/skills/grill-to-spec/references/rules.md +8 -3
- package/.agents/skills/implement-review-loop/SKILL.md +34 -0
- package/.agents/skills/implement-review-loop/agents/openai.yaml +5 -0
- package/.agents/skills/tdd-implement/SKILL.md +2 -2
- package/.agents/skills/tdd-implement/references/orchestration.md +6 -6
- package/.agents/skills/tdd-implement/references/stages.md +4 -5
- package/.agents/skills/tdd-implement/references/verify.md +1 -1
- package/package.json +1 -1
- package/template/.agents/skills/grill-to-spec/SKILL.md +9 -9
- package/template/.agents/skills/grill-to-spec/references/rules.md +8 -3
- package/template/.agents/skills/implement-review-loop/SKILL.md +34 -0
- package/template/.agents/skills/implement-review-loop/agents/openai.yaml +5 -0
- package/template/.agents/skills/tdd-implement/SKILL.md +2 -2
- package/template/.agents/skills/tdd-implement/references/orchestration.md +6 -6
- package/template/.agents/skills/tdd-implement/references/stages.md +4 -5
- package/template/.agents/skills/tdd-implement/references/verify.md +1 -1
- package/template/.opencode/commands/grill-to-spec.md +1 -1
- package/template/AGENTS.md +9 -5
|
@@ -15,29 +15,29 @@ disable-model-invocation: true
|
|
|
15
15
|
调用 [`grill-with-docs`](.agents/skills/grill-with-docs/SKILL.md),由 `grilling` 与 `domain-modeling` 完成采访、术语和设计决策。
|
|
16
16
|
|
|
17
17
|
- glossary 按上游规则 inline 更新;
|
|
18
|
-
- 只有确需 ADR 时才创建 ADR
|
|
19
|
-
- ADR
|
|
18
|
+
- 只有确需 ADR 时才创建 ADR;
|
|
19
|
+
- 决策共识形成后直接写入 ADR,不向用户展示 ADR 正文,不增加单独确认轮次。
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
出口:用户确认共识已达成,且已确定的 glossary/ADR 已写入。
|
|
22
22
|
|
|
23
23
|
### ② 发布 spec
|
|
24
24
|
|
|
25
25
|
将已确认的共识交给 [`to-spec`](.agents/skills/to-spec/SKILL.md),完成代码库理解、seam 提案和 spec 组装。
|
|
26
26
|
|
|
27
|
-
- 将 seam
|
|
28
|
-
-
|
|
27
|
+
- 将 seam 提案作为共识的一部分确认,不展示由此生成的文档正文;
|
|
28
|
+
- 共识(含 seam)达成后,直接写入/发布 spec 与 issue,不设置发布前确认;
|
|
29
29
|
- 发布时使用 `ready-for-agent`,格式细则只读取 [`references/rules.md`](references/rules.md)。
|
|
30
30
|
|
|
31
|
-
出口:spec
|
|
31
|
+
出口:spec/issue 已写入或发布,只报告路径或标识、状态和未纳入范围。
|
|
32
32
|
|
|
33
33
|
## 回合连续性
|
|
34
34
|
|
|
35
|
-
本 skill 是 Long-Horizon Skill。阶段 ① 达到出口后立即进入阶段 ②;正常的阶段切换、进度汇报或“接下来生成 spec
|
|
35
|
+
本 skill 是 Long-Horizon Skill。阶段 ① 达到出口后立即进入阶段 ②;正常的阶段切换、进度汇报或“接下来生成 spec”不是回合终点。仅在必须获得用户确认的设计问题、明确外部阻塞、用户主动停止或整个 skill 出口时暂停。文档写入/发布不另起确认回合,不要求用户额外回复“继续”。
|
|
36
36
|
|
|
37
37
|
## 本 skill 独有门禁
|
|
38
38
|
|
|
39
|
-
- ADR
|
|
40
|
-
- spec:共识与 seam
|
|
39
|
+
- ADR:决策共识 → 直接落盘,不展示正文、不设置独立确认;
|
|
40
|
+
- spec/issue:共识与 seam 达成后直接写入/发布,不展示正文、不设置发布前确认;
|
|
41
41
|
- 全程不写代码、不修改测试、不执行实现。
|
|
42
42
|
|
|
43
43
|
## 异常
|
|
@@ -11,16 +11,21 @@
|
|
|
11
11
|
## ADR 增量规则
|
|
12
12
|
|
|
13
13
|
- 只有同时满足“难逆转 / 无上下文费解 / 存在真实权衡”时才提议 ADR。
|
|
14
|
-
- ADR
|
|
14
|
+
- 决策共识形成后直接落盘;不向用户展示 ADR 正文,不增加独立确认轮次。
|
|
15
15
|
- 不把 ADR 当 glossary 一样静默 inline 更新。
|
|
16
16
|
|
|
17
17
|
## Spec 增量规则
|
|
18
18
|
|
|
19
19
|
- Spec 的结构与字段全部委托 `to-spec`,本文件不维护第二份模板。
|
|
20
|
-
- seam
|
|
21
|
-
-
|
|
20
|
+
- seam 提案作为共识的一部分确认,不展示由此生成的 spec 正文。
|
|
21
|
+
- 共识(含 seam)达成后直接写入并标记 `ready-for-agent`,不设置发布前确认。
|
|
22
22
|
- 全文沿用已经确认的 glossary 词汇,并尊重所触区域既有 ADR。
|
|
23
23
|
|
|
24
|
+
## Issue 增量规则
|
|
25
|
+
|
|
26
|
+
- 按已配置的 issue tracker 直接发布 issue;issue 正文不在对话中展示。
|
|
27
|
+
- 发布后只报告 issue 标识、状态和未纳入范围,不复制正文。
|
|
28
|
+
|
|
24
29
|
## 反模式
|
|
25
30
|
|
|
26
31
|
- 不复制 `to-spec` 的章节清单、User Story 模板或 Implementation Decisions 细则。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implement-review-loop
|
|
3
|
+
description: "Implement changes with one executor model and one independent reviewer model, iterating on only the changed surface until no actionable issues remain."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Use two distinct roles:
|
|
8
|
+
|
|
9
|
+
- **Executor**: implements the requested change, fixes findings, and runs the smallest relevant verification.
|
|
10
|
+
- **Reviewer**: independently reviews the latest diff and relevant verification results. It does not perform the implementation.
|
|
11
|
+
|
|
12
|
+
Workflow:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Executor implements
|
|
16
|
+
→ targeted verification
|
|
17
|
+
→ Reviewer reviews latest diff
|
|
18
|
+
→ if findings exist: Executor fixes only those findings
|
|
19
|
+
→ targeted re-verification
|
|
20
|
+
→ Reviewer re-reviews changed parts and unresolved findings
|
|
21
|
+
→ repeat until Reviewer reports no actionable issues
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Rules:
|
|
25
|
+
|
|
26
|
+
- Keep implementation, testing, and review scoped to the current change and directly affected paths.
|
|
27
|
+
- Prefer targeted tests: changed test files, affected modules, regression cases, or the original reproduction path.
|
|
28
|
+
- Do not rerun equivalent checks after every small edit.
|
|
29
|
+
- Reviewer should inspect the latest diff first, then only enough surrounding code to validate behavior and integration.
|
|
30
|
+
- On subsequent rounds, review the new changes plus unresolved findings; do not restart a whole-project review.
|
|
31
|
+
- Expand test or review scope only when the change crosses modules, modifies shared/public contracts or core infrastructure, targeted evidence is insufficient, final release/merge validation requires it, or the user explicitly requests it.
|
|
32
|
+
- Findings must be concrete and actionable. Separate blockers from optional improvements.
|
|
33
|
+
- Stop the loop when the Reviewer has no actionable findings and targeted verification is green.
|
|
34
|
+
- Do not let the Reviewer silently become the Executor; preserve role independence throughout the loop.
|
|
@@ -16,7 +16,7 @@ disable-model-invocation: true
|
|
|
16
16
|
- **多 issue**:`.scratch/<feature>/issues/` 下存在多个 `Type: task` 文件时,先读取 [orchestration.md](references/orchestration.md),按 `Blocked by` 构建 DAG、Kahn 分层,再由主代理按层串行完成各 issue。
|
|
17
17
|
- `Type: research`、`prototype`、`grilling` 分流到对应技能,不进入本技能。
|
|
18
18
|
|
|
19
|
-
多 issue 的 A0-A5
|
|
19
|
+
多 issue 的 A0-A5 是编排控制活动,不是额外的产品交付阶段:依赖图、分层、串行调度、层收敛、最终收敛和回退/冲突处理的详规只在 [orchestration.md](references/orchestration.md) 中维护。
|
|
20
20
|
|
|
21
21
|
## 三阶段 Steps
|
|
22
22
|
|
|
@@ -40,7 +40,7 @@ Finalize 出口:commit 已创建、Acceptance Criteria 全部通过,Tracker
|
|
|
40
40
|
- 一个 seam 是公共可观察边界;一个 Behavior 是一个红-绿 cycle;一个 seam 可以包含多个 Behaviors。Seam/Behavior 的细节和 Todo 粒度只在进入 Step ② 时读取 [red-green.md](references/red-green.md)。
|
|
41
41
|
- 每个 issue 只在 Verify 的最终 diff 稳定后调用一次 `code-review`;审查维度、reviewer 数量、提示词和输出格式全部由 `code-review` 自己定义,`tdd-implement` 不复制这些规则。`code-review` 未完成或存在 blocking finding 时 issue 不得收敛;A3 层收敛不再次调用 review。
|
|
42
42
|
- 当前 issue 的范围、Acceptance Criteria、Out of Scope、测试/typecheck/build/真实运行证据和最终 commit 必须可追溯。Seam 或专项测试绿色不代表 issue 完成;三个阶段出口与 Finalize 全部满足后才可标记 `resolved`。
|
|
43
|
-
- 多 issue 模式中,每个 issue 只提交一个独立 commit;issue 影响范围测试在 Step ③
|
|
43
|
+
- 多 issue 模式中,每个 issue 只提交一个独立 commit;issue 影响范围测试在 Step ③ 执行,A4 只做最终编排收敛,不额外扩大测试范围。
|
|
44
44
|
|
|
45
45
|
## 引用
|
|
46
46
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
- [A1:Kahn 拓扑分层](#a1kahn-拓扑分层)
|
|
11
11
|
- [A2:分层串行调度](#a2分层串行调度)
|
|
12
12
|
- [A3:层收敛](#a3层收敛)
|
|
13
|
-
- [A4
|
|
13
|
+
- [A4:最终收敛](#a4最终收敛)
|
|
14
14
|
- [A5:回退与冲突处理](#a5回退与冲突处理)
|
|
15
15
|
|
|
16
16
|
---
|
|
@@ -80,7 +80,7 @@ for each layer Li in L1..Ln:
|
|
|
80
80
|
全部层完成后进入 A4
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
每个 issue 的 Verify 只运行当前 issue
|
|
83
|
+
每个 issue 的 Verify 只运行当前 issue 影响范围内的测试;编排层不额外扩大测试范围。当前 issue 的最终 diff 稳定后只调用一次 `code-review`;review 的内部方法完全由 `code-review` 定义。修复 blocking finding 后执行受影响验证和 finding delta recheck,不重复调用完整 `code-review`。
|
|
84
84
|
|
|
85
85
|
主代理在层内和层间连续调度:一个 issue 的 Finalize 出口满足后,立即取下一个 issue,直到全部层完成或发生明确外部阻塞。进度输出并入执行序列,不在正常切换点等待用户“继续”。
|
|
86
86
|
|
|
@@ -129,11 +129,11 @@ A3 只做编排收敛,不再次调用 `code-review`;正式 review 已在每
|
|
|
129
129
|
|
|
130
130
|
任一项失败,定位到该层失败 issue,按 A5 回退并重做该 issue 的受影响阶段或 Behavior,然后重新收敛本层。
|
|
131
131
|
|
|
132
|
-
## A4
|
|
132
|
+
## A4:最终收敛
|
|
133
133
|
|
|
134
134
|
全部层完成且各层收敛通过后:
|
|
135
135
|
|
|
136
|
-
1.
|
|
136
|
+
1. 汇总并确认各 issue 的相关测试、typecheck/build、真实运行和 review 证据仍对应最终状态;若后续改动使证据失效,只重新验证受影响范围;
|
|
137
137
|
2. 执行 `git merge-base --is-ancestor $BASE_HEAD HEAD`;失败时按 A5 恢复后重验;
|
|
138
138
|
3. 执行 `git status`,确认无 `[DEBUG-...]`、一次性脚本或未跟踪临时文件;
|
|
139
139
|
4. 汇总各 issue 回执卡片的 commit、Behaviors、Acceptance Criteria、测试、真实运行和文档对齐结果;汇总只在对话输出,不另写汇总文件。
|
|
@@ -141,7 +141,7 @@ A3 只做编排收敛,不再次调用 `code-review`;正式 review 已在每
|
|
|
141
141
|
### A4 出口
|
|
142
142
|
|
|
143
143
|
- 全部 issue 已有独立 commit、实施总结和 `progress.md` 派生记录;
|
|
144
|
-
-
|
|
144
|
+
- 各 issue 的受影响验证证据仍对应最终状态;
|
|
145
145
|
- 工作区卫生、历史校验和真实运行要求均满足;
|
|
146
146
|
- `progress.md` 与 `issues/*.md` 一致,不一致时以 issue 真相源为准并修复派生视图。
|
|
147
147
|
|
|
@@ -156,7 +156,7 @@ A5 负责所有编排级失败,不把失败静默吞掉,也不把不相关
|
|
|
156
156
|
| Red-Green 的有效 Red、实现、typecheck 或 targeted test 失败 | 回到该 issue 的 Red-Green,修复当前 Behavior 并重新验证 |
|
|
157
157
|
| Verify 的测试、build、真实运行或 review blocking finding 失败 | 回到受影响 issue 的对应阶段;修复后只做受影响检查和 delta review |
|
|
158
158
|
| Finalize 的必要 docs、commit 或 Tracker 失败 | 保持 issue 未 resolved,修复 Finalize 问题后重新验证 |
|
|
159
|
-
|
|
|
159
|
+
| A4 收敛发现验证证据失效 | 定位到受影响 issue,按上述路径修复;只重新验证受影响范围 |
|
|
160
160
|
| `Blocked by` 依赖未完成 | 后续 issue 保持 `blocked`,前置 issue resolved 后自动解阻 |
|
|
161
161
|
| 多 issue 预期修改同一文件 | 记录冲突,按编号串行;无法安全归属时暂停并请求用户决定 |
|
|
162
162
|
| Git 历史祖先校验失败 | 立即停止写入,使用 `git reflog` 找回 `BASE_HEAD` 之后的提交,校验通过后继续 |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 三阶段详细定义 + Finalize
|
|
2
2
|
|
|
3
|
-
单 `spec` / 单 `task` 与多 `task` 共用下列三个交付阶段;Verify 通过后执行 Finalize 收尾,Finalize 不计入阶段。多 issue 的依赖图、Kahn
|
|
3
|
+
单 `spec` / 单 `task` 与多 `task` 共用下列三个交付阶段;Verify 通过后执行 Finalize 收尾,Finalize 不计入阶段。多 issue 的依赖图、Kahn 分层、层收敛、最终收敛和回退/冲突处理见 [orchestration.md](orchestration.md)。TDD 语义以 [tdd 技能](.agents/skills/tdd/SKILL.md) 为唯一事实源,不在此重写。
|
|
4
4
|
|
|
5
5
|
## 目录
|
|
6
6
|
|
|
@@ -61,7 +61,7 @@ Seam 或专项测试绿色不等于 issue 完成;只有三个阶段与 Finaliz
|
|
|
61
61
|
- `code-review` 可用性;
|
|
62
62
|
- 可用的 browser 或 Playwright 路径;
|
|
63
63
|
- ticket 要求的真实运行验证方式。
|
|
64
|
-
6. 建立一次验证矩阵,列出 targeted tests、typecheck
|
|
64
|
+
6. 建立一次验证矩阵,列出 targeted tests、typecheck、必要 build、smoke/package check 和真实运行验证,并记录各项的触发条件,后续只复用这份矩阵。
|
|
65
65
|
7. 识别公共测试边界和 Behaviors。一个 Seam 是一个公共可观察边界;一个 Behavior 是一个红-绿 cycle;一个 Seam 可以包含多个 Behaviors。每个 Behavior 明确输入、可观察输出、对应 Acceptance Criterion 和验证层级。
|
|
66
66
|
8. spec 已确认且未变化的 Seam 直接复用;只有出现需求歧义、验收缺口、范围变化、破坏性操作或互斥方案时才请求用户确认。
|
|
67
67
|
|
|
@@ -142,8 +142,7 @@ Seam 或专项测试绿色不等于 issue 完成;只有三个阶段与 Finaliz
|
|
|
142
142
|
|
|
143
143
|
### 测试与真实运行验证
|
|
144
144
|
|
|
145
|
-
-
|
|
146
|
-
- 单 issue 或单 spec 模式运行仓库完整测试。按照 Contract 的验证矩阵执行,不同时运行等价命令。
|
|
145
|
+
- 单 issue / 单 spec 与多 issue 均只运行当前 issue 影响范围内的测试,按照 Contract 的验证矩阵执行,不同时运行等价命令;不因进入 Verify 自动扩大测试范围。
|
|
147
146
|
- ticket 要求真实运行时,优先使用专用 browser 工具,其次使用项目已有 Playwright;HTTP/CLI 只能补充 API 验证,不能替代 WebUI 验证。
|
|
148
147
|
- 真实进程验证使用隔离配置和临时端口,保存 PID,记录实际请求结果或页面可见结果,结束时清理进程和临时目录。
|
|
149
148
|
|
|
@@ -252,4 +251,4 @@ Progress: pending | in_progress | done | blocked
|
|
|
252
251
|
| ③ Verify | 测试、build、真实运行或 review finding 失败 | → ② 修复 Behavior;需求偏差 → ① |
|
|
253
252
|
| Finalize | 必要 docs 未同步、commit 失败或 Tracker 信息不完整 | → ①/③ 修复对应问题;仍在 Finalize 完成前解决 |
|
|
254
253
|
|
|
255
|
-
多 issue
|
|
254
|
+
多 issue 的层收敛、最终收敛、依赖冲突和跨 issue 修改冲突按 [orchestration.md](orchestration.md) A5 回退,不跨 issue 无记录改动。
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
## 规则
|
|
10
10
|
|
|
11
|
-
- 单 issue / 单 spec
|
|
11
|
+
- 单 issue / 单 spec 与多 issue 均按 Contract 验证矩阵运行当前 issue 影响范围测试;不因进入 Verify 自动扩大测试范围。
|
|
12
12
|
- ticket 要求真实运行时,优先专用 browser,其次项目已有 Playwright;HTTP/CLI 不能替代 WebUI 可见验证。
|
|
13
13
|
- 临时进程必须使用隔离配置/端口,记录 PID 与实际结果,结束后清理。
|
|
14
14
|
- 当前 issue 的最终 diff 稳定后,调用一次 [code-review](.agents/skills/code-review/SKILL.md)。`tdd-implement` 只规定调用时机;审查维度、reviewer 数量、提示词、上下文与输出格式以 `code-review` 为唯一事实源。
|
package/package.json
CHANGED
|
@@ -15,29 +15,29 @@ disable-model-invocation: true
|
|
|
15
15
|
调用 [`grill-with-docs`](.agents/skills/grill-with-docs/SKILL.md),由 `grilling` 与 `domain-modeling` 完成采访、术语和设计决策。
|
|
16
16
|
|
|
17
17
|
- glossary 按上游规则 inline 更新;
|
|
18
|
-
- 只有确需 ADR 时才创建 ADR
|
|
19
|
-
- ADR
|
|
18
|
+
- 只有确需 ADR 时才创建 ADR;
|
|
19
|
+
- 决策共识形成后直接写入 ADR,不向用户展示 ADR 正文,不增加单独确认轮次。
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
出口:用户确认共识已达成,且已确定的 glossary/ADR 已写入。
|
|
22
22
|
|
|
23
23
|
### ② 发布 spec
|
|
24
24
|
|
|
25
25
|
将已确认的共识交给 [`to-spec`](.agents/skills/to-spec/SKILL.md),完成代码库理解、seam 提案和 spec 组装。
|
|
26
26
|
|
|
27
|
-
- 将 seam
|
|
28
|
-
-
|
|
27
|
+
- 将 seam 提案作为共识的一部分确认,不展示由此生成的文档正文;
|
|
28
|
+
- 共识(含 seam)达成后,直接写入/发布 spec 与 issue,不设置发布前确认;
|
|
29
29
|
- 发布时使用 `ready-for-agent`,格式细则只读取 [`references/rules.md`](references/rules.md)。
|
|
30
30
|
|
|
31
|
-
出口:spec
|
|
31
|
+
出口:spec/issue 已写入或发布,只报告路径或标识、状态和未纳入范围。
|
|
32
32
|
|
|
33
33
|
## 回合连续性
|
|
34
34
|
|
|
35
|
-
本 skill 是 Long-Horizon Skill。阶段 ① 达到出口后立即进入阶段 ②;正常的阶段切换、进度汇报或“接下来生成 spec
|
|
35
|
+
本 skill 是 Long-Horizon Skill。阶段 ① 达到出口后立即进入阶段 ②;正常的阶段切换、进度汇报或“接下来生成 spec”不是回合终点。仅在必须获得用户确认的设计问题、明确外部阻塞、用户主动停止或整个 skill 出口时暂停。文档写入/发布不另起确认回合,不要求用户额外回复“继续”。
|
|
36
36
|
|
|
37
37
|
## 本 skill 独有门禁
|
|
38
38
|
|
|
39
|
-
- ADR
|
|
40
|
-
- spec:共识与 seam
|
|
39
|
+
- ADR:决策共识 → 直接落盘,不展示正文、不设置独立确认;
|
|
40
|
+
- spec/issue:共识与 seam 达成后直接写入/发布,不展示正文、不设置发布前确认;
|
|
41
41
|
- 全程不写代码、不修改测试、不执行实现。
|
|
42
42
|
|
|
43
43
|
## 异常
|
|
@@ -11,16 +11,21 @@
|
|
|
11
11
|
## ADR 增量规则
|
|
12
12
|
|
|
13
13
|
- 只有同时满足“难逆转 / 无上下文费解 / 存在真实权衡”时才提议 ADR。
|
|
14
|
-
- ADR
|
|
14
|
+
- 决策共识形成后直接落盘;不向用户展示 ADR 正文,不增加独立确认轮次。
|
|
15
15
|
- 不把 ADR 当 glossary 一样静默 inline 更新。
|
|
16
16
|
|
|
17
17
|
## Spec 增量规则
|
|
18
18
|
|
|
19
19
|
- Spec 的结构与字段全部委托 `to-spec`,本文件不维护第二份模板。
|
|
20
|
-
- seam
|
|
21
|
-
-
|
|
20
|
+
- seam 提案作为共识的一部分确认,不展示由此生成的 spec 正文。
|
|
21
|
+
- 共识(含 seam)达成后直接写入并标记 `ready-for-agent`,不设置发布前确认。
|
|
22
22
|
- 全文沿用已经确认的 glossary 词汇,并尊重所触区域既有 ADR。
|
|
23
23
|
|
|
24
|
+
## Issue 增量规则
|
|
25
|
+
|
|
26
|
+
- 按已配置的 issue tracker 直接发布 issue;issue 正文不在对话中展示。
|
|
27
|
+
- 发布后只报告 issue 标识、状态和未纳入范围,不复制正文。
|
|
28
|
+
|
|
24
29
|
## 反模式
|
|
25
30
|
|
|
26
31
|
- 不复制 `to-spec` 的章节清单、User Story 模板或 Implementation Decisions 细则。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implement-review-loop
|
|
3
|
+
description: "Implement changes with one executor model and one independent reviewer model, iterating on only the changed surface until no actionable issues remain."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Use two distinct roles:
|
|
8
|
+
|
|
9
|
+
- **Executor**: implements the requested change, fixes findings, and runs the smallest relevant verification.
|
|
10
|
+
- **Reviewer**: independently reviews the latest diff and relevant verification results. It does not perform the implementation.
|
|
11
|
+
|
|
12
|
+
Workflow:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Executor implements
|
|
16
|
+
→ targeted verification
|
|
17
|
+
→ Reviewer reviews latest diff
|
|
18
|
+
→ if findings exist: Executor fixes only those findings
|
|
19
|
+
→ targeted re-verification
|
|
20
|
+
→ Reviewer re-reviews changed parts and unresolved findings
|
|
21
|
+
→ repeat until Reviewer reports no actionable issues
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Rules:
|
|
25
|
+
|
|
26
|
+
- Keep implementation, testing, and review scoped to the current change and directly affected paths.
|
|
27
|
+
- Prefer targeted tests: changed test files, affected modules, regression cases, or the original reproduction path.
|
|
28
|
+
- Do not rerun equivalent checks after every small edit.
|
|
29
|
+
- Reviewer should inspect the latest diff first, then only enough surrounding code to validate behavior and integration.
|
|
30
|
+
- On subsequent rounds, review the new changes plus unresolved findings; do not restart a whole-project review.
|
|
31
|
+
- Expand test or review scope only when the change crosses modules, modifies shared/public contracts or core infrastructure, targeted evidence is insufficient, final release/merge validation requires it, or the user explicitly requests it.
|
|
32
|
+
- Findings must be concrete and actionable. Separate blockers from optional improvements.
|
|
33
|
+
- Stop the loop when the Reviewer has no actionable findings and targeted verification is green.
|
|
34
|
+
- Do not let the Reviewer silently become the Executor; preserve role independence throughout the loop.
|
|
@@ -16,7 +16,7 @@ disable-model-invocation: true
|
|
|
16
16
|
- **多 issue**:`.scratch/<feature>/issues/` 下存在多个 `Type: task` 文件时,先读取 [orchestration.md](references/orchestration.md),按 `Blocked by` 构建 DAG、Kahn 分层,再由主代理按层串行完成各 issue。
|
|
17
17
|
- `Type: research`、`prototype`、`grilling` 分流到对应技能,不进入本技能。
|
|
18
18
|
|
|
19
|
-
多 issue 的 A0-A5
|
|
19
|
+
多 issue 的 A0-A5 是编排控制活动,不是额外的产品交付阶段:依赖图、分层、串行调度、层收敛、最终收敛和回退/冲突处理的详规只在 [orchestration.md](references/orchestration.md) 中维护。
|
|
20
20
|
|
|
21
21
|
## 三阶段 Steps
|
|
22
22
|
|
|
@@ -40,7 +40,7 @@ Finalize 出口:commit 已创建、Acceptance Criteria 全部通过,Tracker
|
|
|
40
40
|
- 一个 seam 是公共可观察边界;一个 Behavior 是一个红-绿 cycle;一个 seam 可以包含多个 Behaviors。Seam/Behavior 的细节和 Todo 粒度只在进入 Step ② 时读取 [red-green.md](references/red-green.md)。
|
|
41
41
|
- 每个 issue 只在 Verify 的最终 diff 稳定后调用一次 `code-review`;审查维度、reviewer 数量、提示词和输出格式全部由 `code-review` 自己定义,`tdd-implement` 不复制这些规则。`code-review` 未完成或存在 blocking finding 时 issue 不得收敛;A3 层收敛不再次调用 review。
|
|
42
42
|
- 当前 issue 的范围、Acceptance Criteria、Out of Scope、测试/typecheck/build/真实运行证据和最终 commit 必须可追溯。Seam 或专项测试绿色不代表 issue 完成;三个阶段出口与 Finalize 全部满足后才可标记 `resolved`。
|
|
43
|
-
- 多 issue 模式中,每个 issue 只提交一个独立 commit;issue 影响范围测试在 Step ③
|
|
43
|
+
- 多 issue 模式中,每个 issue 只提交一个独立 commit;issue 影响范围测试在 Step ③ 执行,A4 只做最终编排收敛,不额外扩大测试范围。
|
|
44
44
|
|
|
45
45
|
## 引用
|
|
46
46
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
- [A1:Kahn 拓扑分层](#a1kahn-拓扑分层)
|
|
11
11
|
- [A2:分层串行调度](#a2分层串行调度)
|
|
12
12
|
- [A3:层收敛](#a3层收敛)
|
|
13
|
-
- [A4
|
|
13
|
+
- [A4:最终收敛](#a4最终收敛)
|
|
14
14
|
- [A5:回退与冲突处理](#a5回退与冲突处理)
|
|
15
15
|
|
|
16
16
|
---
|
|
@@ -80,7 +80,7 @@ for each layer Li in L1..Ln:
|
|
|
80
80
|
全部层完成后进入 A4
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
每个 issue 的 Verify 只运行当前 issue
|
|
83
|
+
每个 issue 的 Verify 只运行当前 issue 影响范围内的测试;编排层不额外扩大测试范围。当前 issue 的最终 diff 稳定后只调用一次 `code-review`;review 的内部方法完全由 `code-review` 定义。修复 blocking finding 后执行受影响验证和 finding delta recheck,不重复调用完整 `code-review`。
|
|
84
84
|
|
|
85
85
|
主代理在层内和层间连续调度:一个 issue 的 Finalize 出口满足后,立即取下一个 issue,直到全部层完成或发生明确外部阻塞。进度输出并入执行序列,不在正常切换点等待用户“继续”。
|
|
86
86
|
|
|
@@ -129,11 +129,11 @@ A3 只做编排收敛,不再次调用 `code-review`;正式 review 已在每
|
|
|
129
129
|
|
|
130
130
|
任一项失败,定位到该层失败 issue,按 A5 回退并重做该 issue 的受影响阶段或 Behavior,然后重新收敛本层。
|
|
131
131
|
|
|
132
|
-
## A4
|
|
132
|
+
## A4:最终收敛
|
|
133
133
|
|
|
134
134
|
全部层完成且各层收敛通过后:
|
|
135
135
|
|
|
136
|
-
1.
|
|
136
|
+
1. 汇总并确认各 issue 的相关测试、typecheck/build、真实运行和 review 证据仍对应最终状态;若后续改动使证据失效,只重新验证受影响范围;
|
|
137
137
|
2. 执行 `git merge-base --is-ancestor $BASE_HEAD HEAD`;失败时按 A5 恢复后重验;
|
|
138
138
|
3. 执行 `git status`,确认无 `[DEBUG-...]`、一次性脚本或未跟踪临时文件;
|
|
139
139
|
4. 汇总各 issue 回执卡片的 commit、Behaviors、Acceptance Criteria、测试、真实运行和文档对齐结果;汇总只在对话输出,不另写汇总文件。
|
|
@@ -141,7 +141,7 @@ A3 只做编排收敛,不再次调用 `code-review`;正式 review 已在每
|
|
|
141
141
|
### A4 出口
|
|
142
142
|
|
|
143
143
|
- 全部 issue 已有独立 commit、实施总结和 `progress.md` 派生记录;
|
|
144
|
-
-
|
|
144
|
+
- 各 issue 的受影响验证证据仍对应最终状态;
|
|
145
145
|
- 工作区卫生、历史校验和真实运行要求均满足;
|
|
146
146
|
- `progress.md` 与 `issues/*.md` 一致,不一致时以 issue 真相源为准并修复派生视图。
|
|
147
147
|
|
|
@@ -156,7 +156,7 @@ A5 负责所有编排级失败,不把失败静默吞掉,也不把不相关
|
|
|
156
156
|
| Red-Green 的有效 Red、实现、typecheck 或 targeted test 失败 | 回到该 issue 的 Red-Green,修复当前 Behavior 并重新验证 |
|
|
157
157
|
| Verify 的测试、build、真实运行或 review blocking finding 失败 | 回到受影响 issue 的对应阶段;修复后只做受影响检查和 delta review |
|
|
158
158
|
| Finalize 的必要 docs、commit 或 Tracker 失败 | 保持 issue 未 resolved,修复 Finalize 问题后重新验证 |
|
|
159
|
-
|
|
|
159
|
+
| A4 收敛发现验证证据失效 | 定位到受影响 issue,按上述路径修复;只重新验证受影响范围 |
|
|
160
160
|
| `Blocked by` 依赖未完成 | 后续 issue 保持 `blocked`,前置 issue resolved 后自动解阻 |
|
|
161
161
|
| 多 issue 预期修改同一文件 | 记录冲突,按编号串行;无法安全归属时暂停并请求用户决定 |
|
|
162
162
|
| Git 历史祖先校验失败 | 立即停止写入,使用 `git reflog` 找回 `BASE_HEAD` 之后的提交,校验通过后继续 |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 三阶段详细定义 + Finalize
|
|
2
2
|
|
|
3
|
-
单 `spec` / 单 `task` 与多 `task` 共用下列三个交付阶段;Verify 通过后执行 Finalize 收尾,Finalize 不计入阶段。多 issue 的依赖图、Kahn
|
|
3
|
+
单 `spec` / 单 `task` 与多 `task` 共用下列三个交付阶段;Verify 通过后执行 Finalize 收尾,Finalize 不计入阶段。多 issue 的依赖图、Kahn 分层、层收敛、最终收敛和回退/冲突处理见 [orchestration.md](orchestration.md)。TDD 语义以 [tdd 技能](.agents/skills/tdd/SKILL.md) 为唯一事实源,不在此重写。
|
|
4
4
|
|
|
5
5
|
## 目录
|
|
6
6
|
|
|
@@ -61,7 +61,7 @@ Seam 或专项测试绿色不等于 issue 完成;只有三个阶段与 Finaliz
|
|
|
61
61
|
- `code-review` 可用性;
|
|
62
62
|
- 可用的 browser 或 Playwright 路径;
|
|
63
63
|
- ticket 要求的真实运行验证方式。
|
|
64
|
-
6. 建立一次验证矩阵,列出 targeted tests、typecheck
|
|
64
|
+
6. 建立一次验证矩阵,列出 targeted tests、typecheck、必要 build、smoke/package check 和真实运行验证,并记录各项的触发条件,后续只复用这份矩阵。
|
|
65
65
|
7. 识别公共测试边界和 Behaviors。一个 Seam 是一个公共可观察边界;一个 Behavior 是一个红-绿 cycle;一个 Seam 可以包含多个 Behaviors。每个 Behavior 明确输入、可观察输出、对应 Acceptance Criterion 和验证层级。
|
|
66
66
|
8. spec 已确认且未变化的 Seam 直接复用;只有出现需求歧义、验收缺口、范围变化、破坏性操作或互斥方案时才请求用户确认。
|
|
67
67
|
|
|
@@ -142,8 +142,7 @@ Seam 或专项测试绿色不等于 issue 完成;只有三个阶段与 Finaliz
|
|
|
142
142
|
|
|
143
143
|
### 测试与真实运行验证
|
|
144
144
|
|
|
145
|
-
-
|
|
146
|
-
- 单 issue 或单 spec 模式运行仓库完整测试。按照 Contract 的验证矩阵执行,不同时运行等价命令。
|
|
145
|
+
- 单 issue / 单 spec 与多 issue 均只运行当前 issue 影响范围内的测试,按照 Contract 的验证矩阵执行,不同时运行等价命令;不因进入 Verify 自动扩大测试范围。
|
|
147
146
|
- ticket 要求真实运行时,优先使用专用 browser 工具,其次使用项目已有 Playwright;HTTP/CLI 只能补充 API 验证,不能替代 WebUI 验证。
|
|
148
147
|
- 真实进程验证使用隔离配置和临时端口,保存 PID,记录实际请求结果或页面可见结果,结束时清理进程和临时目录。
|
|
149
148
|
|
|
@@ -252,4 +251,4 @@ Progress: pending | in_progress | done | blocked
|
|
|
252
251
|
| ③ Verify | 测试、build、真实运行或 review finding 失败 | → ② 修复 Behavior;需求偏差 → ① |
|
|
253
252
|
| Finalize | 必要 docs 未同步、commit 失败或 Tracker 信息不完整 | → ①/③ 修复对应问题;仍在 Finalize 完成前解决 |
|
|
254
253
|
|
|
255
|
-
多 issue
|
|
254
|
+
多 issue 的层收敛、最终收敛、依赖冲突和跨 issue 修改冲突按 [orchestration.md](orchestration.md) A5 回退,不跨 issue 无记录改动。
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
## 规则
|
|
10
10
|
|
|
11
|
-
- 单 issue / 单 spec
|
|
11
|
+
- 单 issue / 单 spec 与多 issue 均按 Contract 验证矩阵运行当前 issue 影响范围测试;不因进入 Verify 自动扩大测试范围。
|
|
12
12
|
- ticket 要求真实运行时,优先专用 browser,其次项目已有 Playwright;HTTP/CLI 不能替代 WebUI 可见验证。
|
|
13
13
|
- 临时进程必须使用隔离配置/端口,记录 PID 与实际结果,结束后清理。
|
|
14
14
|
- 当前 issue 的最终 diff 稳定后,调用一次 [code-review](.agents/skills/code-review/SKILL.md)。`tdd-implement` 只规定调用时机;审查维度、reviewer 数量、提示词、上下文与输出格式以 `code-review` 为唯一事实源。
|
package/template/AGENTS.md
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* 外部调研 / 方案比较 → `research`
|
|
5
5
|
* 原型 / PoC → `prototype`
|
|
6
6
|
* 简单修改 → 直接实现
|
|
7
|
+
* 实现 + 独立验收闭环 → `implement-review-loop`
|
|
7
8
|
* TDD / 集成测试 → `tdd`
|
|
8
|
-
* bug / 异常 / 性能 → `diagnose-fix`
|
|
9
9
|
* 代码审查 → `code-review`
|
|
10
10
|
* 设计质询 → `grilling`
|
|
11
11
|
* 领域建模 → `domain-modeling`
|
|
@@ -21,7 +21,6 @@ codegraph explore "<问题>"
|
|
|
21
21
|
codegraph init
|
|
22
22
|
codegraph explore "<问题>"
|
|
23
23
|
```
|
|
24
|
-
* 优先于 `Read`、`grep`、`rg`、`find` 和代码探索子代理。
|
|
25
24
|
* 从最小必要上下文开始;返回完整源码即视为已读。
|
|
26
25
|
* 信息不足时只针对缺口继续 `explore`;已锁定符号时使用 `codegraph node`。
|
|
27
26
|
* CodeGraph 无法提供必要信息时,才降级到最小必要的读取 / 搜索。
|
|
@@ -38,9 +37,14 @@ codegraph explore "<问题>"
|
|
|
38
37
|
* 仅在需要用户判断或授权时中断闭环。
|
|
39
38
|
## 验证
|
|
40
39
|
服从全局授权规则。
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
40
|
+
* 默认只验证本次修改及直接受影响路径;优先相关单测、单文件测试、模块测试和原复现路径。
|
|
41
|
+
* 修复什么就测试什么;根据反馈继续修正,不重复等价检查。
|
|
42
|
+
* 不因每个小步骤自动扩大测试范围。
|
|
43
|
+
* 仅当修改跨模块、触及公共接口/核心基础设施、局部验证不足以证明正确、进入发布/合并最终验收,或用户明确要求时,才考虑更大范围验证。
|
|
44
|
+
## Review
|
|
45
|
+
* 默认只 review 本轮 diff、修改文件及直接受影响调用链。
|
|
46
|
+
* 修复后只复验新增修改和此前未通过项,不重复审查无关代码。
|
|
47
|
+
* 仅在影响面明显扩大、局部 review 无法建立信心、进入发布/合并最终验收,或用户明确要求时扩大 review 范围。
|
|
44
48
|
## Harness
|
|
45
49
|
同类问题反复出现时,优先将约束落实到测试、lint、类型、工具或代码结构,而不是继续扩充本文件。
|
|
46
50
|
## Git
|