@fitlab-ai/agent-infra 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/bin/cli.ts +11 -0
  2. package/dist/bin/cli.js +12 -0
  3. package/dist/lib/sandbox/commands/create.js +10 -2
  4. package/dist/lib/sandbox/commands/enter.js +8 -7
  5. package/dist/lib/sandbox/commands/list-running.js +21 -32
  6. package/dist/lib/sandbox/commands/ls.js +20 -22
  7. package/dist/lib/sandbox/index.js +7 -3
  8. package/dist/lib/sandbox/task-resolver.js +1 -1
  9. package/dist/lib/sandbox/tools.js +1 -1
  10. package/dist/lib/table.js +29 -0
  11. package/dist/lib/task/commands/ls.js +122 -0
  12. package/dist/lib/task/commands/show.js +135 -0
  13. package/dist/lib/task/frontmatter.js +32 -0
  14. package/dist/lib/task/index.js +41 -0
  15. package/dist/lib/task/short-id.js +80 -0
  16. package/lib/sandbox/commands/create.ts +11 -2
  17. package/lib/sandbox/commands/enter.ts +8 -7
  18. package/lib/sandbox/commands/list-running.ts +23 -37
  19. package/lib/sandbox/commands/ls.ts +25 -25
  20. package/lib/sandbox/index.ts +7 -3
  21. package/lib/sandbox/task-resolver.ts +1 -1
  22. package/lib/sandbox/tools.ts +1 -1
  23. package/lib/table.ts +32 -0
  24. package/lib/task/commands/ls.ts +138 -0
  25. package/lib/task/commands/show.ts +139 -0
  26. package/lib/task/frontmatter.ts +30 -0
  27. package/lib/task/index.ts +44 -0
  28. package/lib/task/short-id.ts +97 -0
  29. package/package.json +1 -1
  30. package/templates/.agents/hooks/auto-resume.sh +87 -0
  31. package/templates/.agents/rules/create-issue.github.en.md +1 -1
  32. package/templates/.agents/rules/create-issue.github.zh-CN.md +1 -1
  33. package/templates/.agents/rules/milestone-inference.github.en.md +4 -1
  34. package/templates/.agents/rules/milestone-inference.github.zh-CN.md +4 -1
  35. package/templates/.agents/rules/next-step-output.en.md +59 -0
  36. package/templates/.agents/rules/next-step-output.zh-CN.md +59 -0
  37. package/templates/.agents/rules/task-short-id.en.md +54 -62
  38. package/templates/.agents/rules/task-short-id.zh-CN.md +35 -54
  39. package/templates/.agents/scripts/platform-adapters/platform-sync.github.js +17 -0
  40. package/templates/.agents/scripts/task-short-id.js +32 -189
  41. package/templates/.agents/skills/analyze-task/SKILL.en.md +10 -12
  42. package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +10 -12
  43. package/templates/.agents/skills/analyze-task/config/verify.en.json +1 -1
  44. package/templates/.agents/skills/analyze-task/config/verify.zh-CN.json +1 -1
  45. package/templates/.agents/skills/block-task/SKILL.en.md +6 -6
  46. package/templates/.agents/skills/block-task/SKILL.zh-CN.md +6 -6
  47. package/templates/.agents/skills/block-task/config/verify.json +1 -1
  48. package/templates/.agents/skills/cancel-task/SKILL.en.md +6 -6
  49. package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +6 -6
  50. package/templates/.agents/skills/cancel-task/config/verify.json +1 -1
  51. package/templates/.agents/skills/check-task/SKILL.en.md +12 -10
  52. package/templates/.agents/skills/check-task/SKILL.zh-CN.md +12 -10
  53. package/templates/.agents/skills/close-codescan/SKILL.en.md +6 -6
  54. package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +6 -6
  55. package/templates/.agents/skills/close-dependabot/SKILL.en.md +6 -6
  56. package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +6 -6
  57. package/templates/.agents/skills/code-task/SKILL.en.md +10 -6
  58. package/templates/.agents/skills/code-task/SKILL.zh-CN.md +11 -6
  59. package/templates/.agents/skills/code-task/config/verify.en.json +2 -1
  60. package/templates/.agents/skills/code-task/config/verify.zh-CN.json +2 -1
  61. package/templates/.agents/skills/code-task/reference/fix-mode.en.md +10 -5
  62. package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +10 -5
  63. package/templates/.agents/skills/code-task/reference/output-template.en.md +3 -3
  64. package/templates/.agents/skills/code-task/reference/output-template.zh-CN.md +3 -3
  65. package/templates/.agents/skills/code-task/reference/report-template.en.md +8 -0
  66. package/templates/.agents/skills/code-task/reference/report-template.zh-CN.md +8 -0
  67. package/templates/.agents/skills/commit/SKILL.en.md +2 -2
  68. package/templates/.agents/skills/commit/SKILL.zh-CN.md +2 -2
  69. package/templates/.agents/skills/commit/reference/task-status-update.en.md +9 -9
  70. package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +9 -9
  71. package/templates/.agents/skills/complete-task/SKILL.en.md +6 -2
  72. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +6 -2
  73. package/templates/.agents/skills/complete-task/config/verify.en.json +1 -1
  74. package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +1 -1
  75. package/templates/.agents/skills/create-pr/SKILL.en.md +6 -6
  76. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +6 -6
  77. package/templates/.agents/skills/create-pr/config/verify.json +2 -1
  78. package/templates/.agents/skills/create-pr/reference/comment-publish.en.md +1 -1
  79. package/templates/.agents/skills/create-pr/reference/comment-publish.zh-CN.md +1 -1
  80. package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +3 -3
  81. package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +3 -3
  82. package/templates/.agents/skills/create-task/SKILL.en.md +17 -17
  83. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +17 -17
  84. package/templates/.agents/skills/create-task/config/verify.json +1 -1
  85. package/templates/.agents/skills/import-codescan/SKILL.en.md +8 -8
  86. package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +8 -8
  87. package/templates/.agents/skills/import-codescan/config/verify.json +1 -1
  88. package/templates/.agents/skills/import-dependabot/SKILL.en.md +8 -8
  89. package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +8 -8
  90. package/templates/.agents/skills/import-dependabot/config/verify.json +1 -1
  91. package/templates/.agents/skills/import-issue/SKILL.en.md +7 -7
  92. package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +7 -7
  93. package/templates/.agents/skills/plan-task/SKILL.en.md +10 -12
  94. package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +10 -12
  95. package/templates/.agents/skills/plan-task/config/verify.en.json +1 -1
  96. package/templates/.agents/skills/plan-task/config/verify.zh-CN.json +1 -1
  97. package/templates/.agents/skills/restore-task/SKILL.en.md +1 -1
  98. package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +1 -1
  99. package/templates/.agents/skills/review-analysis/SKILL.en.md +4 -2
  100. package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +4 -2
  101. package/templates/.agents/skills/review-analysis/config/verify.en.json +3 -2
  102. package/templates/.agents/skills/review-analysis/config/verify.zh-CN.json +3 -2
  103. package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +15 -15
  104. package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +15 -15
  105. package/templates/.agents/skills/review-analysis/reference/report-template.en.md +7 -1
  106. package/templates/.agents/skills/review-analysis/reference/report-template.zh-CN.md +7 -1
  107. package/templates/.agents/skills/review-analysis/reference/review-criteria.en.md +2 -0
  108. package/templates/.agents/skills/review-analysis/reference/review-criteria.zh-CN.md +2 -0
  109. package/templates/.agents/skills/review-code/SKILL.en.md +5 -2
  110. package/templates/.agents/skills/review-code/SKILL.zh-CN.md +5 -2
  111. package/templates/.agents/skills/review-code/config/verify.en.json +3 -2
  112. package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -2
  113. package/templates/.agents/skills/review-code/reference/output-templates.en.md +9 -9
  114. package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +9 -9
  115. package/templates/.agents/skills/review-code/reference/report-template.en.md +7 -1
  116. package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +7 -1
  117. package/templates/.agents/skills/review-code/reference/review-criteria.en.md +2 -0
  118. package/templates/.agents/skills/review-code/reference/review-criteria.zh-CN.md +2 -0
  119. package/templates/.agents/skills/review-plan/SKILL.en.md +4 -2
  120. package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +4 -2
  121. package/templates/.agents/skills/review-plan/config/verify.en.json +3 -2
  122. package/templates/.agents/skills/review-plan/config/verify.zh-CN.json +3 -2
  123. package/templates/.agents/skills/review-plan/reference/output-templates.en.md +15 -15
  124. package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +15 -15
  125. package/templates/.agents/skills/review-plan/reference/report-template.en.md +7 -1
  126. package/templates/.agents/skills/review-plan/reference/report-template.zh-CN.md +7 -1
  127. package/templates/.agents/skills/review-plan/reference/review-criteria.en.md +2 -0
  128. package/templates/.agents/skills/review-plan/reference/review-criteria.zh-CN.md +2 -0
  129. package/templates/.agents/templates/task.en.md +0 -1
  130. package/templates/.agents/templates/task.zh-CN.md +0 -1
  131. package/templates/.agents/workflows/bug-fix.en.yaml +1 -1
  132. package/templates/.agents/workflows/bug-fix.zh-CN.yaml +1 -1
  133. package/templates/.agents/workflows/feature-development.en.yaml +1 -1
  134. package/templates/.agents/workflows/feature-development.zh-CN.yaml +1 -1
  135. package/templates/.agents/workflows/refactoring.en.yaml +1 -1
  136. package/templates/.agents/workflows/refactoring.zh-CN.yaml +1 -1
  137. package/templates/.claude/settings.json +11 -0
@@ -32,7 +32,7 @@
32
32
  ]
33
33
  },
34
34
  "activity-log": {
35
- "expected_action_pattern": "Requirement Analysis \\(Round \\d+\\)",
35
+ "expected_action_pattern": "(Analyze Task|Requirement Analysis) \\(Round \\d+\\)",
36
36
  "freshness_minutes": 30
37
37
  },
38
38
  "platform-sync": {
@@ -21,7 +21,7 @@ Version stamp rule: when creating or updating `task.md` frontmatter, read `.agen
21
21
 
22
22
  ## Task id short ref
23
23
 
24
- > If `{task-id}` begins with `#`, follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
24
+ > If `{task-id}` matches `^[#]?[0-9]+$` (bare numeric or `#`-prefixed), follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
25
25
 
26
26
  ## Steps
27
27
 
@@ -56,7 +56,7 @@ Update `.agents/workspace/active/{task-id}/task.md`:
56
56
  - `agent_infra_version`: value from `.agents/rules/version-stamp.md`
57
57
  - **Append** to `## Activity Log` (do NOT overwrite previous entries):
58
58
  ```
59
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Blocked** by {agent} — {one-line reason}
59
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Block Task** by {agent} — {one-line reason}
60
60
  ```
61
61
 
62
62
  Add a blocking information section to task.md.
@@ -106,7 +106,7 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
106
106
 
107
107
  > Execute this step only after the verification gate passes.
108
108
 
109
- > **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).
109
+ > **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 "Next steps" commands, read `.agents/rules/next-step-output.md` and use its short-id snippet to render `{task-ref}` in the commands as the short id `#NN` (falling back to the full TASK-id when unallocated or released).
110
110
 
111
111
  Output format:
112
112
  ```
@@ -121,9 +121,9 @@ To unblock when the issue is resolved:
121
121
  # Then update task.md: status -> active, remove blocked_at
122
122
 
123
123
  Next step - check task status after unblocking:
124
- - Claude Code / OpenCode: /check-task {task-id}
125
- - Gemini CLI: /{{project}}:check-task {task-id}
126
- - Codex CLI: $check-task {task-id}
124
+ - Claude Code / OpenCode: /check-task {task-ref}
125
+ - Gemini CLI: /{{project}}:check-task {task-ref}
126
+ - Codex CLI: $check-task {task-ref}
127
127
  ```
128
128
 
129
129
 
@@ -21,7 +21,7 @@ description: "标记任务为阻塞状态并记录原因"
21
21
 
22
22
  ## 任务入参短号别名
23
23
 
24
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
24
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
25
25
 
26
26
  ## 执行步骤
27
27
  ### 1. 验证任务存在
@@ -55,7 +55,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
55
55
  - `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
56
56
  - **追加**到 `## Activity Log`(不要覆盖之前的记录):
57
57
  ```
58
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Blocked** by {agent} — {一行原因}
58
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Block Task** by {agent} — {一行原因}
59
59
  ```
60
60
 
61
61
  在 task.md 中添加阻塞信息部分。
@@ -105,7 +105,7 @@ node .agents/scripts/validate-artifact.js gate block-task .agents/workspace/bloc
105
105
 
106
106
  > 仅在校验通过后执行本步骤。
107
107
 
108
- > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
108
+ > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。 渲染「下一步」命令前,先读取 `.agents/rules/next-step-output.md`,按其取短号片段把命令中的 `{task-ref}` 渲染为短号 `#NN`(未分配/已释放时回退完整 TASK-id)。
109
109
 
110
110
  输出格式:
111
111
  ```
@@ -120,9 +120,9 @@ node .agents/scripts/validate-artifact.js gate block-task .agents/workspace/bloc
120
120
  # 然后更新 task.md:status -> active,移除 blocked_at
121
121
 
122
122
  下一步 - 检查任务状态(解除阻塞后):
123
- - Claude Code / OpenCode:/check-task {task-id}
124
- - Gemini CLI:/agent-infra:check-task {task-id}
125
- - Codex CLI:$check-task {task-id}
123
+ - Claude Code / OpenCode:/check-task {task-ref}
124
+ - Gemini CLI:/agent-infra:check-task {task-ref}
125
+ - Codex CLI:$check-task {task-ref}
126
126
  ```
127
127
 
128
128
 
@@ -18,7 +18,7 @@
18
18
  "require_blocked_at": true
19
19
  },
20
20
  "activity-log": {
21
- "expected_action_pattern": "Blocked",
21
+ "expected_action_pattern": "(Block Task|Blocked)",
22
22
  "freshness_minutes": 30
23
23
  },
24
24
  "platform-sync": {
@@ -15,7 +15,7 @@ Version stamp rule: when creating or updating `task.md` frontmatter, read `.agen
15
15
 
16
16
  ## Task id short ref
17
17
 
18
- > If `{task-id}` begins with `#`, follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
18
+ > If `{task-id}` matches `^[#]?[0-9]+$` (bare numeric or `#`-prefixed), follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
19
19
 
20
20
  ## Steps
21
21
 
@@ -57,7 +57,7 @@ Update `task.md` in the task directory:
57
57
  - `agent_infra_version`: value from `.agents/rules/version-stamp.md`
58
58
  - **Append** to `## Activity Log` (do NOT overwrite previous entries):
59
59
  ```
60
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Cancelled** by {agent} — {one-line cancellation reason}
60
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Cancel Task** by {agent} — {one-line cancellation reason}
61
61
  ```
62
62
 
63
63
  ### 4. Move the Task
@@ -119,7 +119,7 @@ Keep the gate output in your reply as fresh evidence. Do not claim completion wi
119
119
 
120
120
  > Execute this step only after the verification gate passes.
121
121
 
122
- > **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).
122
+ > **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 "Next steps" commands, read `.agents/rules/next-step-output.md` and use its short-id snippet to render `{task-ref}` in the commands as the short id `#NN` (falling back to the full TASK-id when unallocated or released).
123
123
 
124
124
  Output format:
125
125
  ```
@@ -130,9 +130,9 @@ Status label: {status-label or skipped}
130
130
  Target path: .agents/workspace/completed/{task-id}/
131
131
 
132
132
  Next step - inspect the moved task:
133
- - Claude Code / OpenCode: /check-task {task-id}
134
- - Gemini CLI: /{{project}}:check-task {task-id}
135
- - Codex CLI: $check-task {task-id}
133
+ - Claude Code / OpenCode: /check-task {task-ref}
134
+ - Gemini CLI: /{{project}}:check-task {task-ref}
135
+ - Codex CLI: $check-task {task-ref}
136
136
  ```
137
137
 
138
138
 
@@ -15,7 +15,7 @@ description: "取消不再需要的任务并转移"
15
15
 
16
16
  ## 任务入参短号别名
17
17
 
18
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
18
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
19
19
 
20
20
  ## 执行步骤
21
21
  ### 1. 验证任务存在
@@ -56,7 +56,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
56
56
  - `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
57
57
  - **追加**到 `## Activity Log`(不要覆盖之前记录):
58
58
  ```
59
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Cancelled** by {agent} — {一行取消原因}
59
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Cancel Task** by {agent} — {一行取消原因}
60
60
  ```
61
61
 
62
62
  ### 4. 转移任务
@@ -118,7 +118,7 @@ node .agents/scripts/validate-artifact.js gate cancel-task .agents/workspace/com
118
118
 
119
119
  > 仅在校验通过后执行本步骤。
120
120
 
121
- > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
121
+ > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。 渲染「下一步」命令前,先读取 `.agents/rules/next-step-output.md`,按其取短号片段把命令中的 `{task-ref}` 渲染为短号 `#NN`(未分配/已释放时回退完整 TASK-id)。
122
122
 
123
123
  输出格式:
124
124
  ```
@@ -129,9 +129,9 @@ node .agents/scripts/validate-artifact.js gate cancel-task .agents/workspace/com
129
129
  目标路径:.agents/workspace/completed/{task-id}/
130
130
 
131
131
  下一步 - 查看已转移任务:
132
- - Claude Code / OpenCode:/check-task {task-id}
133
- - Gemini CLI:/{{project}}:check-task {task-id}
134
- - Codex CLI:$check-task {task-id}
132
+ - Claude Code / OpenCode:/check-task {task-ref}
133
+ - Gemini CLI:/{{project}}:check-task {task-ref}
134
+ - Codex CLI:$check-task {task-ref}
135
135
  ```
136
136
 
137
137
 
@@ -19,7 +19,7 @@
19
19
  "require_cancelled_at": true
20
20
  },
21
21
  "activity-log": {
22
- "expected_action_pattern": "Cancelled",
22
+ "expected_action_pattern": "(Cancel Task|Cancelled)",
23
23
  "freshness_minutes": 30
24
24
  },
25
25
  "platform-sync": {
@@ -12,7 +12,7 @@ description: "Check a task's current status and progress"
12
12
 
13
13
  ## Task id short ref
14
14
 
15
- > If `{task-id}` begins with `#`, follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
15
+ > If `{task-id}` matches `^[#]?[0-9]+$` (bare numeric or `#`-prefixed), follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
16
16
 
17
17
  ## Steps
18
18
 
@@ -55,7 +55,7 @@ For versioned artifacts (`analysis`, `review-analysis`, `plan`, `review-plan`, `
55
55
  Format the status report with a clear structure and status indicators:
56
56
 
57
57
  ```
58
- Task status: {task-id}
58
+ Task status: {task-id} (short id {task-ref})
59
59
  =======================
60
60
 
61
61
  Basic info:
@@ -124,18 +124,20 @@ Recommend the appropriate next skill based on the current workflow state. You mu
124
124
  > - `current_step = code-review` and the latest code review artifact exists, but any `Blocker`, `Major`, or `Minor` issue remains, or the verdict is not a clean approval -> choose "Code Review Has Issues"
125
125
  >
126
126
  > **Important: if the latest review report contains any issue at all, do not use the corresponding review-passed row. Use the corresponding has-issues row instead.**
127
+ >
128
+ > Before rendering the commands in the table below, read `.agents/rules/next-step-output.md` and render `{task-ref}` in the commands as the short id `#NN` (falling back to the full TASK-id when unallocated or released).
127
129
 
128
130
  | Current State | Claude Code / OpenCode | Gemini CLI | Codex CLI |
129
131
  |----------------------------|-----------------------------------------------------|------------------------------------------|-----------------------------------------------------|
130
- | Analysis Complete | `/review-analysis {task-id}` | `/{{project}}:review-analysis {task-id}` | `$review-analysis {task-id}` |
131
- | Analysis Review Passed | `/plan-task {task-id}` | `/{{project}}:plan-task {task-id}` | `$plan-task {task-id}` |
132
- | Analysis Review Has Issues | `/analyze-task {task-id}` | `/{{project}}:analyze-task {task-id}` | `$analyze-task {task-id}` |
133
- | Plan Complete | `/review-plan {task-id}` | `/{{project}}:review-plan {task-id}` | `$review-plan {task-id}` |
134
- | Plan Review Passed | `/code-task {task-id}` | `/{{project}}:code-task {task-id}` | `$code-task {task-id}` |
135
- | Plan Review Has Issues | `/plan-task {task-id}` | `/{{project}}:plan-task {task-id}` | `$plan-task {task-id}` |
136
- | Code Complete | `/review-code {task-id}` | `/{{project}}:review-code {task-id}` | `$review-code {task-id}` |
132
+ | Analysis Complete | `/review-analysis {task-ref}` | `/{{project}}:review-analysis {task-ref}` | `$review-analysis {task-ref}` |
133
+ | Analysis Review Passed | `/plan-task {task-ref}` | `/{{project}}:plan-task {task-ref}` | `$plan-task {task-ref}` |
134
+ | Analysis Review Has Issues | `/analyze-task {task-ref}` | `/{{project}}:analyze-task {task-ref}` | `$analyze-task {task-ref}` |
135
+ | Plan Complete | `/review-plan {task-ref}` | `/{{project}}:review-plan {task-ref}` | `$review-plan {task-ref}` |
136
+ | Plan Review Passed | `/code-task {task-ref}` | `/{{project}}:code-task {task-ref}` | `$code-task {task-ref}` |
137
+ | Plan Review Has Issues | `/plan-task {task-ref}` | `/{{project}}:plan-task {task-ref}` | `$plan-task {task-ref}` |
138
+ | Code Complete | `/review-code {task-ref}` | `/{{project}}:review-code {task-ref}` | `$review-code {task-ref}` |
137
139
  | Code Review Passed | `/commit` | `/{{project}}:commit` | `$commit` |
138
- | Code Review Has Issues | `/code-task {task-id}` | `/{{project}}:code-task {task-id}` | `$code-task {task-id}` |
140
+ | Code Review Has Issues | `/code-task {task-ref}` | `/{{project}}:code-task {task-ref}` | `$code-task {task-ref}` |
139
141
  | Task Blocked | Unblock the task or provide the missing information | — | Unblock the task or provide the missing information |
140
142
  | Task Completed | No action needed | — | No action needed |
141
143
 
@@ -12,7 +12,7 @@ description: "查看任务的当前状态和进度"
12
12
 
13
13
  ## 任务入参短号别名
14
14
 
15
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
15
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
16
16
 
17
17
  ## 执行步骤
18
18
  ### 1. 查找任务
@@ -54,7 +54,7 @@ description: "查看任务的当前状态和进度"
54
54
  以清晰的结构和状态指示器格式化输出:
55
55
 
56
56
  ```
57
- 任务状态:{task-id}
57
+ 任务状态:{task-id}(短号 {task-ref})
58
58
  =======================
59
59
 
60
60
  基本信息:
@@ -123,18 +123,20 @@ description: "查看任务的当前状态和进度"
123
123
  > - `current_step = code-review` 且最新代码审查产物存在,但仍有任何 `Blocker`、`Major` 或 `Minor` 问题,或结论不是无问题通过 → 选择「代码审查有问题」
124
124
  >
125
125
  > **特别注意:只要最新审查报告中存在任何问题,就不能使用对应「审查通过」行。必须改用对应「审查有问题」行。**
126
+ >
127
+ > 渲染下方表格中的命令前,先读取 `.agents/rules/next-step-output.md`,把命令中的 `{task-ref}` 渲染为短号 `#NN`(未分配/已释放时回退完整 TASK-id)。
126
128
 
127
129
  | 当前状态 | Claude Code / OpenCode | Gemini CLI | Codex CLI |
128
130
  |--------------------|------------------------------|------------------------------------------|------------------------------|
129
- | 分析完成 | `/review-analysis {task-id}` | `/agent-infra:review-analysis {task-id}` | `$review-analysis {task-id}` |
130
- | 需求分析审查通过 | `/plan-task {task-id}` | `/agent-infra:plan-task {task-id}` | `$plan-task {task-id}` |
131
- | 需求分析审查有问题 | `/analyze-task {task-id}` | `/agent-infra:analyze-task {task-id}` | `$analyze-task {task-id}` |
132
- | 计划完成 | `/review-plan {task-id}` | `/agent-infra:review-plan {task-id}` | `$review-plan {task-id}` |
133
- | 技术方案审查通过 | `/code-task {task-id}` | `/agent-infra:code-task {task-id}` | `$code-task {task-id}` |
134
- | 技术方案审查有问题 | `/plan-task {task-id}` | `/agent-infra:plan-task {task-id}` | `$plan-task {task-id}` |
135
- | 实现完成 | `/review-code {task-id}` | `/agent-infra:review-code {task-id}` | `$review-code {task-id}` |
131
+ | 分析完成 | `/review-analysis {task-ref}` | `/agent-infra:review-analysis {task-ref}` | `$review-analysis {task-ref}` |
132
+ | 需求分析审查通过 | `/plan-task {task-ref}` | `/agent-infra:plan-task {task-ref}` | `$plan-task {task-ref}` |
133
+ | 需求分析审查有问题 | `/analyze-task {task-ref}` | `/agent-infra:analyze-task {task-ref}` | `$analyze-task {task-ref}` |
134
+ | 计划完成 | `/review-plan {task-ref}` | `/agent-infra:review-plan {task-ref}` | `$review-plan {task-ref}` |
135
+ | 技术方案审查通过 | `/code-task {task-ref}` | `/agent-infra:code-task {task-ref}` | `$code-task {task-ref}` |
136
+ | 技术方案审查有问题 | `/plan-task {task-ref}` | `/agent-infra:plan-task {task-ref}` | `$plan-task {task-ref}` |
137
+ | 实现完成 | `/review-code {task-ref}` | `/agent-infra:review-code {task-ref}` | `$review-code {task-ref}` |
136
138
  | 代码审查通过 | `/commit` | `/agent-infra:commit` | `$commit` |
137
- | 代码审查有问题 | `/code-task {task-id}` | `/agent-infra:code-task {task-id}` | `$code-task {task-id}` |
139
+ | 代码审查有问题 | `/code-task {task-ref}` | `/agent-infra:code-task {task-ref}` | `$code-task {task-ref}` |
138
140
  | 任务被阻塞 | 解除阻塞或提供所需信息 | — | 解除阻塞或提供所需信息 |
139
141
  | 任务已完成 | 无需操作 | — | 无需操作 |
140
142
 
@@ -9,7 +9,7 @@ Dismiss the specified Code Scanning (CodeQL) alert and record a justified reason
9
9
 
10
10
  ## Task id short ref
11
11
 
12
- > If `{task-id}` begins with `#`, follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
12
+ > If `{task-id}` matches `^[#]?[0-9]+$` (bare numeric or `#`-prefixed), follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
13
13
 
14
14
  ## Execution Flow
15
15
 
@@ -82,7 +82,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
82
82
  - Add the dismissal record to task.md
83
83
  - **Append** to `## Activity Log` (do NOT overwrite previous entries):
84
84
  ```
85
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Alert Closed** by {agent} — Code Scanning alert #{alert-number} dismissed: {reason}
85
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Close Codescan** by {agent} — Code Scanning alert #{alert-number} dismissed: {reason}
86
86
  ```
87
87
  - Archive the task
88
88
  - **Release short id** (after the archive `mv` succeeded; the script is idempotent):
@@ -93,7 +93,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
93
93
 
94
94
  ### 8. Inform User
95
95
 
96
- > **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).
96
+ > **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 "Next steps" commands, read `.agents/rules/next-step-output.md` and use its short-id snippet to render `{task-ref}` in the commands as the short id `#NN` (falling back to the full TASK-id when unallocated or released).
97
97
 
98
98
  ```
99
99
  Code Scanning alert #{alert-number} dismissed.
@@ -108,9 +108,9 @@ View: {html_url}
108
108
  Note: it can be reopened on the platform if necessary.
109
109
 
110
110
  Next step - complete and archive the task if a related task exists:
111
- - Claude Code / OpenCode: /complete-task {task-id}
112
- - Gemini CLI: /{{project}}:complete-task {task-id}
113
- - Codex CLI: $complete-task {task-id}
111
+ - Claude Code / OpenCode: /complete-task {task-ref}
112
+ - Gemini CLI: /{{project}}:complete-task {task-ref}
113
+ - Codex CLI: $complete-task {task-ref}
114
114
  ```
115
115
 
116
116
  ## Notes
@@ -9,7 +9,7 @@ description: "关闭 Code Scanning 告警并记录理由"
9
9
 
10
10
  ## 任务入参短号别名
11
11
 
12
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
12
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
13
13
 
14
14
  ## 执行流程
15
15
 
@@ -82,7 +82,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
82
82
  - 添加关闭记录到 task.md
83
83
  - **追加**到 `## Activity Log`(不要覆盖之前的记录):
84
84
  ```
85
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Alert Closed** by {agent} — Code Scanning alert #{alert-number} dismissed: {reason}
85
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Close Codescan** by {agent} — Code Scanning alert #{alert-number} dismissed: {reason}
86
86
  ```
87
87
  - 归档任务
88
88
  - **释放短号**(归档目录已 mv 成功,再 release;脚本幂等):
@@ -93,7 +93,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
93
93
 
94
94
  ### 8. 告知用户
95
95
 
96
- > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
96
+ > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。 渲染「下一步」命令前,先读取 `.agents/rules/next-step-output.md`,按其取短号片段把命令中的 `{task-ref}` 渲染为短号 `#NN`(未分配/已释放时回退完整 TASK-id)。
97
97
 
98
98
  ```
99
99
  Code Scanning 告警 #{alert-number} 已关闭。
@@ -108,9 +108,9 @@ Code Scanning 告警 #{alert-number} 已关闭。
108
108
  注意:如有需要,可在 平台上重新打开。
109
109
 
110
110
  下一步 - 完成并归档任务(如有关联任务):
111
- - Claude Code / OpenCode:/complete-task {task-id}
112
- - Gemini CLI:/agent-infra:complete-task {task-id}
113
- - Codex CLI:$complete-task {task-id}
111
+ - Claude Code / OpenCode:/complete-task {task-ref}
112
+ - Gemini CLI:/agent-infra:complete-task {task-ref}
113
+ - Codex CLI:$complete-task {task-ref}
114
114
  ```
115
115
 
116
116
  ## 注意事项
@@ -9,7 +9,7 @@ Dismiss the specified Dependabot security alert and record a justified reason.
9
9
 
10
10
  ## Task id short ref
11
11
 
12
- > If `{task-id}` begins with `#`, follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
12
+ > If `{task-id}` matches `^[#]?[0-9]+$` (bare numeric or `#`-prefixed), follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
13
13
 
14
14
  ## Execution Flow
15
15
 
@@ -90,7 +90,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
90
90
  - Add the dismissal record to task.md
91
91
  - **Append** to `## Activity Log` (do NOT overwrite previous entries):
92
92
  ```
93
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Alert Closed** by {agent} — Dependabot alert #{alert-number} dismissed: {reason}
93
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Close Dependabot** by {agent} — Dependabot alert #{alert-number} dismissed: {reason}
94
94
  ```
95
95
  - Archive the task
96
96
  - **Release short id** (after the archive `mv` succeeded; the script is idempotent):
@@ -101,7 +101,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
101
101
 
102
102
  ### 8. Inform User
103
103
 
104
- > **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).
104
+ > **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 "Next steps" commands, read `.agents/rules/next-step-output.md` and use its short-id snippet to render `{task-ref}` in the commands as the short id `#NN` (falling back to the full TASK-id when unallocated or released).
105
105
 
106
106
  ```
107
107
  Security alert #{alert-number} dismissed.
@@ -116,9 +116,9 @@ View: {alert-url}
116
116
  Note: it can be reopened on the platform if necessary.
117
117
 
118
118
  Next step - complete and archive the task if a related task exists:
119
- - Claude Code / OpenCode: /complete-task {task-id}
120
- - Gemini CLI: /{{project}}:complete-task {task-id}
121
- - Codex CLI: $complete-task {task-id}
119
+ - Claude Code / OpenCode: /complete-task {task-ref}
120
+ - Gemini CLI: /{{project}}:complete-task {task-ref}
121
+ - Codex CLI: $complete-task {task-ref}
122
122
  ```
123
123
 
124
124
  ## Notes
@@ -9,7 +9,7 @@ description: "关闭 Dependabot 安全告警并记录理由"
9
9
 
10
10
  ## 任务入参短号别名
11
11
 
12
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
12
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
13
13
 
14
14
  ## 执行流程
15
15
 
@@ -90,7 +90,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
90
90
  - 添加关闭记录到 task.md
91
91
  - **追加**到 `## Activity Log`(不要覆盖之前的记录):
92
92
  ```
93
- - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Alert Closed** by {agent} — Dependabot alert #{alert-number} dismissed: {reason}
93
+ - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Close Dependabot** by {agent} — Dependabot alert #{alert-number} dismissed: {reason}
94
94
  ```
95
95
  - 归档任务
96
96
  - **释放短号**(归档目录已 mv 成功,再 release;脚本幂等):
@@ -101,7 +101,7 @@ date "+%Y-%m-%d %H:%M:%S%:z"
101
101
 
102
102
  ### 8. 告知用户
103
103
 
104
- > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。
104
+ > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。 渲染「下一步」命令前,先读取 `.agents/rules/next-step-output.md`,按其取短号片段把命令中的 `{task-ref}` 渲染为短号 `#NN`(未分配/已释放时回退完整 TASK-id)。
105
105
 
106
106
  ```
107
107
  安全告警 #{alert-number} 已关闭。
@@ -116,9 +116,9 @@ date "+%Y-%m-%d %H:%M:%S%:z"
116
116
  注意:如有需要,可在平台侧重新打开。
117
117
 
118
118
  下一步 - 完成并归档任务(如有关联任务):
119
- - Claude Code / OpenCode:/complete-task {task-id}
120
- - Gemini CLI:/agent-infra:complete-task {task-id}
121
- - Codex CLI:$complete-task {task-id}
119
+ - Claude Code / OpenCode:/complete-task {task-ref}
120
+ - Gemini CLI:/agent-infra:complete-task {task-ref}
121
+ - Codex CLI:$complete-task {task-ref}
122
122
  ```
123
123
 
124
124
  ## 注意事项
@@ -10,7 +10,7 @@ Implement the approved plan and produce `code.md` or `code-r{N}.md`. This skill
10
10
  ## Boundary / Critical Rules
11
11
 
12
12
  - Follow the latest plan artifact: `plan.md` or `plan-r{N}.md`
13
- - Fix mode only addresses findings from the latest `review-code`; env-blocked items are out of scope
13
+ - Fix mode verifies each finding of the latest `review-code` one by one: fix it if it holds, or rebut it and record it under unresolved if it is unfounded/hallucinated; do not expand to issues the review did not list; env-blocked items are out of scope
14
14
  - Never auto-run `git add` or `git commit`
15
15
  - Create a new code artifact for each round and never overwrite an older one
16
16
  - After executing this skill, you **must** immediately update task.md
@@ -31,7 +31,7 @@ tail .agents/workspace/active/{task-id}/task.md
31
31
 
32
32
  ## Task id short ref
33
33
 
34
- > If `{task-id}` begins with `#`, follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
34
+ > If `{task-id}` matches `^[#]?[0-9]+$` (bare numeric or `#`-prefixed), follow the "SKILL parameter resolver" section of `.agents/rules/task-short-id.md`; treat `{task-id}` as the resolved full `TASK-YYYYMMDD-HHMMSS` form for every downstream command.
35
35
 
36
36
  ## Steps
37
37
 
@@ -45,7 +45,9 @@ Read `reference/branch-management.md`, ensure the current branch matches the tas
45
45
 
46
46
  ### 3. Narrow the Milestone
47
47
 
48
- If task.md has a valid `issue_number`, read `.agents/rules/issue-sync.md` and `.agents/rules/milestone-inference.md`; follow Phase 2 for `code-task`.
48
+ **Mandatory; do not skip.** If task.md has a valid `issue_number`, read `.agents/rules/issue-sync.md` first (upstream + permission detection), then `.agents/rules/milestone-inference.md` Phase 2 for `code-task` to narrow the Issue milestone. If `has_triage=false`, keep the existing milestone.
49
+
50
+ > If this step is skipped or the Issue milestone is still a release line `X.Y.x` afterward, the step-11 `validate-artifact` gate will block the `code-task` round via `verify_milestone_specific` and require narrowing to a specific version (e.g. `0.7.1`) before proceeding.
49
51
 
50
52
  ### 4. Determine Mode and Round
51
53
 
@@ -102,8 +104,8 @@ date "+%Y-%m-%d %H:%M:%S%:z"
102
104
 
103
105
  Set `current_step` to `code`, refresh task metadata, and append one Activity Log entry:
104
106
 
105
- - initial implementation: `Code (Round {N})`
106
- - fix mode: `Code (Round {N}, fix for {review-artifact})`
107
+ - initial implementation: `Code Task (Round {N})`
108
+ - fix mode: `Code Task (Round {N}, fix for {review-artifact})`
107
109
 
108
110
  If task.md has a valid `issue_number`, read `.agents/rules/issue-sync.md`, then:
109
111
  - Set `status: in-progress` according to issue-sync.md
@@ -118,4 +120,6 @@ node .agents/scripts/validate-artifact.js gate code-task .agents/workspace/activ
118
120
 
119
121
  ### 12. Tell the User
120
122
 
121
- Use `reference/output-template.md` and show all TUI command formats.
123
+ Use `reference/output-template.md` (or `reference/fix-mode.md` in fix mode) and show all TUI command formats.
124
+
125
+ > When rendering "Next steps" commands, `{task-ref}` is the current task's short id `#NN` (see `.agents/rules/next-step-output.md` for lookup and fallback; read it before rendering). Other `{task-id}` placeholders (report titles, paths) keep the full TASK-id form.
@@ -10,7 +10,7 @@ description: "根据技术方案编码任务并输出报告"
10
10
  ## 行为边界 / 关键规则
11
11
 
12
12
  - 严格遵循最新方案产物:`plan.md` 或 `plan-r{N}.md`
13
- - 修复模式只处理最新 `review-code` 标记的问题;env-blocked 项不在修复范围
13
+ - 修复模式逐条核实最新 `review-code` 的发现:成立则修复,判定为不成立/幻觉则在报告中反驳并记入 unresolved;不擅自扩大到审查未列出的问题;env-blocked 项不在修复范围
14
14
  - 绝不自动执行 `git add` 或 `git commit`
15
15
  - 每轮实现都创建新的实现产物,不覆盖旧文件
16
16
  - 执行本技能后,你**必须**立即更新 task.md
@@ -27,6 +27,7 @@ description: "根据技术方案编码任务并输出报告"
27
27
  | 「先写代码再补测试更高效」 | 后补测试常沦为对实现的镜像;目标驱动应先定义可验证用例再让它通过。 |
28
28
  | 「方案这里不合理,顺手改更好」 | 偏离 `{plan-artifact}` 必须在报告中记录原因;有异议先停下确认,不擅自改方向。 |
29
29
  | 「测试过了,顺便提交一下」 | 本技能绝不执行 `git add`/`git commit`,提交是用户显式发起的独立步骤。 |
30
+ | 「审查既然写了,照着改就行」 | 审查可能基于错误 `file:line` 或幻觉;动手前先 Read/Grep 核实,成立才修,不成立就反驳并记入 unresolved,不盲从。 |
30
31
 
31
32
  ## 第 0 步:状态核对(执行前硬约束)
32
33
 
@@ -44,7 +45,7 @@ tail .agents/workspace/active/{task-id}/task.md
44
45
 
45
46
  ## 任务入参短号别名
46
47
 
47
- > 如果 `{task-id}` 入参以 `#` 开头,先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
48
+ > 如果 `{task-id}` 入参匹配 `^[#]?[0-9]+$`(裸数字或带 `#` 前缀),先读取 `.agents/rules/task-short-id.md` 的「SKILL 入参解析」段执行解析;后续命令视 `{task-id}` 为解析后的全长 `TASK-YYYYMMDD-HHMMSS` 形式。
48
49
 
49
50
  ## 执行步骤
50
51
  ### 1. 验证前置条件
@@ -70,7 +71,9 @@ tail .agents/workspace/active/{task-id}/task.md
70
71
 
71
72
  ### 3. 收窄里程碑
72
73
 
73
- 如果 task.md 中存在有效的 `issue_number`,执行前先读取 `.agents/rules/issue-sync.md`,完成 upstream 仓库检测和权限检测;再读取 `.agents/rules/milestone-inference.md`,按其中的「阶段 2:`code-task`」收窄 Issue milestone;如果 `has_triage=false`,则保持原 milestone 不变。
74
+ **必须执行,不得跳过。** 如果 task.md 中存在有效的 `issue_number`,执行前先读取 `.agents/rules/issue-sync.md`,完成 upstream 仓库检测和权限检测;再读取 `.agents/rules/milestone-inference.md`,按其中的「阶段 2:`code-task`」收窄 Issue milestone;如果 `has_triage=false`,则保持原 milestone 不变。
75
+
76
+ > 若此步骤被跳过或收窄后 Issue milestone 仍为 `X.Y.x` 版本线,步骤 11 的 `validate-artifact` gate 会通过 `verify_milestone_specific` 截停本轮 `code-task`,要求重新收窄到具体版本(如 `0.7.1`)后再继续。
74
77
 
75
78
  ### 4. 确定模式与轮次
76
79
 
@@ -149,8 +152,8 @@ date "+%Y-%m-%d %H:%M:%S%:z"
149
152
  - 审查 `## 需求` 段落,仅把本轮已由代码实现且有测试通过支撑的条目从 `- [ ]` 勾为 `- [x]`
150
153
  - 记录 Round `{code-round}` 的 `{code-artifact}`
151
154
  - 追加:
152
- - 初次实现:`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Code (Round {N})** by {agent} — Code implemented, {n} files modified, {n} tests passed → {code-artifact}`
153
- - 修复模式:`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Code (Round {N}, fix for {review-artifact})** by {agent} — Fixed {n} blockers, {n} major, {n} minor issues[, skipped {n} env-blocked] → {code-artifact}`
155
+ - 初次实现:`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Code Task (Round {N})** by {agent} — Code implemented, {n} files modified, {n} tests passed → {code-artifact}`
156
+ - 修复模式:`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Code Task (Round {N}, fix for {review-artifact})** by {agent} — Fixed {n} blockers, {n} major, {n} minor issues[, skipped {n} env-blocked] → {code-artifact}`
154
157
 
155
158
  如果 task.md 中存在有效的 `issue_number`,执行以下同步操作(任一失败则跳过并继续;执行前先读取 `.agents/rules/issue-sync.md`,完成 upstream 仓库检测和权限检测):
156
159
  - 按 issue-sync.md 设置 `status: in-progress`
@@ -176,7 +179,9 @@ node .agents/scripts/validate-artifact.js gate code-task .agents/workspace/activ
176
179
 
177
180
  > 仅在校验通过后执行本步骤。
178
181
 
179
- > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。输出格式见 `reference/output-template.md`。
182
+ > **重要**:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI(`customTUIs`),读取每个工具的 `name` 和 `invoke`,按同样格式补充对应命令行(`${skillName}` 替换为技能名,`${projectName}` 替换为项目名)。输出格式见 `reference/output-template.md`;修复模式输出见 `reference/fix-mode.md`。
183
+
184
+ > 渲染「下一步」命令时,`{task-ref}` 为当前任务短号 `#NN`(取值与回退见 `.agents/rules/next-step-output.md`,渲染前先读取)。其他 `{task-id}` 占位(报告标题、路径)保持完整 TASK-id 形式。
180
185
 
181
186
  ## 完成检查清单
182
187
 
@@ -32,7 +32,7 @@
32
32
  ]
33
33
  },
34
34
  "activity-log": {
35
- "expected_action_pattern": "Code \\(Round \\d+(?:, fix for review-code(?:-r\\d+)?\\.md)?\\)",
35
+ "expected_action_pattern": "(Code Task|Code) \\(Round \\d+(?:, fix for review-code(?:-r\\d+)?\\.md)?\\)",
36
36
  "freshness_minutes": 30
37
37
  },
38
38
  "platform-sync": {
@@ -44,6 +44,7 @@
44
44
  "verify_issue_type": true,
45
45
  "verify_issue_fields": false,
46
46
  "verify_milestone": true,
47
+ "verify_milestone_specific": true,
47
48
  "expected_status_label_key": "inProgress",
48
49
  "expected_comment_marker_key": "artifact"
49
50
  }
@@ -32,7 +32,7 @@
32
32
  ]
33
33
  },
34
34
  "activity-log": {
35
- "expected_action_pattern": "Code \\(Round \\d+(?:, fix for review-code(?:-r\\d+)?\\.md)?\\)",
35
+ "expected_action_pattern": "(Code Task|Code) \\(Round \\d+(?:, fix for review-code(?:-r\\d+)?\\.md)?\\)",
36
36
  "freshness_minutes": 30
37
37
  },
38
38
  "platform-sync": {
@@ -44,6 +44,7 @@
44
44
  "verify_issue_type": true,
45
45
  "verify_issue_fields": false,
46
46
  "verify_milestone": true,
47
+ "verify_milestone_specific": true,
47
48
  "expected_status_label_key": "inProgress",
48
49
  "expected_comment_marker_key": "artifact"
49
50
  }