agentic-flow-kit 1.4.0 → 1.5.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.
Files changed (130) hide show
  1. package/modules/hosts/claude/agents/implementer.md +5 -6
  2. package/modules/hosts/claude/agents/independent-reviewer.md +6 -6
  3. package/modules/hosts/claude/agents/ui-verifier.md +5 -5
  4. package/modules/hosts/claude/commands/wf-build.md +21 -21
  5. package/modules/hosts/claude/commands/wf-deploy.md +2 -2
  6. package/modules/hosts/claude/commands/wf-design.md +8 -8
  7. package/modules/hosts/claude/commands/wf-gate-checklist.md +8 -8
  8. package/modules/hosts/claude/commands/wf-maintain.md +12 -12
  9. package/modules/hosts/claude/commands/wf-new-task.md +9 -9
  10. package/modules/hosts/claude/commands/wf-pipeline-run.md +3 -3
  11. package/modules/hosts/claude/commands/wf-plan.md +10 -11
  12. package/modules/hosts/claude/commands/wf-review.md +4 -4
  13. package/modules/hosts/claude/commands/wf-source-sync-check.md +10 -10
  14. package/modules/hosts/claude/commands/wf-sync-hosts.md +9 -9
  15. package/modules/hosts/claude/commands/wf-test.md +5 -6
  16. package/modules/hosts/codex/agents/implementer.md +5 -6
  17. package/modules/hosts/codex/agents/independent-reviewer.md +6 -6
  18. package/modules/hosts/codex/agents/ui-verifier.md +5 -5
  19. package/modules/hosts/codex/commands/wf-build.md +21 -21
  20. package/modules/hosts/codex/commands/wf-deploy.md +2 -2
  21. package/modules/hosts/codex/commands/wf-design.md +8 -8
  22. package/modules/hosts/codex/commands/wf-gate-checklist.md +8 -8
  23. package/modules/hosts/codex/commands/wf-maintain.md +12 -12
  24. package/modules/hosts/codex/commands/wf-new-task.md +9 -9
  25. package/modules/hosts/codex/commands/wf-pipeline-run.md +3 -3
  26. package/modules/hosts/codex/commands/wf-plan.md +10 -11
  27. package/modules/hosts/codex/commands/wf-review.md +4 -4
  28. package/modules/hosts/codex/commands/wf-source-sync-check.md +10 -10
  29. package/modules/hosts/codex/commands/wf-sync-hosts.md +9 -9
  30. package/modules/hosts/codex/commands/wf-test.md +5 -6
  31. package/modules/hosts/cursor/agents/implementer.md +5 -6
  32. package/modules/hosts/cursor/agents/independent-reviewer.md +6 -6
  33. package/modules/hosts/cursor/agents/ui-verifier.md +5 -5
  34. package/modules/hosts/cursor/commands/wf-build.md +21 -21
  35. package/modules/hosts/cursor/commands/wf-deploy.md +2 -2
  36. package/modules/hosts/cursor/commands/wf-design.md +8 -8
  37. package/modules/hosts/cursor/commands/wf-gate-checklist.md +8 -8
  38. package/modules/hosts/cursor/commands/wf-maintain.md +12 -12
  39. package/modules/hosts/cursor/commands/wf-new-task.md +9 -9
  40. package/modules/hosts/cursor/commands/wf-pipeline-run.md +3 -3
  41. package/modules/hosts/cursor/commands/wf-plan.md +10 -11
  42. package/modules/hosts/cursor/commands/wf-review.md +4 -4
  43. package/modules/hosts/cursor/commands/wf-source-sync-check.md +10 -10
  44. package/modules/hosts/cursor/commands/wf-sync-hosts.md +9 -9
  45. package/modules/hosts/cursor/commands/wf-test.md +5 -6
  46. package/modules/hosts/omp/agents/implementer.md +5 -6
  47. package/modules/hosts/omp/agents/independent-reviewer.md +6 -6
  48. package/modules/hosts/omp/agents/ui-verifier.md +5 -5
  49. package/modules/hosts/opencode/agents/implementer.md +5 -6
  50. package/modules/hosts/opencode/agents/independent-reviewer.md +6 -6
  51. package/modules/hosts/opencode/agents/ui-verifier.md +5 -5
  52. package/modules/hosts/opencode/commands/wf-build.md +21 -21
  53. package/modules/hosts/opencode/commands/wf-deploy.md +2 -2
  54. package/modules/hosts/opencode/commands/wf-design.md +8 -8
  55. package/modules/hosts/opencode/commands/wf-gate-checklist.md +8 -8
  56. package/modules/hosts/opencode/commands/wf-maintain.md +12 -12
  57. package/modules/hosts/opencode/commands/wf-new-task.md +9 -9
  58. package/modules/hosts/opencode/commands/wf-pipeline-run.md +3 -3
  59. package/modules/hosts/opencode/commands/wf-plan.md +10 -11
  60. package/modules/hosts/opencode/commands/wf-review.md +4 -4
  61. package/modules/hosts/opencode/commands/wf-source-sync-check.md +10 -10
  62. package/modules/hosts/opencode/commands/wf-sync-hosts.md +9 -9
  63. package/modules/hosts/opencode/commands/wf-test.md +5 -6
  64. package/modules/hosts/trae/agents/implementer.md +5 -6
  65. package/modules/hosts/trae/agents/independent-reviewer.md +6 -6
  66. package/modules/hosts/trae/agents/ui-verifier.md +5 -5
  67. package/modules/hosts/trae/commands/wf-build.md +21 -21
  68. package/modules/hosts/trae/commands/wf-deploy.md +2 -2
  69. package/modules/hosts/trae/commands/wf-design.md +8 -8
  70. package/modules/hosts/trae/commands/wf-gate-checklist.md +8 -8
  71. package/modules/hosts/trae/commands/wf-maintain.md +12 -12
  72. package/modules/hosts/trae/commands/wf-new-task.md +9 -9
  73. package/modules/hosts/trae/commands/wf-pipeline-run.md +3 -3
  74. package/modules/hosts/trae/commands/wf-plan.md +10 -11
  75. package/modules/hosts/trae/commands/wf-review.md +4 -4
  76. package/modules/hosts/trae/commands/wf-source-sync-check.md +10 -10
  77. package/modules/hosts/trae/commands/wf-sync-hosts.md +9 -9
  78. package/modules/hosts/trae/commands/wf-test.md +5 -6
  79. package/modules/hosts/zcode/agents/implementer.md +5 -6
  80. package/modules/hosts/zcode/agents/independent-reviewer.md +6 -6
  81. package/modules/hosts/zcode/agents/ui-verifier.md +5 -5
  82. package/package.json +7 -2
  83. package/src/doctor.mjs +1 -1
  84. package/src/init.test.mjs +1 -1
  85. package/src/run-tests.mjs +15 -1
  86. package/src/sync-hosts.test.mjs +4 -4
  87. package/src/sync.test.mjs +1 -1
  88. package/templates/_agents/commands/build.md +21 -21
  89. package/templates/_agents/commands/deploy.md +2 -2
  90. package/templates/_agents/commands/design.md +8 -8
  91. package/templates/_agents/commands/gate-checklist.md +8 -8
  92. package/templates/_agents/commands/maintain.md +12 -12
  93. package/templates/_agents/commands/new-task.md +9 -9
  94. package/templates/_agents/commands/pipeline-run.md +3 -3
  95. package/templates/_agents/commands/plan.md +10 -11
  96. package/templates/_agents/commands/review.md +4 -4
  97. package/templates/_agents/commands/source-sync-check.md +10 -10
  98. package/templates/_agents/commands/sync-hosts.md +9 -9
  99. package/templates/_agents/commands/test.md +5 -6
  100. package/templates/_agents/roles/implementer.md +5 -6
  101. package/templates/_agents/roles/independent-reviewer.md +6 -6
  102. package/templates/_agents/roles/ui-verifier.md +5 -5
  103. package/templates/_agents/scripts/agg-delegations.cjs +0 -1
  104. package/templates/_agents/scripts/agg-delegations.test.mjs +2 -2
  105. package/templates/_agents/scripts/check-hygiene.mjs +2 -2
  106. package/templates/_agents/scripts/check-ledger-invariant.mjs +0 -1
  107. package/templates/_agents/scripts/check-loop.mjs +33 -10
  108. package/templates/_agents/scripts/check-loop.test.mjs +1 -1
  109. package/templates/_agents/scripts/commit-check-trigger.test.mjs +0 -1
  110. package/templates/_agents/scripts/confirm-doc.mjs +0 -1
  111. package/templates/_agents/scripts/ensure-board.mjs +2 -2
  112. package/templates/_agents/scripts/fill-intent.mjs +2 -2
  113. package/templates/_agents/scripts/fill-plan.mjs +1 -2
  114. package/templates/_agents/scripts/gen-wiki-board.mjs +1 -1
  115. package/templates/_agents/scripts/gen-workflow-dashboard.test.mjs +0 -2
  116. package/templates/_agents/scripts/gen-workflow-index.test.mjs +1 -1
  117. package/templates/_agents/scripts/gen-workflow-metrics.mjs +1 -1
  118. package/templates/_agents/scripts/kb-search.mjs +1 -2
  119. package/templates/_agents/scripts/kb-search.test.mjs +1 -1
  120. package/templates/_agents/scripts/pipeline-run-docs.mjs +76 -0
  121. package/templates/_agents/scripts/pipeline-run-run.mjs +63 -0
  122. package/templates/_agents/scripts/pipeline-run.mjs +8 -128
  123. package/templates/_agents/scripts/policy.mjs +7 -1
  124. package/templates/_agents/scripts/source-sync-check.mjs +2 -2
  125. package/templates/_agents/scripts/source-sync-check.test.mjs +1 -1
  126. package/templates/_agents/scripts/verify-wiki-consistency.mjs +0 -1
  127. package/templates/_agents/scripts/verify.test.mjs +2 -2
  128. package/templates/_agents/scripts/workflow-board-server.test.mjs +0 -1
  129. package/templates/_agents/scripts/workflow-enums.test.mjs +0 -1
  130. package/templates/_agents/scripts-test-exempt.txt +4 -1
@@ -9,11 +9,11 @@ description: Maintain 阶段 · 立 incident + 复盘三件套(incident 在 L1
9
9
 
10
10
  > 事故回到 Plan。复盘三件套缺一不可,防复发承诺不留在文档里。
11
11
 
12
- ## 执行
12
+ ## 1. 执行
13
13
 
14
- > **看板(可选,默认不拉起)**:需要实时看板时手动跑 node .agents/scripts/ensure-board.mjs(跨平台;幂等:探活 / 旧代码自动重启 / 全新启动才弹浏览器;多项目并行自动上探首个可用端口),链接以脚本输出为准(基端口 8933);不开看板不影响任务流程。
14
+ > **看板(可选,默认不拉起)**:需要实时看板时手动跑 node .agents/scripts/ensure-board.mjs(跨平台;幂等:探活 / 旧代码自动重启 / 全新启动才弹浏览器;端口 8933 起自动上探,链接以脚本输出为准;不开看板不影响任务流程)。
15
15
 
16
- ### 0. 紧急止血(仍在事故中时)
16
+ ### 1.1 紧急止血(仍在事故中时)
17
17
 
18
18
  1. AI 先诊断:读日志 + 代码,给出止血选项(版本回退 / 数据回滚 / 热修 / 降级 / 暂不处理)与各自影响面、耗时
19
19
  - **版本回退**(代码 / 配置,无数据影响):回退到上一 `release/<日期>` tag——运行时 / 管线类事故(认证管线 / DI 注册 / 中间件)的首选,须确认上一 tag 可复现构建
@@ -21,13 +21,13 @@ description: Maintain 阶段 · 立 incident + 复盘三件套(incident 在 L1
21
21
  2. 止血方案由用户拍板;AI 只执行选定方案,不自行推送修复
22
22
  3. 热修代码后仍须补跑 `test.md` 静态门;止血完成再进下面的复盘流程(时间线从本节记起)
23
23
 
24
- ### 1. 起草 incident
24
+ ### 1.2 起草 incident
25
25
 
26
26
  1. **先检索同类 incident**:`node .agents/scripts/kb-search.mjs "<关键词>" --scope workflow --type incidents`——命中同类先读其「根因 / 复盘三件套」,本次三件套须引用其防复发条目(review.md P2 对账项)
27
27
  2. 复制 `workflow/incidents/_TEMPLATE.md` → `workflow/incidents/YYYY-MM-DD-<主题>.md`(frontmatter 填 `模块:`,词表见 `.agents/workflow-modules.txt`)
28
28
  3. 填 4 节:时间线(发现→定位→止血→恢复,带时刻) / 影响面(页面/接口/数据范围) / 根因(一句话+深层原因) / 为什么之前没拦住(门禁/测试/规范各查一遍)
29
29
 
30
- ### 2. 起草复盘三件套(缺一不可)
30
+ ### 1.3 起草复盘三件套(缺一不可)
31
31
 
32
32
  > 目的:让事故真正回到 Plan,不让「防复发」承诺停留在文档里。
33
33
 
@@ -49,29 +49,29 @@ description: Maintain 阶段 · 立 incident + 复盘三件套(incident 在 L1
49
49
  - 常驻面体积预算由 pre-commit 硬拦(`sh .agents/scripts/rule-budget.sh --staged`,表 `.agents/rule-budgets.txt`)——超限先删再增
50
50
  - 引用:commit <SHA> / 文件:<路径>#L<行>;若无新增条目,理由:<已有条目覆盖,说明条目位置>
51
51
 
52
- ### 3. 起草后停下
52
+ ### 1.4 起草后停下
53
53
 
54
54
  输出草稿全文给用户过目;确认后才执行三件套落地。**确认点不合并**:incident 草稿、spec、plan 各自过目确认(plan 的两道门见 `build.md`);确认后立即留痕(spec/plan 状态 `approved` + 「确认与复核」节,incident 时间线补「用户确认」条目),`done` 只在关单出现。**L2/L3 机器前置**:起草 spec 时 fill-spec / confirm-doc 校验「时间线含『用户确认』留痕」,未过即拒(exit 2)——被拒回本流程补留痕。
55
55
 
56
- ### 4. 确认后落地
56
+ ### 1.5 确认后落地
57
57
 
58
58
  1. **开工前先配 plan**:复制 `workflow/plans/_TEMPLATE.md` 建 incident 同名 plan(L1 极简形态填「改动面 + 验证方式」两节即可)——incident≡intent 免掉的是 intent,**plan 不可免**(pre-commit 增量配对门禁与 pre-push check-loop 均按同名硬拦)
59
59
  2. 结构性修复:L1 走 `build.md` → `test.md`;L2/L3 先走 `design.md` 再进 `build.md` → `test.md`
60
- 3. 三件套落地:防复发验证按 §2②、规范条目按 §2③ 落点优先级逐条落
60
+ 3. 三件套落地:防复发验证按 §1.3②、规范条目按 §1.3③ 落点优先级逐条落
61
61
  4. 若选「需要新 intent」→ 进 `next: .agents/commands/plan.md` 立新 intent 追踪
62
62
 
63
- ## 技能辅助(可选,宿主级 skills)
63
+ ## 2. 技能辅助(可选,宿主级 skills)
64
64
 
65
65
  - 根因诊断:难复现/跨层问题用 `diagnosing-bugs` 走诊断循环(红→最小化→假设→插桩→修复→回归)
66
66
  - 事故定性/分级:参考 `triage` 技能的状态机思路;产出仍落 incident 模板,不引外部 tracker
67
67
  - 处置决策需用户离线拍板:用 `to-questionnaire` 生成问卷
68
68
 
69
- ## 子代理调用约定
69
+ ## 3. 子代理调用约定
70
70
 
71
71
  - 事故诊断、止血选项、根因定性、incident 与三件套起草均由主智能体负责,不委派;用户选定止血方案后,仅有明确复现路径、授权文件与验收条件的局部热修可委派 `implementer`(数据 / Schema / 权限 / 安全 / 破坏性操作不得委派)。
72
72
  - 常规结构性修复按级别回流(L1 走 `build.md`;L2/L3 走 `design.md`),不在 Maintain 绕过前置门禁;子智能体返回后由主智能体检查 diff 并补跑 `test.md`。
73
73
 
74
- ## 确认后
74
+ ## 4. 确认后
75
75
 
76
- - incident 状态 → fixed(三件套全落地);防复发用例通过后 → closed——两跳均走确认门 `node .agents/scripts/confirm-doc.mjs <path>`(open→fixed / fixed→closed,无单跳;2026-09-28 起 check-loop 15 对账,AI 不得直改状态)
76
+ - incident 状态 → fixed(三件套全落地);防复发用例通过后 → closed——两跳均走确认门 `node .agents/scripts/confirm-doc.mjs <path>`(open→fixed / fixed→closed,无单跳;2026-09-28 起 check-loop 15 对账,AI 不得直改状态;口径见根 `AGENTS.md` §1.3 确认门)
77
77
  - 若需新 intent → 进 `next: .agents/commands/plan.md`
@@ -7,7 +7,7 @@ description: 闭环总入口 · 路由判断(新需求 → wf-plan / 修复
7
7
 
8
8
  > 6 阶段指令索引。AI 读 AGENTS.md 后按阶段路由,不并阶段、不跳阶段。
9
9
 
10
- ## 6 阶段指令索引
10
+ ## 1. 6 阶段指令索引
11
11
 
12
12
  | 阶段 | 指令 | 触发短语 | 可委派子智能体 | 确认点 |
13
13
  |------|------|---------|----------------|--------|
@@ -19,7 +19,7 @@ description: 闭环总入口 · 路由判断(新需求 → wf-plan / 修复
19
19
  | **Maintain** | [.agents/commands/maintain.md](.agents/commands/maintain.md) | "线上出事了" / "记一笔 incident" | `implementer`(方案确认后) | 三件套要点确认 |
20
20
  | **Review**(横切,不占 6 阶段) | [.agents/commands/review.md](.agents/commands/review.md) | "评审一下" / "过 review 标准" | `independent-reviewer`(L2/L3 必须独立复核) | 问题定性与合入时机确认 |
21
21
 
22
- ## 风险定级(第 0 步,先定级再路由)
22
+ ## 2. 风险定级(第 0 步,先定级再路由)
23
23
 
24
24
  动工前先按下表定风险级 L0-L3(就高不就低;判据细则见下节「级别判断」),级别即风险级,决定走哪条泳道——确认放事前,还是审计补事后:
25
25
 
@@ -30,24 +30,24 @@ description: 闭环总入口 · 路由判断(新需求 → wf-plan / 修复
30
30
 
31
31
  > 定级结果落 intent frontmatter `risk_level`(=级别,`fill-intent.mjs` 自动写入,机器选道用);协作道勾触达红线会被 check-loop 判「红线判低」hard 拦(就高升级 L2/L3 并补同名 spec)。
32
32
 
33
- ## 路由判断
33
+ ## 3. 路由判断
34
34
 
35
35
  - **自动化驱动(并列入口,可选)**:一句话全程走 [pipeline-run.md](pipeline-run.md)——状态机驱动+工单协议+原话代录,与下述手动路由二选一,同一任务不混用
36
36
  - **新需求 / 功能**:从 `plan.md` 进,立 **intent**(`workflow/intents/`)
37
37
  - **修复类任务 / 事故**:从 `maintain.md` 进,立 **incident**(`workflow/incidents/`);incident 在 L1+ 即 **intent 等价物**(check-loop 认 incident≡intent),不必另立 intent。先检索同类历史(`node .agents/scripts/kb-search.mjs "<关键词>" --scope workflow --type incidents,plans`),有同类先读其历史三件套;再按级别走:
38
38
  - L0 → 直接修复;L1 → 立 incident 后进 `build.md` 起草并确认同名 Quick-Plan → `test.md`
39
- - L2/L3 → 立 incident 后进 `design.md` 起草并确认同名 spec,再进 `build.md` 起草并确认同名 plan → `test.md`
40
- - 仅当根因属系统性 / 门禁缺位(maintain.md 三件套「是否需要新 intent」选"是")才另立 `workflow/intents/` 同名 intent
39
+ - L2/L3 → 立 incident 后进 `design.md` 起草并确认同名 spec,再进 `build.md` 起草并确认同名 plan → `test.md`
40
+ - 仅当根因属系统性 / 门禁缺位(maintain.md 三件套「是否需要新 intent」选"是")才另立 `workflow/intents/` 同名 intent
41
41
  - **改完代码要验证**:直接进 `test.md`(验证通过即关单;L1 到此结束)
42
42
  - **合入前评审**:直接进 `review.md`(横切,P0/P1/P2 分级清单 + L2/L3 独立复核)
43
43
  - **准备上线**:直接进 `deploy.md`(仅 prod;文档应已在 test 关单)
44
44
 
45
- ## 级别判断(AGENTS.md 第 3 条)
45
+ ## 4. 级别判断(AGENTS.md 第 3 条)
46
46
 
47
47
  | 级别 | 改什么 | 流程 |
48
48
  |------|--------|------|
49
49
  | L0 | 文档/样式微调(无行为影响) | 直接 commit,豁免 intent |
50
- | L1 | **实现级改动**(未命中 L2/L3) | 快车道:液态草稿(.zcode/drafts) $\rightarrow$ 实现 $\rightarrow$ 固化(`solidify-task.mjs`)——用户确认后带 `--delegated "<原话>"` 执行;无确认来源只迁移不落账 |
50
+ | L1 | **实现级改动**(未命中 L2/L3) | 快车道:液态草稿(.zcode/drafts) → 实现 → 固化(`solidify-task.mjs`)——用户确认后带 `--delegated "<原话>"` 执行;无确认来源只迁移不落账 |
51
51
  | L2 | **规则 / 契约**(一处改、多处依赖) | 入口文档(intent / incident) + spec + plan 三件套 |
52
52
  | L3 | **数据与运行时结构**(schema / 迁移 SQL / DI 链 / 认证与中间件管线) | 同 L2 + spec 新会话独立复核 |
53
53
 
@@ -67,12 +67,12 @@ description: 闭环总入口 · 路由判断(新需求 → wf-plan / 修复
67
67
  > **L1 是默认档**:红线全不勾即 L1,无需正列举——判级只回答「是否命中 L2 四类或 L3 结构面」。
68
68
  > **L3 的「DI 链」按组合根与运行时管线理解**:DI 注册、中间件/认证管线、服务构造器依赖变更(先例:本仓 workflow/ 留痕中无 schema 变更仍定 L3 的同类历史)。
69
69
 
70
- ## intent 豁免(避免小改动也走完整闭环)
70
+ ## 5. intent 豁免(避免小改动也走完整闭环)
71
71
 
72
72
  - **L0 新需求**:可直接处理;**L1 新需求**:立轻量 intent + plan(不必 spec)
73
73
  - **docs 级改动**(AGENTS.md / workflow/ 模板 / .agents/ 脚本与 commands / yaml):豁免 intent,走 Conventional Commits 直接 commit;若同时触及代码,按代码部分级别立 intent
74
74
  - **bootstrap 类改动**(引入规则本身):豁免 intent,commit message 显式声明 `bootstrap`
75
75
 
76
- ## 闭环兜底
76
+ ## 6. 闭环兜底
77
77
 
78
78
  - 门禁清单与判据以 `.githooks/` / `.agents/hooks/` / `check-loop.sh` 头部注释为准(本文件不复述、不写项数);hard-block = 配对断裂 / 回路断档 / 新建 done 未勾验。本地机器门只有本地钩子,禁 `--no-verify`(见根 `AGENTS.md`)。
@@ -8,7 +8,7 @@ description: pipeline-run 自动化驱动入口——单命令驱动六阶段闭
8
8
  > 确定性部分由 `pipeline-run.mjs` 状态机驱动(机器门序列:fill-* → confirm-doc → verify.mjs → git,退出码全记录);
9
9
  > AI 槽位经工单协议交宿主执行;人件门到点即停、原话代录。宿主只按本协议驱动,不自行改状态。
10
10
 
11
- ## 驱动协议(宿主 AI 逐条执行)
11
+ ## 1. 驱动协议(宿主 AI 逐条执行)
12
12
 
13
13
  1. **启动**:`node .agents/scripts/pipeline-run.mjs start "<需求原文>"`(可预判则加 `--hint "kind=… level=… module=…"`)。
14
14
  2. **循环读停机点**:每次命令的 stdout 末行是机器标记 `PIPELINE-STOP <type> …`,按 type 分流:
@@ -24,13 +24,13 @@ description: pipeline-run 自动化驱动入口——单命令驱动六阶段闭
24
24
  3. **放弃**:用户明确不做时 `abort --run <id> --to superseded|cancelled --delegated "<原话>"`(approved 文档逐份走 confirm-doc --to)。
25
25
  4. **观测**(可选):`status [--run <id>] [--json]` 全量事件流水;`watch` 终端轮询视图。
26
26
 
27
- ## 硬纪律(违反即协议破坏)
27
+ ## 2. 硬纪律(违反即协议破坏)
28
28
 
29
29
  - 状态迁移唯一入口是脚本内部的 confirm-doc 调用——宿主**永不直改** workflow 文档 frontmatter 状态。
30
30
  - `--delegated` 的原话必须是用户当次对话原话(台账 `confirmations.jsonl` 留痕可对质)。
31
31
  - 修复环超限(3 次)时停机交人工,不带病推进;verify 非绿不关单。
32
32
  - run 文件(.agents/cache/pipeline-runs/)是脚本亲写的机器事实——宿主只读不写。
33
33
 
34
- ## 与 new-task 的关系
34
+ ## 3. 与 new-task 的关系
35
35
 
36
36
  本命令是**自动化驱动的并列入口**(单命令走全程);new-task.md 是手动阶段路由入口。同一套门禁与确认语义,二者只选其一驱动一个任务,不混用。
@@ -7,35 +7,34 @@ description: Plan 阶段 · 立 intent(AI 起草、用户确认;本阶段不
7
7
 
8
8
  > AI 起草,用户确认。确认前不进下一阶段。
9
9
 
10
- ## 执行
10
+ ## 1. 执行
11
11
 
12
- > **看板(可选,默认不拉起)**:需要实时看板时手动跑 node .agents/scripts/ensure-board.mjs(跨平台;幂等:探活 / 旧代码自动重启 / 全新启动才弹浏览器;多项目并行自动上探首个可用端口),链接以脚本输出为准(基端口 8933);不开看板不影响任务流程。
12
+ > **看板(可选,默认不拉起)**:需要实时看板时手动跑 node .agents/scripts/ensure-board.mjs(跨平台;幂等:探活 / 旧代码自动重启 / 全新启动才弹浏览器;端口 8933 起自动上探,链接以脚本输出为准;不开看板不影响任务流程)。
13
13
 
14
- 1. 若 `workflow/intents/` 已有目标 intent 且状态为 approved → 按级别跳 next(L1 → `build.md`,L2/L3 → `design.md`)
14
+ 1. 若 `workflow/intents/` 已有目标 intent 且状态为 approved → 按级别跳 next(L1 → `build.md`,L2/L3 → `design.md`)。
15
15
  2. 否则起草新 intent:
16
- - **先检索同类**:`node .agents/scripts/kb-search.mjs "<关键词>" --scope workflow --type intents,specs`——命中同类先读其结论与验收,新 intent 引用(防重复立项 / 重复踩坑)
16
+ - **先检索同类**:`node .agents/scripts/kb-search.mjs "<关键词>" --scope workflow --type intents,specs`——命中同类先读其结论与验收,新 intent 引用(防重复立项 / 重复踩坑)
17
17
  - **填空工具先跑**:`node .agents/scripts/fill-intent.mjs --module <模块> --level <L0|L1|L2|L3> --topic <主题> --output workflow/intents/<date>-<主题>.md --notes "<备注>"`——输出含 frontmatter 6 字段(含 risk_level)+ 9 节(背景与问题/历史教训防复发/目标/非目标/约束/影响面/触达红线/验收标准 8 节正文 + 确认与复核)的草稿;AI 据此填实,模板与节标题机器保证不出错
18
18
  - 复制 `workflow/intents/_TEMPLATE.md` → `workflow/intents/YYYY-MM-DD-<主题>.md`
19
19
  - frontmatter 填 `模块:`(词表见 `.agents/workflow-modules.txt`,新建文档必填,check-loop 会警告)
20
20
  - 按 8 节填写:背景与问题 / 历史教训防复发 / 目标(可验证) / 非目标 / 约束 / 影响面 / 触达红线 / 验收标准(L1 微改动可省非目标/约束两节,不硬填)
21
21
  - 红线勾选对照根 `AGENTS.md` 红线/约束相关节(如「项目适配区」「门禁与提交」)+ 改动域目录级 `AGENTS.md`(如有);**没触及就全不勾**,不要硬填
22
- 3. 写不出可测试判据 = 还没想清楚 → 反问澄清,不要硬填
23
- 4. 起草后停下,输出草稿全文给用户过目,一句"可以"即确认
22
+ 3. 写不出可测试判据 = 还没想清楚 → 反问澄清,不要硬填。
23
+ 4. 起草后停下,输出草稿全文给用户过目,一句"可以"即确认。
24
+ **确认落态**:唯一入口 `node .agents/scripts/confirm-doc.mjs <path>`(draft→approved / approved→done;TTY 两形态 / 逐件调用+逐件原话 / 台账对质全口径见根 `AGENTS.md` §1.3 确认门)。
24
25
 
25
- **确认落态唯一入口**(2026-09-27 起):用户在终端跑 `node .agents/scripts/confirm-doc.mjs <path>` 键入「可以」(draft→approved / approved→done;对话内明确确认后 AI 可 `--delegated "<原话>"` 代录,台账如实记 source/quote——**逐件调用 + 逐件原话**(一次一份,build.md「逐件确认」口径;多份并录被 confirm-doc 拒绝。--delegated 每次传当次实际放行的措辞,不复用同句——复用同句使台账 quote 失去分辨力))。check-loop 15 如实口径:缺记录/指纹不配对 → hard-block 拦截;伪造台账本地不可机器防,留痕供事后对质;done 内容绑定(2026-09-28 起)——关单编辑(勾验/回填)先于 done 确认、confirm-doc 是最后一次写入,此后修订走 superseded 或新 intent。
26
-
27
- ## 技能辅助(可选,宿主级 skills)
26
+ ## 2. 技能辅助(可选,宿主级 skills)
28
27
 
29
28
  - 需求模糊、判据写不出时:用 `grilling`/`grill-me` 拷问需求,答完回填 6 节
30
29
  - 需要用户离线拍板的决策:用 `to-questionnaire` 生成问卷,问题清单随 intent 草稿一并列出
31
30
  - 讨论中需同时沉淀术语表/ADR:用 `grill-with-docs`,文档落 `workflow/` 下与主题同名
32
31
  - 技能只辅助澄清,产出仍按 `_TEMPLATE.md` 落 `workflow/intents/`,确认门不变
33
32
 
34
- ## 执行主体
33
+ ## 3. 执行主体
35
34
 
36
35
  - 需求澄清、级别判断与 intent 起草由主智能体负责,本阶段不委派子智能体。
37
36
 
38
- ## 确认后
37
+ ## 4. 确认后
39
38
 
40
39
  - intent 状态 draft → approved
41
40
  - 立即 `docs(workflow)` 单独提交留痕(根 `AGENTS.md` 提交约定;check-loop 检查 14 口径)——**提交最早可行点**:入口文档受 pre-commit 闭环配对(增量)门约束,同名 spec / plan 须已在工作区(先例 61ec130)
@@ -10,7 +10,7 @@ description: Review · 代码评审(横切,合入前使用;P0/P1/P2 分级
10
10
  > 参考 Anthropic REVIEW.md 做法。宗旨是**用户决策 + AI 协作**:AI 跑机器门禁、自查、出分级清单与建议;用户确认问题定性与合入。把"该机器兜底"与"靠 AI 自查"分开列明,避免注意力耗在机械逐行上。
11
11
  > 本文件为通用骨架;项目专属红线 / 命名 / 组件约定的具体口径在项目适配区(目录级 `AGENTS.md` 与 `.agents/hooks/`)补充。
12
12
 
13
- ## P0 必拦(优先机器兜底,hook 覆盖不到的靠 AI 自查)
13
+ ## 1. P0 必拦(优先机器兜底,hook 覆盖不到的靠 AI 自查)
14
14
 
15
15
  - **架构红线**:分层依赖方向约束(如领域 / 应用层禁直接引用基础设施实现;豁免清单见目录级 `AGENTS.md` / 项目适配区)
16
16
  - 机器兜底:项目自有架构门禁(如有,`.agents/hooks/`)
@@ -22,7 +22,7 @@ description: Review · 代码评审(横切,合入前使用;P0/P1/P2 分级
22
22
  - 机器兜底:项目验证测试覆盖(如有) + AI 自查
23
23
  - **L2 / L3 改动无 spec**:拒收,先回 `workflow/specs/` 立 spec 确认通过
24
24
 
25
- ## P1 应拦(自查重点)
25
+ ## 2. P1 应拦(自查重点)
26
26
 
27
27
  - **DB 命名与迁移**:遵循项目表 / 字段 / 外键命名规范与 schema 变更流程(见目录级 `AGENTS.md`);不得擅自引入项目未采用的迁移机制
28
28
  - **前端形态**:新增 / 编辑与大数据量选择等交互遵循项目组件约定(弹层 vs 跳页、选择器形态、表格与样式统一等)
@@ -35,14 +35,14 @@ description: Review · 代码评审(横切,合入前使用;P0/P1/P2 分级
35
35
  - **spec 承诺的断言落地**:spec §测试列出的用例 / 断言须真落到测试或验证脚本;「写进 spec」不等于「跑得起来」,且常驻断言禁写成随时间增长的行数常量
36
36
  - **跨宿主薄适配正文漂移**:改 `templates/_agents/{commands,roles}/*.md` 后必须跑 `flow-kit sync-hosts --apply` 单向同步注册表内全部宿主薄适配(`modules/hosts/<h>/{agents,commands}/*.md`);装户视角由 `flow-kit doctor` §6.7 检查(包源环境 §6.7 skipped)
37
37
 
38
- ## P2 建议(提醒,不拦合入)
38
+ ## 3. P2 建议(提醒,不拦合入)
39
39
 
40
40
  - 样式统一性(深色 / 浅色主题、卡片样式)
41
41
  - 注释完整性(复杂逻辑处补注释,AGENTS.md 已说的不重复)
42
42
  - Conventional Commits 中文(feat / fix / docs / style / refactor / perf)
43
43
  - 历史同类 incident 的复盘三件套是否补齐
44
44
 
45
- ## 审查分工(用户决策 + AI 协作)
45
+ ## 4. 审查分工(用户决策 + AI 协作)
46
46
 
47
47
  - **机器兜底**(pre-commit / pre-push / test 自动拦,无需人守):门禁清单与判据以 `.githooks/`、`.agents/hooks/`、`check-loop.sh` 头部注释为准;`项目测试命令` 跑自动化用例。
48
48
  - **AI 复核**:机器门禁完成后优先委派 `independent-reviewer`,聚焦 P0 hook 未覆盖项 + 全部 P1(P2 视精力)——产出分级问题清单 + 修复建议。复核方法参考 `code-review` 技能(Standards×Spec 双轴);每条 finding 报告前过 `review-verification-protocol` 防误报门(锚定 file:line、给出证据、校准严重级,不确定就降级为提问)。
@@ -10,16 +10,16 @@ description: 装户面同步一致性检查(包源 templates/_agents/ vs 装
10
10
  > `templates/_agents/` 包源 vs `.agents/` 装副本——三类差异报告:缺失 / 孤儿 / 漂移。
11
11
  > managed 文件由 `flow-kit sync` 跟踪;owned 文件由 `flow-kit doctor` §6.6 校验——本工具补"两者都没扫"的真空地带(结构级差异)。
12
12
 
13
- ## 何时跑
13
+ ## 1. 何时跑
14
14
 
15
15
  - 改 `templates/_agents/*` 包源后
16
16
  - 怀疑装副本未跟包源更新
17
17
  - 体检装副本完整性(清理前 / 发版前)
18
18
  - 不跑:仅改装副本 `.agents/*`(B-b 决策「只报告」+ 不反向同步)
19
19
 
20
- ## 怎么跑
20
+ ## 2. 怎么跑
21
21
 
22
- ### 默认 `--diff`(仅报告)
22
+ ### 2.1 默认 `--diff`(仅报告)
23
23
 
24
24
  ```
25
25
  node .agents/scripts/source-sync-check.mjs --diff
@@ -36,7 +36,7 @@ node .agents/scripts/source-sync-check.mjs --pkg-root <path> --target <path> #
36
36
  - `templates/_agents/cache/`(运行时缓存,与 `flow-kit sync` 既有约定一致)
37
37
  - `.agents/kit.json` / `.agents/settings.json`(init 渲染产物,不属双源)
38
38
 
39
- ### 输出示例
39
+ ### 2.2 输出示例
40
40
 
41
41
  ```
42
42
  ▶ flow-kit source-sync-check --diff
@@ -51,7 +51,7 @@ node .agents/scripts/source-sync-check.mjs --pkg-root <path> --target <path> #
51
51
  - scripts/ensure-board.mjs pkg=e66653b0… tgt=b6f3cc9b…
52
52
  ```
53
53
 
54
- ### 自验
54
+ ### 2.3 自验
55
55
 
56
56
  ```
57
57
  node .agents/scripts/source-sync-check.test.mjs # 11 场景全过
@@ -59,7 +59,7 @@ npm test # 含 source-sync-check 套
59
59
  flow-kit doctor # 10/0/0
60
60
  ```
61
61
 
62
- ## 边界(不要做)
62
+ ## 3. 边界(不要做)
63
63
 
64
64
  - 不要自动化同步(B-b 决策「只报告不修复」——与 `gate-checklist` 同源)
65
65
  - 不改 managed 台账跟踪逻辑(`sync.mjs` 不动)
@@ -67,7 +67,7 @@ flow-kit doctor # 10/0/0
67
67
  - 不反向同步——装副本独自有文件(如 hooks/commit-check.config.json)可能是装户配置,不应被删
68
68
  - 不检查注册表内宿主 `modules/hosts/` 薄适配漂移(那是 `flow-kit sync-hosts` 范围)
69
69
 
70
- ## 当前已识别的真实漂点(首次实测,2026-09-25)
70
+ ## 4. 当前已识别的真实漂点(首次实测,2026-09-25)
71
71
 
72
72
  - **缺失**:本工具写完后未同步装副本(预期内——随本次 commit 解决)
73
73
  - **孤儿**:`.agents/hooks/commit-check.config.json`(装副本独有,疑似装户配置)
@@ -75,7 +75,7 @@ flow-kit doctor # 10/0/0
75
75
 
76
76
  修复留后续 incident / intent 跟踪(不在本次范围)。
77
77
 
78
- ## 与既有工具的关系
78
+ ## 5. 与既有工具的关系
79
79
 
80
80
  | 工具 | 作用域 | 算法 |
81
81
  |---|---|---|
@@ -85,8 +85,8 @@ flow-kit doctor # 10/0/0
85
85
 
86
86
  三者互补,不重叠。
87
87
 
88
- ## 相关留痕
88
+ ## 6. 相关留痕
89
89
 
90
90
  - intent:`workflow/intents/2026-09-25-source-sync-check.md`
91
91
  - plan:`workflow/plans/2026-09-25-source-sync-check.md`
92
- - 父 incident:`workflow/incidents/2026-09-25-wf-runtime.md`(包源改了装副本未同步——本工具预防性体检)
92
+ - 父 incident:`workflow/incidents/2026-09-25-wf-runtime.md`(包源改了装副本未同步——本工具预防性体检)
@@ -13,16 +13,16 @@ description: 跨宿主适配层同步(正文段 sha 比对 + 用户拍板 +
13
13
  > 比 `templates/_agents` ↔ `modules/hosts/<宿主键>/`;含 `.agents` → 装户:比 `.agents` ↔ 项目根下 `<宿主点目录>/`),
14
14
  > 目标根取 `--dir <目录>` > 当前目录。
15
15
 
16
- ## 何时跑
16
+ ## 1. 何时跑
17
17
 
18
18
  - 改 `templates/_agents/commands/*.md` 正文后(11 个 commands 文件)
19
19
  - 改 `templates/_agents/roles/*.md` 正文后(3 个 roles 文件)
20
20
  - 装户跑 `flow-kit doctor` 报"跨宿主薄适配正文漂移 N 对" WARN 时
21
21
  - 不跑:仅改 frontmatter;改 trae 钩子/规则;改包源其他文件
22
22
 
23
- ## 怎么跑
23
+ ## 2. 怎么跑
24
24
 
25
- ### 默认 `--diff`(仅报告)
25
+ ### 2.1 默认 `--diff`(仅报告)
26
26
 
27
27
  ```
28
28
  node bin/flow-kit.mjs sync-hosts --diff # 包源仓(在包源根跑)
@@ -36,7 +36,7 @@ flow-kit sync-hosts --diff # 装户仓(在装户根跑;或
36
36
  - **⚠️ 权威源声明但薄适配缺失** — `add-host <h>` 接管后跑 `--apply` 才会装(apply 不自动创建)
37
37
  - **⚠️ 孤儿薄适配(权威源无对应文件)** — 历史残留或宿主特化,apply 不删
38
38
 
39
- ### `--apply` 单向同步
39
+ ### 2.2 `--apply` 单向同步
40
40
 
41
41
  ```
42
42
  node bin/flow-kit.mjs sync-hosts --apply
@@ -44,7 +44,7 @@ node bin/flow-kit.mjs sync-hosts --apply
44
44
 
45
45
  按权威源正文覆盖薄适配正文段;薄适配原 frontmatter 保留(trae name: wf-X、opencode 描述、zcode/omp 中文风格各自不动)。apply 不反向同步——薄适配手改了正文也会被覆盖(这是设计选择,避免漂移方向歧义)。
46
46
 
47
- ### 自验
47
+ ### 2.3 自验
48
48
 
49
49
  ```
50
50
  npm test # 含 sync-hosts.test.mjs 8 场景
@@ -52,7 +52,7 @@ node bin/flow-kit.mjs doctor # 装户跑 §7.x PASS;包源
52
52
  sh .agents/scripts/check-loop.sh # Windows 无 sh 时 doctor 已探测分流
53
53
  ```
54
54
 
55
- ## 边界(不要做)
55
+ ## 3. 边界(不要做)
56
56
 
57
57
  - 不要 `--apply` 反向同步(写权威源):权威源是真相,薄适配手改会被覆盖——这是设计,apply 前先看 `--diff`
58
58
  - 不要删除孤儿薄适配:可能是宿主特化或历史残留,apply 不动
@@ -60,14 +60,14 @@ sh .agents/scripts/check-loop.sh # Windows 无 sh 时 doctor 已
60
60
  - 不要把「避免与权威版本漂移」明文加回去——这是旧契约的指针风格,已被 B-b 正文副本取代
61
61
  - 装了新宿主后跑 `--apply`:新宿主目录空白,apply 不会自动创建薄适配(薄适配须经 `add-host <h>` 接管)
62
62
 
63
- ## 不在本次同步范围
63
+ ## 4. 不在本次同步范围
64
64
 
65
65
  - trae 钩子(`modules/hosts/trae/hooks/*.cjs`)— 独立演进的工程件
66
66
  - trae 规则(`modules/hosts/trae/rules/*.md`)— 同上
67
67
  - 包源 .agents/scripts/*.cjs(pre-commit 等钩子)— 同步由 `flow-kit sync` 走 managed 台账负责
68
68
 
69
- ## 相关留痕
69
+ ## 5. 相关留痕
70
70
 
71
71
  - intent:`workflow/intents/2026-09-25-cross-host-sync.md`
72
72
  - plan:`workflow/plans/2026-09-25-cross-host-sync.md`(含 B-b 方案拍板)
73
- - incident:`workflow/incidents/2026-09-25-wf-runtime.md`(双源纪律教训,规范 §7.x 包源环境跳过)
73
+ - incident:`workflow/incidents/2026-09-25-wf-runtime.md`(双源纪律教训,规范 §7.x 包源环境跳过)
@@ -47,20 +47,19 @@ node bin/flow-kit.mjs doctor # §6.5 delegations + §6.6 o
47
47
  - 复核者读入口文档(intent / incident) + spec + plan + diff,判断变更意图与风险
48
48
  - 复核意见交用户定性(采纳 / 驳回);采纳项回 `build.md` 修改
49
49
 
50
- ## 子代理调用约定
50
+ ## 5. 子代理调用约定
51
51
 
52
52
  - 静态门不委派;UI 实测委派 `ui-verifier`(静态门通过后)、独立复核委派 `independent-reviewer`,均要求读取对应 `.agents/roles/*.md`;宿主不支持时按 frontmatter `fallback`(reviewer 必须另开新会话,不得主智能体自查冒充)。
53
53
  - 子智能体只返回证据与结论——失败项修复仍回 `build.md`,不得在 Test 阶段顺手改代码;修复后重跑本阶段,全过后用户确认再关单。
54
54
 
55
- ## 确认后
55
+ ## 6. 确认后(关单)
56
56
 
57
- - 输出测试报告(通过项 / 失败项)
58
- - 失败项已修复并复测通过
57
+ - 输出测试报告(通过项 / 失败项);失败项已修复并复测通过。
59
58
  - **关单**(日常闭环点,不依赖是否上 prod):
60
59
  - 关单前一键过门:`node .agents/scripts/verify.mjs --doc workflow/intents/<本单>.md`(npm test + check-loop 固定编排,任一失败非零退出,非绿不关单);**`--doc` 把测试绿凭证绑到本单**——不带它落下的绿行不给任何单背书,confirm-doc 前置与检查 8 对账只认带本单 `--doc` 的绿行(仅 v6+ 生效);**装户仓**(根目录无 `package.json`,工程在子目录)默认 `npm test` 不可跑 → 脚本**显式跳过步骤 1 且不落测试绿凭证**(防假绿)并提示;此时按项目口径手工跑测试,或带 `--test-cmd "<项目测试命令>"` 指定(2026-10-07 papercut)
61
- - 新需求:逐条勾验入口 intent「验收标准」,每条补「证据:」(例如:粘贴 CI 运行结果、UI 截图路径、或具体的 commit SHA),intent $\rightarrow$ done;同名 spec/Quick-Plan(若有)仍 approved $\rightarrow$ done。**注意:勾选但缺证据会被 check-loop 拦截(hard-block)**
60
+ - 新需求:逐条勾验入口 intent「验收标准」,每条补「证据:」(例如:粘贴 CI 运行结果、UI 截图路径、或具体的 commit SHA),intent → done;同名 spec/Quick-Plan(若有)仍 approved → done。**注意:勾选但缺证据会被 check-loop 拦截(hard-block)**
62
61
  - **approved 留痕提交**(2026-09-30 起):done 确认前确认**本次关单文档**的 approved 态已进 git 历史(越早越好——approved 后即应提交;若尚未,先补提交再 done;门为逐份校验,三件套均关单时逐份各自满足)——confirm-doc 的 done 前置门硬校验(历史未出现「状态: approved」→ 拒绝落账);done 后再提交 done 态与其余改动
63
- **确认落态唯一入口**(2026-09-27 起):用户在终端跑 `node .agents/scripts/confirm-doc.mjs <path>` 键入「可以」(draft→approved / approved→done;对话内明确确认后 AI 可 `--delegated "<原话>"` 代录,台账如实记 source/quote——**逐件调用 + 逐件原话**(一次一份,build.md「逐件确认」口径;多份并录被 confirm-doc 拒绝。--delegated 每次传当次实际放行的措辞,不复用同句——复用同句使台账 quote 失去分辨力))。check-loop 15 如实口径:缺记录/指纹不配对 → hard-block 拦截;伪造台账本地不可机器防,留痕供事后对质;done 内容绑定(2026-09-28 起)——**关单编辑(勾验/回填确认结果)先于 done 确认、confirm-doc 是最后一次写入**,此后修订走 superseded 或新 intent。
62
+ - **确认落态**:唯一入口 `node .agents/scripts/confirm-doc.mjs <path>`(两形态 / 逐件+逐件原话 / done 内容绑定(关单编辑先于 done 确认、confirm-doc 是最后一次写入)/ 台账对质全口径见根 `AGENTS.md` §1.3 确认门)。
64
63
  - 修复:防复发验证已落地,incident → closed(经确认门 confirm-doc:open→fixed / fixed→closed 两跳、无单跳;2026-09-28 起 check-loop 15 对账——关单编辑先于 closed 确认,口径同 done 内容绑定)
65
64
  - **同族收尾**:入口置终态时,同名 plan 一并置 `done`(spec 见上条),不留 `approved` 孤儿(口径同看板「入口已 done,本 plan 未终态」告警)
66
65
  - 主智能体自做的 L1+ 新需求在 `workflow/delegations.md`「自做任务结果表」记一行(修复类不重复记)
@@ -6,7 +6,7 @@ description: 在已批准且边界明确的工作包内实现改动或补测试
6
6
 
7
7
  > 公共角色契约(本文件):`.agents/roles/implementer.md`。宿主薄适配(各宿主目录下 `agents/implementer.md`)正文段同源本文件,frontmatter 各自保留宿主特化字段(check-loop 检查项 6 按本引用校验适配层不断线)。
8
8
 
9
- ## 职责
9
+ ## 1. 职责
10
10
 
11
11
  执行已经由主智能体和用户确认、范围明确的实现任务。适用范围仅限:
12
12
 
@@ -15,7 +15,7 @@ description: 在已批准且边界明确的工作包内实现改动或补测试
15
15
  - 编写或调整任务直接要求的测试
16
16
  - 修复与任务直接相关的编译错误
17
17
 
18
- ## 必需输入
18
+ ## 2. 必需输入
19
19
 
20
20
  开始前必须获得:
21
21
 
@@ -26,7 +26,7 @@ description: 在已批准且边界明确的工作包内实现改动或补测试
26
26
 
27
27
  任一输入缺失或相互冲突时,停止并向主智能体报告,不自行扩大范围。
28
28
 
29
- ## 行为边界
29
+ ## 3. 行为边界
30
30
 
31
31
  - 只修改明确授权的文件;若必须触及其他文件,先停止并说明原因。
32
32
  - 仓库可能有其他智能体或用户同时工作;保留现有改动,不回退、不覆盖无关修改。
@@ -35,13 +35,13 @@ description: 在已批准且边界明确的工作包内实现改动或补测试
35
35
  - 不执行提交、推送、发布、数据迁移或破坏性操作。
36
36
  - 不顺手重构、格式化或清理与任务无关的代码。
37
37
 
38
- ## 验证
38
+ ## 4. 验证
39
39
 
40
40
  - 运行任务指定的最小相关检查。
41
41
  - 检查失败时只修复由本次改动引起且仍在授权范围内的问题。
42
42
  - 同一验证连续失败三次,或继续需要猜测需求时,停止并报告阻塞。
43
43
 
44
- ## 输出
44
+ ## 5. 输出
45
45
 
46
46
  返回给主智能体:
47
47
 
@@ -49,4 +49,3 @@ description: 在已批准且边界明确的工作包内实现改动或补测试
49
49
  2. 每个文件的改动摘要
50
50
  3. 已运行的验证及结果
51
51
  4. 未解决的阻塞或剩余风险
52
-
@@ -6,11 +6,11 @@ description: 只读独立复核(spec 或实现 diff);不改动文件、不
6
6
 
7
7
  > 公共角色契约(本文件):`.agents/roles/independent-reviewer.md`。宿主薄适配(各宿主目录下 `agents/independent-reviewer.md`)正文段同源本文件,frontmatter 各自保留宿主特化字段(check-loop 检查项 6 按本引用校验适配层不断线)。
8
8
 
9
- ## 职责
9
+ ## 1. 职责
10
10
 
11
11
  在独立上下文中对 spec、plan 或代码 diff 做只读复核,发现原作者可能遗漏的正确性、契约、架构、数据安全和回归风险。
12
12
 
13
- ## 必需输入
13
+ ## 2. 必需输入
14
14
 
15
15
  开始前必须获得:
16
16
 
@@ -21,7 +21,7 @@ description: 只读独立复核(spec 或实现 diff);不改动文件、不
21
21
 
22
22
  输入不足以确定范围时,停止并向主智能体报告。
23
23
 
24
- ## 行为边界
24
+ ## 3. 行为边界
25
25
 
26
26
  - 只读,不修改任何仓库文件。
27
27
  - 不替用户决定问题定性、方案取舍、合入或上线。
@@ -30,7 +30,7 @@ description: 只读独立复核(spec 或实现 diff);不改动文件、不
30
30
  - 不把样式偏好、假设性风险或既有无关问题包装成缺陷。
31
31
  - 无法验证的事项明确标为未验证,不声称已经通过。
32
32
 
33
- ## 复核重点
33
+ ## 4. 复核重点
34
34
 
35
35
  1. 实现是否满足入口文档和验收标准
36
36
  2. 是否违反根 `AGENTS.md` 与改动域目录级 `AGENTS.md` 的架构、数据和所在域红线
@@ -38,7 +38,7 @@ description: 只读独立复核(spec 或实现 diff);不改动文件、不
38
38
  4. 是否缺少能防止回归的验证
39
39
  5. 是否存在数据丢失、安全、权限或发布风险
40
40
 
41
- ## 输出
41
+ ## 5. 输出
42
42
 
43
43
  按严重度输出问题清单:
44
44
 
@@ -46,4 +46,4 @@ description: 只读独立复核(spec 或实现 diff);不改动文件、不
46
46
  - `P1`:功能错误、明确回归或违反项目硬约束
47
47
  - `P2`:非阻断但有证据的维护性问题
48
48
 
49
- 每项必须包含:位置、问题、证据、建议。没有发现时明确输出“未发现阻断问题”,并列出未验证范围。
49
+ 每项必须包含:位置、问题、证据、建议。没有发现时明确输出"未发现阻断问题",并列出未验证范围。
@@ -6,11 +6,11 @@ description: 浏览器实测 UI 改动(只读验证、不留脏数据);结
6
6
 
7
7
  > 公共角色契约(本文件):`.agents/roles/ui-verifier.md`。宿主薄适配(各宿主目录下 `agents/ui-verifier.md`)正文段同源本文件,frontmatter 各自保留宿主特化字段(check-loop 检查项 6 按本引用校验适配层不断线)。
8
8
 
9
- ## 职责
9
+ ## 1. 职责
10
10
 
11
11
  对已经实现的 UI 改动执行浏览器实测并收集可复核证据。只验证,不修复。
12
12
 
13
- ## 必需输入
13
+ ## 2. 必需输入
14
14
 
15
15
  开始前必须获得:
16
16
 
@@ -21,7 +21,7 @@ description: 浏览器实测 UI 改动(只读验证、不留脏数据);结
21
21
 
22
22
  缺少可观察的预期结果时,停止并向主智能体报告。
23
23
 
24
- ## 执行
24
+ ## 3. 执行
25
25
 
26
26
  1. 读取项目根目录 `AGENTS.md`,以及改动域目录级 `AGENTS.md`(如有,前端改动域)。
27
27
  2. 读取并遵循项目 UI 实测技能 `.agents/skills/verify-ui/SKILL.md`(如有)。
@@ -30,14 +30,14 @@ description: 浏览器实测 UI 改动(只读验证、不留脏数据);结
30
30
  5. 收集控制台、网络请求、DOM 数据或截图等证据。
31
31
  6. 结束时关闭本次启动的后台进程。
32
32
 
33
- ## 行为边界
33
+ ## 4. 行为边界
34
34
 
35
35
  - 不修改代码、配置、测试数据或工作流文档。
36
36
  - 不自行修复发现的问题;将失败证据交还主智能体。
37
37
  - 不使用生产环境或真实业务数据。
38
38
  - 无法启动环境或完成关键路径时,报告阻塞,不把部分验证标记为通过。
39
39
 
40
- ## 输出
40
+ ## 5. 输出
41
41
 
42
42
  返回:
43
43
 
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "agentic-flow-kit",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "AI-Native 闭环工作流 + wiki 知识层脚手架——flow-kit init 一条命令为新项目装好 .agents 工作流引擎(阶段命令/角色契约/门禁钩子/kb 检索/看板/规则面预算)+ workflow 文档闭环 + wiki 知识库,装完自包含、零运行时依赖",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "test": "node src/run-tests.mjs",
8
+ "lint": "eslint .",
8
9
  "prepack": "node -e \"require('fs').rmSync('templates/_agents/cache',{recursive:true,force:true})\" && node scripts/check-pack-eol.mjs"
9
10
  },
10
11
  "bin": {
@@ -41,5 +42,9 @@
41
42
  "bugs": {
42
43
  "url": "https://github.com/zerosloney/agentic-flow-kit/issues"
43
44
  },
44
- "homepage": "https://github.com/zerosloney/agentic-flow-kit#readme"
45
+ "homepage": "https://github.com/zerosloney/agentic-flow-kit#readme",
46
+ "devDependencies": {
47
+ "@eslint/js": "^9.39.5",
48
+ "eslint": "^9.39.4"
49
+ }
45
50
  }
package/src/doctor.mjs CHANGED
@@ -10,7 +10,7 @@ import { isOwned, HOSTS, pickStackVars, srcTemplatePath, templateDriftOf, TEMPLA
10
10
  // 宿主目录映射(与 src/profiles.mjs#HOSTS 同源:装副本目录名前缀带点)
11
11
  const HOST_DIR = Object.fromEntries(Object.entries(HOSTS).map(([k, v]) => [k, v.dir]));
12
12
  // 命令层薄适配宿主:[装副本目录名, 文件名前缀](单源 profiles.mjs#HOSTS.commandPrefix;与 sync-hosts pairsFor 同口径)
13
- const HOST_CMD_DIR = Object.entries(HOSTS).filter(([, v]) => v.commandPrefix).map(([k, v]) => [v.dir, v.commandPrefix]);
13
+ const HOST_CMD_DIR = Object.entries(HOSTS).filter(([, v]) => v.commandPrefix).map(([, v]) => [v.dir, v.commandPrefix]);
14
14
 
15
15
  function sh(cmd, cwd) {
16
16
  try {
package/src/init.test.mjs CHANGED
@@ -83,7 +83,7 @@ check('合并:原内容为空时骨架即全文', mergeAgents('', '<!-- m -->\
83
83
  const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'init-p1-'));
84
84
  const pkgRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
85
85
  const vars = { BOARD_PORT: '8933' };
86
- const t = renderTree(path.join(pkgRoot, 'templates'), tmp, vars, { force: true });
86
+ renderTree(path.join(pkgRoot, 'templates'), tmp, vars, { force: true });
87
87
  // P1-1:renderTree 落盘执行位——win32 下 statSync().mode 无 0o111 语义(恒 0666 系),
88
88
  // 断言「writeFileSync 带 mode 参数不炸 + POSIX 语义表达」;真值在 POSIX CI 腿验证
89
89
  const hookStat = fs.statSync(path.join(tmp, '.githooks', 'pre-commit'));
package/src/run-tests.mjs CHANGED
@@ -1,6 +1,9 @@
1
- // run-tests.mjs — 全套测试入口(npm test):CLI 单测(sync/add-host/add-gate)+ 引擎 *.test.mjs 套件。
1
+ // run-tests.mjs — 全套测试入口(npm test):lint 首步 + CLI 单测(sync/add-host/add-gate)+ 引擎 *.test.mjs 套件。
2
2
  // 顺序执行、任一非零整体失败(exit 1)。check-loop 套件自 2026-09-26 check-loop-node 起为 node 实现
3
3
  // (check-loop.test.mjs 由下方 glob 自动发现——旧 bash 特判与「无 sh 跳过」提示随迁移退役)。
4
+ // lint 首步(2026-10-08 engine-quality-batch):eslint 仅 devDependency(包源仓)——检测到未安装时
5
+ // 显式打印 skip 后继续(裸 checkout 未 npm install 场景的可诊断性;装户仓无本编排器不涉及),
6
+ // 已安装但报错则 fail-closed 计入失败。
4
7
  import { spawnSync } from 'node:child_process';
5
8
  import fs from 'node:fs';
6
9
  import path from 'node:path';
@@ -25,6 +28,17 @@ const nodeSuites = [
25
28
  ];
26
29
 
27
30
  let failed = 0;
31
+
32
+ // lint 首步:eslint 可用性探测 = require.resolve 于包源仓 node_modules(裸 checkout 解析失败 → 显式跳过)
33
+ console.log('\n===== lint(eslint .)=====');
34
+ const eslintEntry = spawnSync(process.execPath, ['-e', "require.resolve('eslint')"], { cwd: ROOT, encoding: 'utf8' });
35
+ if (eslintEntry.status !== 0) {
36
+ console.log('[lint] skipped: eslint not installed(npm install 后启用;仅包源仓场景)');
37
+ } else {
38
+ const r = spawnSync(process.execPath, [path.join(ROOT, 'node_modules/eslint/bin/eslint.js'), '.'], { cwd: ROOT, stdio: 'inherit' });
39
+ if (r.status !== 0) failed++;
40
+ }
41
+
28
42
  for (const rel of nodeSuites) {
29
43
  console.log(`\n===== ${rel} =====`);
30
44
  const r = spawnSync(process.execPath, [path.join(ROOT, rel)], { cwd: ROOT, stdio: 'inherit' });