Community生产力与协作github.com

g-ki/agent-skills

编排端到端交付任务分解待办事项,使用并行工作代理运行 implement-task 和 spike-task,并将每个 PR 引导到主分支合并——在未合并的依赖项上堆叠 PR,处理有价值的审查意见和 CI 失败,在 PR 合并时重新堆叠分支,将工作限定在 spike 决策之后,并保持跟踪器和本地任务文件同步。

agent-skills 是什么?

该技能定义了一个高级编排器代理,用于自动化端到端的软件交付流程。它将任务分解待办事项列表转化为可执行的 PR,并通过并行工作代理(实现和 Spike)协调整个过程。编排器负责监控 GitHub、跟踪器(Linear/Jira/GitHub Issues)和本地任务文件的状态,处理 PR 堆叠、审查反馈、CI 失败和依赖关系,确保工作流顺畅进行。它支持多种平台(GitHub、Linear、Jira),并提供了丰富的配置选项,例如并行度、堆叠深度和自动合并开关。该技能的核心优势在于,它将繁琐的 PR 管理、状态同步和冲突解决任务自动化,让开发者可以专注于编写代码和审查更改,从而显著提升团队交付效率。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/g-ki/agent-skills/tree/HEAD/skills/deliver-project

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

交付项目

运行待办事项列表直至主分支完成。每个工单变成一个 PR,由仓库的 GitHub 审查自动化和人工审查。你的工作是保持工作流动:尽可能早地启动工单,保持每个 PR 健康,处理有价值的审查反馈,在父 PR 合并时重新堆叠分支,并保持工单状态准确。

你是编排器。你读取状态,做出决策,委派任务,并保持记录。代理编写所有代码,解决冲突并推送。你不在此结账中编辑代码或运行变基,因此主项目文件夹保持干净,每个更改都可追溯。

输入

$ARGUMENTS

  • 任务文件: 来自 /task-breakdown 的本地 *.tasks.md(未追踪,通常位于像 .rfcs/ 这样的 git 忽略文件夹中)。如果没有给出,则在那里和 docs/rfcs/ 中查找;如果存在多个,请询问。
  • --parallel N: 所有类型同时工作的最大代理数。默认值为 3。
  • --max-stack N: PR 堆栈的最大深度。默认值为 3。更深的堆栈可以解除更多工作的阻塞,但会在父分支更改时增加变基次数。
  • --auto-merge: 当主分支上的 PR 处于 pr-ready 状态时,为该 PR 启用 GitHub 自动合并(gh pr merge --auto,使用仓库的常规合并方法)。GitHub 仍然会强制执行分支保护和所需的审批。默认关闭:由人工合并。
  • --once: 运行单个循环,然后退出。使用此选项按计划运行交付,例如 /loop 15m /deliver-project <tasks-file> --once,而不是保持一个长时间会话打开。

状态存储的位置

  • 跟踪器(Linear、Jira、GitHub Issues 等),用于已发布的工单(它们在任务文件中有一个 Tracker: 键)。它是工单是否存在以及是否需要的真实来源:在跟踪器中已取消、删除或重新分配的工单将被跳过。在工单进展时,将跟踪器问题移动到相应状态,除非跟踪器的 GitHub 集成已经这样做(在第一个 PR 打开后检查,不要与之冲突)。
  • 本地任务文件,位于主项目文件夹中。它是交付状态的真实来源,在运行期间你是其唯一的写入者:代理读取它但从不编辑它。状态:open → in progress → pr-draft → pr-open → pr-ready → pr-merged → done,加上带原因的 blocked 和 canceled。Spike 的状态为 open → in progress → decision-proposed → decided → done。保持 Branch / PR:(或 Spike 的 Decision:)已填写。
  • GitHub,用于 PR 状态:打开、合并、检查、审查、可合并性。当 PR 合并时,依赖项即被合并,无论任何文件如何规定。
  • 分支标识此运行的 PR:每个分支为 <username>/<project-slug>/<task-branch>,因此此运行的 PR 是头部分支以 <username>/<project-slug>/ 开头的用户的 PR。这是重新启动的运行找到一切的方式。
  • 运行日志,<rfc-name>.run.md 位于任务文件旁边(本地,未追踪),用于记录非工单状态的内容:正在运行的代理、每个堆叠分支的父头 SHA、已处理的评论 ID、反馈轮次、CI 修复尝试、升级、后续行动。使用 templates/run-log.md。如果丢失,则从 GitHub 重建。

references/github.md 包含用于读取 PR 状态、审查线程和检查的 gh 命令。

1. 预检(仅首次运行)

如果以下任何一项失败,则停止并显示清晰的消息:

  1. 任务文件健全:ID、状态、现有依赖项、验收标准、Project slug:、无依赖循环。
  2. 跟踪器可访问:如果任何工单具有跟踪器键,则跟踪器连接器必须可用,因为你需要它来检查取消和更新状态。如果不可用,请说明要启用哪个连接器,并提供仅使用本地文件继续的选项。
  3. 仓库就绪:工作树干净,有远程仓库,gh 已通过推送和 PR 权限认证,并且主分支构建并通过测试。确定 <username>(用户现有分支的前缀,否则使用 gh api user --jq .login)和分支前缀。
  4. 代理可以无人值守工作:后台代理在此会话中显示每个权限提示,因此一个提示就会使团队停滞。建议自动模式,或允许使用 git(包括 push --force-with-lease)、gh、仓库的测试、lint 和构建命令以及跟踪器连接器的规则。
  5. 技能可用:implement-task 和 spike-task 已安装,代理可以加载它们,并且 task-breakdown 可供你在决策后使用以进行细化。
  6. 审查自动化:找到审查 PR 的 GitHub 工作流,并记下其检查名称和机器人登录名,以便你知道其审查何时完成以及哪些评论是其自己的。

然后显示计划并获取一次确认:工单数量、现在可以启动的内容以及将要堆叠的内容、并行度、最大堆栈深度、自动合并是否开启,以及一个诚实的说明,即每个代理都是一个完整的会话,并且运行会消耗大量使用量。之后,无人值守运行。

2. 每次循环

按顺序执行以下操作。堆栈底部优先很重要:父分支的修复或合并会改变其子分支必须执行的操作。

a. 同步

获取。列出此运行的 PR(按分支前缀),包括状态、基础分支、头 SHA、检查、审查决策和可合并性。从跟踪器刷新已发布的工单,并跳过任何已取消的工单。收集自上次循环以来已完成的代理的报告(每个代理以 RESULT 块结束)。协调:如果 GitHub 和任务文件不一致,则 GitHub 在 PR 状态方面获胜;修复文件。

b. 处理合并

对于自上次循环以来已合并的每个 PR:将其工单设置为 pr-merged,并将跟踪器问题移至完成状态,除非集成已经完成。一旦跟踪器显示问题已关闭并且工单中的任何部署步骤已完成,则将其设置为 done。每个直接堆叠在已合并 PR 上的 PR 都需要重新堆叠到主分支并更改其基础分支为主分支:为每个受影响的堆栈启动一个重新堆叠代理(请参阅 references/stacks.md;向代理提供其绝对路径,${CLAUDE_SKILL_DIR}/references/stacks.md)。

c. 推进决策

Spike 会阻塞其后的工单,只有用户批准决策,因为决策会改变计划。

  • 对于每个处于 decision-proposed 状态的 spike,确保用户已看到它:将其放在更新的顶部,包含问题、建议和置信度、一行中建议的待办事项变更以及决策记录的路径。要求用户批准、选择另一个选项或延长 spike。同时保持其他一切进展。
  • 用户通过在此会话中告知来批准,或者在 --once 循环之间通过将任务文件中的 spike 状态设置为 decided(并在记录中注明所选选项)来批准。当 spike 变为 decided 时:在决策记录的 Status: 行中记录批准,然后使用 task-breakdown 技能的“Spike 后细化”步骤细化待办事项(用户的批准涵盖跟踪器同步),并将 spike 设置为 done。其依赖项将在下一步变得可启动。
  • 如果用户选择延长 spike,则将其设置回 open,并在其 Question: 字段中写入更窄的问题。

d. 保持开放的 PR 健康

处理开放的 PR,每个堆栈从底部开始。每次每个分支或堆栈最多保留一个代理,这样就不会有人在修复分支的同时进行变基。当 PR 上有任何待处理的工作时,其工单保持 pr-open 状态。

  1. 父分支移动了。 如果堆叠的 PR 的父分支获得了新的提交(其头 SHA 与为子分支记录的不同),则将子分支重新堆叠到父分支的新头之上。
  2. 与基础分支冲突。 如果 GitHub 报告 PR 冲突,或者由于分支保护要求而需要更新,则对其进行变基。不要仅仅因为主分支移动就变基;这会导致 CI 和审查无故重新运行。
  3. CI 失败。 读取失败的日志。如果看起来不稳定或与 PR 无关(基础设施、PR 未涉及且主分支上也失败的测试),则重新运行失败的作业一次。如果是 PR 导致的,则启动一个反馈代理,将失败作为处理项。在两次失败的修复尝试后,将工单设置为 blocked 并升级。
  4. 审查反馈。 等待审查自动化的检查完成。然后对所有尚未处理的未解决审查线程和评论进行分类(第 3 节),并为每个 PR 启动一个反馈代理,以处理待处理项和发布回复。
  5. 就绪。 检查通过,审查自动化完成,没有未处理的反馈:将工单设置为 pr-ready。如果其基础分支是主分支并且 --auto-merge 已开启,则启用自动合并;否则,在更新中将其列为准备人工合并。

e. 启动新工单

用可以启动的工单填充空闲的代理槽位。Spike 优先,因为它们会阻塞其他工作;其次是关键路径工单。

  • Spike 在它们处于 open 状态且其依赖项已完成时可以启动。使用 references/agent-prompts.md 中的 spike 提示启动一个 spike 代理,并将工单设置为 in progress。Spike 从不获得 PR,也没有东西堆叠在它们之上。
  • 一个工单在以下情况下可以启动:它是 open 状态,在跟踪器中未被取消,它所依赖的每个 spike 都是 done 状态,并且所有其他依赖项要么已合并,要么有一个带有绿色检查且没有请求更改的开放 PR,且所有未合并的依赖项位于单个堆栈线上。将其基础分支设置为最顶层的未合并依赖项的分支,如果所有依赖项都已合并,则设置为主分支。不要超过 --max-stack。
  • 如果两个未合并的依赖项位于不同的堆栈上,则等待其中一个合并。
  • 不要同时运行两个 Files: 重叠的工单。

确定分支名称(<username>/<project-slug>/<task-branch>,在发布时在 task-branch 中包含跟踪器键),将工单设置为 in progress(如果集成未自动完成,也将跟踪器问题设置为相同状态),并使用 references/agent-prompts.md 中的提示启动实现者:一个通用代理,在后台运行,在代理调用上设置 `isolation:

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相关技能