取消任务

SkillProductivity

Lets your agent cancel a task that is no longer needed and move it out of active work.

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

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

About this skill

Cancel and transfer a task that is no longer needed. Use when a task is no longer needed and should be removed from active work. This skill may only be invoked automatically when the conversation contains a resolvable task reference.

What this skill tells your AI

The instructions your AI receives, as published by fitlab-ai/agent-infra in .agents/skills/cancel-task/SKILL.md and read by ahel’s review.

--agent 取值见 .agents/rules/task-management.md「合作者 token 规范」。

行为边界 / 关键规则

  • 本命令用于终止一个不再需要继续执行的任务,并转移到 completed/
  • 只有在确认该任务无需继续实现、审查或修复时才可取消
  • 有效 platform_issue_identity 存在时,Issue 同步属于必做项

版本戳规则:创建或更新 task.md frontmatter 时,先读取 .agents/rules/version-stamp.md,并写入或刷新 agent_infra_version。

任务上下文解析

入口可省略 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;无法定位时按未找到任务处理并停止。

步骤开始:本地生命周期边界

确认前置条件后,由步骤 3 的单次 lifecycle intent 原子完成基础元数据、started/done 日志、目录转移和短号处理;不得提前手工写入局部状态。

执行步骤

1. 验证任务存在

依次检查以下目录:

  • .agents/workspace/active/{task-id}/
  • .agents/workspace/blocked/{task-id}/
  • .agents/workspace/completed/{task-id}/

处理规则:

  • 如果在 active/ 或 blocked/ 中找到:继续
  • 如果只在 completed/ 中找到且 cancelled_at 与 cancel_reason 有效:复用已记录的取消原因,跳过步骤 3-5,继续步骤 6 补齐 Issue 关闭与评论;其他 completed 任务停止
  • 如果都不存在:提示 Task {task-id} not found

2. 判断取消标签

从 completed 任务重试时,只使用 task.md 已记录的 cancel_reason,不得采用本次输入改写取消原因。

根据取消原因推断 Issue 关闭标签:

  • status: superseded:原因包含“重复”、“替代”、“合并到”、“已由 #123 / PR 替代”等语义
  • status: invalid:原因包含“误报”、“不存在”、“无法复现”、“排查后无问题”等语义
  • status: declined:原因包含“不做”、“暂不实现”、“优先级调整”、“方案否决”等语义
  • 以上都不匹配:回退到 status: declined

后续同步到 Issue 时,使用最终推断结果替换现有 status: labels。

3. 执行本地生命周期意图

agent-infra-internal task-lifecycle {task-id} cancel --agent {standard-agent-token} --reason "{一行取消原因}"

仅 status=applied|no-op 视为本地取消完成。status=failed 时展示结构化 error 与 recovery steps,并以同一 intent 重试;不得手工编辑 task.md、移动目录或释放短号。

4. 验证本地终态

确认 targetState=completed、终态字段与短号效果符合结构化结果。

5. 验证转移

ls .agents/workspace/completed/{task-id}/task.md

确认任务目录已成功移动。

6. 同步到 Issue

检查 task.md 中是否存在有效的 platform_issue_identity。如果没有,跳过此步骤。

如果存在有效的 platform_issue_identity,以下操作均须取得 applied / no-op 且无错误后才能宣称取消全部完成;失败时保留本地终态和待恢复记录,修复后以同一任务重试本技能:

  • 调用 agent-infra-internal platform-issue sync {task-id} --agent {standard-agent-token} --status {reason} --in-labels none --assignees none --milestone none --state closed --close-reason not_planned
  • 将取消正文写入临时文件,调用 agent-infra-internal platform-comment sync {task-id} --kind cancel --body-file {path} --agent {standard-agent-token}
  • 调用 agent-infra-internal platform-comment sync {task-id} --kind task --agent {standard-agent-token}

取消评论至少包含:

  • 取消原因
  • 选定的 status: label

7. 完成校验

运行完成校验,确认任务转移和同步状态符合规范:

agent-infra-internal task-verify {task-id} cancel-task.completed --format text

处理结果:

  • 退出码 0(全部通过)-> 继续到「告知用户」步骤
  • 退出码 1(校验失败)-> 根据输出修复问题后重新运行校验
  • 退出码 2(网络中断)-> 停止执行并告知用户需要人工介入

按 .agents/rules/validation-output.md 展示当次校验摘要;没有当次校验输出,不得声明完成。

8. 告知用户

仅在校验通过后执行本步骤。

渲染下一步前先读取 .agents/rules/next-step-output.md,仅为已选场景调用统一 helper,并将 stdout 填入 {next-step-commands}。

可选沙箱清理提示(门控渲染):仅当同时满足 (1) .agents/.airc.json 存在 sandbox 字段、(2) task.md 的 branch 字段存在且不是 main / master 时,才渲染下方输出中「目标路径」之后、「下一步」之前的「可选:清理本任务的沙箱」块;任一不满足则整段省略。清理时使用完整 {task-id},不要改用 branch 名。该块独立于「下一步」语义。

输出格式: 使用 agent-infra-internal agent-client next-steps --skill check-task --task-ref {task-ref} 生成本场景的 {next-step-commands}。

任务 {task-id} 已取消,任务目录已转移到 completed/。

取消原因:{reason}
状态标签:{status-label 或 skipped}
目标路径:.agents/workspace/completed/{task-id}/

可选:清理本任务的沙箱
(任务已完成并归档,沙箱容器和 per-branch 配置目录不会自动回收。如果不再需要可执行:)

ai sandbox rm {task-id}

下一步 - 查看已转移任务:
{next-step-commands}

完成检查清单

  • 已记录取消原因并更新 task.md
  • 已将任务目录移动到 .agents/workspace/completed/
  • 已在存在 Issue 时完成 Issue 同步
  • 已运行 gate 校验并通过
  • 已通过统一 helper 渲染已选场景的下一步命令

注意事项

  1. 取消任务不会新增 cancelled 状态值,而是复用 completed
  2. 必须通过 cancelled_at 和 cancel_reason 区分“取消”与“正常完成”
  3. 如果 Issue 关闭失败,不要宣称取消完成

错误处理

  • 任务未找到:Task {task-id} not found
  • 任务已转移:提示任务已在 completed/ 中
  • Issue 同步失败:保留本地转移结果,并告知用户需要人工补齐平台操作

Signals

GitHub stars
86
Forks
5
Last commit
Oct 2026
Advanced
Item type
skill
Key
cancel-task
Source
github.com/fitlab-ai/agent-infra