@fitlab-ai/agent-infra 0.9.0 → 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 (327) hide show
  1. package/README.md +22 -5
  2. package/README.zh-CN.md +21 -5
  3. package/bin/cli.ts +12 -0
  4. package/dist/bin/cli.js +14 -0
  5. package/dist/bin/internal-cli.js +20 -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/platform-release-notes.js +53 -0
  31. package/dist/lib/internal/release-workflow.js +175 -17
  32. package/dist/lib/internal/task-orchestration.js +151 -0
  33. package/dist/lib/internal/task-review.js +65 -0
  34. package/dist/lib/merge.js +2 -1
  35. package/dist/lib/platform/adapters.js +38 -1
  36. package/dist/lib/platform/change-request-git-evidence.js +113 -0
  37. package/dist/lib/platform/github-release-notes.js +96 -0
  38. package/dist/lib/platform/issues.js +4 -2
  39. package/dist/lib/platform/merged-pr-equivalence.js +84 -0
  40. package/dist/lib/platform/pr-checks.js +43 -15
  41. package/dist/lib/platform/pull-requests.js +113 -7
  42. package/dist/lib/platform/release-notes.js +143 -0
  43. package/dist/lib/platform/releases.js +1 -1
  44. package/dist/lib/platform/verification-required.js +31 -9
  45. package/dist/lib/prompt.js +15 -3
  46. package/dist/lib/release/channels.js +4 -1
  47. package/dist/lib/release/workflow.js +4 -2
  48. package/dist/lib/remove-dir.js +25 -0
  49. package/dist/lib/run/tui.js +8 -2
  50. package/dist/lib/sandbox/agent-client-reconciler.js +234 -0
  51. package/dist/lib/sandbox/build-proxy.js +63 -0
  52. package/dist/lib/sandbox/clipboard/linux.js +2 -1
  53. package/dist/lib/sandbox/commands/create.js +133 -189
  54. package/dist/lib/sandbox/commands/enter.js +17 -1
  55. package/dist/lib/sandbox/commands/prune.js +2 -2
  56. package/dist/lib/sandbox/commands/rebuild.js +24 -7
  57. package/dist/lib/sandbox/commands/rm.js +3 -2
  58. package/dist/lib/sandbox/config.js +21 -4
  59. package/dist/lib/sandbox/constants.js +3 -0
  60. package/dist/lib/sandbox/dockerfile.js +2 -1
  61. package/dist/lib/sandbox/image-build.js +2 -1
  62. package/dist/lib/sandbox/managed-fs.js +10 -5
  63. package/dist/lib/sandbox/recovery.js +52 -36
  64. package/dist/lib/sandbox/runtimes/ai-tools.dockerfile +24 -3
  65. package/dist/lib/sandbox/runtimes/base.dockerfile +8 -1
  66. package/dist/lib/sandbox/runtimes/java17.dockerfile +8 -1
  67. package/dist/lib/sandbox/runtimes/java21.dockerfile +8 -1
  68. package/dist/lib/sandbox/runtimes/node20.dockerfile +8 -1
  69. package/dist/lib/sandbox/runtimes/node22.dockerfile +8 -1
  70. package/dist/lib/sandbox/runtimes/python3.dockerfile +8 -1
  71. package/dist/lib/sandbox/shell.js +3 -2
  72. package/dist/lib/sandbox/tool-types.js +8 -0
  73. package/dist/lib/sandbox/tools.js +2 -126
  74. package/dist/lib/task/artifact-lifecycle.js +1 -49
  75. package/dist/lib/task/commands/decisions.js +50 -20
  76. package/dist/lib/task/commands/issue-body.js +10 -5
  77. package/dist/lib/task/delegation-receipts.js +107 -0
  78. package/dist/lib/task/events.js +101 -2
  79. package/dist/lib/task/issue-form.js +2 -0
  80. package/dist/lib/task/orchestration.js +420 -0
  81. package/dist/lib/task/review-artifacts.js +143 -59
  82. package/dist/lib/task/review-finalization.js +166 -0
  83. package/dist/lib/task/review-fingerprint.js +13 -0
  84. package/dist/lib/task/verification-checks.js +2 -1
  85. package/dist/lib/task/verification-engine.js +168 -23
  86. package/dist/lib/task/verification-review.js +1 -1
  87. package/dist/lib/task/verification.js +4 -2
  88. package/dist/lib/task/workspace-snapshot.js +34 -0
  89. package/dist/lib/update.js +42 -161
  90. package/lib/agent-client.ts +214 -0
  91. package/lib/agent-clients/adapter.ts +461 -0
  92. package/lib/agent-clients/adapters/claude-code.ts +70 -0
  93. package/lib/agent-clients/adapters/codex-sandbox.ts +245 -0
  94. package/lib/agent-clients/adapters/codex.ts +58 -0
  95. package/lib/agent-clients/adapters/gemini-cli.ts +65 -0
  96. package/lib/agent-clients/adapters/index.ts +27 -0
  97. package/lib/agent-clients/adapters/opencode.ts +66 -0
  98. package/lib/agent-clients/config.ts +278 -0
  99. package/lib/agent-clients/custom-tuis.ts +149 -0
  100. package/lib/agent-clients/invocation.ts +19 -0
  101. package/lib/agent-clients/next-steps.ts +72 -0
  102. package/lib/agent-clients/project-assets.ts +96 -0
  103. package/lib/agent-clients/reconcile.ts +324 -0
  104. package/lib/agent-clients/registry.ts +144 -0
  105. package/lib/agent-clients/schema.ts +62 -0
  106. package/lib/agent-clients/types.ts +78 -0
  107. package/lib/benchmark/schemas/v1.0.0/case-manifest.schema.json +120 -0
  108. package/lib/benchmark/schemas/v1.0.0/common.schema.json +109 -0
  109. package/lib/benchmark/schemas/v1.0.0/grader-result.schema.json +160 -0
  110. package/lib/benchmark/schemas/v1.0.0/run-manifest.schema.json +122 -0
  111. package/lib/benchmark/schemas/v1.0.0/subject.schema.json +227 -0
  112. package/lib/builtin-tuis.ts +16 -15
  113. package/lib/defaults.json +24 -12
  114. package/lib/git/review-snapshot.ts +39 -9
  115. package/lib/git/reviewed-commit-equivalence.ts +135 -0
  116. package/lib/init.ts +53 -121
  117. package/lib/internal/agent-client.ts +131 -0
  118. package/lib/internal/git-workflow.ts +1 -1
  119. package/lib/internal/platform-release-notes.ts +55 -0
  120. package/lib/internal/release-workflow.ts +172 -18
  121. package/lib/internal/task-orchestration.ts +132 -0
  122. package/lib/internal/task-review.ts +65 -0
  123. package/lib/merge.ts +2 -1
  124. package/lib/platform/adapters.ts +142 -3
  125. package/lib/platform/change-request-git-evidence.ts +159 -0
  126. package/lib/platform/github-release-notes.ts +132 -0
  127. package/lib/platform/issues.ts +6 -4
  128. package/lib/platform/merged-pr-equivalence.ts +107 -0
  129. package/lib/platform/pr-checks.ts +57 -28
  130. package/lib/platform/pull-requests.ts +140 -25
  131. package/lib/platform/release-notes.ts +167 -0
  132. package/lib/platform/releases.ts +1 -1
  133. package/lib/platform/verification-required.ts +37 -9
  134. package/lib/prompt.ts +16 -3
  135. package/lib/release/channels.ts +4 -1
  136. package/lib/release/workflow.ts +4 -3
  137. package/lib/remove-dir.ts +28 -0
  138. package/lib/run/tui.ts +9 -1
  139. package/lib/sandbox/agent-client-reconciler.ts +378 -0
  140. package/lib/sandbox/build-proxy.ts +94 -0
  141. package/lib/sandbox/clipboard/linux.ts +2 -1
  142. package/lib/sandbox/commands/create.ts +188 -203
  143. package/lib/sandbox/commands/enter.ts +23 -1
  144. package/lib/sandbox/commands/prune.ts +2 -2
  145. package/lib/sandbox/commands/rebuild.ts +29 -7
  146. package/lib/sandbox/commands/rm.ts +3 -2
  147. package/lib/sandbox/config.ts +31 -4
  148. package/lib/sandbox/constants.ts +6 -0
  149. package/lib/sandbox/dockerfile.ts +2 -1
  150. package/lib/sandbox/image-build.ts +4 -1
  151. package/lib/sandbox/managed-fs.ts +18 -5
  152. package/lib/sandbox/recovery.ts +98 -67
  153. package/lib/sandbox/runtimes/ai-tools.dockerfile +24 -3
  154. package/lib/sandbox/runtimes/base.dockerfile +8 -1
  155. package/lib/sandbox/runtimes/java17.dockerfile +8 -1
  156. package/lib/sandbox/runtimes/java21.dockerfile +8 -1
  157. package/lib/sandbox/runtimes/node20.dockerfile +8 -1
  158. package/lib/sandbox/runtimes/node22.dockerfile +8 -1
  159. package/lib/sandbox/runtimes/python3.dockerfile +8 -1
  160. package/lib/sandbox/shell.ts +4 -2
  161. package/lib/sandbox/tool-types.ts +143 -0
  162. package/lib/sandbox/tools.ts +5 -157
  163. package/lib/task/artifact-lifecycle.ts +1 -38
  164. package/lib/task/commands/decisions.ts +53 -20
  165. package/lib/task/commands/issue-body.ts +10 -5
  166. package/lib/task/delegation-receipts.ts +170 -0
  167. package/lib/task/events.ts +111 -3
  168. package/lib/task/issue-form.ts +4 -0
  169. package/lib/task/orchestration.ts +543 -0
  170. package/lib/task/review-artifacts.ts +201 -69
  171. package/lib/task/review-finalization.ts +275 -0
  172. package/lib/task/review-fingerprint.ts +15 -1
  173. package/lib/task/verification-checks.ts +2 -1
  174. package/lib/task/verification-engine.ts +190 -25
  175. package/lib/task/verification-review.ts +2 -0
  176. package/lib/task/verification.ts +6 -3
  177. package/lib/task/workspace-snapshot.ts +36 -0
  178. package/lib/update.ts +48 -184
  179. package/package.json +2 -2
  180. package/templates/.agents/README.en.md +21 -20
  181. package/templates/.agents/README.zh-CN.md +21 -20
  182. package/templates/.agents/hooks/lifecycle-delegation.js +64 -0
  183. package/templates/.agents/rules/README.en.md +2 -0
  184. package/templates/.agents/rules/README.zh-CN.md +2 -0
  185. package/templates/.agents/rules/commit-and-pr.en.md +1 -0
  186. package/templates/.agents/rules/commit-and-pr.zh-CN.md +1 -0
  187. package/templates/.agents/rules/human-decision-context.en.md +14 -12
  188. package/templates/.agents/rules/human-decision-context.zh-CN.md +14 -12
  189. package/templates/.agents/rules/lifecycle-orchestration.en.md +21 -0
  190. package/templates/.agents/rules/lifecycle-orchestration.zh-CN.md +21 -0
  191. package/templates/.agents/rules/next-step-output.en.md +16 -0
  192. package/templates/.agents/rules/next-step-output.zh-CN.md +16 -0
  193. package/templates/.agents/rules/no-mid-flow-questions.en.md +2 -0
  194. package/templates/.agents/rules/no-mid-flow-questions.zh-CN.md +2 -0
  195. package/templates/.agents/rules/release-commands.en.md +2 -2
  196. package/templates/.agents/rules/release-commands.github.en.md +15 -39
  197. package/templates/.agents/rules/release-commands.github.zh-CN.md +14 -38
  198. package/templates/.agents/rules/release-commands.zh-CN.md +2 -2
  199. package/templates/.agents/rules/review-handshake.en.md +4 -3
  200. package/templates/.agents/rules/review-handshake.zh-CN.md +4 -3
  201. package/templates/.agents/rules/review-method.en.md +113 -0
  202. package/templates/.agents/rules/review-method.zh-CN.md +98 -0
  203. package/templates/.agents/rules/testing-discipline.en.md +20 -2
  204. package/templates/.agents/rules/testing-discipline.zh-CN.md +20 -2
  205. package/templates/.agents/skills/analyze-task/SKILL.en.md +9 -6
  206. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +9 -6
  207. package/templates/.agents/skills/block-task/SKILL.en.md +4 -4
  208. package/templates/.agents/skills/block-task/SKILL.zh-CN.md +4 -4
  209. package/templates/.agents/skills/cancel-task/SKILL.en.md +4 -4
  210. package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +5 -5
  211. package/templates/.agents/skills/check-task/SKILL.en.md +16 -16
  212. package/templates/.agents/skills/check-task/SKILL.zh-CN.md +16 -16
  213. package/templates/.agents/skills/close-codescan/SKILL.en.md +4 -4
  214. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +4 -4
  215. package/templates/.agents/skills/close-dependabot/SKILL.en.md +4 -4
  216. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +4 -4
  217. package/templates/.agents/skills/code-task/SKILL.en.md +1 -1
  218. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +2 -2
  219. package/templates/.agents/skills/code-task/reference/fix-mode.en.md +14 -16
  220. package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +14 -16
  221. package/templates/.agents/skills/code-task/reference/output-template.en.md +3 -3
  222. package/templates/.agents/skills/code-task/reference/output-template.zh-CN.md +3 -3
  223. package/templates/.agents/skills/commit/SKILL.en.md +11 -1
  224. package/templates/.agents/skills/commit/SKILL.zh-CN.md +11 -1
  225. package/templates/.agents/skills/commit/reference/task-status-update.en.md +24 -28
  226. package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +24 -28
  227. package/templates/.agents/skills/complete-task/SKILL.en.md +3 -3
  228. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +3 -3
  229. package/templates/.agents/skills/complete-task/config/verify.en.json +0 -1
  230. package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +0 -1
  231. package/templates/.agents/skills/create-pr/SKILL.en.md +10 -10
  232. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +10 -10
  233. package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +3 -3
  234. package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +3 -3
  235. package/templates/.agents/skills/create-release-note/SKILL.en.md +17 -38
  236. package/templates/.agents/skills/create-release-note/SKILL.zh-CN.md +16 -37
  237. package/templates/.agents/skills/create-task/SKILL.en.md +15 -11
  238. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +15 -11
  239. package/templates/.agents/skills/create-task/reference/context-capture.en.md +29 -0
  240. package/templates/.agents/skills/create-task/reference/context-capture.zh-CN.md +29 -0
  241. package/templates/.agents/skills/import-codescan/SKILL.en.md +5 -5
  242. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +5 -5
  243. package/templates/.agents/skills/import-dependabot/SKILL.en.md +5 -5
  244. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +5 -5
  245. package/templates/.agents/skills/import-issue/SKILL.en.md +5 -5
  246. package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +5 -5
  247. package/templates/.agents/skills/init-labels/SKILL.en.md +4 -4
  248. package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +4 -4
  249. package/templates/.agents/skills/init-milestones/SKILL.en.md +4 -4
  250. package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +4 -4
  251. package/templates/.agents/skills/plan-task/SKILL.en.md +5 -5
  252. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +5 -5
  253. package/templates/.agents/skills/refine-title/SKILL.en.md +1 -1
  254. package/templates/.agents/skills/refine-title/SKILL.zh-CN.md +1 -1
  255. package/templates/.agents/skills/release/SKILL.en.md +1 -1
  256. package/templates/.agents/skills/review-analysis/SKILL.en.md +13 -2
  257. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +14 -3
  258. package/templates/.agents/skills/review-analysis/config/verify.en.json +6 -0
  259. package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +6 -0
  260. package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +13 -15
  261. package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +13 -15
  262. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +51 -5
  263. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +52 -6
  264. package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +25 -22
  265. package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +25 -22
  266. package/templates/.agents/skills/review-code/SKILL.en.md +28 -8
  267. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +28 -8
  268. package/templates/.agents/skills/review-code/config/verify.en.json +7 -0
  269. package/templates/.agents/skills/review-code/config/verify.zh-CN.json +7 -0
  270. package/templates/.agents/skills/review-code/reference/concurrency-risks.en.md +25 -0
  271. package/templates/.agents/skills/review-code/reference/concurrency-risks.zh-CN.md +25 -0
  272. package/templates/.agents/skills/review-code/reference/cross-platform-risks.en.md +27 -0
  273. package/templates/.agents/skills/review-code/reference/cross-platform-risks.zh-CN.md +27 -0
  274. package/templates/.agents/skills/review-code/reference/documentation-antipatterns.en.md +13 -0
  275. package/templates/.agents/skills/review-code/reference/documentation-antipatterns.zh-CN.md +13 -0
  276. package/templates/.agents/skills/review-code/reference/migration-risks.en.md +25 -0
  277. package/templates/.agents/skills/review-code/reference/migration-risks.zh-CN.md +25 -0
  278. package/templates/.agents/skills/review-code/reference/output-templates.en.md +22 -24
  279. package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +22 -24
  280. package/templates/.agents/skills/review-code/reference/report-template.en.md +54 -7
  281. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +54 -7
  282. package/templates/.agents/skills/review-code/reference/review-criteria.en.md +29 -24
  283. package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +29 -24
  284. package/templates/.agents/skills/review-code/reference/security-risks.en.md +25 -0
  285. package/templates/.agents/skills/review-code/reference/security-risks.zh-CN.md +25 -0
  286. package/templates/.agents/skills/review-plan/SKILL.en.md +13 -2
  287. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +14 -3
  288. package/templates/.agents/skills/review-plan/config/verify.en.json +6 -0
  289. package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +6 -0
  290. package/templates/.agents/skills/review-plan/reference/output-templates.en.md +13 -15
  291. package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +13 -15
  292. package/templates/.agents/skills/review-plan/reference/report-template.en.md +61 -5
  293. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +61 -5
  294. package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +21 -24
  295. package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +21 -24
  296. package/templates/.agents/skills/run-task/SKILL.en.md +22 -0
  297. package/templates/.agents/skills/run-task/SKILL.zh-CN.md +22 -0
  298. package/templates/.agents/skills/run-task/config/verify.en.json +9 -0
  299. package/templates/.agents/skills/run-task/config/verify.zh-CN.json +9 -0
  300. package/templates/.agents/skills/test/SKILL.en.md +4 -4
  301. package/templates/.agents/skills/test/SKILL.zh-CN.md +4 -4
  302. package/templates/.agents/skills/test-integration/SKILL.en.md +4 -4
  303. package/templates/.agents/skills/test-integration/SKILL.zh-CN.md +4 -4
  304. package/templates/.agents/skills/update-agent-infra/SKILL.en.md +5 -5
  305. package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +5 -5
  306. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +647 -203
  307. package/templates/.agents/skills/upgrade-dependency/SKILL.en.md +4 -4
  308. package/templates/.agents/skills/upgrade-dependency/SKILL.zh-CN.md +4 -4
  309. package/templates/.agents/skills/watch-pr/SKILL.en.md +8 -8
  310. package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +8 -8
  311. package/templates/.agents/templates/task.en.md +18 -0
  312. package/templates/.agents/templates/task.zh-CN.md +18 -0
  313. package/templates/.claude/agents/agent-infra-lifecycle-executor.en.md +6 -0
  314. package/templates/.claude/agents/agent-infra-lifecycle-executor.zh-CN.md +6 -0
  315. package/templates/.claude/agents/agent-infra-lifecycle-reviewer.en.md +6 -0
  316. package/templates/.claude/agents/agent-infra-lifecycle-reviewer.zh-CN.md +6 -0
  317. package/templates/.claude/commands/run-task.en.md +8 -0
  318. package/templates/.claude/commands/run-task.zh-CN.md +8 -0
  319. package/templates/.claude/settings.json +24 -0
  320. package/templates/.codex/agents/agent-infra-lifecycle-executor.en.toml +3 -0
  321. package/templates/.codex/agents/agent-infra-lifecycle-executor.zh-CN.toml +3 -0
  322. package/templates/.codex/agents/agent-infra-lifecycle-reviewer.en.toml +3 -0
  323. package/templates/.codex/agents/agent-infra-lifecycle-reviewer.zh-CN.toml +3 -0
  324. package/templates/.gemini/commands/_project_/run-task.en.toml +8 -0
  325. package/templates/.gemini/commands/_project_/run-task.zh-CN.toml +8 -0
  326. package/templates/.opencode/commands/run-task.en.md +11 -0
  327. package/templates/.opencode/commands/run-task.zh-CN.md +11 -0
@@ -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
  },
@@ -19,6 +19,9 @@
19
19
  "file_pattern": "review-analysis.md|review-analysis-r{N}.md",
20
20
  "required_sections": [
21
21
  "审查摘要",
22
+ "检视覆盖声明",
23
+ "需求分析专项覆盖",
24
+ "追踪矩阵",
22
25
  "问题清单",
23
26
  "非阻塞建议",
24
27
  "人工校验项",
@@ -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
  },
@@ -15,22 +15,20 @@ Rules:
15
15
  - Do not mix text from multiple scenarios
16
16
  - If `Blocker > 0`, never use an approved template
17
17
  - Never count manual-validation items as blocker / major / minor or use them to trigger Scenario B/C/D
18
- - The selected scenario must include all TUI command formats
18
+ - The selected scenario must generate `{next-step-commands}` through the shared helper
19
19
  - The count line shows 4 numbers. `Human-decision` (`{h}`) counts this stage's `needs-human-decision` rows; because those rows are unresolved, `{h} > 0` means `canAdvance=false`. Expand the "Pending human-decision pre-block" from `.agents/rules/next-step-output.md` and show revision and re-review paths only.
20
20
 
21
- For Scenarios B/C/D, follow the revision commands with re-review commands: `/review-analysis {task-ref}`, `/{{project}}:review-analysis {task-ref}`, and `$review-analysis {task-ref}`.
22
-
23
21
  ### Scenario A: Approved with no findings
24
22
 
23
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill plan-task --task-ref {task-ref}`.
24
+
25
25
  ```text
26
26
  Task {task-id} requirement analysis review completed. Verdict: approved.
27
27
  - Blockers: 0 | Major issues: 0 | Minor issues: 0 | Human-decision: {h}
28
28
  [- Review report: .agents/workspace/active/{task-id}/{review-artifact}]
29
29
 
30
30
  Next step - write the technical plan:
31
- - Claude Code / OpenCode: /plan-task {task-ref}
32
- - Gemini CLI: /{{project}}:plan-task {task-ref}
33
- - Codex CLI: $plan-task {task-ref}
31
+ {next-step-commands}
34
32
 
35
33
  [When manual-validation > 0, append:]
36
34
  Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /analyze-task.
@@ -38,15 +36,15 @@ Reminder: manual-validation items belong in the PR description manual verificati
38
36
 
39
37
  ### Scenario B: Changes requested (major / minor)
40
38
 
39
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
40
+
41
41
  ```text
42
42
  Task {task-id} requirement analysis review completed. Verdict: changes requested.
43
43
  - Blockers: 0 | Major issues: {n} | Minor issues: {n} | Human-decision: {h}
44
44
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
45
45
 
46
46
  Next step - revise requirement analysis:
47
- - Claude Code / OpenCode: /analyze-task {task-ref}
48
- - Gemini CLI: /{{project}}:analyze-task {task-ref}
49
- - Codex CLI: $analyze-task {task-ref}
47
+ {next-step-commands}
50
48
 
51
49
  [When manual-validation > 0, append:]
52
50
  Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /analyze-task.
@@ -54,15 +52,15 @@ Reminder: manual-validation items belong in the PR description manual verificati
54
52
 
55
53
  ### Scenario C: Changes requested
56
54
 
55
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
56
+
57
57
  ```text
58
58
  Task {task-id} requirement analysis review completed. Verdict: changes requested.
59
59
  - Blockers: {n} | Major issues: {n} | Minor issues: {n} | Human-decision: {h}
60
60
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
61
61
 
62
62
  Next step - revise requirement analysis:
63
- - Claude Code / OpenCode: /analyze-task {task-ref}
64
- - Gemini CLI: /{{project}}:analyze-task {task-ref}
65
- - Codex CLI: $analyze-task {task-ref}
63
+ {next-step-commands}
66
64
 
67
65
  [When manual-validation > 0, append:]
68
66
  Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /analyze-task.
@@ -70,15 +68,15 @@ Reminder: manual-validation items belong in the PR description manual verificati
70
68
 
71
69
  ### Scenario D: Rejected
72
70
 
71
+ Populate `{next-step-commands}` for this scenario by running `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}`.
72
+
73
73
  ```text
74
74
  Task {task-id} requirement analysis review completed. Verdict: rejected, fresh analysis or requirement clarification required.
75
75
  - Blockers: {n} | Major issues: {n} | Minor issues: {n} | Human-decision: {h}
76
76
  - Review report: .agents/workspace/active/{task-id}/{review-artifact}
77
77
 
78
78
  Next step - re-analyze:
79
- - Claude Code / OpenCode: /analyze-task {task-ref}
80
- - Gemini CLI: /{{project}}:analyze-task {task-ref}
81
- - Codex CLI: $analyze-task {task-ref}
79
+ {next-step-commands}
82
80
 
83
81
  [When manual-validation > 0, append:]
84
82
  Reminder: manual-validation items belong in the PR description manual verification checklist and should not trigger /analyze-task.
@@ -15,22 +15,20 @@
15
15
  - 不要混用不同场景的文案
16
16
  - 只要 `Blocker > 0`,就绝对不能输出通过模板
17
17
  - manual-validation 项绝对不能被计入 blocker / major / minor 计数,也不能用作触发场景 B/C/D 的依据
18
- - 所选场景中必须包含所有 TUI 命令格式
18
+ - 所选场景必须通过统一 helper 生成 `{next-step-commands}`
19
19
  - 计数行固定显示 4 个数字。`人工裁决`(`{h}`)是本阶段 `needs-human-decision` 行数;它属于未闭环账本状态,因此 `{h} > 0` 时 `canAdvance=false`,必须按 `.agents/rules/next-step-output.md` 的「人工裁决待办前置块」展开详情,并只输出修订与复审路径。
20
20
 
21
- 场景 B/C/D 在修订命令后继续列出复审命令:`/review-analysis {task-ref}`、`/{{project}}:review-analysis {task-ref}`、`$review-analysis {task-ref}`。
22
-
23
21
  ### 场景 A:通过且无问题
24
22
 
23
+ 使用 `agent-infra-internal agent-client next-steps --skill plan-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
24
+
25
25
  ```text
26
26
  任务 {task-id} 需求分析审查完成。结论:通过。
27
27
  - 阻塞项:0 | 主要问题:0 | 次要问题:0 | 人工裁决:{h}
28
28
  [- 审查报告:.agents/workspace/active/{task-id}/{review-artifact}]
29
29
 
30
30
  下一步 - 编写技术方案:
31
- - Claude Code / OpenCode:/plan-task {task-ref}
32
- - Gemini CLI:/{{project}}:plan-task {task-ref}
33
- - Codex CLI:$plan-task {task-ref}
31
+ {next-step-commands}
34
32
 
35
33
  [当 manual-validation > 0 时,在最后附加一行:]
36
34
  提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
@@ -38,15 +36,15 @@
38
36
 
39
37
  ### 场景 B:需要修改(major / minor)
40
38
 
39
+ 使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
40
+
41
41
  ```text
42
42
  任务 {task-id} 需求分析审查完成。结论:需要修改。
43
43
  - 阻塞项:0 | 主要问题:{n} | 次要问题:{n} | 人工裁决:{h}
44
44
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
45
45
 
46
46
  下一步 - 修订需求分析:
47
- - Claude Code / OpenCode:/analyze-task {task-ref}
48
- - Gemini CLI:/{{project}}:analyze-task {task-ref}
49
- - Codex CLI:$analyze-task {task-ref}
47
+ {next-step-commands}
50
48
 
51
49
  [当 manual-validation > 0 时,在最后附加一行:]
52
50
  提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
@@ -54,15 +52,15 @@
54
52
 
55
53
  ### 场景 C:需要修改
56
54
 
55
+ 使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
56
+
57
57
  ```text
58
58
  任务 {task-id} 需求分析审查完成。结论:需要修改。
59
59
  - 阻塞项:{n} | 主要问题:{n} | 次要问题:{n} | 人工裁决:{h}
60
60
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
61
61
 
62
62
  下一步 - 修订需求分析:
63
- - Claude Code / OpenCode:/analyze-task {task-ref}
64
- - Gemini CLI:/{{project}}:analyze-task {task-ref}
65
- - Codex CLI:$analyze-task {task-ref}
63
+ {next-step-commands}
66
64
 
67
65
  [当 manual-validation > 0 时,在最后附加一行:]
68
66
  提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
@@ -70,15 +68,15 @@
70
68
 
71
69
  ### 场景 D:拒绝
72
70
 
71
+ 使用 `agent-infra-internal agent-client next-steps --skill analyze-task --task-ref {task-ref}` 生成本场景的 `{next-step-commands}`。
72
+
73
73
  ```text
74
74
  任务 {task-id} 需求分析审查完成。结论:拒绝,需要重新分析或补充需求澄清。
75
75
  - 阻塞项:{n} | 主要问题:{n} | 次要问题:{n} | 人工裁决:{h}
76
76
  - 审查报告:.agents/workspace/active/{task-id}/{review-artifact}
77
77
 
78
78
  下一步 - 重新分析:
79
- - Claude Code / OpenCode:/analyze-task {task-ref}
80
- - Gemini CLI:/{{project}}:analyze-task {task-ref}
81
- - Codex CLI:$analyze-task {task-ref}
79
+ {next-step-commands}
82
80
 
83
81
  [当 manual-validation > 0 时,在最后附加一行:]
84
82
  提醒:manual-validation 项需在 PR description 的「待人工验证」清单中承接,不应触发 /analyze-task。
@@ -22,7 +22,45 @@ Use this template when writing `review-analysis.md` or `review-analysis-r{N}.md`
22
22
  - **Review Time**: {timestamp}
23
23
  - **Scope**: {file-count and major modules}
24
24
  - **Overall Verdict**: {Approved / Changes Requested / Rejected}
25
- - **Findings (AI-actionable)**: 0 blockers, 0 majors, 0 minors / **Manual validation**: 0
25
+ - **Findings (AI-actionable)**: {unresolved-blockers} blockers, {unresolved-major} majors, {unresolved-minor} minors / **Manual validation**: 0
26
+
27
+ ## Review Coverage Declaration
28
+
29
+ | pass_id | scope | evidence | result | gaps_or_assumptions |
30
+ |---------|-------|----------|--------|---------------------|
31
+ | pass-1..5 | {scope actually reviewed} | {artifact / file:line / command} | {finding or conclusion} | {gap or assumption} |
32
+
33
+ | lens_id | trigger_evidence | loaded | result |
34
+ |---------|------------------|--------|--------|
35
+ | {registry token} | {trigger or non-trigger evidence} | {yes / no / not-applicable} | {lens result} |
36
+
37
+ ## Requirement Analysis Coverage
38
+
39
+ | perspective_id | applicability | reviewed_scope | evidence | result_or_gap |
40
+ |----------------|---------------|----------------|----------|---------------|
41
+ | user | {applicable / not-applicable} | {business goals, user outcomes, non-goals, and acceptance} | {source_id / artifact / file:line} | {covered / gap} |
42
+ | maintainer | {applicable / not-applicable} | {maintenance boundaries, dependencies, compatibility, and ownership} | {source_id / artifact / file:line} | {covered / gap} |
43
+ | operations | {applicable / not-applicable} | {deployment, runtime, observability, recovery, and support constraints} | {source_id / artifact / file:line} | {covered / gap} |
44
+ | security | {applicable / not-applicable} | {trust boundaries, permissions, data, and abuse risks} | {source_id / artifact / file:line} | {covered / gap} |
45
+ | testing | {applicable / not-applicable} | {inputs, actions, results, boundaries, and verification environment} | {source_id / artifact / file:line} | {covered / gap} |
46
+
47
+ | quality_id | source | stakeholder | priority_or_tradeoff | verification | result_or_gap |
48
+ |------------|--------|-------------|----------------------|--------------|---------------|
49
+ | {stable identifier} | {source_id} | {stakeholder} | {priority or trade-off state} | {observable verification} | {covered / gap} |
50
+
51
+ | evolution_id | source | confirmation_status | classification | boundary_evidence | result_or_gap |
52
+ |--------------|--------|---------------------|----------------|-------------------|---------------|
53
+ | {stable identifier} | {source_id} | {confirmed / unconfirmed} | {design-input / assumption / open-question} | {evidence preventing current-scope expansion} | {covered / gap} |
54
+
55
+ | acceptance_id | observable_input | action | expected_result | status_or_gap |
56
+ |---------------|------------------|--------|-----------------|---------------|
57
+ | {stable identifier} | {observable input} | {review or verification action} | {expected result} | {verifiable / open / gap} |
58
+
59
+ ## Traceability Matrix
60
+
61
+ | source_id | upstream | reviewed_target | verification | status_or_gap |
62
+ |-----------|----------|-----------------|--------------|---------------|
63
+ | {source identifier} | {upstream requirement or fact} | {requirement/acceptance/impact/risk} | {verification evidence} | {covered / gap} |
26
64
 
27
65
  ## Findings
28
66
 
@@ -30,15 +68,23 @@ Use this template when writing `review-analysis.md` or `review-analysis-r{N}.md`
30
68
 
31
69
  #### 1. {Issue title}
32
70
  **File**: `{file-path}:{line-number}`
33
- **Description**: {details}
34
- **Suggested Fix**: {fix suggestion}
71
+ **Scenario**: {scenario}
72
+ **Impact**: {impact}
73
+ **Evidence**: {reproducible evidence}
74
+ **Confidence**: {high / medium / low}
75
+ **Unverified Assumptions**: {assumptions or none}
76
+ **Fix Direction**: {fix direction}
35
77
 
36
78
  ### Major Issues (should fix)
37
79
 
38
80
  #### 1. {Issue title}
39
81
  **File**: `{file-path}:{line-number}`
40
- **Description**: {details}
41
- **Suggested Fix**: {fix suggestion}
82
+ **Scenario**: {scenario}
83
+ **Impact**: {impact}
84
+ **Evidence**: {reproducible evidence}
85
+ **Confidence**: {high / medium / low}
86
+ **Unverified Assumptions**: {assumptions or none}
87
+ **Fix Direction**: {fix direction}
42
88
 
43
89
  ### Minor Issues (low impact, closure required)
44
90
 
@@ -5,7 +5,7 @@
5
5
  ## 输出模板
6
6
 
7
7
  ```markdown
8
- # 代码审查报告
8
+ # 需求分析审查报告
9
9
 
10
10
  - **审查轮次**:第 {review-round} 轮
11
11
  - **产物文件**:`{review-artifact}`
@@ -22,7 +22,45 @@
22
22
  - **审查时间**:{timestamp}
23
23
  - **审查范围**:{file-count and major modules}
24
24
  - **总体结论**:{通过 / 需要修改 / 拒绝}
25
- - **发现(AI 可处理)**:0 阻塞项,0 主要,0 次要 / **人工校验**:0
25
+ - **发现(AI 可处理)**:{unresolved-blockers} 阻塞项,{unresolved-major} 主要,{unresolved-minor} 次要 / **人工校验**:0
26
+
27
+ ## 检视覆盖声明
28
+
29
+ | pass_id | scope | evidence | result | gaps_or_assumptions |
30
+ |---------|-------|----------|--------|---------------------|
31
+ | pass-1..5 | {本遍实际范围} | {artifact / file:line / command} | {发现或结论} | {缺口或假设} |
32
+
33
+ | lens_id | trigger_evidence | loaded | result |
34
+ |---------|------------------|--------|--------|
35
+ | {registry token} | {命中或未命中证据} | {yes / no / not-applicable} | {专项结论} |
36
+
37
+ ## 需求分析专项覆盖
38
+
39
+ | perspective_id | applicability | reviewed_scope | evidence | result_or_gap |
40
+ |----------------|---------------|----------------|----------|---------------|
41
+ | user | {applicable / not-applicable} | {业务目标、使用结果、非目标与验收} | {source_id / artifact / file:line} | {covered / gap} |
42
+ | maintainer | {applicable / not-applicable} | {维护边界、依赖、兼容性与长期责任} | {source_id / artifact / file:line} | {covered / gap} |
43
+ | operations | {applicable / not-applicable} | {部署、运行、可观测性、恢复与支持约束} | {source_id / artifact / file:line} | {covered / gap} |
44
+ | security | {applicable / not-applicable} | {信任边界、权限、数据与滥用风险} | {source_id / artifact / file:line} | {covered / gap} |
45
+ | testing | {applicable / not-applicable} | {输入、动作、结果、边界与验证环境} | {source_id / artifact / file:line} | {covered / gap} |
46
+
47
+ | quality_id | source | stakeholder | priority_or_tradeoff | verification | result_or_gap |
48
+ |------------|--------|-------------|----------------------|--------------|---------------|
49
+ | {稳定标识} | {source_id} | {利益相关者} | {优先级或权衡状态} | {可观察验证方式} | {covered / gap} |
50
+
51
+ | evolution_id | source | confirmation_status | classification | boundary_evidence | result_or_gap |
52
+ |--------------|--------|---------------------|----------------|-------------------|---------------|
53
+ | {稳定标识} | {source_id} | {confirmed / unconfirmed} | {design-input / assumption / open-question} | {不扩张为当前需求的证据} | {covered / gap} |
54
+
55
+ | acceptance_id | observable_input | action | expected_result | status_or_gap |
56
+ |---------------|------------------|--------|-----------------|---------------|
57
+ | {稳定标识} | {可观察输入} | {审查或验证动作} | {预期结果} | {verifiable / open / gap} |
58
+
59
+ ## 追踪矩阵
60
+
61
+ | source_id | upstream | reviewed_target | verification | status_or_gap |
62
+ |-----------|----------|-----------------|--------------|---------------|
63
+ | {来源标识} | {上游需求或事实} | {需求/验收/影响/风险} | {验证证据} | {covered / gap} |
26
64
 
27
65
  ## 问题清单
28
66
 
@@ -30,15 +68,23 @@
30
68
 
31
69
  #### 1. {问题标题}
32
70
  **文件**:`{file-path}:{line-number}`
33
- **说明**:{details}
34
- **修复建议**:{fix suggestion}
71
+ **场景**:{scenario}
72
+ **影响**:{impact}
73
+ **证据**:{reproducible evidence}
74
+ **置信度**:{high / medium / low}
75
+ **未验证假设**:{assumptions or none}
76
+ **修复方向**:{fix direction}
35
77
 
36
78
  ### 主要问题(建议修复)
37
79
 
38
80
  #### 1. {问题标题}
39
81
  **文件**:`{file-path}:{line-number}`
40
- **说明**:{details}
41
- **修复建议**:{fix suggestion}
82
+ **场景**:{scenario}
83
+ **影响**:{impact}
84
+ **证据**:{reproducible evidence}
85
+ **置信度**:{high / medium / low}
86
+ **未验证假设**:{assumptions or none}
87
+ **修复方向**:{fix direction}
42
88
 
43
89
  ### 次要问题(低影响但需闭环)
44
90
 
@@ -23,35 +23,38 @@ Follow the `analysis-review` step in `.agents/workflows/feature-development.yaml
23
23
  - Presenting uncertain information as fact without marking assumptions or open questions
24
24
  - Asserting a `file:line` or behavior from memory or impression without verifying via rg/nl
25
25
 
26
- ## Common Review Principles
26
+ ## Requirement Analysis Coverage
27
27
 
28
- 1. **Strict but fair**: identify issues and acknowledge solid work
29
- 2. **Specific**: cite exact file paths and line numbers
30
- 3. **Actionable**: suggest a concrete fix
31
- 4. **Severity-based**: clearly distinguish blockers, major issues, and minor issues
28
+ ### Perspectives
32
29
 
33
- ## Three-category Decision Tree
30
+ Every review must examine these minimum perspectives and use their stable `perspective_id` values in the report:
34
31
 
35
- 1. A gap in requirements, constraints, risks, affected scope, or verifiable acceptance criteria is a formal finding. Assign blocker / major / minor by impact; severity does not control closure, so minor findings must also reach a terminal state.
36
- 2. When there is no known defect but validation requires a real environment, permission, or human operation, classify it as manual-validation.
37
- 3. Only a future optimization that does not affect the current analysis's completeness, correctness, or acceptance is an advisory. Put it only in Non-blocking Advisories; do not add it to the ledger, finding counts, or verdict.
32
+ - `user`: business goals, user outcomes, non-goals, and acceptance
33
+ - `maintainer`: maintenance boundaries, dependencies, compatibility, and long-term ownership
34
+ - `operations`: deployment, runtime, observability, recovery, and support constraints
35
+ - `security`: trust boundaries, permissions, data, and abuse risks
36
+ - `testing`: observable inputs, actions, results, boundary conditions, and verification environments
38
37
 
39
- ## Manual Validation Classification
38
+ For an applicable perspective, record the reviewed scope, evidence, and `covered/gap`. A `not-applicable` result requires reviewable evidence or it is a gap. Add stable tokens for other stakeholders triggered by task sources or risk evidence; do not turn every possible role into a fixed checklist.
40
39
 
41
- Some findings cannot be closed by an AI agent in the current execution environment, for example:
40
+ ### Quality Attributes
42
41
 
43
- - Missing Docker / sandbox access for end-to-end validation
44
- - Missing a specific OS for macOS-only behavior
45
- - Missing third-party accounts / OAuth
46
- - Missing privileged operations such as root, sudo, or special network access
42
+ Record only quality attributes triggered by sources, constraints, or perspectives; do not impose a fixed vocabulary. Each item needs a stable `quality_id`, its source and stakeholder, a priority or trade-off state, a verifiable expression, and `covered/gap`. A candidate without a source may only be an assumption, open question, or non-blocking advisory, not a confirmed requirement.
47
43
 
48
- **Decision tree**: "Can the AI agent close this item independently without changing the environment?"
49
- - Yes -> blocker / major / minor, based on risk
50
- - No -> **manual-validation** (a manual-validation meta-category, not part of severity ordering)
44
+ ### Evolution Scenarios
51
45
 
52
- Where manual-validation items go:
53
- - Record them in an independent review report section named "Manual Validation Items"
54
- - Record the done-note source field as `Manual-validation: 1`; `ai task log` normalizes it into review rows
55
- - Do **not** include them in the code-task fix loop; maintainers carry them in the PR description under manual verification
46
+ Each reasonable future change needs a stable `evolution_id`, source, `confirmed/unconfirmed` state, `design-input/assumption/open-question` classification, boundary evidence, and `covered/gap`. An `unconfirmed` scenario must not become a current requirement or directly drive an architecture or implementation choice.
47
+
48
+ ### Acceptance Criteria
49
+
50
+ For every criterion, record a stable `acceptance_id`, observable input, review action, expected result, and `verifiable/open/gap`. A non-behavioral constraint may use an observable verification method instead of a behavioral step; anything that cannot close must become an open question or finding.
51
+
52
+ ### Traceability and Boundary
53
+
54
+ The shared traceability matrix remains the only mapping from sources to analysis conclusions. Its `source_id` values should cover user requests, Issues, task facts and decisions, and acceptance criteria; stage-specific tables refer back through their source or evidence. This stage only judges whether analysis is ready for design. It does not select architecture styles, design patterns, or implementation technologies, and it does not duplicate the shared five-pass protocol or finding evidence fields.
55
+
56
+ ## Shared Method and Classification Boundary
57
+
58
+ Read `.agents/rules/review-method.md` first and apply its five-pass protocol, risk lenses, and finding evidence contract. Finding, manual-validation, advisory, and `needs-human-decision` state semantics remain governed by `.agents/rules/review-handshake.md`. This file adds only analysis-stage criteria.
56
59
 
57
60
  Also inspect the latest requirement analysis artifact and `task.md` Activity Log so the report reflects the full analysis context.