@fitlab-ai/agent-infra 0.9.1 → 0.9.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 (283) hide show
  1. package/README.md +16 -4
  2. package/README.zh-CN.md +16 -4
  3. package/bin/cli.ts +12 -0
  4. package/dist/bin/cli.js +14 -0
  5. package/dist/bin/internal-cli.js +15 -0
  6. package/dist/lib/agent-client.js +163 -0
  7. package/dist/lib/agent-clients/adapter.js +294 -0
  8. package/dist/lib/agent-clients/adapters/claude-code.js +62 -0
  9. package/dist/lib/agent-clients/adapters/codex-sandbox.js +210 -0
  10. package/dist/lib/agent-clients/adapters/codex.js +54 -0
  11. package/dist/lib/agent-clients/adapters/gemini-cli.js +64 -0
  12. package/dist/lib/agent-clients/adapters/index.js +20 -0
  13. package/dist/lib/agent-clients/adapters/opencode.js +64 -0
  14. package/dist/lib/agent-clients/config.js +177 -0
  15. package/dist/lib/agent-clients/custom-tuis.js +99 -0
  16. package/dist/lib/agent-clients/invocation.js +9 -0
  17. package/dist/lib/agent-clients/next-steps.js +38 -0
  18. package/dist/lib/agent-clients/project-assets.js +45 -0
  19. package/dist/lib/agent-clients/reconcile.js +235 -0
  20. package/dist/lib/agent-clients/registry.js +72 -0
  21. package/dist/lib/agent-clients/schema.js +57 -0
  22. package/dist/lib/agent-clients/types.js +29 -0
  23. package/dist/lib/builtin-tuis.js +9 -14
  24. package/dist/lib/defaults.json +85 -73
  25. package/dist/lib/git/review-snapshot.js +25 -10
  26. package/dist/lib/git/reviewed-commit-equivalence.js +110 -0
  27. package/dist/lib/init.js +47 -91
  28. package/dist/lib/internal/agent-client.js +117 -0
  29. package/dist/lib/internal/git-workflow.js +1 -1
  30. package/dist/lib/internal/release-workflow.js +71 -16
  31. package/dist/lib/internal/task-orchestration.js +151 -0
  32. package/dist/lib/internal/task-review.js +65 -0
  33. package/dist/lib/merge.js +2 -1
  34. package/dist/lib/platform/adapters.js +38 -1
  35. package/dist/lib/platform/change-request-git-evidence.js +113 -0
  36. package/dist/lib/platform/merged-pr-equivalence.js +41 -11
  37. package/dist/lib/platform/pr-checks.js +38 -10
  38. package/dist/lib/platform/pull-requests.js +110 -6
  39. package/dist/lib/platform/releases.js +1 -1
  40. package/dist/lib/platform/verification-required.js +8 -10
  41. package/dist/lib/prompt.js +15 -3
  42. package/dist/lib/release/channels.js +4 -1
  43. package/dist/lib/release/workflow.js +4 -2
  44. package/dist/lib/remove-dir.js +25 -0
  45. package/dist/lib/run/tui.js +8 -2
  46. package/dist/lib/sandbox/agent-client-reconciler.js +234 -0
  47. package/dist/lib/sandbox/clipboard/linux.js +2 -1
  48. package/dist/lib/sandbox/commands/create.js +76 -180
  49. package/dist/lib/sandbox/commands/enter.js +17 -1
  50. package/dist/lib/sandbox/commands/prune.js +2 -2
  51. package/dist/lib/sandbox/commands/rm.js +3 -2
  52. package/dist/lib/sandbox/config.js +21 -4
  53. package/dist/lib/sandbox/constants.js +3 -0
  54. package/dist/lib/sandbox/dockerfile.js +2 -1
  55. package/dist/lib/sandbox/managed-fs.js +10 -5
  56. package/dist/lib/sandbox/recovery.js +52 -36
  57. package/dist/lib/sandbox/shell.js +1 -1
  58. package/dist/lib/sandbox/tool-types.js +8 -0
  59. package/dist/lib/sandbox/tools.js +2 -126
  60. package/dist/lib/task/artifact-lifecycle.js +1 -49
  61. package/dist/lib/task/commands/decisions.js +50 -20
  62. package/dist/lib/task/delegation-receipts.js +107 -0
  63. package/dist/lib/task/events.js +100 -1
  64. package/dist/lib/task/orchestration.js +420 -0
  65. package/dist/lib/task/review-artifacts.js +143 -59
  66. package/dist/lib/task/review-finalization.js +166 -0
  67. package/dist/lib/task/review-fingerprint.js +4 -0
  68. package/dist/lib/task/verification-checks.js +2 -1
  69. package/dist/lib/task/verification-engine.js +156 -28
  70. package/dist/lib/task/verification-review.js +1 -1
  71. package/dist/lib/task/verification.js +3 -1
  72. package/dist/lib/task/workspace-snapshot.js +34 -0
  73. package/dist/lib/update.js +42 -161
  74. package/lib/agent-client.ts +214 -0
  75. package/lib/agent-clients/adapter.ts +461 -0
  76. package/lib/agent-clients/adapters/claude-code.ts +70 -0
  77. package/lib/agent-clients/adapters/codex-sandbox.ts +245 -0
  78. package/lib/agent-clients/adapters/codex.ts +58 -0
  79. package/lib/agent-clients/adapters/gemini-cli.ts +65 -0
  80. package/lib/agent-clients/adapters/index.ts +27 -0
  81. package/lib/agent-clients/adapters/opencode.ts +66 -0
  82. package/lib/agent-clients/config.ts +278 -0
  83. package/lib/agent-clients/custom-tuis.ts +149 -0
  84. package/lib/agent-clients/invocation.ts +19 -0
  85. package/lib/agent-clients/next-steps.ts +72 -0
  86. package/lib/agent-clients/project-assets.ts +96 -0
  87. package/lib/agent-clients/reconcile.ts +324 -0
  88. package/lib/agent-clients/registry.ts +144 -0
  89. package/lib/agent-clients/schema.ts +62 -0
  90. package/lib/agent-clients/types.ts +78 -0
  91. package/lib/benchmark/schemas/v1.0.0/case-manifest.schema.json +120 -0
  92. package/lib/benchmark/schemas/v1.0.0/common.schema.json +109 -0
  93. package/lib/benchmark/schemas/v1.0.0/grader-result.schema.json +160 -0
  94. package/lib/benchmark/schemas/v1.0.0/run-manifest.schema.json +122 -0
  95. package/lib/benchmark/schemas/v1.0.0/subject.schema.json +227 -0
  96. package/lib/builtin-tuis.ts +16 -15
  97. package/lib/defaults.json +24 -12
  98. package/lib/git/review-snapshot.ts +39 -9
  99. package/lib/git/reviewed-commit-equivalence.ts +135 -0
  100. package/lib/init.ts +53 -121
  101. package/lib/internal/agent-client.ts +131 -0
  102. package/lib/internal/git-workflow.ts +1 -1
  103. package/lib/internal/release-workflow.ts +68 -16
  104. package/lib/internal/task-orchestration.ts +132 -0
  105. package/lib/internal/task-review.ts +65 -0
  106. package/lib/merge.ts +2 -1
  107. package/lib/platform/adapters.ts +142 -3
  108. package/lib/platform/change-request-git-evidence.ts +159 -0
  109. package/lib/platform/merged-pr-equivalence.ts +51 -14
  110. package/lib/platform/pr-checks.ts +50 -22
  111. package/lib/platform/pull-requests.ts +134 -25
  112. package/lib/platform/releases.ts +1 -1
  113. package/lib/platform/verification-required.ts +12 -10
  114. package/lib/prompt.ts +16 -3
  115. package/lib/release/channels.ts +4 -1
  116. package/lib/release/workflow.ts +4 -3
  117. package/lib/remove-dir.ts +28 -0
  118. package/lib/run/tui.ts +9 -1
  119. package/lib/sandbox/agent-client-reconciler.ts +378 -0
  120. package/lib/sandbox/clipboard/linux.ts +2 -1
  121. package/lib/sandbox/commands/create.ts +111 -192
  122. package/lib/sandbox/commands/enter.ts +23 -1
  123. package/lib/sandbox/commands/prune.ts +2 -2
  124. package/lib/sandbox/commands/rm.ts +3 -2
  125. package/lib/sandbox/config.ts +31 -4
  126. package/lib/sandbox/constants.ts +6 -0
  127. package/lib/sandbox/dockerfile.ts +2 -1
  128. package/lib/sandbox/managed-fs.ts +18 -5
  129. package/lib/sandbox/recovery.ts +98 -67
  130. package/lib/sandbox/shell.ts +1 -1
  131. package/lib/sandbox/tool-types.ts +143 -0
  132. package/lib/sandbox/tools.ts +5 -157
  133. package/lib/task/artifact-lifecycle.ts +1 -38
  134. package/lib/task/commands/decisions.ts +53 -20
  135. package/lib/task/delegation-receipts.ts +170 -0
  136. package/lib/task/events.ts +110 -2
  137. package/lib/task/orchestration.ts +543 -0
  138. package/lib/task/review-artifacts.ts +201 -69
  139. package/lib/task/review-finalization.ts +275 -0
  140. package/lib/task/review-fingerprint.ts +5 -0
  141. package/lib/task/verification-checks.ts +2 -1
  142. package/lib/task/verification-engine.ts +177 -28
  143. package/lib/task/verification-review.ts +1 -0
  144. package/lib/task/verification.ts +5 -2
  145. package/lib/task/workspace-snapshot.ts +36 -0
  146. package/lib/update.ts +48 -184
  147. package/package.json +2 -2
  148. package/templates/.agents/README.en.md +21 -20
  149. package/templates/.agents/README.zh-CN.md +21 -20
  150. package/templates/.agents/hooks/lifecycle-delegation.js +64 -0
  151. package/templates/.agents/rules/README.en.md +2 -0
  152. package/templates/.agents/rules/README.zh-CN.md +2 -0
  153. package/templates/.agents/rules/commit-and-pr.en.md +1 -0
  154. package/templates/.agents/rules/commit-and-pr.zh-CN.md +1 -0
  155. package/templates/.agents/rules/human-decision-context.en.md +14 -12
  156. package/templates/.agents/rules/human-decision-context.zh-CN.md +14 -12
  157. package/templates/.agents/rules/lifecycle-orchestration.en.md +21 -0
  158. package/templates/.agents/rules/lifecycle-orchestration.zh-CN.md +21 -0
  159. package/templates/.agents/rules/next-step-output.en.md +16 -0
  160. package/templates/.agents/rules/next-step-output.zh-CN.md +16 -0
  161. package/templates/.agents/rules/no-mid-flow-questions.en.md +2 -0
  162. package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +2 -0
  163. package/templates/.agents/rules/release-commands.github.en.md +11 -5
  164. package/templates/.agents/rules/release-commands.github.zh-CN.md +11 -5
  165. package/templates/.agents/rules/review-handshake.en.md +4 -4
  166. package/templates/.agents/rules/review-handshake.zh-CN.md +4 -4
  167. package/templates/.agents/rules/review-method.en.md +113 -0
  168. package/templates/.agents/rules/review-method.zh-CN.md +98 -0
  169. package/templates/.agents/skills/analyze-task/SKILL.en.md +5 -5
  170. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +5 -5
  171. package/templates/.agents/skills/block-task/SKILL.en.md +4 -4
  172. package/templates/.agents/skills/block-task/SKILL.zh-CN.md +4 -4
  173. package/templates/.agents/skills/cancel-task/SKILL.en.md +4 -4
  174. package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +5 -5
  175. package/templates/.agents/skills/check-task/SKILL.en.md +16 -16
  176. package/templates/.agents/skills/check-task/SKILL.zh-CN.md +16 -16
  177. package/templates/.agents/skills/close-codescan/SKILL.en.md +4 -4
  178. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +4 -4
  179. package/templates/.agents/skills/close-dependabot/SKILL.en.md +4 -4
  180. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +4 -4
  181. package/templates/.agents/skills/code-task/SKILL.en.md +1 -1
  182. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +2 -2
  183. package/templates/.agents/skills/code-task/reference/fix-mode.en.md +14 -16
  184. package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +14 -16
  185. package/templates/.agents/skills/code-task/reference/output-template.en.md +3 -3
  186. package/templates/.agents/skills/code-task/reference/output-template.zh-CN.md +3 -3
  187. package/templates/.agents/skills/commit/SKILL.en.md +11 -1
  188. package/templates/.agents/skills/commit/SKILL.zh-CN.md +11 -1
  189. package/templates/.agents/skills/commit/reference/task-status-update.en.md +24 -28
  190. package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +24 -28
  191. package/templates/.agents/skills/complete-task/SKILL.en.md +2 -2
  192. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +2 -2
  193. package/templates/.agents/skills/create-pr/SKILL.en.md +10 -10
  194. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +10 -10
  195. package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +3 -3
  196. package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +3 -3
  197. package/templates/.agents/skills/create-task/SKILL.en.md +11 -11
  198. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +11 -11
  199. package/templates/.agents/skills/import-codescan/SKILL.en.md +5 -5
  200. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +5 -5
  201. package/templates/.agents/skills/import-dependabot/SKILL.en.md +5 -5
  202. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +5 -5
  203. package/templates/.agents/skills/import-issue/SKILL.en.md +5 -5
  204. package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +5 -5
  205. package/templates/.agents/skills/init-labels/SKILL.en.md +4 -4
  206. package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +4 -4
  207. package/templates/.agents/skills/init-milestones/SKILL.en.md +4 -4
  208. package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +4 -4
  209. package/templates/.agents/skills/plan-task/SKILL.en.md +5 -5
  210. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +5 -5
  211. package/templates/.agents/skills/refine-title/SKILL.en.md +1 -1
  212. package/templates/.agents/skills/refine-title/SKILL.zh-CN.md +1 -1
  213. package/templates/.agents/skills/release/SKILL.en.md +1 -1
  214. package/templates/.agents/skills/review-analysis/SKILL.en.md +13 -2
  215. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +14 -3
  216. package/templates/.agents/skills/review-analysis/config/verify.en.json +6 -0
  217. package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +6 -0
  218. package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +13 -15
  219. package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +13 -15
  220. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +51 -5
  221. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +52 -6
  222. package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +25 -22
  223. package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +25 -22
  224. package/templates/.agents/skills/review-code/SKILL.en.md +28 -8
  225. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +28 -8
  226. package/templates/.agents/skills/review-code/config/verify.en.json +7 -0
  227. package/templates/.agents/skills/review-code/config/verify.zh-CN.json +7 -0
  228. package/templates/.agents/skills/review-code/reference/concurrency-risks.en.md +25 -0
  229. package/templates/.agents/skills/review-code/reference/concurrency-risks.zh-CN.md +25 -0
  230. package/templates/.agents/skills/review-code/reference/cross-platform-risks.en.md +27 -0
  231. package/templates/.agents/skills/review-code/reference/cross-platform-risks.zh-CN.md +27 -0
  232. package/templates/.agents/skills/review-code/reference/documentation-antipatterns.en.md +13 -0
  233. package/templates/.agents/skills/review-code/reference/documentation-antipatterns.zh-CN.md +13 -0
  234. package/templates/.agents/skills/review-code/reference/migration-risks.en.md +25 -0
  235. package/templates/.agents/skills/review-code/reference/migration-risks.zh-CN.md +25 -0
  236. package/templates/.agents/skills/review-code/reference/output-templates.en.md +22 -24
  237. package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +22 -24
  238. package/templates/.agents/skills/review-code/reference/report-template.en.md +54 -7
  239. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +54 -7
  240. package/templates/.agents/skills/review-code/reference/review-criteria.en.md +29 -24
  241. package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +29 -24
  242. package/templates/.agents/skills/review-code/reference/security-risks.en.md +25 -0
  243. package/templates/.agents/skills/review-code/reference/security-risks.zh-CN.md +25 -0
  244. package/templates/.agents/skills/review-plan/SKILL.en.md +13 -2
  245. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +14 -3
  246. package/templates/.agents/skills/review-plan/config/verify.en.json +6 -0
  247. package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +6 -0
  248. package/templates/.agents/skills/review-plan/reference/output-templates.en.md +13 -15
  249. package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +13 -15
  250. package/templates/.agents/skills/review-plan/reference/report-template.en.md +61 -5
  251. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +61 -5
  252. package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +21 -24
  253. package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +21 -24
  254. package/templates/.agents/skills/run-task/SKILL.en.md +22 -0
  255. package/templates/.agents/skills/run-task/SKILL.zh-CN.md +22 -0
  256. package/templates/.agents/skills/run-task/config/verify.en.json +9 -0
  257. package/templates/.agents/skills/run-task/config/verify.zh-CN.json +9 -0
  258. package/templates/.agents/skills/test/SKILL.en.md +4 -4
  259. package/templates/.agents/skills/test/SKILL.zh-CN.md +4 -4
  260. package/templates/.agents/skills/test-integration/SKILL.en.md +4 -4
  261. package/templates/.agents/skills/test-integration/SKILL.zh-CN.md +4 -4
  262. package/templates/.agents/skills/update-agent-infra/SKILL.en.md +5 -5
  263. package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +5 -5
  264. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +647 -203
  265. package/templates/.agents/skills/upgrade-dependency/SKILL.en.md +4 -4
  266. package/templates/.agents/skills/upgrade-dependency/SKILL.zh-CN.md +4 -4
  267. package/templates/.agents/skills/watch-pr/SKILL.en.md +8 -8
  268. package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +8 -8
  269. package/templates/.claude/agents/agent-infra-lifecycle-executor.en.md +6 -0
  270. package/templates/.claude/agents/agent-infra-lifecycle-executor.zh-CN.md +6 -0
  271. package/templates/.claude/agents/agent-infra-lifecycle-reviewer.en.md +6 -0
  272. package/templates/.claude/agents/agent-infra-lifecycle-reviewer.zh-CN.md +6 -0
  273. package/templates/.claude/commands/run-task.en.md +8 -0
  274. package/templates/.claude/commands/run-task.zh-CN.md +8 -0
  275. package/templates/.claude/settings.json +24 -0
  276. package/templates/.codex/agents/agent-infra-lifecycle-executor.en.toml +3 -0
  277. package/templates/.codex/agents/agent-infra-lifecycle-executor.zh-CN.toml +3 -0
  278. package/templates/.codex/agents/agent-infra-lifecycle-reviewer.en.toml +3 -0
  279. package/templates/.codex/agents/agent-infra-lifecycle-reviewer.zh-CN.toml +3 -0
  280. package/templates/.gemini/commands/_project_/run-task.en.toml +8 -0
  281. package/templates/.gemini/commands/_project_/run-task.zh-CN.toml +8 -0
  282. package/templates/.opencode/commands/run-task.en.md +11 -0
  283. package/templates/.opencode/commands/run-task.zh-CN.md +11 -0
@@ -168,9 +168,11 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
168
168
 
169
169
  > Execute this step only after the verification gate passes.
170
170
 
171
- > **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).
171
+ > Before rendering next steps, read `.agents/rules/next-step-output.md`, invoke the shared helper only for the selected scenario, and insert its stdout at `{next-step-commands}`.
172
172
 
173
173
  Scenario A: when an Issue was created, output:
174
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
175
+
174
176
  ```
175
177
  Task created and Issue creation cascaded successfully.
176
178
 
@@ -185,12 +187,12 @@ Output file:
185
187
  - Task file: .agents/workspace/active/{task-id}/task.md
186
188
 
187
189
  Next step - run requirements analysis:
188
- - Claude Code / OpenCode: /analyze-task {task-ref}
189
- - Gemini CLI: /{{project}}:analyze-task {task-ref}
190
- - Codex CLI: $analyze-task {task-ref}
190
+ {next-step-commands}
191
191
  ```
192
192
 
193
193
  Scenario B: when no Issue was created, output:
194
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
195
+
194
196
  ```
195
197
  Task created.
196
198
 
@@ -204,12 +206,12 @@ Output file:
204
206
  - Task file: .agents/workspace/active/{task-id}/task.md
205
207
 
206
208
  Next step - run requirements analysis:
207
- - Claude Code / OpenCode: /analyze-task {task-ref}
208
- - Gemini CLI: /{{project}}:analyze-task {task-ref}
209
- - Codex CLI: $analyze-task {task-ref}
209
+ {next-step-commands}
210
210
  ```
211
211
 
212
212
  Scenario C: when Issue creation failed, output:
213
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
214
+
213
215
  ```
214
216
  Task created, but cascade Issue creation failed.
215
217
 
@@ -228,9 +230,7 @@ Output file:
228
230
  - Task file: .agents/workspace/active/{task-id}/task.md
229
231
 
230
232
  Next step - run requirements analysis:
231
- - Claude Code / OpenCode: /analyze-task {task-ref}
232
- - Gemini CLI: /{{project}}:analyze-task {task-ref}
233
- - Codex CLI: $analyze-task {task-ref}
233
+ {next-step-commands}
234
234
 
235
235
  For later platform sync: after fixing auth / network / template issues, manually run the Issue creation flow in `.agents/rules/create-issue.md` for this task; or manually create/find an Issue and write `issue_number` into task.md so later skills can take over cascade sync.
236
236
 
@@ -249,7 +249,7 @@ For later platform sync: after fixing auth / network / template issues, manually
249
249
  - [ ] Updated `assigned_to` in task.md
250
250
  - [ ] Appended an Activity Log entry to task.md
251
251
  - [ ] Tried cascading Issue creation through `.agents/rules/create-issue.md`; if it failed, kept task.md and recorded the reason
252
- - [ ] Informed the user of the next step (must include all TUI command formats, including any custom TUIs; do not filter)
252
+ - [ ] Rendered the selected next-step commands through the shared helper
253
253
  - [ ] **Did not modify any business code or configuration files**
254
254
 
255
255
  ## STOP
@@ -167,9 +167,11 @@ agent-infra-internal task-verify {task-id} create-task.completed --format text
167
167
 
168
168
  > 仅在校验通过后执行本步骤。
169
169
 
170
- > **重要**:以下「下一步」中列出的所有 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` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
170
+ > 渲染下一步前先读取 `.agents/rules/next-step-output.md`,仅为已选场景调用统一 helper,并将 stdout 填入 `{next-step-commands}`。
171
171
 
172
172
  场景 A:已创建 Issue 时输出:
173
+ 使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
174
+
173
175
  ```
174
176
  任务已创建,并已级联创建 Issue。
175
177
 
@@ -184,12 +186,12 @@ agent-infra-internal task-verify {task-id} create-task.completed --format text
184
186
  - 任务文件:.agents/workspace/active/{task-id}/task.md
185
187
 
186
188
  下一步 - 执行需求分析:
187
- - Claude Code / OpenCode:/analyze-task {task-ref}
188
- - Gemini CLI:/{{project}}:analyze-task {task-ref}
189
- - Codex CLI:$analyze-task {task-ref}
189
+ {next-step-commands}
190
190
  ```
191
191
 
192
192
  场景 B:未创建 Issue 时输出:
193
+ 使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
194
+
193
195
  ```
194
196
  任务已创建。
195
197
 
@@ -203,12 +205,12 @@ agent-infra-internal task-verify {task-id} create-task.completed --format text
203
205
  - 任务文件:.agents/workspace/active/{task-id}/task.md
204
206
 
205
207
  下一步 - 执行需求分析:
206
- - Claude Code / OpenCode:/analyze-task {task-ref}
207
- - Gemini CLI:/{{project}}:analyze-task {task-ref}
208
- - Codex CLI:$analyze-task {task-ref}
208
+ {next-step-commands}
209
209
  ```
210
210
 
211
211
  场景 C:Issue 创建失败时输出:
212
+ 使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
213
+
212
214
  ```
213
215
  任务已创建,但 Issue 级联创建失败。
214
216
 
@@ -227,9 +229,7 @@ Issue 创建失败:
227
229
  - 任务文件:.agents/workspace/active/{task-id}/task.md
228
230
 
229
231
  下一步 - 执行需求分析:
230
- - Claude Code / OpenCode:/analyze-task {task-ref}
231
- - Gemini CLI:/{{project}}:analyze-task {task-ref}
232
- - Codex CLI:$analyze-task {task-ref}
232
+ {next-step-commands}
233
233
 
234
234
  后续如需平台同步:修复认证/网络/模板问题后,可按 `.agents/rules/create-issue.md` 对当前任务手动执行一次 Issue 创建;或手动创建/查找 Issue,并把 `issue_number` 写入 task.md,后续技能会接管级联同步。
235
235
 
@@ -248,7 +248,7 @@ Issue 创建失败:
248
248
  - [ ] 更新了 task.md 中的 `assigned_to`
249
249
  - [ ] 追加了 Activity Log 条目到 task.md
250
250
  - [ ] 已按 `.agents/rules/create-issue.md` 尝试级联创建 Issue;失败时保留 task.md 并记录原因
251
- - [ ] 告知了用户下一步(必须展示所有 TUI 的命令格式,含自定义 TUI,不要筛选)
251
+ - [ ] 已通过统一 helper 渲染已选场景的下一步命令
252
252
  - [ ] **没有修改任何业务代码或配置文件**
253
253
 
254
254
  ## 停止
@@ -97,7 +97,9 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
97
97
 
98
98
  > Execute this step only after the verification gate passes.
99
99
 
100
- > **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).
100
+ > Before rendering next steps, read `.agents/rules/next-step-output.md`, invoke the shared helper only for the selected scenario, and insert its stdout at `{next-step-commands}`.
101
+
102
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
101
103
 
102
104
  ```
103
105
  Code Scanning alert #{alert-number} imported.
@@ -111,9 +113,7 @@ Task information:
111
113
  - Task ID: {task-id} (short id {task-ref})
112
114
 
113
115
  Next step:
114
- - Claude Code / OpenCode: /analyze-task {task-ref}
115
- - Gemini CLI: /{{project}}:analyze-task {task-ref}
116
- - Codex CLI: $analyze-task {task-ref}
116
+ {next-step-commands}
117
117
  ```
118
118
 
119
119
 
@@ -125,7 +125,7 @@ Next step:
125
125
  - [ ] Updated `current_step` to requirement-analysis in task.md
126
126
  - [ ] Updated `updated_at` to the current time in task.md
127
127
  - [ ] Appended an Activity Log entry to task.md
128
- - [ ] Informed the user of the next step (must include all TUI command formats, including any custom TUIs; do not filter)
128
+ - [ ] Rendered the selected next-step commands through the shared helper
129
129
 
130
130
  ## Error Handling
131
131
 
@@ -97,7 +97,9 @@ agent-infra-internal task-verify {task-id} import-codescan.completed --format te
97
97
 
98
98
  > 仅在校验通过后执行本步骤。
99
99
 
100
- > **重要**:以下「下一步」中列出的所有 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` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
100
+ > 渲染下一步前先读取 `.agents/rules/next-step-output.md`,仅为已选场景调用统一 helper,并将 stdout 填入 `{next-step-commands}`。
101
+
102
+ 使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
101
103
 
102
104
  ```
103
105
  Code Scanning 告警 #{alert-number} 已导入。
@@ -111,9 +113,7 @@ Code Scanning 告警 #{alert-number} 已导入。
111
113
  - 任务 ID:{task-id}(短号 {task-ref})
112
114
 
113
115
  下一步:
114
- - Claude Code / OpenCode:/analyze-task {task-ref}
115
- - Gemini CLI:/{{project}}:analyze-task {task-ref}
116
- - Codex CLI:$analyze-task {task-ref}
116
+ {next-step-commands}
117
117
  ```
118
118
 
119
119
 
@@ -125,7 +125,7 @@ Code Scanning 告警 #{alert-number} 已导入。
125
125
  - [ ] 更新了 task.md 中的 `current_step` 为 requirement-analysis
126
126
  - [ ] 更新了 task.md 中的 `updated_at` 为当前时间
127
127
  - [ ] 追加了 Activity Log 条目到 task.md
128
- - [ ] 告知了用户下一步(必须展示所有 TUI 的命令格式,含自定义 TUI,不要筛选)
128
+ - [ ] 已通过统一 helper 渲染已选场景的下一步命令
129
129
 
130
130
  ## 错误处理
131
131
 
@@ -100,7 +100,9 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
100
100
 
101
101
  > Execute this step only after the verification gate passes.
102
102
 
103
- > **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).
103
+ > Before rendering next steps, read `.agents/rules/next-step-output.md`, invoke the shared helper only for the selected scenario, and insert its stdout at `{next-step-commands}`.
104
+
105
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
104
106
 
105
107
  ```
106
108
  Security alert #{alert-number} imported.
@@ -117,9 +119,7 @@ Output file:
117
119
  - Task file: .agents/workspace/active/{task-id}/task.md
118
120
 
119
121
  Next step:
120
- - Claude Code / OpenCode: /analyze-task {task-ref}
121
- - Gemini CLI: /{{project}}:analyze-task {task-ref}
122
- - Codex CLI: $analyze-task {task-ref}
122
+ {next-step-commands}
123
123
  ```
124
124
 
125
125
 
@@ -131,7 +131,7 @@ Next step:
131
131
  - [ ] Updated `current_step` to requirement-analysis in task.md
132
132
  - [ ] Updated `updated_at` to the current time in task.md
133
133
  - [ ] Appended an Activity Log entry to task.md
134
- - [ ] Informed the user of the next step (must include all TUI command formats, including any custom TUIs; do not filter)
134
+ - [ ] Rendered the selected next-step commands through the shared helper
135
135
 
136
136
  ## Error Handling
137
137
 
@@ -100,7 +100,9 @@ agent-infra-internal task-verify {task-id} import-dependabot.completed --format
100
100
 
101
101
  > 仅在校验通过后执行本步骤。
102
102
 
103
- > **重要**:以下「下一步」中列出的所有 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` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
103
+ > 渲染下一步前先读取 `.agents/rules/next-step-output.md`,仅为已选场景调用统一 helper,并将 stdout 填入 `{next-step-commands}`。
104
+
105
+ 使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
104
106
 
105
107
  ```
106
108
  安全告警 #{alert-number} 已导入。
@@ -117,9 +119,7 @@ agent-infra-internal task-verify {task-id} import-dependabot.completed --format
117
119
  - 任务文件:.agents/workspace/active/{task-id}/task.md
118
120
 
119
121
  下一步:
120
- - Claude Code / OpenCode:/analyze-task {task-ref}
121
- - Gemini CLI:/{{project}}:analyze-task {task-ref}
122
- - Codex CLI:$analyze-task {task-ref}
122
+ {next-step-commands}
123
123
  ```
124
124
 
125
125
 
@@ -131,7 +131,7 @@ agent-infra-internal task-verify {task-id} import-dependabot.completed --format
131
131
  - [ ] 更新了 task.md 中的 `current_step` 为 requirement-analysis
132
132
  - [ ] 更新了 task.md 中的 `updated_at` 为当前时间
133
133
  - [ ] 追加了 Activity Log 条目到 task.md
134
- - [ ] 告知了用户下一步(必须展示所有 TUI 的命令格式,含自定义 TUI,不要筛选)
134
+ - [ ] 已通过统一 helper 渲染已选场景的下一步命令
135
135
 
136
136
  ## 错误处理
137
137
 
@@ -176,7 +176,9 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
176
176
 
177
177
  > Execute this step only after the verification gate passes.
178
178
 
179
- > **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).
179
+ > Before rendering next steps, read `.agents/rules/next-step-output.md`, invoke the shared helper only for the selected scenario, and insert its stdout at `{next-step-commands}`.
180
+
181
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
180
182
 
181
183
  ```
182
184
  Issue #{number} imported.
@@ -190,9 +192,7 @@ Output file:
190
192
  - Task file: .agents/workspace/active/{task-id}/task.md
191
193
 
192
194
  Next step - run requirements analysis:
193
- - Claude Code / OpenCode: /analyze-task {task-ref}
194
- - Gemini CLI: /{{project}}:analyze-task {task-ref}
195
- - Codex CLI: $analyze-task {task-ref}
195
+ {next-step-commands}
196
196
  ```
197
197
 
198
198
 
@@ -205,7 +205,7 @@ Next step - run requirements analysis:
205
205
  - [ ] Updated `updated_at` to the current time
206
206
  - [ ] Appended an Activity Log entry to task.md
207
207
  - [ ] Synced the task comment to the Issue, with remote content matching local task.md
208
- - [ ] Informed the user of the next step (must include all TUI command formats, including any custom TUIs; do not filter)
208
+ - [ ] Rendered the selected next-step commands through the shared helper
209
209
  - [ ] **Did not modify any business code**
210
210
 
211
211
  ## STOP
@@ -176,7 +176,9 @@ agent-infra-internal task-verify {task-id} import-issue.completed --format text
176
176
 
177
177
  > 仅在校验通过后执行本步骤。
178
178
 
179
- > **重要**:以下「下一步」中列出的所有 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` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
179
+ > 渲染下一步前先读取 `.agents/rules/next-step-output.md`,仅为已选场景调用统一 helper,并将 stdout 填入 `{next-step-commands}`。
180
+
181
+ 使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
180
182
 
181
183
  ```
182
184
  Issue #{number} 已导入。
@@ -190,9 +192,7 @@ Issue #{number} 已导入。
190
192
  - 任务文件:.agents/workspace/active/{task-id}/task.md
191
193
 
192
194
  下一步 - 执行需求分析:
193
- - Claude Code / OpenCode:/analyze-task {task-ref}
194
- - Gemini CLI:/{{project}}:analyze-task {task-ref}
195
- - Codex CLI:$analyze-task {task-ref}
195
+ {next-step-commands}
196
196
  ```
197
197
 
198
198
 
@@ -205,7 +205,7 @@ Issue #{number} 已导入。
205
205
  - [ ] 更新了 `updated_at` 为当前时间
206
206
  - [ ] 追加了 Activity Log 条目到 task.md
207
207
  - [ ] 同步了 task 评论到 Issue,且远端内容与本地 task.md 一致
208
- - [ ] 告知了用户下一步(必须展示所有 TUI 的命令格式,含自定义 TUI,不要筛选)
208
+ - [ ] 已通过统一 helper 渲染已选场景的下一步命令
209
209
  - [ ] **没有修改任何业务代码**
210
210
 
211
211
  ## 停止
@@ -87,15 +87,15 @@ Operational notes:
87
87
 
88
88
  ### 6. Inform User
89
89
 
90
- > **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).
90
+ > Before rendering next steps, read `.agents/rules/next-step-output.md`, invoke the shared helper only for the selected scenario, and insert its stdout at `{next-step-commands}`.
91
91
 
92
92
  After summarizing the label initialization, show:
93
93
 
94
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill init-milestones`.
95
+
94
96
  ```
95
97
  Next step - initialize milestones (optional):
96
- - Claude Code / OpenCode: /init-milestones
97
- - Gemini CLI: /{{project}}:init-milestones
98
- - Codex CLI: $init-milestones
98
+ {next-step-commands}
99
99
  ```
100
100
 
101
101
  ## Error Handling
@@ -87,15 +87,15 @@ bash .agents/skills/init-labels/scripts/init-labels.sh
87
87
 
88
88
  ### 6. 告知用户
89
89
 
90
- > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
90
+ > 渲染下一步前先读取 `.agents/rules/next-step-output.md`,仅为已选场景调用统一 helper,并将 stdout 填入 `{next-step-commands}`。
91
91
 
92
92
  输出 labels 初始化摘要后,提示:
93
93
 
94
+ 使用 `agent-infra-internal agent-client next-steps --skill init-milestones` 生成本场景的 `{next-step-commands}`。
95
+
94
96
  ```
95
97
  下一步 - 初始化 Milestones(可选):
96
- - Claude Code / OpenCode:/init-milestones
97
- - Gemini CLI:/{{project}}:init-milestones
98
- - Codex CLI:$init-milestones
98
+ {next-step-commands}
99
99
  ```
100
100
 
101
101
  ## 错误处理
@@ -65,15 +65,15 @@ Operational notes:
65
65
 
66
66
  ### 5. Inform User
67
67
 
68
- > **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).
68
+ > Before rendering next steps, read `.agents/rules/next-step-output.md`, invoke the shared helper only for the selected scenario, and insert its stdout at `{next-step-commands}`.
69
69
 
70
70
  After summarizing the milestone initialization, show:
71
71
 
72
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill init-labels`.
73
+
72
74
  ```
73
75
  Next step - initialize labels (optional):
74
- - Claude Code / OpenCode: /init-labels
75
- - Gemini CLI: /{{project}}:init-labels
76
- - Codex CLI: $init-labels
76
+ {next-step-commands}
77
77
  ```
78
78
 
79
79
  ## Error Handling
@@ -65,15 +65,15 @@ bash .agents/skills/init-milestones/scripts/init-milestones.sh "$ARGUMENTS"
65
65
 
66
66
  ### 5. 告知用户
67
67
 
68
- > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
68
+ > 渲染下一步前先读取 `.agents/rules/next-step-output.md`,仅为已选场景调用统一 helper,并将 stdout 填入 `{next-step-commands}`。
69
69
 
70
70
  输出 milestones 初始化摘要后,提示:
71
71
 
72
+ 使用 `agent-infra-internal agent-client next-steps --skill init-labels` 生成本场景的 `{next-step-commands}`。
73
+
72
74
  ```
73
75
  下一步 - 初始化 Labels(可选):
74
- - Claude Code / OpenCode:/init-labels
75
- - Gemini CLI:/{{project}}:init-labels
76
- - Codex CLI:$init-labels
76
+ {next-step-commands}
77
77
  ```
78
78
 
79
79
  ## 错误处理
@@ -138,9 +138,11 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
138
138
 
139
139
  > Execute this step only after the verification gate passes.
140
140
 
141
- > **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).
141
+ > Before rendering next steps, read `.agents/rules/next-step-output.md`, invoke the shared helper only for the selected scenario, and insert its stdout at `{next-step-commands}`.
142
142
 
143
143
  Output format:
144
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill review-plan --task-ref {task-ref}`.
145
+
144
146
  ```
145
147
  Technical plan complete for task {task-id}.
146
148
 
@@ -158,9 +160,7 @@ Important: human review checkpoint.
158
160
  Please review the technical plan before continuing to implementation.
159
161
 
160
162
  Next step - review the technical plan:
161
- - Claude Code / OpenCode: /review-plan {task-ref}
162
- - Gemini CLI: /{{project}}:review-plan {task-ref}
163
- - Codex CLI: $review-plan {task-ref}
163
+ {next-step-commands}
164
164
  ```
165
165
 
166
166
  ## Completion Checklist
@@ -174,7 +174,7 @@ Next step - review the technical plan:
174
174
  - [ ] Marked technical-design as complete in workflow progress
175
175
  - [ ] Appended an Activity Log entry to task.md
176
176
  - [ ] Informed the user that this is a human review checkpoint
177
- - [ ] Informed the user of the next step (must include all TUI command formats, including any custom TUIs; do not filter)
177
+ - [ ] Rendered the selected next-step commands through the shared helper
178
178
 
179
179
  ## STOP
180
180
 
@@ -135,9 +135,11 @@ agent-infra-internal task-verify {task-id} plan.completed --artifact {plan-artif
135
135
 
136
136
  > 仅在校验通过后执行本步骤。
137
137
 
138
- > **重要**:以下「下一步」中列出的所有 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` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
138
+ > 渲染下一步前先读取 `.agents/rules/next-step-output.md`,仅为已选场景调用统一 helper,并将 stdout 填入 `{next-step-commands}`。
139
139
 
140
140
  输出格式:
141
+ 使用 `agent-infra-internal agent-client next-steps --skill review-plan --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
142
+
141
143
  ```
142
144
  任务 {task-id} 技术方案完成。
143
145
 
@@ -155,9 +157,7 @@ agent-infra-internal task-verify {task-id} plan.completed --artifact {plan-artif
155
157
  请在继续实现之前审查技术方案。
156
158
 
157
159
  下一步 - 审查技术方案:
158
- - Claude Code / OpenCode:/review-plan {task-ref}
159
- - Gemini CLI:/{{project}}:review-plan {task-ref}
160
- - Codex CLI:$review-plan {task-ref}
160
+ {next-step-commands}
161
161
  ```
162
162
 
163
163
  ## 完成检查清单
@@ -171,7 +171,7 @@ agent-infra-internal task-verify {task-id} plan.completed --artifact {plan-artif
171
171
  - [ ] 在工作流进度中标记了 technical-design 为已完成
172
172
  - [ ] 追加了 Activity Log 条目到 task.md
173
173
  - [ ] 告知了用户这是人工审查检查点
174
- - [ ] 告知了用户下一步(必须展示所有 TUI 的命令格式,含自定义 TUI,不要筛选)
174
+ - [ ] 已通过统一 helper 渲染已选场景的下一步命令
175
175
 
176
176
  ## 停止
177
177
 
@@ -64,7 +64,7 @@ Before changing a title, run `agent-infra-internal platform-context resolve` for
64
64
 
65
65
  ### 5. Inform User
66
66
 
67
- > **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).
67
+ > Before rendering next steps, read `.agents/rules/next-step-output.md`; when a next-step client command is needed, invoke the shared helper for the task's current stage.
68
68
 
69
69
  If the skill updated an Issue title, explain that no extra sync command is required; continue with the workflow skill that matches the task's current stage.
70
70
 
@@ -64,7 +64,7 @@ Issue/PR #{id} 分析结果:
64
64
 
65
65
  ### 5. 告知用户
66
66
 
67
- > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
67
+ > 渲染下一步前先读取 `.agents/rules/next-step-output.md`;如需展示下一步客户端命令,按当前任务阶段调用统一 helper。
68
68
 
69
69
  如果修改了 Issue 标题,提示无需额外同步命令;后续按任务当前阶段继续执行对应工作流技能。
70
70
 
@@ -39,4 +39,4 @@ Push refs normally, preserve partial success for replay, and never force push.
39
39
 
40
40
  ## 5. Report Facts
41
41
 
42
- Show the snapshot and every TUI command. Treat unknown external state as blocked.
42
+ Show the snapshot and render next-step client commands through the shared helper. Treat unknown external state as blocked.
@@ -55,6 +55,7 @@ Read `{analysis-artifact}`, `task.md`, and Issue context when available. After r
55
55
 
56
56
  Check requirement completeness, risks, affected scope, open questions, and effort estimates.
57
57
 
58
+ > Read `.agents/rules/review-method.md` before this step and follow its five-pass protocol for coverage, risk-lens decisions, traceability, and counterevidence.
58
59
  > Read `reference/review-criteria.md` before this step.
59
60
 
60
61
  ### 5. Write Review Report
@@ -65,7 +66,17 @@ Create `.agents/workspace/active/{task-id}/{review-artifact}`.
65
66
 
66
67
  ### 6. Update Task Status
67
68
 
68
- After the report, submit each new finding with `agent-infra-internal task-ledger {task-id} finding-upsert --stage analysis --review-artifact {review-artifact} --ordinal {n} --severity {blocker|major|minor} --evidence {review-artifact}#{anchor}`; submit prior-response dispositions with `finding-review --id {ledger-id} --status {confirmed|closed|open|needs-human-decision} --evidence {evidence}`. Do not scan ids or edit ledger rows. After all ledger writes, call `agent-infra-internal task-ledger {task-id} stage-status --stage analysis` exactly once. Derive the verdict and next-step branch from `stageStatus.canAdvance`, and blocker/major/minor event counts from `unresolvedFindingCounts`: only `canAdvance=true` permits `approved`; otherwise use `changes-requested` or `rejected`. Then run `agent-infra-internal task-event {task-id} review-analysis.completed --agent {agent} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {n} --major {n} --minor {n} --manual-validation {n}`.
69
+ After the report, submit each new finding with `agent-infra-internal task-ledger {task-id} finding-upsert --stage analysis --review-artifact {review-artifact} --ordinal {n} --severity {blocker|major|minor} --evidence {review-artifact}#{anchor}`; submit prior-response dispositions with `finding-review --id {ledger-id} --status {confirmed|closed|open|needs-human-decision} --evidence {evidence}`. Do not scan ids or edit ledger rows. After all ledger writes, call `agent-infra-internal task-review {task-id} finalize-summary --stage analysis --artifact {review-artifact}` exactly once.
70
+
71
+ Bind and reuse this structured mapping from that one response:
72
+
73
+ ```text
74
+ {unresolved-blockers} = stageStatus.unresolvedFindingCounts.blocker
75
+ {unresolved-major} = stageStatus.unresolvedFindingCounts.major
76
+ {unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
77
+ ```
78
+
79
+ The intent atomically finalizes the report summary and returns the same ledger snapshot. Do not call `stage-status`, replace placeholders manually, or rescan the finding list. If finalization fails or a response field is missing, stop before the completion event. Derive the verdict and next-step branch from the same response's `stageStatus.canAdvance`: only `canAdvance=true` permits `approved`; otherwise use `changes-requested` or `rejected`. Then run `agent-infra-internal task-event {task-id} review-analysis.completed --agent {agent} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {unresolved-blockers} --major {unresolved-major} --minor {unresolved-minor} --manual-validation {n}`.
69
80
 
70
81
  `manual-validation` is the data source for the `Manual-validation` count folded into review rows in `ai task log`; do not add a parallel manual-verification field.
71
82
 
@@ -79,6 +90,6 @@ agent-infra-internal task-verify {task-id} review-analysis.completed --artifact
79
90
 
80
91
  ### 8. Tell the User
81
92
 
82
- Use the conclusion branch in `reference/output-templates.md` and show all TUI command formats.
93
+ Use the conclusion branch in `reference/output-templates.md` and render the selected next-step commands through the shared helper.
83
94
 
84
95
  > 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).
@@ -58,6 +58,7 @@ agent-infra-internal task-snapshot {task-id} --format text
58
58
 
59
59
  重点检查需求完整性、风险识别、影响范围、开放问题和工作量评估。
60
60
 
61
+ > 共享检视方法见 `.agents/rules/review-method.md`。执行此步骤前先读取该规则,并按五遍协议完成覆盖声明、风险镜头判断、追踪矩阵和反证检视。
61
62
  > 详细审查标准见 `reference/review-criteria.md`。执行此步骤前先读取 `reference/review-criteria.md`。
62
63
 
63
64
  ### 5. 编写审查报告
@@ -68,7 +69,17 @@ agent-infra-internal task-snapshot {task-id} --format text
68
69
 
69
70
  ### 6. 更新任务状态
70
71
 
71
- 报告完成后,新 finding 逐条调用 `agent-infra-internal task-ledger {task-id} finding-upsert --stage analysis --review-artifact {review-artifact} --ordinal {n} --severity {blocker|major|minor} --evidence {review-artifact}#{anchor}`;复核上一轮响应时调用 `finding-review --id {ledger-id} --status {confirmed|closed|open|needs-human-decision} --evidence {相称证据}`。不得扫描编号或手写账本行。全部账本写入完成后只调用一次 `agent-infra-internal task-ledger {task-id} stage-status --stage analysis`,以 `stageStatus.canAdvance` 决定 verdict 和下一步,并以 `unresolvedFindingCounts` 填写 blocker/major/minor:仅 `canAdvance=true` 可用 `approved`,否则必须用 `changes-requested` 或 `rejected`。随后执行 `agent-infra-internal task-event {task-id} review-analysis.completed --agent {agent} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {n} --major {n} --minor {n} --manual-validation {n}`。
72
+ 报告完成后,新 finding 逐条调用 `agent-infra-internal task-ledger {task-id} finding-upsert --stage analysis --review-artifact {review-artifact} --ordinal {n} --severity {blocker|major|minor} --evidence {review-artifact}#{anchor}`;复核上一轮响应时调用 `finding-review --id {ledger-id} --status {confirmed|closed|open|needs-human-decision} --evidence {相称证据}`。不得扫描编号或手写账本行。全部账本写入完成后只调用一次 `agent-infra-internal task-review {task-id} finalize-summary --stage analysis --artifact {review-artifact}`。
73
+
74
+ 从该次返回值绑定并复用以下结构化映射:
75
+
76
+ ```text
77
+ {unresolved-blockers} = stageStatus.unresolvedFindingCounts.blocker
78
+ {unresolved-major} = stageStatus.unresolvedFindingCounts.major
79
+ {unresolved-minor} = stageStatus.unresolvedFindingCounts.minor
80
+ ```
81
+
82
+ 该 intent 原子最终化报告摘要并返回同一次账本快照;不得再调用 `stage-status`、手工替换占位符或扫描问题清单。最终化失败或返回字段缺失时,停止在完成事件之前。以同一次返回的 `stageStatus.canAdvance` 决定 verdict 和下一步:仅 `canAdvance=true` 可用 `approved`,否则必须用 `changes-requested` 或 `rejected`。随后执行 `agent-infra-internal task-event {task-id} review-analysis.completed --agent {agent} --artifact {review-artifact} --verdict {approved|changes-requested|rejected} --blockers {unresolved-blockers} --major {unresolved-major} --minor {unresolved-minor} --manual-validation {n}`。
72
83
 
73
84
  `manual-validation` 是 `ai task log` 中 review 行「人工校验点」(EN `Manual-validation`)计数的数据源;不要新增并行人工验证字段。
74
85
 
@@ -84,7 +95,7 @@ agent-infra-internal task-verify {task-id} review-analysis.completed --artifact
84
95
 
85
96
  ### 8. 告知用户
86
97
 
87
- 按 `reference/output-templates.md` 的结论分支输出,并展示所有 TUI 的下一步命令。
98
+ 按 `reference/output-templates.md` 的结论分支输出,并通过统一 helper 渲染已选场景的下一步命令。
88
99
 
89
100
  > 渲染最终输出前先读取 `.agents/rules/next-step-output.md` 并落实其两类规则:(1) 「下一步」命令的 `{task-ref}` 渲染为当前任务短号 `NN`(取值与回退见该文件),其他 `{task-id}` 占位(报告标题、路径)保持完整 TASK-id 形式;(2) 在面向用户输出的绝对最后一行追加 `Completed at` 收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
90
101
 
@@ -93,7 +104,7 @@ agent-infra-internal task-verify {task-id} review-analysis.completed --artifact
93
104
  - [ ] 已审查最新分析上下文
94
105
  - [ ] 已创建 `{review-artifact}`
95
106
  - [ ] 已更新 task.md 并追加 Activity Log
96
- - [ ] 已展示所有 TUI 的下一步命令
107
+ - [ ] 已通过统一 helper 渲染已选场景的下一步命令
97
108
 
98
109
  ## 注意事项
99
110
 
@@ -19,6 +19,9 @@
19
19
  "file_pattern": "review-analysis.md|review-analysis-r{N}.md",
20
20
  "required_sections": [
21
21
  "Review Summary",
22
+ "Review Coverage Declaration",
23
+ "Requirement Analysis Coverage",
24
+ "Traceability Matrix",
22
25
  "Findings",
23
26
  "Non-blocking Advisories",
24
27
  "Manual Validation Items",
@@ -33,6 +36,9 @@
33
36
  "^\\$ "
34
37
  ]
35
38
  },
39
+ "review-summary": {
40
+ "stage": "analysis"
41
+ },
36
42
  "activity-log": {
37
43
  "expected_action_pattern": "(Review Analysis|Analysis Review) \\(Round \\d+\\)"
38
44
  },