@fitlab-ai/agent-infra 0.7.1 → 0.7.3

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 (165) hide show
  1. package/README.md +7 -1
  2. package/README.zh-CN.md +9 -3
  3. package/bin/cli.ts +11 -0
  4. package/dist/bin/cli.js +12 -0
  5. package/dist/lib/defaults.json +0 -1
  6. package/dist/lib/init.js +0 -3
  7. package/dist/lib/sandbox/commands/create.js +10 -2
  8. package/dist/lib/sandbox/commands/enter.js +17 -18
  9. package/dist/lib/sandbox/commands/list-running.js +56 -32
  10. package/dist/lib/sandbox/commands/ls.js +27 -24
  11. package/dist/lib/sandbox/commands/start.js +36 -0
  12. package/dist/lib/sandbox/index.js +15 -3
  13. package/dist/lib/sandbox/task-resolver.js +1 -1
  14. package/dist/lib/sandbox/tools.js +1 -1
  15. package/dist/lib/table.js +38 -0
  16. package/dist/lib/task/commands/ls.js +122 -0
  17. package/dist/lib/task/commands/show.js +135 -0
  18. package/dist/lib/task/frontmatter.js +32 -0
  19. package/dist/lib/task/index.js +41 -0
  20. package/dist/lib/task/short-id.js +90 -0
  21. package/dist/lib/update.js +25 -8
  22. package/lib/defaults.json +0 -1
  23. package/lib/init.ts +0 -10
  24. package/lib/sandbox/commands/create.ts +11 -2
  25. package/lib/sandbox/commands/enter.ts +40 -20
  26. package/lib/sandbox/commands/list-running.ts +65 -37
  27. package/lib/sandbox/commands/ls.ts +35 -27
  28. package/lib/sandbox/commands/start.ts +61 -0
  29. package/lib/sandbox/index.ts +15 -3
  30. package/lib/sandbox/task-resolver.ts +1 -1
  31. package/lib/sandbox/tools.ts +1 -1
  32. package/lib/table.ts +44 -0
  33. package/lib/task/commands/ls.ts +138 -0
  34. package/lib/task/commands/show.ts +139 -0
  35. package/lib/task/frontmatter.ts +30 -0
  36. package/lib/task/index.ts +44 -0
  37. package/lib/task/short-id.ts +107 -0
  38. package/lib/update.ts +28 -10
  39. package/package.json +1 -1
  40. package/templates/.agents/hooks/auto-resume.sh +104 -0
  41. package/templates/.agents/rules/create-issue.github.en.md +1 -1
  42. package/templates/.agents/rules/create-issue.github.zh-CN.md +1 -1
  43. package/templates/.agents/rules/milestone-inference.github.en.md +4 -1
  44. package/templates/.agents/rules/milestone-inference.github.zh-CN.md +4 -1
  45. package/templates/.agents/rules/next-step-output.en.md +62 -0
  46. package/templates/.agents/rules/next-step-output.zh-CN.md +62 -0
  47. package/templates/.agents/rules/pr-checks-commands.en.md +5 -0
  48. package/templates/.agents/rules/pr-checks-commands.github.en.md +62 -0
  49. package/templates/.agents/rules/pr-checks-commands.github.zh-CN.md +62 -0
  50. package/templates/.agents/rules/pr-checks-commands.zh-CN.md +5 -0
  51. package/templates/.agents/rules/pr-sync.github.en.md +7 -0
  52. package/templates/.agents/rules/pr-sync.github.zh-CN.md +7 -0
  53. package/templates/.agents/rules/task-short-id.en.md +54 -62
  54. package/templates/.agents/rules/task-short-id.zh-CN.md +35 -54
  55. package/templates/.agents/scripts/platform-adapters/platform-sync.github.js +17 -0
  56. package/templates/.agents/scripts/task-short-id.js +32 -189
  57. package/templates/.agents/skills/analyze-task/SKILL.en.md +10 -12
  58. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +10 -12
  59. package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -1
  60. package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -1
  61. package/templates/.agents/skills/block-task/SKILL.en.md +13 -6
  62. package/templates/.agents/skills/block-task/SKILL.zh-CN.md +13 -6
  63. package/templates/.agents/skills/block-task/config/verify.json +1 -1
  64. package/templates/.agents/skills/cancel-task/SKILL.en.md +13 -6
  65. package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +13 -6
  66. package/templates/.agents/skills/cancel-task/config/verify.json +1 -1
  67. package/templates/.agents/skills/check-task/SKILL.en.md +12 -10
  68. package/templates/.agents/skills/check-task/SKILL.zh-CN.md +12 -10
  69. package/templates/.agents/skills/close-codescan/SKILL.en.md +13 -6
  70. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +13 -6
  71. package/templates/.agents/skills/close-dependabot/SKILL.en.md +13 -6
  72. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +13 -6
  73. package/templates/.agents/skills/code-task/SKILL.en.md +10 -6
  74. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +11 -6
  75. package/templates/.agents/skills/code-task/config/verify.en.json +2 -1
  76. package/templates/.agents/skills/code-task/config/verify.zh-CN.json +2 -1
  77. package/templates/.agents/skills/code-task/reference/fix-mode.en.md +10 -5
  78. package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +10 -5
  79. package/templates/.agents/skills/code-task/reference/output-template.en.md +3 -3
  80. package/templates/.agents/skills/code-task/reference/output-template.zh-CN.md +3 -3
  81. package/templates/.agents/skills/code-task/reference/report-template.en.md +8 -0
  82. package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +8 -0
  83. package/templates/.agents/skills/commit/SKILL.en.md +3 -4
  84. package/templates/.agents/skills/commit/SKILL.zh-CN.md +3 -4
  85. package/templates/.agents/skills/commit/reference/task-status-update.en.md +37 -29
  86. package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +37 -29
  87. package/templates/.agents/skills/complete-task/SKILL.en.md +41 -4
  88. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +41 -4
  89. package/templates/.agents/skills/complete-task/config/verify.en.json +1 -1
  90. package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +1 -1
  91. package/templates/.agents/skills/create-pr/SKILL.en.md +20 -11
  92. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +20 -11
  93. package/templates/.agents/skills/create-pr/config/verify.json +2 -1
  94. package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +2 -1
  95. package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +2 -1
  96. package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +3 -3
  97. package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +3 -3
  98. package/templates/.agents/skills/create-task/SKILL.en.md +17 -17
  99. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +17 -17
  100. package/templates/.agents/skills/create-task/config/verify.json +1 -1
  101. package/templates/.agents/skills/import-codescan/SKILL.en.md +8 -8
  102. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +8 -8
  103. package/templates/.agents/skills/import-codescan/config/verify.json +1 -1
  104. package/templates/.agents/skills/import-dependabot/SKILL.en.md +8 -8
  105. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +8 -8
  106. package/templates/.agents/skills/import-dependabot/config/verify.json +1 -1
  107. package/templates/.agents/skills/import-issue/SKILL.en.md +7 -7
  108. package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +7 -7
  109. package/templates/.agents/skills/plan-task/SKILL.en.md +10 -12
  110. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +10 -12
  111. package/templates/.agents/skills/plan-task/config/verify.en.json +1 -1
  112. package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +1 -1
  113. package/templates/.agents/skills/restore-task/SKILL.en.md +1 -1
  114. package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +1 -1
  115. package/templates/.agents/skills/review-analysis/SKILL.en.md +4 -2
  116. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +4 -2
  117. package/templates/.agents/skills/review-analysis/config/verify.en.json +3 -2
  118. package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +3 -2
  119. package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +15 -15
  120. package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +15 -15
  121. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +7 -1
  122. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +7 -1
  123. package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +2 -0
  124. package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +2 -0
  125. package/templates/.agents/skills/review-code/SKILL.en.md +5 -2
  126. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +5 -2
  127. package/templates/.agents/skills/review-code/config/verify.en.json +3 -2
  128. package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -2
  129. package/templates/.agents/skills/review-code/reference/output-templates.en.md +9 -9
  130. package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +9 -9
  131. package/templates/.agents/skills/review-code/reference/report-template.en.md +7 -1
  132. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +7 -1
  133. package/templates/.agents/skills/review-code/reference/review-criteria.en.md +2 -0
  134. package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +2 -0
  135. package/templates/.agents/skills/review-plan/SKILL.en.md +4 -2
  136. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +4 -2
  137. package/templates/.agents/skills/review-plan/config/verify.en.json +3 -2
  138. package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +3 -2
  139. package/templates/.agents/skills/review-plan/reference/output-templates.en.md +15 -15
  140. package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +15 -15
  141. package/templates/.agents/skills/review-plan/reference/report-template.en.md +7 -1
  142. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +7 -1
  143. package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +2 -0
  144. package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +2 -0
  145. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +0 -1
  146. package/templates/.agents/skills/watch-pr/SKILL.en.md +131 -0
  147. package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +131 -0
  148. package/templates/.agents/skills/watch-pr/config/verify.json +22 -0
  149. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +43 -0
  150. package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +43 -0
  151. package/templates/.agents/templates/task.en.md +1 -1
  152. package/templates/.agents/templates/task.zh-CN.md +1 -1
  153. package/templates/.agents/workflows/bug-fix.en.yaml +7 -5
  154. package/templates/.agents/workflows/bug-fix.zh-CN.yaml +6 -5
  155. package/templates/.agents/workflows/feature-development.en.yaml +7 -5
  156. package/templates/.agents/workflows/feature-development.zh-CN.yaml +6 -5
  157. package/templates/.agents/workflows/refactoring.en.yaml +7 -5
  158. package/templates/.agents/workflows/refactoring.zh-CN.yaml +6 -5
  159. package/templates/.claude/commands/watch-pr.en.md +8 -0
  160. package/templates/.claude/commands/watch-pr.zh-CN.md +8 -0
  161. package/templates/.claude/settings.json +11 -0
  162. package/templates/.gemini/commands/_project_/watch-pr.en.toml +8 -0
  163. package/templates/.gemini/commands/_project_/watch-pr.zh-CN.toml +8 -0
  164. package/templates/.opencode/commands/watch-pr.en.md +11 -0
  165. package/templates/.opencode/commands/watch-pr.zh-CN.md +11 -0
@@ -29,7 +29,7 @@ Before the state check is complete, do not make external-state assertions such a
29
29
 
30
30
  ## Task id short ref
31
31
 
32
- > If `{task-id}` begins with `#`, 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
+ > 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.
33
33
 
34
34
  ## Steps
35
35
 
@@ -66,6 +66,8 @@ Use it to understand:
66
66
  - identified technical risks
67
67
  - effort and complexity assessment
68
68
 
69
+ **Round ≥ 2: respond to the prior review (only when a review artifact exists)**: if the task directory contains `review-plan.md` / `review-plan-r{N}.md`, read the highest-round review report; add a `## Response to Prior Review` section to this round's plan artifact, and for each finding verify it via Read/Grep before acting (holds → accept and fix; judged hallucinated/unfounded → rebut with counter-evidence rather than defaulting to compliance); record any open disagreement under `## Open Questions`. Round 1 has no review, so skip this section.
70
+
69
71
  ### 4. Understand the Problem
70
72
 
71
73
  - Read the relevant source files identified in the analysis
@@ -115,15 +117,11 @@ Update `.agents/workspace/active/{task-id}/task.md`:
115
117
  - Mark technical-design as complete in workflow progress and include the actual round when the task template supports it
116
118
  - Before appending the workflow Activity Log entry, re-estimate `effort` based on the technical plan (number of implementation steps, files touched, test matrix scope, integration surface). If the re-estimated value differs from the current value in `task.md`:
117
119
  - Overwrite the `effort` field in frontmatter with the new value
118
- - Prepend an Activity Log entry recording the transition (placed before the `Technical Design (Round N)` entry):
119
- ```
120
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Plan Re-estimate** by {agent} — effort {old} → {new} (rationale: {short basis grounded in this plan})
121
- ```
122
- Both entries may share the same timestamp; ordering is conveyed by list position only.
123
- If the re-estimated value matches the current value, skip the Re-estimate entry. The Flow A sync that follows reads the possibly updated frontmatter and propagates the new value to the Issue automatically.
120
+ - Append a `## Effort Re-estimate` section to this round's plan artifact `{plan-artifact}`, recording: `effort {old} → {new} (rationale: {short basis grounded in this plan})`
121
+ If the re-estimated value matches the current value, skip it: do not write the `## Effort Re-estimate` section. The Flow A sync that follows reads the possibly updated frontmatter and propagates the new value to the Issue automatically.
124
122
  - **Append** to `## Activity Log` (do NOT overwrite previous entries):
125
123
  ```
126
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Technical Design (Round {N})** by {agent} — Plan completed, awaiting human review → {artifact-filename}
124
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Plan Task (Round {N})** by {agent} — Plan completed, awaiting human review → {artifact-filename}
127
125
  ```
128
126
 
129
127
  If task.md contains a valid `issue_number`, perform these sync actions (skip and continue on any failure):
@@ -152,7 +150,7 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
152
150
 
153
151
  > Execute this step only after the verification gate passes.
154
152
 
155
- > **IMPORTANT**: All TUI command formats listed below must be output in full. Do not show only the format for the current AI agent. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name).
153
+ > **IMPORTANT**: All TUI command formats listed below must be output in full. Do not show only the format for the current AI agent. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name). Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the short id `#NN` (falling back to the full TASK-id when unallocated or released); (2) append the `Completed at` line as the very last line of the user-facing output (this applies to every user-facing output — success, error, and early-return paths alike, not only the success path).
156
154
 
157
155
  Output format:
158
156
  ```
@@ -172,9 +170,9 @@ Important: human review checkpoint.
172
170
  Please review the technical plan before continuing to implementation.
173
171
 
174
172
  Next step - review the technical plan:
175
- - Claude Code / OpenCode: /review-plan {task-id}
176
- - Gemini CLI: /{{project}}:review-plan {task-id}
177
- - Codex CLI: $review-plan {task-id}
173
+ - Claude Code / OpenCode: /review-plan {task-ref}
174
+ - Gemini CLI: /{{project}}:review-plan {task-ref}
175
+ - Codex CLI: $review-plan {task-ref}
178
176
  ```
179
177
 
180
178
  ## Completion Checklist
@@ -29,7 +29,7 @@ tail .agents/workspace/active/{task-id}/task.md
29
29
 
30
30
  ## 任务入参短号别名
31
31
 
32
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
32
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
33
33
 
34
34
  ## 执行步骤
35
35
  ### 1. 验证前置条件
@@ -65,6 +65,8 @@ tail .agents/workspace/active/{task-id}/task.md
65
65
  - 已识别的技术风险
66
66
  - 工作量和复杂度评估
67
67
 
68
+ **Round ≥ 2:响应上一轮审查(仅当存在审查产物时)**:若任务目录存在 `review-plan.md` / `review-plan-r{N}.md`,读取最高轮次的审查报告;在本轮方案产物中新增 `## 对上一轮审查的响应` 段,对每条发现先 Read/Grep 核实再处置(成立 → 接受并修正;判定为幻觉/不成立 → 附反证反驳,不默认顺从),未决分歧写入 `## 未决问题`。Round 1 无审查,跳过本段。
69
+
68
70
  ### 4. 理解问题
69
71
 
70
72
  - 阅读分析中识别的相关源码文件
@@ -114,15 +116,11 @@ date "+%Y-%m-%d %H:%M:%S%:z"
114
116
  - 在工作流进度中标记 technical-design 为已完成,并注明实际轮次(如果任务模板支持)
115
117
  - 在追加工作流 Activity Log 条目之前,基于技术方案(实施步骤数、涉及文件、测试矩阵范围、集成面)重估 `effort`。若重估值与 `task.md` 当前值不一致:
116
118
  - 用新值覆盖 frontmatter 的 `effort` 字段
117
- - `Technical Design (Round N)` 条目之前追加一条转移记录:
118
- ```
119
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Plan Re-estimate** by {agent} — effort {old} → {new} (rationale: {基于本轮方案的简短依据})
120
- ```
121
- 两条条目可共用同一时间戳,顺序仅通过列表位置表达。
122
- 若重估值与当前值一致,跳过 Re-estimate 条目。后续 Flow A 同步会读取可能更新过的 frontmatter,并自动把新值同步到 Issue。
119
+ - 在本轮方案产物 `{plan-artifact}` 中追加 `## 工作量重估` 段,记录一条:`effort {old} → {new} (rationale: {基于本轮方案的简短依据})`
120
+ 若重估值与当前值一致,跳过:不写入 `## 工作量重估` 段。后续 Flow A 同步会读取可能更新过的 frontmatter,并自动把新值同步到 Issue。
123
121
  - **追加**到 `## Activity Log`(不要覆盖之前的记录):
124
122
  ```
125
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Technical Design (Round {N})** by {agent} — Plan completed, awaiting human review → {artifact-filename}
123
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Plan Task (Round {N})** by {agent} — Plan completed, awaiting human review → {artifact-filename}
126
124
  ```
127
125
 
128
126
  如果 task.md 中存在有效的 `issue_number`,执行以下同步操作(任一失败则跳过并继续):
@@ -151,7 +149,7 @@ node .agents/scripts/validate-artifact.js gate plan-task .agents/workspace/activ
151
149
 
152
150
  > 仅在校验通过后执行本步骤。
153
151
 
154
- > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
152
+ > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。 渲染最终输出前,先读取 `.agents/rules/next-step-output.md` 并落实其两类规则:(1) 「下一步」命令把 `{task-ref}` 渲染为短号 `#NN`(未分配/已释放时回退完整 TASK-id);(2) 在面向用户输出的绝对最后一行追加 `Completed at` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
155
153
 
156
154
  输出格式:
157
155
  ```
@@ -171,9 +169,9 @@ node .agents/scripts/validate-artifact.js gate plan-task .agents/workspace/activ
171
169
  请在继续实现之前审查技术方案。
172
170
 
173
171
  下一步 - 审查技术方案:
174
- - Claude Code / OpenCode:/review-plan {task-id}
175
- - Gemini CLI:/{{project}}:review-plan {task-id}
176
- - Codex CLI:$review-plan {task-id}
172
+ - Claude Code / OpenCode:/review-plan {task-ref}
173
+ - Gemini CLI:/agent-infra:review-plan {task-ref}
174
+ - Codex CLI:$review-plan {task-ref}
177
175
  ```
178
176
 
179
177
  ## 完成检查清单
@@ -33,7 +33,7 @@
33
33
  ]
34
34
  },
35
35
  "activity-log": {
36
- "expected_action_pattern": "Technical Design \\(Round \\d+\\)",
36
+ "expected_action_pattern": "(Plan Task|Technical Design) \\(Round \\d+\\)",
37
37
  "freshness_minutes": 30
38
38
  },
39
39
  "platform-sync": {
@@ -33,7 +33,7 @@
33
33
  ]
34
34
  },
35
35
  "activity-log": {
36
- "expected_action_pattern": "Technical Design \\(Round \\d+\\)",
36
+ "expected_action_pattern": "(Plan Task|Technical Design) \\(Round \\d+\\)",
37
37
  "freshness_minutes": 30
38
38
  },
39
39
  "platform-sync": {
@@ -18,7 +18,7 @@ Version stamp rule: when creating or updating `task.md` frontmatter, read `.agen
18
18
 
19
19
  ## Task id short ref
20
20
 
21
- > If `{task-id}` begins with `#`, 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.
21
+ > 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.
22
22
 
23
23
  ## Steps
24
24
 
@@ -18,7 +18,7 @@ description: "从平台 Issue 评论还原本地任务文件"
18
18
 
19
19
  ## 任务入参短号别名
20
20
 
21
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
21
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
22
22
 
23
23
  ## 执行步骤
24
24
  ### 1. 验证输入与环境
@@ -28,7 +28,7 @@ tail .agents/workspace/active/{task-id}/task.md
28
28
 
29
29
  ## Task id short ref
30
30
 
31
- > If `{task-id}` begins with `#`, 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.
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
32
 
33
33
  ## Steps
34
34
 
@@ -65,7 +65,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
65
65
  ```
66
66
 
67
67
  Set `current_step` to `requirement-analysis-review`, refresh task metadata, and append:
68
- `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Analysis 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 Analysis (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {review-artifact}`
69
69
 
70
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.
71
71
 
@@ -78,3 +78,5 @@ node .agents/scripts/validate-artifact.js gate review-analysis .agents/workspace
78
78
  ### 8. Tell the User
79
79
 
80
80
  Use the conclusion branch in `reference/output-templates.md` and show all TUI command formats.
81
+
82
+ > Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the current task's short id `#NN` (see that file for lookup and fallback), while other `{task-id}` placeholders (report titles, paths) keep the full TASK-id form; (2) append the `Completed at` line as the very last line of the user-facing output (this applies to every user-facing output — success, error, and early-return paths alike, not only the success path).
@@ -30,7 +30,7 @@ tail .agents/workspace/active/{task-id}/task.md
30
30
 
31
31
  ## 任务入参短号别名
32
32
 
33
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
33
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
34
34
 
35
35
  ## 执行步骤
36
36
  ### 1. 验证前置条件
@@ -76,7 +76,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
76
76
  - `updated_at`:{当前时间}
77
77
  - `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
78
78
  - 追加:
79
- `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Analysis 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 Analysis (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {review-artifact}`
80
80
 
81
81
  如果 task.md 中存在有效的 `issue_number`,执行前先读取 `.agents/rules/issue-sync.md`,完成 upstream 仓库检测和权限检测,然后同步 task 评论并发布 `{review-artifact}` 评论。
82
82
 
@@ -92,6 +92,8 @@ node .agents/scripts/validate-artifact.js gate review-analysis .agents/workspace
92
92
 
93
93
  按 `reference/output-templates.md` 的结论分支输出,并展示所有 TUI 的下一步命令。
94
94
 
95
+ > 渲染最终输出前先读取 `.agents/rules/next-step-output.md` 并落实其两类规则:(1) 「下一步」命令的 `{task-ref}` 渲染为当前任务短号 `#NN`(取值与回退见该文件),其他 `{task-id}` 占位(报告标题、路径)保持完整 TASK-id 形式;(2) 在面向用户输出的绝对最后一行追加 `Completed at` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
96
+
95
97
  ## 完成检查清单
96
98
 
97
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": "Analysis Review \\(Round \\d+\\)",
36
+ "expected_action_pattern": "(Review Analysis|Analysis 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": "Analysis Review \\(Round \\d+\\)",
36
+ "expected_action_pattern": "(Review Analysis|Analysis Review) \\(Round \\d+\\)",
36
37
  "freshness_minutes": 30
37
38
  },
38
39
  "platform-sync": {
@@ -25,9 +25,9 @@ Task {task-id} requirement analysis review completed. Verdict: approved.
25
25
  [- Review report: .agents/workspace/active/{task-id}/{review-artifact}]
26
26
 
27
27
  Next step - write the technical plan:
28
- - Claude Code / OpenCode: /plan-task {task-id}
29
- - Gemini CLI: /agent-infra:plan-task {task-id}
30
- - Codex CLI: $plan-task {task-id}
28
+ - Claude Code / OpenCode: /plan-task {task-ref}
29
+ - Gemini CLI: /agent-infra:plan-task {task-ref}
30
+ - Codex CLI: $plan-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 /analyze-task.
@@ -41,14 +41,14 @@ Task {task-id} requirement analysis review completed. Verdict: approved.
41
41
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
42
42
 
43
43
  Next step - revise analysis before continuing (recommended):
44
- - Claude Code / OpenCode: /analyze-task {task-id}
45
- - Gemini CLI: /agent-infra:analyze-task {task-id}
46
- - Codex CLI: $analyze-task {task-id}
44
+ - Claude Code / OpenCode: /analyze-task {task-ref}
45
+ - Gemini CLI: /agent-infra:analyze-task {task-ref}
46
+ - Codex CLI: $analyze-task {task-ref}
47
47
 
48
48
  Or proceed directly to planning:
49
- - Claude Code / OpenCode: /plan-task {task-id}
50
- - Gemini CLI: /agent-infra:plan-task {task-id}
51
- - Codex CLI: $plan-task {task-id}
49
+ - Claude Code / OpenCode: /plan-task {task-ref}
50
+ - Gemini CLI: /agent-infra:plan-task {task-ref}
51
+ - Codex CLI: $plan-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 /analyze-task.
@@ -62,9 +62,9 @@ Task {task-id} requirement analysis review completed. Verdict: changes requested
62
62
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
63
63
 
64
64
  Next step - revise requirement analysis:
65
- - Claude Code / OpenCode: /analyze-task {task-id}
66
- - Gemini CLI: /agent-infra:analyze-task {task-id}
67
- - Codex CLI: $analyze-task {task-id}
65
+ - Claude Code / OpenCode: /analyze-task {task-ref}
66
+ - Gemini CLI: /agent-infra:analyze-task {task-ref}
67
+ - Codex CLI: $analyze-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 /analyze-task.
@@ -78,9 +78,9 @@ Task {task-id} requirement analysis review completed. Verdict: rejected, fresh a
78
78
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
79
79
 
80
80
  Next step - re-analyze:
81
- - Claude Code / OpenCode: /analyze-task {task-id}
82
- - Gemini CLI: /agent-infra:analyze-task {task-id}
83
- - Codex CLI: $analyze-task {task-id}
81
+ - Claude Code / OpenCode: /analyze-task {task-ref}
82
+ - Gemini CLI: /agent-infra:analyze-task {task-ref}
83
+ - Codex CLI: $analyze-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 /analyze-task.
@@ -25,9 +25,9 @@
25
25
  [- 审查报告:.agents/workspace/active/{task-id}/{review-artifact}]
26
26
 
27
27
  下一步 - 编写技术方案:
28
- - Claude Code / OpenCode:/plan-task {task-id}
29
- - Gemini CLI:/agent-infra:plan-task {task-id}
30
- - Codex CLI:$plan-task {task-id}
28
+ - Claude Code / OpenCode:/plan-task {task-ref}
29
+ - Gemini CLI:/agent-infra:plan-task {task-ref}
30
+ - Codex CLI:$plan-task {task-ref}
31
31
 
32
32
  [当 env-blocked > 0 时,在最后附加一行:]
33
33
  提醒:env-blocked 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
@@ -41,14 +41,14 @@
41
41
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
42
42
 
43
43
  下一步 - 修订分析后继续(推荐):
44
- - Claude Code / OpenCode:/analyze-task {task-id}
45
- - Gemini CLI:/agent-infra:analyze-task {task-id}
46
- - Codex CLI:$analyze-task {task-id}
44
+ - Claude Code / OpenCode:/analyze-task {task-ref}
45
+ - Gemini CLI:/agent-infra:analyze-task {task-ref}
46
+ - Codex CLI:$analyze-task {task-ref}
47
47
 
48
48
  或直接进入方案设计:
49
- - Claude Code / OpenCode:/plan-task {task-id}
50
- - Gemini CLI:/agent-infra:plan-task {task-id}
51
- - Codex CLI:$plan-task {task-id}
49
+ - Claude Code / OpenCode:/plan-task {task-ref}
50
+ - Gemini CLI:/agent-infra:plan-task {task-ref}
51
+ - Codex CLI:$plan-task {task-ref}
52
52
 
53
53
  [当 env-blocked > 0 时,在最后附加一行:]
54
54
  提醒:env-blocked 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
@@ -62,9 +62,9 @@
62
62
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
63
63
 
64
64
  下一步 - 修订需求分析:
65
- - Claude Code / OpenCode:/analyze-task {task-id}
66
- - Gemini CLI:/agent-infra:analyze-task {task-id}
67
- - Codex CLI:$analyze-task {task-id}
65
+ - Claude Code / OpenCode:/analyze-task {task-ref}
66
+ - Gemini CLI:/agent-infra:analyze-task {task-ref}
67
+ - Codex CLI:$analyze-task {task-ref}
68
68
 
69
69
  [当 env-blocked > 0 时,在最后附加一行:]
70
70
  提醒:env-blocked 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
@@ -78,9 +78,9 @@
78
78
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
79
79
 
80
80
  下一步 - 重新分析:
81
- - Claude Code / OpenCode:/analyze-task {task-id}
82
- - Gemini CLI:/agent-infra:analyze-task {task-id}
83
- - Codex CLI:$analyze-task {task-id}
81
+ - Claude Code / OpenCode:/analyze-task {task-ref}
82
+ - Gemini CLI:/agent-infra:analyze-task {task-ref}
83
+ - Codex CLI:$analyze-task {task-ref}
84
84
 
85
85
  [当 env-blocked > 0 时,在最后附加一行:]
86
86
  提醒:env-blocked 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
@@ -61,7 +61,7 @@ Use this template when writing `review-analysis.md` or `review-analysis-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 `analysis-review` step in `.agents/workflows/feature-development.yaml
13
13
  - [ ] Risks, edge cases, and open questions are recorded
14
14
  - [ ] The design stage has enough input to proceed
15
15
  - [ ] The analysis matches the original Issue or user request
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
  - Treating implementation design as requirement analysis and locking in technical details too early
19
20
  - Restating the Issue without adding impact scope, risks, or acceptance criteria
20
21
  - Presenting uncertain information as fact without marking assumptions or open questions
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
  - [ ] 与原始 Issue / 用户需求是否一致
16
+ - [ ] 每条 blocker 都配可复现的 grep/sed/nl 证据,未直接验证的结论已在「自我质疑」声明
16
17
 
17
18
  **常见反例**:
18
19
  - 把实现方案当作需求分析,提前锁定技术细节
19
20
  - 只复述 Issue 文案,没有补充影响范围、风险和验收标准
20
21
  - 对无法确认的信息直接下结论,没有标记假设或开放问题
22
+ - 凭印象或记忆断言 `file:line`/行为,没有用 rg/nl 复核就下结论
21
23
 
22
24
  ## 通用审查原则
23
25
 
@@ -21,6 +21,7 @@ Version stamp rule: when creating or updating `task.md` frontmatter, read `.agen
21
21
  | "It was only one line, so it cannot affect behavior." | Line count is not impact; read the full `git diff` and trace the downstream effect of each change. |
22
22
  | "It looks mostly fine, so approve it." | The verdict must be backed by blocker/major/minor counts, and every finding must cite file:line; do not approve from impression. |
23
23
  | "The test change looks reasonable, so I can skim it." | Before reviewing test changes, check `.agents/rules/testing-discipline.md` item by item (see the step 4 gate). |
24
+ | "I'm sure it's that line, no need to check." | Line numbers drift; verify `file:line` via rg/nl before concluding, and do not file a blocker you cannot reproduce. |
24
25
 
25
26
  ## Step 0: State Check (pre-execution hard gate)
26
27
 
@@ -38,7 +39,7 @@ Before the state check is complete, do not make external-state assertions such a
38
39
 
39
40
  ## Task id short ref
40
41
 
41
- > If `{task-id}` begins with `#`, 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.
42
+ > 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.
42
43
 
43
44
  ## Steps
44
45
 
@@ -80,7 +81,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
80
81
  ```
81
82
 
82
83
  Update task.md and append:
83
- `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Code Review (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {artifact-filename}`
84
+ `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Review Code (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {artifact-filename}`
84
85
 
85
86
  Omit the bracketed segment when env-blocked = 0; append ` (+ {n} env-blocked)` when env-blocked > 0.
86
87
 
@@ -121,6 +122,8 @@ env-blocked counts do not influence branch selection; they are appended to the s
121
122
 
122
123
  > The full four-branch output templates, selection rules, and prohibition clauses live in `reference/output-templates.md`. Read `reference/output-templates.md` before reporting the review result.
123
124
 
125
+ > Before rendering the final output, read `.agents/rules/next-step-output.md` and apply both of its rules: (1) render `{task-ref}` in the "Next steps" commands as the current task's short id `#NN` (see that file for lookup and fallback), while other `{task-id}` placeholders (report titles, paths) keep the full TASK-id form; (2) append the `Completed at` line as the very last line of the user-facing output (this applies to every user-facing output — success, error, and early-return paths alike, not only the success path).
126
+
124
127
  Include all TUI command formats in the next-step output. If `.agents/.airc.json` configures custom TUIs (via `customTUIs`), read each tool's `name` and `invoke`, then add the matching command line in the same format (`${skillName}` becomes the skill name and `${projectName}` becomes the project name).
125
128
 
126
129
  ## Completion Checklist
@@ -21,6 +21,7 @@ description: "审查代码实现并输出代码审查报告"
21
21
  | 「只改了一行,不影响功能」 | 行数不等于影响面;必须读完整 `git diff` 并定位每处改动的下游效果。 |
22
22
  | 「大体没问题,给个 Approved」 | 结论必须由 blocker/major/minor 计数支撑,每个问题引用文件:行号,不能凭印象放行。 |
23
23
  | 「测试改动看着合理,跳过细看」 | 审查测试变更前必须逐条核对 `.agents/rules/testing-discipline.md`(见步骤 4 门禁)。 |
24
+ | 「记得就是这一行,不用查」 | 行号会漂移;下结论前必须用 rg/nl 复核 `file:line`,不能复现的判断不要写成 blocker。 |
24
25
 
25
26
  ## 第 0 步:状态核对(执行前硬约束)
26
27
 
@@ -38,7 +39,7 @@ tail .agents/workspace/active/{task-id}/task.md
38
39
 
39
40
  ## 任务入参短号别名
40
41
 
41
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
42
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
42
43
 
43
44
  ## 执行步骤
44
45
  ### 1. 验证前置条件
@@ -83,7 +84,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
83
84
  - `updated_at`:{当前时间}
84
85
  - `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
85
86
  - 追加:
86
- `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Code Review (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {artifact-filename}`
87
+ `- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Review Code (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}[ (+ {n} env-blocked)] → {artifact-filename}`
87
88
 
88
89
  env-blocked = 0 时省略括号部分;env-blocked > 0 时附加 ` (+ {n} env-blocked)`。
89
90
 
@@ -124,6 +125,8 @@ env-blocked 的数量不参与分支选择,仅在数字摘要末尾附带显
124
125
 
125
126
  > 完整的 4 分支输出模板、判断规则和禁止条款见 `reference/output-templates.md`。向用户汇报审查结论前先读取 `reference/output-templates.md`。
126
127
 
128
+ > 渲染最终输出前先读取 `.agents/rules/next-step-output.md` 并落实其两类规则:(1) 「下一步」命令的 `{task-ref}` 渲染为当前任务短号 `#NN`(取值与回退见该文件),其他 `{task-id}` 占位(报告标题、路径)保持完整 TASK-id 形式;(2) 在面向用户输出的绝对最后一行追加 `Completed at` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
129
+
127
130
  向用户展示下一步时,必须包含所有 TUI 命令格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
128
131
 
129
132
  ## 完成检查清单
@@ -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$",
@@ -33,7 +34,7 @@
33
34
  "freshness_minutes": 30
34
35
  },
35
36
  "activity-log": {
36
- "expected_action_pattern": "Code Review \\(Round \\d+\\)",
37
+ "expected_action_pattern": "(Review Code|Code Review) \\(Round \\d+\\)",
37
38
  "freshness_minutes": 30
38
39
  },
39
40
  "platform-sync": {
@@ -23,7 +23,8 @@
23
23
  "环境性遗留",
24
24
  "结论与建议",
25
25
  "状态核对",
26
- "证据原文"
26
+ "证据原文",
27
+ "自我质疑"
27
28
  ],
28
29
  "required_patterns": [
29
30
  "^### 审查决定$",
@@ -33,7 +34,7 @@
33
34
  "freshness_minutes": 30
34
35
  },
35
36
  "activity-log": {
36
- "expected_action_pattern": "Code Review \\(Round \\d+\\)",
37
+ "expected_action_pattern": "(Review Code|Code Review) \\(Round \\d+\\)",
37
38
  "freshness_minutes": 30
38
39
  },
39
40
  "platform-sync": {
@@ -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