@fitlab-ai/agent-infra 0.7.0 → 0.7.2

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 (156) hide show
  1. package/bin/cli.ts +12 -1
  2. package/dist/bin/cli.js +13 -1
  3. package/dist/lib/builtin-tuis.js +45 -0
  4. package/dist/lib/defaults.json +3 -0
  5. package/dist/lib/init.js +62 -23
  6. package/dist/lib/prompt.js +49 -1
  7. package/dist/lib/sandbox/commands/create.js +10 -2
  8. package/dist/lib/sandbox/commands/enter.js +8 -7
  9. package/dist/lib/sandbox/commands/list-running.js +62 -28
  10. package/dist/lib/sandbox/commands/ls.js +20 -22
  11. package/dist/lib/sandbox/commands/rebuild.js +3 -11
  12. package/dist/lib/sandbox/commands/rm.js +2 -0
  13. package/dist/lib/sandbox/image-prune.js +18 -0
  14. package/dist/lib/sandbox/index.js +7 -3
  15. package/dist/lib/sandbox/task-resolver.js +18 -0
  16. package/dist/lib/sandbox/tools.js +1 -1
  17. package/dist/lib/table.js +29 -0
  18. package/dist/lib/task/commands/ls.js +122 -0
  19. package/dist/lib/task/commands/show.js +135 -0
  20. package/dist/lib/task/frontmatter.js +32 -0
  21. package/dist/lib/task/index.js +41 -0
  22. package/dist/lib/task/short-id.js +80 -0
  23. package/dist/lib/update.js +59 -18
  24. package/lib/builtin-tuis.ts +55 -0
  25. package/lib/defaults.json +3 -0
  26. package/lib/init.ts +87 -35
  27. package/lib/prompt.ts +54 -1
  28. package/lib/sandbox/commands/create.ts +11 -2
  29. package/lib/sandbox/commands/enter.ts +8 -7
  30. package/lib/sandbox/commands/list-running.ts +70 -31
  31. package/lib/sandbox/commands/ls.ts +25 -25
  32. package/lib/sandbox/commands/rebuild.ts +3 -12
  33. package/lib/sandbox/commands/rm.ts +3 -0
  34. package/lib/sandbox/image-prune.ts +23 -0
  35. package/lib/sandbox/index.ts +7 -3
  36. package/lib/sandbox/task-resolver.ts +23 -1
  37. package/lib/sandbox/tools.ts +1 -1
  38. package/lib/table.ts +32 -0
  39. package/lib/task/commands/ls.ts +138 -0
  40. package/lib/task/commands/show.ts +139 -0
  41. package/lib/task/frontmatter.ts +30 -0
  42. package/lib/task/index.ts +44 -0
  43. package/lib/task/short-id.ts +97 -0
  44. package/lib/update.ts +71 -30
  45. package/package.json +1 -1
  46. package/templates/.agents/README.en.md +32 -0
  47. package/templates/.agents/README.zh-CN.md +32 -0
  48. package/templates/.agents/hooks/auto-resume.sh +87 -0
  49. package/templates/.agents/rules/create-issue.github.en.md +1 -1
  50. package/templates/.agents/rules/create-issue.github.zh-CN.md +1 -1
  51. package/templates/.agents/rules/milestone-inference.github.en.md +4 -1
  52. package/templates/.agents/rules/milestone-inference.github.zh-CN.md +4 -1
  53. package/templates/.agents/rules/next-step-output.en.md +59 -0
  54. package/templates/.agents/rules/next-step-output.zh-CN.md +59 -0
  55. package/templates/.agents/rules/task-short-id.en.md +133 -0
  56. package/templates/.agents/rules/task-short-id.zh-CN.md +105 -0
  57. package/templates/.agents/scripts/platform-adapters/platform-sync.github.js +17 -0
  58. package/templates/.agents/scripts/task-short-id.js +556 -0
  59. package/templates/.agents/skills/analyze-task/SKILL.en.md +13 -11
  60. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +13 -12
  61. package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -1
  62. package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -1
  63. package/templates/.agents/skills/block-task/SKILL.en.md +17 -5
  64. package/templates/.agents/skills/block-task/SKILL.zh-CN.md +17 -6
  65. package/templates/.agents/skills/block-task/config/verify.json +1 -1
  66. package/templates/.agents/skills/cancel-task/SKILL.en.md +17 -5
  67. package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +17 -6
  68. package/templates/.agents/skills/cancel-task/config/verify.json +1 -1
  69. package/templates/.agents/skills/check-task/SKILL.en.md +15 -9
  70. package/templates/.agents/skills/check-task/SKILL.zh-CN.md +15 -10
  71. package/templates/.agents/skills/close-codescan/SKILL.en.md +16 -5
  72. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +16 -5
  73. package/templates/.agents/skills/close-dependabot/SKILL.en.md +16 -5
  74. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +16 -5
  75. package/templates/.agents/skills/code-task/SKILL.en.md +13 -5
  76. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +14 -6
  77. package/templates/.agents/skills/code-task/config/verify.en.json +2 -1
  78. package/templates/.agents/skills/code-task/config/verify.zh-CN.json +2 -1
  79. package/templates/.agents/skills/code-task/reference/fix-mode.en.md +10 -5
  80. package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +10 -5
  81. package/templates/.agents/skills/code-task/reference/output-template.en.md +3 -3
  82. package/templates/.agents/skills/code-task/reference/output-template.zh-CN.md +3 -3
  83. package/templates/.agents/skills/code-task/reference/report-template.en.md +8 -0
  84. package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +8 -0
  85. package/templates/.agents/skills/commit/SKILL.en.md +5 -1
  86. package/templates/.agents/skills/commit/SKILL.zh-CN.md +5 -1
  87. package/templates/.agents/skills/commit/reference/task-status-update.en.md +9 -9
  88. package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +9 -9
  89. package/templates/.agents/skills/complete-task/SKILL.en.md +17 -1
  90. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +17 -2
  91. package/templates/.agents/skills/complete-task/config/verify.en.json +1 -1
  92. package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +1 -1
  93. package/templates/.agents/skills/create-pr/SKILL.en.md +9 -5
  94. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +9 -5
  95. package/templates/.agents/skills/create-pr/config/verify.json +2 -1
  96. package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +1 -1
  97. package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +1 -1
  98. package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +3 -3
  99. package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +3 -3
  100. package/templates/.agents/skills/create-task/SKILL.en.md +29 -15
  101. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +29 -16
  102. package/templates/.agents/skills/create-task/config/verify.json +1 -1
  103. package/templates/.agents/skills/import-codescan/SKILL.en.md +20 -6
  104. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +20 -6
  105. package/templates/.agents/skills/import-codescan/config/verify.json +1 -1
  106. package/templates/.agents/skills/import-dependabot/SKILL.en.md +20 -6
  107. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +20 -6
  108. package/templates/.agents/skills/import-dependabot/config/verify.json +1 -1
  109. package/templates/.agents/skills/import-issue/SKILL.en.md +19 -5
  110. package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +19 -5
  111. package/templates/.agents/skills/plan-task/SKILL.en.md +13 -11
  112. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +13 -12
  113. package/templates/.agents/skills/plan-task/config/verify.en.json +1 -1
  114. package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +1 -1
  115. package/templates/.agents/skills/restore-task/SKILL.en.md +12 -0
  116. package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +12 -1
  117. package/templates/.agents/skills/review-analysis/SKILL.en.md +7 -1
  118. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +7 -2
  119. package/templates/.agents/skills/review-analysis/config/verify.en.json +3 -2
  120. package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +3 -2
  121. package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +15 -15
  122. package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +15 -15
  123. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +7 -1
  124. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +7 -1
  125. package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +2 -0
  126. package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +2 -0
  127. package/templates/.agents/skills/review-code/SKILL.en.md +8 -1
  128. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +8 -2
  129. package/templates/.agents/skills/review-code/config/verify.en.json +3 -2
  130. package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -2
  131. package/templates/.agents/skills/review-code/reference/output-templates.en.md +9 -9
  132. package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +9 -9
  133. package/templates/.agents/skills/review-code/reference/report-template.en.md +7 -1
  134. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +7 -1
  135. package/templates/.agents/skills/review-code/reference/review-criteria.en.md +2 -0
  136. package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +2 -0
  137. package/templates/.agents/skills/review-plan/SKILL.en.md +7 -1
  138. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +7 -2
  139. package/templates/.agents/skills/review-plan/config/verify.en.json +3 -2
  140. package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +3 -2
  141. package/templates/.agents/skills/review-plan/reference/output-templates.en.md +15 -15
  142. package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +15 -15
  143. package/templates/.agents/skills/review-plan/reference/report-template.en.md +7 -1
  144. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +7 -1
  145. package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +2 -0
  146. package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +2 -0
  147. package/templates/.agents/skills/update-agent-infra/SKILL.en.md +1 -0
  148. package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +1 -0
  149. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +112 -21
  150. package/templates/.agents/workflows/bug-fix.en.yaml +1 -1
  151. package/templates/.agents/workflows/bug-fix.zh-CN.yaml +1 -1
  152. package/templates/.agents/workflows/feature-development.en.yaml +1 -1
  153. package/templates/.agents/workflows/feature-development.zh-CN.yaml +1 -1
  154. package/templates/.agents/workflows/refactoring.en.yaml +1 -1
  155. package/templates/.agents/workflows/refactoring.zh-CN.yaml +1 -1
  156. package/templates/.claude/settings.json +11 -0
@@ -43,9 +43,9 @@ Task {task-id} review completed. Verdict: approved.
43
43
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
44
44
 
45
45
  Next step - fix before commit (recommended):
46
- - Claude Code / OpenCode: /code-task {task-id}
47
- - Gemini CLI: /agent-infra:code-task {task-id}
48
- - Codex CLI: $code-task {task-id}
46
+ - Claude Code / OpenCode: /code-task {task-ref}
47
+ - Gemini CLI: /agent-infra:code-task {task-ref}
48
+ - Codex CLI: $code-task {task-ref}
49
49
 
50
50
  Or commit directly (skip fix):
51
51
  - Claude Code / OpenCode: /commit
@@ -64,9 +64,9 @@ Task {task-id} review completed. Verdict: changes requested.
64
64
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
65
65
 
66
66
  Next step - fix the findings:
67
- - Claude Code / OpenCode: /code-task {task-id}
68
- - Gemini CLI: /agent-infra:code-task {task-id}
69
- - Codex CLI: $code-task {task-id}
67
+ - Claude Code / OpenCode: /code-task {task-ref}
68
+ - Gemini CLI: /agent-infra:code-task {task-ref}
69
+ - Codex CLI: $code-task {task-ref}
70
70
 
71
71
  [When env-blocked > 0, append this final line:]
72
72
  Reminder: env-blocked findings must be carried in the PR description as a "manual verification required" checklist and should not trigger /code-task.
@@ -80,9 +80,9 @@ Task {task-id} review completed. Verdict: rejected, re-design the technical plan
80
80
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
81
81
 
82
82
  Next step - re-design the technical plan:
83
- - Claude Code / OpenCode: /plan-task {task-id}
84
- - Gemini CLI: /agent-infra:plan-task {task-id}
85
- - Codex CLI: $plan-task {task-id}
83
+ - Claude Code / OpenCode: /plan-task {task-ref}
84
+ - Gemini CLI: /agent-infra:plan-task {task-ref}
85
+ - Codex CLI: $plan-task {task-ref}
86
86
 
87
87
  > Note: Rejected means the implementation direction needs to be reworked end-to-end, not patched locally. `code-task/scripts/detect-mode.js` branch #7 refuses a direct `/code-task` and requires a fresh plan first.
88
88
 
@@ -43,9 +43,9 @@
43
43
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
44
44
 
45
45
  下一步 - 修复问题后提交(推荐):
46
- - Claude Code / OpenCode:/code-task {task-id}
47
- - Gemini CLI:/agent-infra:code-task {task-id}
48
- - Codex CLI:$code-task {task-id}
46
+ - Claude Code / OpenCode:/code-task {task-ref}
47
+ - Gemini CLI:/agent-infra:code-task {task-ref}
48
+ - Codex CLI:$code-task {task-ref}
49
49
 
50
50
  或直接提交(跳过修复):
51
51
  - Claude Code / OpenCode:/commit
@@ -64,9 +64,9 @@
64
64
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
65
65
 
66
66
  下一步 - 修复问题:
67
- - Claude Code / OpenCode:/code-task {task-id}
68
- - Gemini CLI:/agent-infra:code-task {task-id}
69
- - Codex CLI:$code-task {task-id}
67
+ - Claude Code / OpenCode:/code-task {task-ref}
68
+ - Gemini CLI:/agent-infra:code-task {task-ref}
69
+ - Codex CLI:$code-task {task-ref}
70
70
 
71
71
  [当 env-blocked > 0 时,在最后附加一行:]
72
72
  提醒:env-blocked 项需在 PR description 的「待人工验证」清单中承接,不应触发 /code-task。
@@ -80,9 +80,9 @@
80
80
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
81
81
 
82
82
  下一步 - 重新设计技术方案:
83
- - Claude Code / OpenCode:/plan-task {task-id}
84
- - Gemini CLI:/agent-infra:plan-task {task-id}
85
- - Codex CLI:$plan-task {task-id}
83
+ - Claude Code / OpenCode:/plan-task {task-ref}
84
+ - Gemini CLI:/agent-infra:plan-task {task-ref}
85
+ - Codex CLI:$plan-task {task-ref}
86
86
 
87
87
  > 注意:Rejected 表示实现方向需要整体重做,不是局部修复。`code-task/scripts/detect-mode.js` 分支 #7 会拒绝直接 `/code-task`,要求先重新方案设计。
88
88
 
@@ -61,7 +61,7 @@ Use this template when writing `review-code.md` or `review-code-r{N}.md`.
61
61
 
62
62
  ## Evidence
63
63
 
64
- > Pair each "I verified X" claim with the corresponding raw tool output; the gate only checks that this section exists and at least one `$ ` line is present.
64
+ > Pair each "I verified X" claim with the corresponding raw tool output; the gate only checks that this section exists and at least one `$ ` line is present. Every Blocker must be backed by a reproducible command (rg/grep/sed/nl) and its raw output; a judgment that cannot be reproduced must be downgraded or moved to Self-Doubt.
65
65
 
66
66
  - Claim: {verified claim}
67
67
  ```text
@@ -69,6 +69,12 @@ $ {command}
69
69
  {raw output}
70
70
  ```
71
71
 
72
+ ## Self-Doubt
73
+
74
+ > Explicitly declare conclusions, inferences, and assumptions in this review that were **not directly verified**; downstream can rebut them on this basis. Write "None" if there are none.
75
+
76
+ - {an unverified conclusion or inference; note why it was not verified and the impact if it is overturned}
77
+
72
78
  ## Highlights
73
79
 
74
80
  - {what went well}
@@ -62,7 +62,7 @@
62
62
 
63
63
  ## 证据原文
64
64
 
65
- > 每条“我验证了 X”断言都要配对对应 tool output 原文;gate 仅校验本段存在和至少一行 `$ `。
65
+ > 每条“我验证了 X”断言都要配对对应 tool output 原文;gate 仅校验本段存在和至少一行 `$ `。每条 Blocker 必须配可复现命令(rg/grep/sed/nl)及其原文;无法复现的判断须降级或移入「自我质疑」。
66
66
 
67
67
  - 断言:{verified claim}
68
68
  ```text
@@ -70,6 +70,12 @@ $ {command}
70
70
  {raw output}
71
71
  ```
72
72
 
73
+ ## 自我质疑
74
+
75
+ > 显式声明本轮审查中**未直接验证**的结论、推断项与所作假设;下游据此可反驳。无则写「(无)」。
76
+
77
+ - {未直接验证的结论或推断;说明为何未验证、若被推翻的影响}
78
+
73
79
  ## 亮点
74
80
 
75
81
  - {what went well}
@@ -14,11 +14,13 @@ Follow the `code-review` step in `.agents/workflows/feature-development.yaml`.
14
14
  - [ ] Performance and security risks
15
15
  - [ ] Comments and documentation
16
16
  - [ ] Consistency with the approved technical plan
17
+ - [ ] Every blocker is backed by reproducible grep/sed/nl evidence; conclusions not directly verified are declared under Self-Doubt
17
18
 
18
19
  **Common anti-examples**:
19
20
  - Checking only whether tests pass without reading the actual diff
20
21
  - Treating wording preferences as reproducible code problems
21
22
  - Misclassifying environment-limited verification gaps as blockers
23
+ - Asserting a `file:line` or behavior from memory or impression without verifying via rg/nl
22
24
 
23
25
  ## Common Review Principles
24
26
 
@@ -14,11 +14,13 @@
14
14
  - [ ] 性能与安全风险
15
15
  - [ ] 代码注释和文档
16
16
  - [ ] 与已批准技术方案的一致性
17
+ - [ ] 每条 blocker 都配可复现的 grep/sed/nl 证据,未直接验证的结论已在「自我质疑」声明
17
18
 
18
19
  **常见反例**:
19
20
  - 只检查测试是否通过,没有阅读实际 diff
20
21
  - 用自然语言措辞偏好替代可复现的代码问题
21
22
  - 把环境缺失导致无法验证的事项误归类为 blocker
23
+ - 凭印象或记忆断言 `file:line`/行为,没有用 rg/nl 复核就下结论
22
24
 
23
25
  ## 通用审查原则
24
26
 
@@ -26,6 +26,10 @@ ls -la .agents/workspace/active/{task-id}/
26
26
  tail .agents/workspace/active/{task-id}/task.md
27
27
  ```
28
28
 
29
+ ## Task id short ref
30
+
31
+ > If `{task-id}` matches `^[#]?[0-9]+$` (bare numeric or `#`-prefixed), follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
32
+
29
33
  ## Steps
30
34
 
31
35
  ### 1. Verify Prerequisites
@@ -61,7 +65,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
61
65
  ```
62
66
 
63
67
  Set `current_step` to `technical-design-review`, refresh task metadata, and append:
64
- `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Plan Review (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {review-artifact}`
68
+ `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Review Plan (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {review-artifact}`
65
69
 
66
70
  If task.md has a valid `issue_number`, read `.agents/rules/issue-sync.md`, sync the task comment, and publish the `{review-artifact}` comment.
67
71
 
@@ -74,3 +78,5 @@ node .agents/scripts/validate-artifact.js gate review-plan .agents/workspace/act
74
78
  ### 8. Tell the User
75
79
 
76
80
  Use the conclusion branch in `reference/output-templates.md` and show all TUI command formats.
81
+
82
+ > When rendering "Next steps" commands, `{task-ref}` is the current task's short id `#NN` (see `.agents/rules/next-step-output.md` for lookup and fallback; read it before rendering). Other `{task-id}` placeholders (report titles, paths) keep the full TASK-id form.
@@ -28,8 +28,11 @@ tail .agents/workspace/active/{task-id}/task.md
28
28
 
29
29
  状态核对完成前,禁止任何关于外部状态的断言。
30
30
 
31
- ## 执行步骤
31
+ ## 任务入参短号别名
32
+
33
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
32
34
 
35
+ ## 执行步骤
33
36
  ### 1. 验证前置条件
34
37
 
35
38
  要求存在:
@@ -73,7 +76,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
73
76
  - `updated_at`:{当前时间}
74
77
  - `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
75
78
  - 追加:
76
- `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Plan Review (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {review-artifact}`
79
+ `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Review Plan (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {review-artifact}`
77
80
 
78
81
  如果 task.md 中存在有效的 `issue_number`,执行前先读取 `.agents/rules/issue-sync.md`,完成 upstream 仓库检测和权限检测,然后同步 task 评论并发布 `{review-artifact}` 评论。
79
82
 
@@ -89,6 +92,8 @@ node .agents/scripts/validate-artifact.js gate review-plan .agents/workspace/act
89
92
 
90
93
  按 `reference/output-templates.md` 的结论分支输出,并展示所有 TUI 的下一步命令。
91
94
 
95
+ > 渲染「下一步」命令时,`{task-ref}` 为当前任务短号 `#NN`(取值与回退见 `.agents/rules/next-step-output.md`,渲染前先读取)。其他 `{task-id}` 占位(报告标题、路径)保持完整 TASK-id 形式。
96
+
92
97
  ## 完成检查清单
93
98
 
94
99
  - [ ] 已审查最新方案上下文
@@ -23,7 +23,8 @@
23
23
  "Environment-Blocked Findings",
24
24
  "Conclusion and Recommendations",
25
25
  "State Check",
26
- "Evidence"
26
+ "Evidence",
27
+ "Self-Doubt"
27
28
  ],
28
29
  "required_patterns": [
29
30
  "^### Approval Decision$",
@@ -32,7 +33,7 @@
32
33
  "freshness_minutes": 30
33
34
  },
34
35
  "activity-log": {
35
- "expected_action_pattern": "Plan Review \\(Round \\d+\\)",
36
+ "expected_action_pattern": "(Review Plan|Plan Review) \\(Round \\d+\\)",
36
37
  "freshness_minutes": 30
37
38
  },
38
39
  "platform-sync": {
@@ -23,7 +23,8 @@
23
23
  "环境性遗留",
24
24
  "结论与建议",
25
25
  "状态核对",
26
- "证据原文"
26
+ "证据原文",
27
+ "自我质疑"
27
28
  ],
28
29
  "required_patterns": [
29
30
  "^### 审查决定$",
@@ -32,7 +33,7 @@
32
33
  "freshness_minutes": 30
33
34
  },
34
35
  "activity-log": {
35
- "expected_action_pattern": "Plan Review \\(Round \\d+\\)",
36
+ "expected_action_pattern": "(Review Plan|Plan Review) \\(Round \\d+\\)",
36
37
  "freshness_minutes": 30
37
38
  },
38
39
  "platform-sync": {
@@ -25,9 +25,9 @@ Task {task-id} technical plan review completed. Verdict: approved.
25
25
  [- Review report: .agents/workspace/active/{task-id}/{review-artifact}]
26
26
 
27
27
  Next step - write code:
28
- - Claude Code / OpenCode: /code-task {task-id}
29
- - Gemini CLI: /agent-infra:code-task {task-id}
30
- - Codex CLI: $code-task {task-id}
28
+ - Claude Code / OpenCode: /code-task {task-ref}
29
+ - Gemini CLI: /agent-infra:code-task {task-ref}
30
+ - Codex CLI: $code-task {task-ref}
31
31
 
32
32
  [When env-blocked > 0, append:]
33
33
  Reminder: env-blocked items belong in the PR description manual verification checklist and should not trigger /plan-task.
@@ -41,14 +41,14 @@ Task {task-id} technical plan review completed. Verdict: approved.
41
41
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
42
42
 
43
43
  Next step - revise plan before coding (recommended):
44
- - Claude Code / OpenCode: /plan-task {task-id}
45
- - Gemini CLI: /agent-infra:plan-task {task-id}
46
- - Codex CLI: $plan-task {task-id}
44
+ - Claude Code / OpenCode: /plan-task {task-ref}
45
+ - Gemini CLI: /agent-infra:plan-task {task-ref}
46
+ - Codex CLI: $plan-task {task-ref}
47
47
 
48
48
  Or proceed directly to coding:
49
- - Claude Code / OpenCode: /code-task {task-id}
50
- - Gemini CLI: /agent-infra:code-task {task-id}
51
- - Codex CLI: $code-task {task-id}
49
+ - Claude Code / OpenCode: /code-task {task-ref}
50
+ - Gemini CLI: /agent-infra:code-task {task-ref}
51
+ - Codex CLI: $code-task {task-ref}
52
52
 
53
53
  [When env-blocked > 0, append:]
54
54
  Reminder: env-blocked items belong in the PR description manual verification checklist and should not trigger /plan-task.
@@ -62,9 +62,9 @@ Task {task-id} technical plan review completed. Verdict: changes requested.
62
62
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
63
63
 
64
64
  Next step - revise technical plan:
65
- - Claude Code / OpenCode: /plan-task {task-id}
66
- - Gemini CLI: /agent-infra:plan-task {task-id}
67
- - Codex CLI: $plan-task {task-id}
65
+ - Claude Code / OpenCode: /plan-task {task-ref}
66
+ - Gemini CLI: /agent-infra:plan-task {task-ref}
67
+ - Codex CLI: $plan-task {task-ref}
68
68
 
69
69
  [When env-blocked > 0, append:]
70
70
  Reminder: env-blocked items belong in the PR description manual verification checklist and should not trigger /plan-task.
@@ -78,9 +78,9 @@ Task {task-id} technical plan review completed. Verdict: rejected, redesign requ
78
78
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
79
79
 
80
80
  Next step - redesign:
81
- - Claude Code / OpenCode: /plan-task {task-id}
82
- - Gemini CLI: /agent-infra:plan-task {task-id}
83
- - Codex CLI: $plan-task {task-id}
81
+ - Claude Code / OpenCode: /plan-task {task-ref}
82
+ - Gemini CLI: /agent-infra:plan-task {task-ref}
83
+ - Codex CLI: $plan-task {task-ref}
84
84
 
85
85
  [When env-blocked > 0, append:]
86
86
  Reminder: env-blocked items belong in the PR description manual verification checklist and should not trigger /plan-task.
@@ -25,9 +25,9 @@
25
25
  [- 审查报告:.agents/workspace/active/{task-id}/{review-artifact}]
26
26
 
27
27
  下一步 - 编写代码:
28
- - Claude Code / OpenCode:/code-task {task-id}
29
- - Gemini CLI:/agent-infra:code-task {task-id}
30
- - Codex CLI:$code-task {task-id}
28
+ - Claude Code / OpenCode:/code-task {task-ref}
29
+ - Gemini CLI:/agent-infra:code-task {task-ref}
30
+ - Codex CLI:$code-task {task-ref}
31
31
 
32
32
  [当 env-blocked > 0 时,在最后附加一行:]
33
33
  提醒:env-blocked 项需在 PR description 的「待人工验证」清单中承接,不应触发 /plan-task。
@@ -41,14 +41,14 @@
41
41
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
42
42
 
43
43
  下一步 - 修订方案后编码(推荐):
44
- - Claude Code / OpenCode:/plan-task {task-id}
45
- - Gemini CLI:/agent-infra:plan-task {task-id}
46
- - Codex CLI:$plan-task {task-id}
44
+ - Claude Code / OpenCode:/plan-task {task-ref}
45
+ - Gemini CLI:/agent-infra:plan-task {task-ref}
46
+ - Codex CLI:$plan-task {task-ref}
47
47
 
48
48
  或直接进入编码:
49
- - Claude Code / OpenCode:/code-task {task-id}
50
- - Gemini CLI:/agent-infra:code-task {task-id}
51
- - Codex CLI:$code-task {task-id}
49
+ - Claude Code / OpenCode:/code-task {task-ref}
50
+ - Gemini CLI:/agent-infra:code-task {task-ref}
51
+ - Codex CLI:$code-task {task-ref}
52
52
 
53
53
  [当 env-blocked > 0 时,在最后附加一行:]
54
54
  提醒:env-blocked 项需在 PR description 的「待人工验证」清单中承接,不应触发 /plan-task。
@@ -62,9 +62,9 @@
62
62
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
63
63
 
64
64
  下一步 - 修订技术方案:
65
- - Claude Code / OpenCode:/plan-task {task-id}
66
- - Gemini CLI:/agent-infra:plan-task {task-id}
67
- - Codex CLI:$plan-task {task-id}
65
+ - Claude Code / OpenCode:/plan-task {task-ref}
66
+ - Gemini CLI:/agent-infra:plan-task {task-ref}
67
+ - Codex CLI:$plan-task {task-ref}
68
68
 
69
69
  [当 env-blocked > 0 时,在最后附加一行:]
70
70
  提醒:env-blocked 项需在 PR description 的「待人工验证」清单中承接,不应触发 /plan-task。
@@ -78,9 +78,9 @@
78
78
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
79
79
 
80
80
  下一步 - 重新设计:
81
- - Claude Code / OpenCode:/plan-task {task-id}
82
- - Gemini CLI:/agent-infra:plan-task {task-id}
83
- - Codex CLI:$plan-task {task-id}
81
+ - Claude Code / OpenCode:/plan-task {task-ref}
82
+ - Gemini CLI:/agent-infra:plan-task {task-ref}
83
+ - Codex CLI:$plan-task {task-ref}
84
84
 
85
85
  [当 env-blocked > 0 时,在最后附加一行:]
86
86
  提醒:env-blocked 项需在 PR description 的「待人工验证」清单中承接,不应触发 /plan-task。
@@ -61,7 +61,7 @@ Use this template when writing `review-plan.md` or `review-plan-r{N}.md`.
61
61
 
62
62
  ## Evidence
63
63
 
64
- > Pair each "I verified X" claim with the corresponding raw tool output; the gate only checks that this section exists and at least one `$ ` line is present.
64
+ > Pair each "I verified X" claim with the corresponding raw tool output; the gate only checks that this section exists and at least one `$ ` line is present. Every Blocker must be backed by a reproducible command (rg/grep/sed/nl) and its raw output; a judgment that cannot be reproduced must be downgraded or moved to Self-Doubt.
65
65
 
66
66
  - Claim: {verified claim}
67
67
  ```text
@@ -69,6 +69,12 @@ $ {command}
69
69
  {raw output}
70
70
  ```
71
71
 
72
+ ## Self-Doubt
73
+
74
+ > Explicitly declare conclusions, inferences, and assumptions in this review that were **not directly verified**; downstream can rebut them on this basis. Write "None" if there are none.
75
+
76
+ - {an unverified conclusion or inference; note why it was not verified and the impact if it is overturned}
77
+
72
78
  ## Highlights
73
79
 
74
80
  - {what went well}
@@ -62,7 +62,7 @@
62
62
 
63
63
  ## 证据原文
64
64
 
65
- > 每条“我验证了 X”断言都要配对对应 tool output 原文;gate 仅校验本段存在和至少一行 `$ `。
65
+ > 每条“我验证了 X”断言都要配对对应 tool output 原文;gate 仅校验本段存在和至少一行 `$ `。每条 Blocker 必须配可复现命令(rg/grep/sed/nl)及其原文;无法复现的判断须降级或移入「自我质疑」。
66
66
 
67
67
  - 断言:{verified claim}
68
68
  ```text
@@ -70,6 +70,12 @@ $ {command}
70
70
  {raw output}
71
71
  ```
72
72
 
73
+ ## 自我质疑
74
+
75
+ > 显式声明本轮审查中**未直接验证**的结论、推断项与所作假设;下游据此可反驳。无则写「(无)」。
76
+
77
+ - {未直接验证的结论或推断;说明为何未验证、若被推翻的影响}
78
+
73
79
  ## 亮点
74
80
 
75
81
  - {what went well}
@@ -13,11 +13,13 @@ Follow the `design-review` step in `.agents/workflows/feature-development.yaml`.
13
13
  - [ ] Test strategy covers critical paths, regression risks, and edge cases
14
14
  - [ ] Risks, migration, rollback, or compatibility handling are sufficient
15
15
  - [ ] The plan avoids over-design and unrelated scope expansion
16
+ - [ ] Every blocker is backed by reproducible grep/sed/nl evidence; conclusions not directly verified are declared under Self-Doubt
16
17
 
17
18
  **Common anti-examples**:
18
19
  - Saying "modify related code" without executable steps and verification points
19
20
  - Ignoring risks or constraints listed in the analysis
20
21
  - Introducing unnecessary abstractions, configuration, or frameworks for a single-use requirement
22
+ - Asserting a `file:line` or behavior from memory or impression without verifying via rg/nl
21
23
 
22
24
  ## Common Review Principles
23
25
 
@@ -13,11 +13,13 @@
13
13
  - [ ] 测试策略是否覆盖关键路径、回归风险和边界情况
14
14
  - [ ] 风险、迁移、回滚或兼容性处理是否充分
15
15
  - [ ] 方案是否避免过度设计和无关扩张
16
+ - [ ] 每条 blocker 都配可复现的 grep/sed/nl 证据,未直接验证的结论已在「自我质疑」声明
16
17
 
17
18
  **常见反例**:
18
19
  - 方案只写“修改相关代码”,没有可执行步骤和验证点
19
20
  - 设计没有回应分析中列出的风险或约束
20
21
  - 为单次需求引入不必要的新抽象、配置或框架
22
+ - 凭印象或记忆断言 `file:line`/行为,没有用 rg/nl 复核就下结论
21
23
 
22
24
  ## 通用审查原则
23
25
 
@@ -47,6 +47,7 @@ The script outputs JSON to stdout. Parse and record the report.
47
47
  - `managed.written` / `managed.created`: updated / newly created managed files
48
48
  - `managed.removed`: deleted managed files (including old paths removed during template migrations)
49
49
  - `managed.skippedPlatform`: managed / merged entries skipped because they belong to a different platform
50
+ - `managed.skippedTUI`: managed / merged entries skipped because they are owned by a built-in TUI that is disabled in `tuis` (customTUI command files under the same path prefix are preserved)
50
51
  - `merged.pending`: list of merged files for AI to process
51
52
  - Each item has `target` (project-relative path) and `template` (template-root-relative path)
52
53
  - `registryAdded`: newly added file registry entries
@@ -39,6 +39,7 @@ node .agents/skills/update-agent-infra/scripts/sync-templates.js
39
39
  - `managed.written` / `managed.created`:已更新/新建的 managed 文件
40
40
  - `managed.removed`:被删除的 managed 文件(包括模板迁移时移除的旧路径)
41
41
  - `managed.skippedPlatform`:因归属其他平台而被跳过的 managed / merged 条目
42
+ - `managed.skippedTUI`:因 `tuis` 中未启用对应内建 TUI 而被跳过的 managed / merged 条目(落在同一路径前缀下的 customTUI 命令文件会被保留)
42
43
  - `merged.pending`:需要 AI 处理的 merged 文件列表
43
44
  - 每项包含 `target`(项目中的目标路径)和 `template`(模板根目录下的相对路径)
44
45
  - `registryAdded`:新增的文件注册条目