分析任务
SkillDocs & knowledgeAnalyze a task and produce a requirements analysis document. Use when you need to clarify a task's requirements, scope of impact, and risks before starting design. Only invoke this skill automatically when the conversation contains a parseable task reference.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the 分析任务 skill
What this skill tells your AI
The instructions your AI receives, as published by fitlab-ai/agent-infra in .agents/skills/analyze-task/SKILL.md and read by ahel’s review.
--agent取值见.agents/rules/task-management.md「合作者 token 规范」。
若入口业务操作数包含 --orchestrated,绑定 {execution-flag} = --orchestrated 并原样转发给 completed 事件;否则绑定为空。不得从 orchestration.json、环境变量或历史产物推断该标记。生命周期事件还必须携带显式触发信息:编排调用使用 {trigger-initiator}=orchestrator,否则使用 model;{request-id} 是本任务与本轮产物的稳定单行标识,{reason-code} 使用 user-request、new-requirement 或 upstream-fact-doubt;started 与 completed 使用同一组值。
行为边界 / 关键规则
流程裁定
分析产物必须在 ## 流程裁定 中记录 本任务路径、判定依据、未满足的更高路径条件 和 升级触发条件 四个字段,每个字段恰好一次且非空。路径仅可为精简、标准或完整;文件数、模块数和推测性风险不能单独升级路径。analysis 的 finalize-local 会复用生命周期路径解析器校验该决定;缺失、重复或无效值必须直接修复正式产物后重跑。
持久化报告证据
生成分析报告时,先读取 .agents/rules/evidence-reporting.md。状态核对和成功检查记录命令、目标范围、状态/结构化结果、实际结果和未覆盖部分;失败、阻塞或争议才附决定性原文摘录。
- 涉及候选资格或
HD-N判断时,先读取.agents/rules/decision-qualification.md,基于 task.md 规范化约束/候选完成资格审计,并在分析产物记录三张资格审计决策表和资格快照;不得把来源不明或未确认约束自动升级为排除条件 - 本技能仅产出需求分析文档(
analysis.md或analysis-r{N}.md)—— 不修改任何业务代码 - 严格基于
task.md中已有的任务输入、需求、上下文和来源信息展开分析 - 生成会同步到 Issue 的任务或生命周期 Markdown 前,先读取
.agents/rules/sync-content-generation.md并遵循其中的生成端约束;同步端不解析或改写正文 - 涉及旧行为、旧数据、旧 schema 或旧调用方时,先读取
.agents/rules/compatibility-policy.md;没有兼容准入证据时明确采用 current-only,不把推测写成需求 - 执行本技能后,你必须立即更新 task.md 中的任务状态
版本戳规则:创建或更新 task.md frontmatter 时,先读取 .agents/rules/version-stamp.md,并写入或刷新 agent_infra_version。
第 0 步:状态核对(执行前硬约束)
在加载 workflow / skill / rules 指令之后、做任何任务状态判断或用户可见结论之前,必须先执行状态核对。指令类文件读取不算对外动作或结论。
运行以下命令,并在本轮产物的 ## 状态核对 段记录任务/产物范围、关键结果和未覆盖部分;正常成功不粘贴完整目录清单或 task.md 尾部。失败、阻塞、身份不一致或争议时,附决定性原文行:
agent-infra-internal task-snapshot {task-id} --format text
状态核对完成前,禁止任何关于外部状态的断言(例如“代码没变”“测试已通过”“没有其他引用”),包括思考阶段。本门禁只提供结构下限;逐条证据配对和真实性仍需按报告模板与审查要求核对。
任务上下文解析
入口可省略 task ref;显式 task scope 仅接受
--task <ref>或-t <ref>,不再解释位置 task ref。保留其余业务操作数后调用agent-infra-internal task-context resolve {task-scope};{task-scope}为空或 task flag 之一。只读取结构化结果的taskId,后续把{task-id}绑定为完整TASK-YYYYMMDD-HHMMSS。解析失败时透传非零退出码,不自行扫描任务。
解析任务引用,并确认任务位于本技能支持的状态或目录且存在
task.md;无法定位时按未找到任务处理并停止。
步骤开始:声明 started 事件
确认前置条件和轮次后、本轮第一个产出动作之前执行:
agent-infra-internal task-event {task-id} analyze.started --agent {standard-agent-token} --initiator {trigger-initiator} --request-id {request-id} --reason-code {reason-code}
执行步骤
1. 验证前置条件
检查必要文件:
.agents/workspace/active/{task-id}/task.md- 任务文件
注意:{task-id} 格式为 TASK-{yyyyMMdd-HHmmss},例如 TASK-20260306-143022
如果缺少 task.md,提示用户先创建或导入任务。
2. 解析分析上下文
运行 agent-infra-internal task-artifact {task-id} inspect --family analysis。仅当结果为 ready 时继续。若 selection.disposition 为 reuse,复用 selection.artifact,不得执行 started、init 或写入新产物,并直接进入完成校验与下一步提示。其他状态从 next.round / next.name 记录 {analysis-round} / {analysis-artifact},从 inputs 读取修订上下文;不得自行扫描轮次或拼装文件名。随后执行 started 事件,并以事件返回的 artifactContext 复核同一身份。
3. 阅读任务上下文
仔细阅读 task.md 以理解:
## 任务输入中已捕获的来源、事实与证据、约束、决策状态、验收标准和未决事项(栏目不存在时兼容回退)- 任务标题、描述和需求列表
- 上下文信息(Issue、PR、分支、告警编号等)
- 当前已知的受影响文件和约束
如 task.md 包含以下来源字段,补充读取对应来源信息:
platform_issue_identity- Issue 的 canonical identitycodescan_alert_number- Code Scanning 告警security_alert_number- Dependabot 告警
Round ≥ 2:响应上一轮审查(仅当存在审查产物时):若任务目录存在 review-analysis.md / review-analysis-r{N}.md,读取最高轮次的审查报告;在本轮分析产物中新增 ## 对上一轮审查的响应 段,对每条发现先 Read/Grep 核实,再按 .agents/rules/review-handshake.md 的四态(accepted / adjusted / refuted / cannot-judge)处置——每态都要附相称证据,不默认顺从;随后逐条调用 agent-infra-internal task-ledger {task-id} finding-respond --id {ledger-id} --round {analysis-round} --status {四态} --evidence {相称证据}。未决分歧写入 ## 未决问题。Round 1 无审查,跳过本段。
4. 入口需求充分性闸门
本步骤的发问受
.agents/rules/no-mid-flow-questions.md「例外 3:入口式需求充分性澄清」授权:仅在 analyze-task 入口、仅用于判断并补齐需求充分性,一次只问一个问题,绝不借此征求实现 / 技术选型偏好。
排在第 0 步状态核对与步骤 3 之后执行(提问属对外动作,须在状态核对硬闸门之后;判定与状态读写需先读到 task.md)。
4.1 读取跨轮状态:读取 task.md 的 ## Brainstorming 段(不存在则视为首次,question_count=0)。段格式:
## Brainstorming
- status: asking | done
- question_count: <int>
- pending_question: <文本,可空>
- answered:
- Q: … / A: …
4.2 接收上一问的答案:若存在 pending_question:
- 用户当轮消息可解析出答案 → 把答案回写
## 描述/## 需求,把该Q/A追加进answered,清空pending_question(question_count不变)。 - 未携带答案 → 复述
pending_question,按下文场景 B 提问早退(不增加question_count)。
4.3 充分性判定(客观清单,命中任一缺口即判为不足):
- 先聚合
## 任务输入、描述、上下文、需求及远端来源;分析阶段尚未填写## 需求本身不构成不足; - 已在任务输入中记录的目标、范围、约束或验收标准视为已提供,不得重复询问;
- 描述/需求为空,或仅一句话且无可验证的验收标准;
- 缺少目标或受影响范围(不知道要改什么 / 影响谁);
- 需求条目自相矛盾,或关键名词未定义而无法分析。
4.4 分流:
- 场景 A(充分 / 已收敛)——满足任一退出条件:充分性清单全部通过 / 用户显式「直接分析 / skip」/
question_count达上限(≤5)。置## Brainstorming的status: done,继续步骤 5 起的正常流程;未补齐的缺口写入分析产物## 假设/## 未决问题。 - 场景 B(不足,提问早退)——在本步骤内闭环并提前 STOP:
- 确定本轮要问的问题(与 4.2 保持一致):
- 若已存在
pending_question(上一问尚未得到答案)→ 复述该pending_question,不修改它、不增加question_count; - 否则(无待答问题)→ 选最高价值的一个问题(验收标准 > 范围 > 歧义),写入
## Brainstorming:status: asking、pending_question: <问题>、question_count += 1。
- 若已存在
- 若
start_date为空,写入当日日期(date +%F);随后执行agent-infra-internal task-event {task-id} analyze.awaiting-input --agent {standard-agent-token} --question {question_count},由核心统一更新基础 frontmatter 和 Activity Log。 - Issue 同步(存在有效
platform_issue_identity时,任一失败跳过):调用agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}更新 task 评论;statuslabel 维持pending-design-work;不发布分析产物评论。 - 校验(替代步骤 8 的 artifact gate):
agent-infra-internal task-verify {task-id} analyze.awaiting-input --format text(早退已置current_step: requirement-analysis且已写入start_date,预期通过);并保留rg -n 'Analyze Task \(Brainstorming\)' .agents/workspace/active/{task-id}/task.md与 task 评论同步证据。不跑 artifact gate,也不跑check activity-log/check platform-sync(二者绑定分析产物路径)。 - 用户输出:只展示当前单个问题 + 如何回答/继续(再次触发
analyze-task {task-ref}并附答案),并按.agents/rules/next-step-output.md在末行追加Completed at。 - STOP,等待回答。下一次触发回到本步骤。
- 确定本轮要问的问题(与 4.2 保持一致):
5. 执行需求分析
开始分析前:若 frontmatter 的 start_date 为空,立即写入当日日期(命令 date +%F,格式 YYYY-MM-DD);已有值则保留。写入前先读取 .agents/rules/version-stamp.md,并同步刷新 updated_at / agent_infra_version。
遵循 .agents/workflows/feature-development.yaml 中的 analysis 步骤:
必要任务(仅分析,不编写业务代码):
- 理解任务需求和目标
- 搜索相关代码文件(只读)
- 分析代码结构和影响范围
- 识别潜在技术风险和依赖
- 评估工作量和复杂度
6. 输出分析文档
在首次写入本轮 {analysis-artifact} 前,先创建受控报告骨架:
agent-infra-internal task-artifact {task-id} init --family analysis --artifact {analysis-artifact}
骨架只包含身份元数据、稳定 section marker 和必需标题;必须填入真实分析内容后才能通过完成门禁。finalizer 返回结构错误时,直接修正正式产物后重跑 task-artifact {task-id} finalize-local --family analysis --artifact {analysis-artifact};当前结构、资格和摘要事实是唯一门禁。
步骤 6–9 属**场景 A(正常产出)**路径。**场景 B(提问早退)**已在步骤 4 内完成状态更新、task 评论同步与校验并 STOP,不进入这些步骤。
创建 .agents/workspace/active/{task-id}/{analysis-artifact}。
输出模板
# 需求分析报告
- **分析轮次**:Round {analysis-round}
- **产物文件**:`{analysis-artifact}`
## 状态核对
> 记录第 0 步状态核对命令、任务/产物范围、关键结果和未覆盖部分。正常成功不粘贴完整目录清单或 `task.md` 尾部,失败、阻塞、身份不一致或争议时附决定性原文行。
## 需求来源
**来源类型**:{用户描述 / Issue / Code Scanning / Dependabot / 其他}
**来源摘要**:
> {任务来源或关键上下文}
## 需求理解
{用自己的话重述需求以确认理解}
## 相关文件
- `{file-path}:{line-number}` - {描述}
## 影响评估
**直接影响**:
- {受影响的模块和文件}
**间接影响**:
- {可能受影响的其他部分}
## 技术风险
- {风险描述和缓解思路}
## 依赖关系
- {需要的依赖和与其他模块的协调}
<!-- lifecycle-path-decision-template:start -->
## 流程裁定
- **本任务路径**:{lifecycle-path}
- **判定依据**:{选择当前路径的事实依据}
- **未满足的更高路径条件**:{当前未满足的更高路径条件;完整路径写不存在更高路径的事实}
- **升级触发条件**:{未来需要重新评估路径的事实触发条件}
<!-- lifecycle-path-decision-template:end -->
## 资格审计
> 仅当本阶段实际判断候选资格、约束依赖或人工裁决资格时填写本节,并按 `.agents/rules/decision-qualification.md` 完整记录三张决策表和资格快照;否则删除整个审计段。
## 假设
> 如本次分析依赖某些假设,列在此处;没有则可省略本段。
- {本轮分析所依赖的假设}
## 未决问题
> 如有需要人工裁定的未决问题,列在此处;没有则可省略本段。
> 普通未决问题列在本段;属关键设计决策的(按 `.agents/rules/no-mid-flow-questions.md` 判据),详情块改写入下方 `## 人工裁决待办` 的 `### HD-N`,本段仅保留一行指针。
- {未决问题}
## 人工裁决待办
> 仅当本轮升级了 `[needs-human-decision]` 关键设计决策时写本段;没有则省略。
> 每项先调用 `agent-infra-internal task-ledger {task-id} decision-next-id` 取得 `HD-N`,按 `.agents/rules/human-decision-context.md` 写自足 `### HD-N` 块,再调用 `decision-upsert --id {HD-N} --stage analysis --artifact {analysis-artifact}`;不得扫描编号或手写账本行。
## 工作量和复杂度评估
- 复杂度:{高/中/低}
- 风险等级:{高/中/低}
7. 更新任务状态
更新 .agents/workspace/active/{task-id}/task.md:
- 仅更新优先级、Brainstorming、审查响应等本技能拥有的业务内容;产物链接、阶段与完成日志由 completed 事件统一登记
- 在追加工作流 Activity Log 条目之前,基于分析结果(业务影响、风险、依赖、阻塞条件)重估
priority。若重估值与task.md当前值不一致:- 用新值覆盖 frontmatter 的
priority字段 - 在本轮分析产物
{analysis-artifact}中追加## 优先级重估段,记录一条:priority {old} → {new} (rationale: {基于本轮分析的简短依据})若重估值与当前值一致,跳过:不写入## 优先级重估段。后续 Flow A 同步会读取可能更新过的 frontmatter,并自动把新值同步到 Issue。
- 用新值覆盖 frontmatter 的
- 完成本地产物后,先执行本地完成前门禁:
agent-infra-internal task-artifact {task-id} finalize-local --family analysis --artifact {analysis-artifact}status=passed:保存本次返回的artifactSha256和semanticDigest;finalizer 已记录对应的一次性本地 provenance intent。status=failed:直接修正正式产物并完整重跑 finalizer;若仍失败且诊断未解决,继续下一轮。- 当前正式产物发生外部变化、无法安全修复、诊断或指纹重复、无进展,或达到共享规则的编辑上限时停止,不发布 completed 事件。
- 使用同一次
status=passed返回的摘要执行agent-infra-internal task-event {task-id} analyze.completed --agent {standard-agent-token} --initiator {trigger-initiator} --request-id {request-id} --reason-code {reason-code} --artifact {analysis-artifact} --artifact-sha256 {artifact-sha256} --semantic-digest {semantic-digest} {execution-flag},由核心登记链接、阶段、代理、时间、版本和 Activity Log。
如果 task.md 中存在有效的 platform_issue_identity,执行以下同步操作(任一失败则跳过并继续):
- 调用
agent-infra-internal platform-issue sync {task-id} --agent {standard-agent-token} --status pending-design-work --fields - 调用
agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token} - 调用
agent-infra-internal platform-comment sync {task-id} --kind artifact --artifact {analysis-artifact} --agent {standard-agent-token}
8. 完成校验
本步骤的 artifact gate 仅用于场景 A;场景 B 的校验见步骤 4(
check task-meta+ 显式证据),不在此跑 artifact gate。
运行完成校验,确认任务产物和同步状态符合规范:
agent-infra-internal task-verify {task-id} analyze.completed --artifact {analysis-artifact} --format text
处理结果:
- 退出码 0(全部通过)-> 继续到「告知用户」步骤
- 退出码 1(校验失败)-> 根据输出修复问题后重新运行校验
- 退出码 2(网络中断)-> 停止执行并告知用户需要人工介入
按 .agents/rules/validation-output.md 展示当次校验摘要;没有当次校验输出,不得声明完成。
9. 告知用户
本步骤为场景 A 正常完成输出;场景 B 的单问输出见步骤 4。
仅在校验通过后执行本步骤。
渲染下一步前先读取
.agents/rules/next-step-output.md,仅为已选场景调用统一 helper,并将 stdout 填入{next-step-commands}。
输出格式:
按分析中的规范路径选择一条命令生成 {next-step-commands}:
- 精简路径:
agent-infra-internal agent-client next-steps --skill code-task --task-ref {task-ref} - 标准路径:
agent-infra-internal agent-client next-steps --skill plan-task --task-ref {task-ref} - 完整路径:
agent-infra-internal agent-client next-steps --skill review-analysis --task-ref {task-ref}
任务 {task-id} 分析完成。
摘要:
- 分析轮次:Round {analysis-round}
- 相关文件:{数量}
- 风险等级:{评估}
产出文件:
- 分析报告:.agents/workspace/active/{task-id}/{analysis-artifact}
下一步 - 按所选路径继续:
{next-step-commands}
完成检查清单
- 阅读并理解了任务文件和来源信息
- 创建了分析文档
.agents/workspace/active/{task-id}/{analysis-artifact} - 更新了 task.md 中的
current_step为 requirement-analysis - 更新了 task.md 中的
updated_at为当前时间 - 更新了 task.md 中的
assigned_to - 追加了 Activity Log 条目到 task.md
- 在工作流进度中标记了 requirement-analysis 为已完成
- 已通过统一 helper 渲染已选场景的下一步命令
- 没有修改任何业务代码
停止
完成检查清单后,立即停止。等待用户调用上述所选路径的下一阶段。
注意事项
- 前置条件:必须已存在任务文件
task.md - 多轮分析:需求变化或已有分析需要修订时,使用
analysis-r{N}.md - 职责单一:本技能只负责分析,不设计方案、不实现代码
错误处理
- 任务未找到:提示 "Task {task-id} not found, please check the task ID"
Advanced
- Item type
- skill
- Key
analyze-task- Source
- github.com/fitlab-ai/agent-infra
github.com/fitlab-ai/agent-infra
More in Docs & knowledge
Skill · anthropics
More in Docs & knowledgedoc-coauthoring
Skill · anthropics
More in Docs & knowledgehandoff
Skill · mattpocock
More in Docs & knowledgelark-openapi-explorer
Skill · larksuite
More in Docs & knowledgewriting-for-agents
Skill · mattpocock
More in Docs & knowledgewind-mcp-skill
Skill · wind-alice
More in Docs & knowledge