agentic-flow-kit 1.8.0 → 1.8.1
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/modules/hosts/claude/commands/wf-review.md +1 -1
- package/modules/hosts/codex/commands/wf-review.md +1 -1
- package/modules/hosts/cursor/commands/wf-review.md +1 -1
- package/modules/hosts/opencode/commands/wf-review.md +1 -1
- package/modules/hosts/trae/commands/wf-review.md +1 -1
- package/package.json +1 -1
- package/templates/_agents/commands/review.md +1 -1
- package/templates/_agents/engine-lock.json +2 -2
- package/templates/_agents/scripts/check-loop.test.mjs +17 -5
- package/templates/_agents/scripts/check-prejudgment.mjs +8 -3
- package/templates/_agents/skills/review-method/SKILL.md +55 -0
|
@@ -44,6 +44,6 @@ description: 代码评审标准(按风险分级:机器兜底 + AI 自查出
|
|
|
44
44
|
## 4. 审查分工(用户决策 + AI 协作)
|
|
45
45
|
|
|
46
46
|
- **机器兜底**(pre-commit / pre-push / test 自动拦,无需人守):门禁清单与判据以 `.githooks/`、`.agents/hooks/`、`check-loop.sh` 头部注释为准;`项目测试命令` 跑自动化用例。
|
|
47
|
-
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 +
|
|
47
|
+
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 + 修复建议。复核方法走 `.agents/skills/review-method/SKILL.md`(Standards×Spec 双轴 + 坏味道走查 + 合入标尺;有全局 `code-review` 技能时可叠加);每条 finding 报告前过 `review-verification-protocol` 防误报门(锚定 file:line、给出证据、校准严重级,不确定就降级为提问)。
|
|
48
48
|
- **独立性**:L2 / L3 必须用独立子智能体,宿主不支持时另开新会话,不得由原作者自查冒充;L1 且宿主不支持子智能体时可由主智能体按同一复核契约执行。
|
|
49
49
|
- **用户决策**:问题定性(误报驳回 / P0 成立必修 / P1、P2 处置裁量)+ 合入时机;git 历史即评审记录,追溯靠 commit 与 tag。
|
|
@@ -44,6 +44,6 @@ description: 代码评审标准(按风险分级:机器兜底 + AI 自查出
|
|
|
44
44
|
## 4. 审查分工(用户决策 + AI 协作)
|
|
45
45
|
|
|
46
46
|
- **机器兜底**(pre-commit / pre-push / test 自动拦,无需人守):门禁清单与判据以 `.githooks/`、`.agents/hooks/`、`check-loop.sh` 头部注释为准;`项目测试命令` 跑自动化用例。
|
|
47
|
-
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 +
|
|
47
|
+
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 + 修复建议。复核方法走 `.agents/skills/review-method/SKILL.md`(Standards×Spec 双轴 + 坏味道走查 + 合入标尺;有全局 `code-review` 技能时可叠加);每条 finding 报告前过 `review-verification-protocol` 防误报门(锚定 file:line、给出证据、校准严重级,不确定就降级为提问)。
|
|
48
48
|
- **独立性**:L2 / L3 必须用独立子智能体,宿主不支持时另开新会话,不得由原作者自查冒充;L1 且宿主不支持子智能体时可由主智能体按同一复核契约执行。
|
|
49
49
|
- **用户决策**:问题定性(误报驳回 / P0 成立必修 / P1、P2 处置裁量)+ 合入时机;git 历史即评审记录,追溯靠 commit 与 tag。
|
|
@@ -44,6 +44,6 @@ description: 代码评审标准(按风险分级:机器兜底 + AI 自查出
|
|
|
44
44
|
## 4. 审查分工(用户决策 + AI 协作)
|
|
45
45
|
|
|
46
46
|
- **机器兜底**(pre-commit / pre-push / test 自动拦,无需人守):门禁清单与判据以 `.githooks/`、`.agents/hooks/`、`check-loop.sh` 头部注释为准;`项目测试命令` 跑自动化用例。
|
|
47
|
-
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 +
|
|
47
|
+
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 + 修复建议。复核方法走 `.agents/skills/review-method/SKILL.md`(Standards×Spec 双轴 + 坏味道走查 + 合入标尺;有全局 `code-review` 技能时可叠加);每条 finding 报告前过 `review-verification-protocol` 防误报门(锚定 file:line、给出证据、校准严重级,不确定就降级为提问)。
|
|
48
48
|
- **独立性**:L2 / L3 必须用独立子智能体,宿主不支持时另开新会话,不得由原作者自查冒充;L1 且宿主不支持子智能体时可由主智能体按同一复核契约执行。
|
|
49
49
|
- **用户决策**:问题定性(误报驳回 / P0 成立必修 / P1、P2 处置裁量)+ 合入时机;git 历史即评审记录,追溯靠 commit 与 tag。
|
|
@@ -44,6 +44,6 @@ description: Review · 代码评审(横切,合入前使用;P0/P1/P2 分级
|
|
|
44
44
|
## 4. 审查分工(用户决策 + AI 协作)
|
|
45
45
|
|
|
46
46
|
- **机器兜底**(pre-commit / pre-push / test 自动拦,无需人守):门禁清单与判据以 `.githooks/`、`.agents/hooks/`、`check-loop.sh` 头部注释为准;`项目测试命令` 跑自动化用例。
|
|
47
|
-
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 +
|
|
47
|
+
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 + 修复建议。复核方法走 `.agents/skills/review-method/SKILL.md`(Standards×Spec 双轴 + 坏味道走查 + 合入标尺;有全局 `code-review` 技能时可叠加);每条 finding 报告前过 `review-verification-protocol` 防误报门(锚定 file:line、给出证据、校准严重级,不确定就降级为提问)。
|
|
48
48
|
- **独立性**:L2 / L3 必须用独立子智能体,宿主不支持时另开新会话,不得由原作者自查冒充;L1 且宿主不支持子智能体时可由主智能体按同一复核契约执行。
|
|
49
49
|
- **用户决策**:问题定性(误报驳回 / P0 成立必修 / P1、P2 处置裁量)+ 合入时机;git 历史即评审记录,追溯靠 commit 与 tag。
|
|
@@ -45,6 +45,6 @@ description: Review · 代码评审(横切,合入前使用;P0/P1/P2 分级
|
|
|
45
45
|
## 4. 审查分工(用户决策 + AI 协作)
|
|
46
46
|
|
|
47
47
|
- **机器兜底**(pre-commit / pre-push / test 自动拦,无需人守):门禁清单与判据以 `.githooks/`、`.agents/hooks/`、`check-loop.sh` 头部注释为准;`项目测试命令` 跑自动化用例。
|
|
48
|
-
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 +
|
|
48
|
+
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 + 修复建议。复核方法走 `.agents/skills/review-method/SKILL.md`(Standards×Spec 双轴 + 坏味道走查 + 合入标尺;有全局 `code-review` 技能时可叠加);每条 finding 报告前过 `review-verification-protocol` 防误报门(锚定 file:line、给出证据、校准严重级,不确定就降级为提问)。
|
|
49
49
|
- **独立性**:L2 / L3 必须用独立子智能体,宿主不支持时另开新会话,不得由原作者自查冒充;L1 且宿主不支持子智能体时可由主智能体按同一复核契约执行。
|
|
50
50
|
- **用户决策**:问题定性(误报驳回 / P0 成立必修 / P1、P2 处置裁量)+ 合入时机;git 历史即评审记录,追溯靠 commit 与 tag。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-flow-kit",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.1",
|
|
4
4
|
"description": "AI-Native 闭环工作流 + wiki 知识层脚手架——flow-kit init 一条命令为新项目装好 .agents 工作流引擎(阶段命令/角色契约/门禁钩子/kb 检索/看板/规则面预算)+ workflow 文档闭环 + wiki 知识库,装完本地可跑、零运行时依赖",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -57,6 +57,6 @@ next: .agents/commands/build.md(仅 P0 / P1 未清时;清零后经用户确
|
|
|
57
57
|
## 4. 审查分工(用户决策 + AI 协作)
|
|
58
58
|
|
|
59
59
|
- **机器兜底**(pre-commit / pre-push / test 自动拦,无需人守):门禁清单与判据以 `.githooks/`、`.agents/hooks/`、`check-loop.sh` 头部注释为准;`项目测试命令` 跑自动化用例。
|
|
60
|
-
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 +
|
|
60
|
+
- **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 + 修复建议。复核方法走 `.agents/skills/review-method/SKILL.md`(Standards×Spec 双轴 + 坏味道走查 + 合入标尺;有全局 `code-review` 技能时可叠加);每条 finding 报告前过 `review-verification-protocol` 防误报门(锚定 file:line、给出证据、校准严重级,不确定就降级为提问)。
|
|
61
61
|
- **独立性**:L2 / L3 必须用独立子智能体,宿主不支持时另开新会话,不得由原作者自查冒充;L1 且宿主不支持子智能体时可由主智能体按同一复核契约执行。
|
|
62
62
|
- **用户决策**:问题定性(误报驳回 / P0 成立必修 / P1、P2 处置裁量)+ 合入时机;git 历史即评审记录,追溯靠 commit 与 tag。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": 1,
|
|
3
|
-
"generatedAt": "2026-10-
|
|
3
|
+
"generatedAt": "2026-10-15T16:47:55.700Z",
|
|
4
4
|
"files": {
|
|
5
5
|
".github/workflows/ci.yml": {
|
|
6
6
|
"sha256": "e9cffb90dec8f0a49bfe231a13fb8df375a2494cc75c38d991b5eb7c7be104b5",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"hard": 0
|
|
88
88
|
},
|
|
89
89
|
"templates/_agents/scripts/check-prejudgment.mjs": {
|
|
90
|
-
"sha256": "
|
|
90
|
+
"sha256": "050227917cc5e5e73a189b23ea7f5ff7b5633b5e265b33e153147409772f7936",
|
|
91
91
|
"hard": 0
|
|
92
92
|
},
|
|
93
93
|
"templates/_agents/scripts/check-registry.mjs": {
|
|
@@ -3765,21 +3765,33 @@ w(T, 'workflow/intents/2026-09-12-deep.md', INTENT('deep', '状态: draft\n级
|
|
|
3765
3765
|
check('检查25 预判 L2 落位 L1 → WARN「预判级别不符」含判低信号',
|
|
3766
3766
|
r.status === 0 && outOf(r).includes('预判级别不符') && outOf(r).includes('判低信号'), `exit=${r.status}\n${outOf(r)}`);
|
|
3767
3767
|
rmfix(T3);
|
|
3768
|
-
// ④ 词表非法 kind / 整字段不可解析 → WARN
|
|
3768
|
+
// ④ 词表非法 kind / 整字段不可解析 → WARN「预判字段不可解析」(夹具取 approved 活文档——终态 done
|
|
3769
|
+
// 自 2026-10-15 起形态类告警跳过,见 ⑥)
|
|
3769
3770
|
const T4 = mkfix();
|
|
3770
|
-
w(T4, 'workflow/intents/2026-09-12-pj5.md', INTENT('pj5', '状态:
|
|
3771
|
-
w(T4, 'workflow/plans/2026-09-12-pj5.md', PLAN('pj5', '状态:
|
|
3771
|
+
w(T4, 'workflow/intents/2026-09-12-pj5.md', INTENT('pj5', '状态: approved\n级别: L1\n日期: 2026-09-12\n预判: kind=bug level=L1', '\n## 验收标准(可测试)\n- [x] 用例通过(证据:fixture)\n'));
|
|
3772
|
+
w(T4, 'workflow/plans/2026-09-12-pj5.md', PLAN('pj5', '状态: draft\n级别: L1'));
|
|
3772
3773
|
r = run(T4);
|
|
3773
3774
|
check('检查25 kind=bug 不在词表 → WARN「预判字段不可解析」',
|
|
3774
3775
|
r.status === 0 && outOf(r).includes('预判字段不可解析'), `exit=${r.status}\n${outOf(r)}`);
|
|
3775
3776
|
rmfix(T4);
|
|
3776
3777
|
const T5 = mkfix();
|
|
3777
|
-
w(T5, 'workflow/intents/2026-09-12-pj6.md', INTENT('pj6', '状态:
|
|
3778
|
-
w(T5, 'workflow/plans/2026-09-12-pj6.md', PLAN('pj6', '状态:
|
|
3778
|
+
w(T5, 'workflow/intents/2026-09-12-pj6.md', INTENT('pj6', '状态: approved\n级别: L1\n日期: 2026-09-12\n预判: 这是个修复', '\n## 验收标准(可测试)\n- [x] 用例通过(证据:fixture)\n'));
|
|
3779
|
+
w(T5, 'workflow/plans/2026-09-12-pj6.md', PLAN('pj6', '状态: draft\n级别: L1'));
|
|
3779
3780
|
r = run(T5);
|
|
3780
3781
|
check('检查25 预判字段无 kv 形态 → WARN「预判字段不可解析」',
|
|
3781
3782
|
r.status === 0 && outOf(r).includes('预判字段不可解析'), `exit=${r.status}\n${outOf(r)}`);
|
|
3782
3783
|
rmfix(T5);
|
|
3784
|
+
// ⑥ 终态跳过(2026-10-15):done 文档词表/形态类告警不产——终态受检查 15 内容绑定不可修订,
|
|
3785
|
+
// WARN 永不可消(「不可消除噪声」红线);类型/级别比对照常(level 一致;类型告警不在本断言面)
|
|
3786
|
+
{
|
|
3787
|
+
const T6 = mkfix();
|
|
3788
|
+
w(T6, 'workflow/intents/2026-09-12-pj7.md', INTENT('pj7', '状态: done\n级别: L1\n日期: 2026-09-12\n预判: kind=bug level=L1', '\n## 验收标准(可测试)\n- [x] 用例通过(证据:fixture)\n'));
|
|
3789
|
+
w(T6, 'workflow/plans/2026-09-12-pj7.md', PLAN('pj7', '状态: done\n级别: L1'));
|
|
3790
|
+
r = run(T6);
|
|
3791
|
+
check('检查25 终态 done 词表外 kind → 形态类告警不产(2026-10-15 终态跳过)',
|
|
3792
|
+
r.status === 0 && !outOf(r).includes('预判字段不可解析'), `exit=${r.status}\n${outOf(r)}`);
|
|
3793
|
+
rmfix(T6);
|
|
3794
|
+
}
|
|
3783
3795
|
}
|
|
3784
3796
|
|
|
3785
3797
|
// ---- 检查 26:闭环漏斗「协议前」占比动作阈值(相邻两月均 >30% → WARN;消费 gen-workflow-metrics 产物)----
|
|
@@ -29,16 +29,21 @@ export function run(ctx) {
|
|
|
29
29
|
const pj = fmGet(abs, '预判');
|
|
30
30
|
if (!pj) continue;
|
|
31
31
|
const rel = `${WF}/${sub}/${f}`;
|
|
32
|
+
// 终态文档(2026-10-15):形态/词表类告警跳过——终态受检查 15 内容绑定不可修订,此类 WARN 永不可
|
|
33
|
+
// 消(「不可消除噪声」红线);类型/级别比对保留——那是路由审计的本体信号,灰度对账照常采集。
|
|
34
|
+
// (终态并集 = doc 终态 done/superseded/cancelled + incident 终态 fixed/closed——两侧枚举无单一键
|
|
35
|
+
// 覆盖该并集,故与源仓 s25 同款内联声明。)
|
|
36
|
+
const terminalDoc = ['done', 'superseded', 'cancelled', 'fixed', 'closed'].includes(fmGet(abs, '状态'));
|
|
32
37
|
const kv = {};
|
|
33
38
|
for (const m of pj.matchAll(/(kind|level)=([^\s]+)/g)) kv[m[1]] = m[2];
|
|
34
39
|
if (!Object.keys(kv).length) {
|
|
35
|
-
warnings.push(`- [WARN 预判字段不可解析] 须形如「预判: kind=<kind> level=<L1|L2|L3>」:${rel}`);
|
|
40
|
+
if (!terminalDoc) warnings.push(`- [WARN 预判字段不可解析] 须形如「预判: kind=<kind> level=<L1|L2|L3>」:${rel}`);
|
|
36
41
|
continue;
|
|
37
42
|
}
|
|
38
|
-
if (kv.kind && !KINDS.includes(kv.kind)) {
|
|
43
|
+
if (kv.kind && !KINDS.includes(kv.kind) && !terminalDoc) {
|
|
39
44
|
warnings.push(`- [WARN 预判字段不可解析] kind=${kv.kind} 不在词表(${KINDS.join('/')}):${rel}`);
|
|
40
45
|
}
|
|
41
|
-
if (kv.level && !inSet(kv.level, ENUMS['level.all'])) {
|
|
46
|
+
if (kv.level && !inSet(kv.level, ENUMS['level.all']) && !terminalDoc) {
|
|
42
47
|
warnings.push(`- [WARN 预判字段不可解析] level=${kv.level} 不在枚举 level.all:${rel}`);
|
|
43
48
|
}
|
|
44
49
|
// 类型比对:intents ≡ require、incidents ≡ fix(plans/specs 两道共用,不判类型)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-method
|
|
3
|
+
description: 代码复核走查方法(Standards×Spec 双轴 + 坏味道清单 + 合入标尺)。供 independent-reviewer 或主智能体复核 diff 时使用;是 .agents/commands/review.md 执行流程的方法层单源,不依赖宿主全局技能。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# review-method — 复核走查方法
|
|
7
|
+
|
|
8
|
+
## 定位与分工
|
|
9
|
+
复核三层各自单源,本文件只管「怎么走查」:
|
|
10
|
+
|
|
11
|
+
| 层 | 单源 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| 拦什么(不变量) | `.agents/commands/review.md` P0/P1 表 |
|
|
14
|
+
| 以什么身份查(证据纪律) | `.agents/roles/independent-reviewer.md` Constraints |
|
|
15
|
+
| 怎么走查(本文件) | 双轴框架 + 坏味道清单 + 合入标尺 |
|
|
16
|
+
|
|
17
|
+
宿主有全局 `code-review` / `review-verification-protocol` 技能时可叠加;无则本文件兜底。
|
|
18
|
+
|
|
19
|
+
## 双轴框架(分轴报告,禁合并排序)
|
|
20
|
+
| 轴 | 问的问题 | 依据 |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| **Standards** | 是否符合本仓成文标准 | 根/目录级 `AGENTS.md` + review.md P0/P1 表 |
|
|
23
|
+
| **Spec** | 是否忠实实现入口文档承诺 | intent/plan「验收标准」+ spec §测试用例 |
|
|
24
|
+
|
|
25
|
+
两轴独立成立:合规范但做错事(Standards 过、Spec 挂)与做对事但破规范(Spec 过、Standards 挂)都存在——分开报告防一轴掩盖另一轴。Spec 轴报三类发现:承诺缺失/部分落地、超范围(scope creep)、实现走样。
|
|
26
|
+
|
|
27
|
+
## 坏味道走查清单(Standards 轴补充)
|
|
28
|
+
P0/P1 表之外的判断项。约束:仓库成文标准优先(成文认可即压制本清单);始终是判断项非硬违规;门禁/tooling 已拦的跳过。每条 = 是什么 $\rightarrow$ 怎么修:
|
|
29
|
+
|
|
30
|
+
| 坏味道 | 是什么 $\rightarrow$ 怎么修 |
|
|
31
|
+
|---|---|
|
|
32
|
+
| Mysterious Name 神秘命名 | 名字不揭示用途 $\rightarrow$ 重命名;起不出诚实名字 = 设计混浊 |
|
|
33
|
+
| Duplicated Code 重复代码 | 同形逻辑在多处出现 $\rightarrow$ 提取共享实现,两处调用 |
|
|
34
|
+
| Feature Envy 依恋情结 | 方法够别家数据多过自己 $\rightarrow$ 把方法移到所依恋的数据上 |
|
|
35
|
+
| Data Clumps 数据泥团 | 几个字段/参数总是结伴出行 $\rightarrow$ 捆成一个类型传递 |
|
|
36
|
+
| Primitive Obsession 基本类型偏执 | 原始值顶替领域概念 $\rightarrow$ 为概念建专属小类型 |
|
|
37
|
+
| Repeated Switches 重复开关 | 对同一类型的 switch/级联 if 反复出现 $\rightarrow$ 多态或共享映射 |
|
|
38
|
+
| Shotgun Surgery 霰弹式修改 | 一个逻辑变更迫使多文件分散编辑 $\rightarrow$ 聚拢到同一模块 |
|
|
39
|
+
| Divergent Change 发散式变化 | 一个模块因多个不相关原因被改 $\rightarrow$ 按单一变化理由拆分 |
|
|
40
|
+
| Speculative Generality 投机泛化 | 为 spec 没有的需求加抽象/参数/钩子 $\rightarrow$ 删掉内联,等真实需求出现 |
|
|
41
|
+
| Message Chains 消息链 | 长 `a.b().c().d()` 导航 $\rightarrow$ 在首对象上藏一个方法 |
|
|
42
|
+
| Middle Man 中间人 | 类/函数几乎只做转发 $\rightarrow$ 删掉,直调真目标 |
|
|
43
|
+
| Refused Bequest 拒绝继承 | 子类忽略/覆盖大部分继承物 $\rightarrow$ 弃继承改组合 |
|
|
44
|
+
|
|
45
|
+
性能三项(P1 分页条款之外):N+1 查询、无界取数/循环、热路径大对象。
|
|
46
|
+
|
|
47
|
+
## 结构化修复动作
|
|
48
|
+
报结构问题时给命名动作,禁只说「这里复杂」让作者猜:消条件链建类型/分发器、折叠重复分支、编排与业务分离、特性逻辑移回所属层、复用权威 helper 禁近亲复制、显式类型边界消下游分支、删无澄清价值的透传包装、抽 helper 或拆大文件。
|
|
49
|
+
|
|
50
|
+
## 合入标尺(防 P2 纠缠)
|
|
51
|
+
确定改善整体代码健康即建议合入,不因「不是我会这么写」而拦——完美不存在,持续改进是目标。样式偏好与假设性风险禁报(证据纪律见角色契约 Constraints)。
|
|
52
|
+
|
|
53
|
+
## 出处
|
|
54
|
+
- 双轴框架与坏味道清单:提炼自宿主全局 `code-review` 技能(Fowler《Refactoring》ch.3 基线)。
|
|
55
|
+
- 结构化修复动作与合入标尺:借自 [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)(MIT)。
|