关于 execute-common
供 `build-in-waves`、`build-by-story` 和 `build-inline` 使用的共享控制流程指南,涵盖问题跟踪、规格占用、工作区决策、运行时准备、任务调度、审查与分支收尾。
主要功能
- 01问题跟踪与规格预检
- 02工作区和分支检查
- 03运行时与租约准备
- 04任务及收尾流程跟踪
- 05按条件执行润色和决策记录
适用场景
- 01准备 execute 系列编码会话
- 02实现前检查规格状态
- 03协调功能分支中的任务
- 04审查并关闭已完成工作
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jayden-dang/ skills --skill execute-common安装后在 Claude Code 中输入/execute-common确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
close-receipt.mddecision-trail.mdeval.jsonimplementer-prompt.mdledger-check.mdruntime-binding.mdtask-lifecycle.mdtask-reviewer-prompt.mdTESTS.mdtracker-sync.md详细介绍
Execute 系列控制器方案
build-in-waves、build-by-story 和 build-inline 共享的控制器步骤与运行时状态的统一归处。任务分派与审查见本文件旁的 task-lifecycle.md。当该技能的 Setup 或 After-last 要求时加载。此方案已注册,因此 npx skills add 会将其与 Execute 系列一并复制。
会话预检
在执行任何分派、任何 isolate-workspace / git worktree add,以及进行任何首次生产代码编辑之前,先回答三个问题:
-
问题跟踪器同步。 首先打开
docs/agents/issue-tracker.md。如果其中指定了跟踪器,请阅读本文件旁边的tracker-sync.md并严格遵循:操作员指定的工单必须在任何分派之前在此认领。曾有一次为 #23 构建 haiku 时没有打开该文件,因此工单从未被认领,其 PR 也未关闭。没有文件,或未指定跟踪器 → 工单集为空,继续(未配置是正常情况,不是失败)。 -
目录占用状态。 读取
目录状态为 `Approved` 时,不得执行 ISOLATE-WORKSPACE,也不得编辑生产代码。 用户要求先隔离、跳过文档流程或不提交目录文件,都不能覆盖此步骤。requirements.md中的Status:,以及匹配的docs/specs/INDEX.md行。若 INDEX 缺失 → 说明一次,并建议使用/configure-repo;只要requirements.md存在,仍要写入该文件。land-branch/realign-spec负责Implemented;cut-release负责Shipped。每次启动都要执行,包括压缩后恢复时。状态 操作 Approved在当前检出中,将两个文件都写为 In-progress,然后继续。In-progress已被占用。不要重复写入。继续。 Draft停止——规范尚未获批。 Implemented/Shipped保持不变。这不是启动标记。 隔离之前,提交当前检出中该功能尚未提交的规范文件(
requirements.md、design.md、tasks.md、INDEX 行)——如果状态为Approved,占用状态写入也应包含在该提交中。工作树从 HEAD 创建,因此未提交的规范文档会留在原处,新工作树和其他会话都看不到。isolate-workspace仍不得提交.gitignore——占用状态属于此步骤,不属于该技能。 -
工作区 / 分支。 如果尚未创建隔离工作区:是在工作树中隔离,还是在当前分支上实现?未经请求,不要创建工作树。隔离 → 必需的子技能:使用
isolate-workspace。如果当前分支是 main/master,则实现前需要另行明确征得同意;“不使用工作树”不等于同意修改 main/master。
完成条件:跟踪器选择(或空工单集)已明确,占用状态为 In-progress(或明确因 Draft/Implemented/Shipped 而停止),当前检出中没有该功能尚未提交的规范文件,且工作区选择已明确。
| 想法 | 实际情况 |
|---|---|
| “会话预检只检查跟踪器和工作区” | 占用状态是问题 2;工作区是问题 3。只有包含 In-progress 才算完成。 |
| “他们禁止的是在 main 上提交文档” | 其他会话会读取当前检出中的 INDEX。隔离必须在写入启动标记之后进行。 |
| “从工作树 / 功能分支就能看出占用状态” | 在当前检出中运行的会话仍会读到 Approved。INDEX 才是占用状态信号。 |
| “之后 land-branch 会将状态改成 Implemented” | Implemented 表示收尾。In-progress 是启动标记,必须在创建工作树之前写入。 |
| “等到合并时再让 INDEX 保持 Approved 也没关系” | 其他会话无法看到此 CODE 正在执行。任务 1 之前就要写入标记。 |
| “不用工作树——那就跳过文档流程” | 不选择隔离并不意味着可以跳过占用状态更新。 |
| “已经是 In-progress——立即隔离” | 先读取 Status;跳过写入,不要跳过检查。恢复时仍要在隔离前读取 Status。 |
| “用户禁止提交文档 / 要求先隔离——这可以覆盖占用状态更新” | 占用状态不可豁免。只有当前检出读到 In-progress 后才能隔离。 |
| “规范文件已经在磁盘上——工作树也能看到” | git worktree add 会复制 HEAD。未提交的 requirements.md / 三件套文件会留在原处。 |
运行时绑定和租约预检
首次派发前(内联路线:首次生产性编辑前),
请阅读本文件旁的 runtime-binding.md 并严格遵循其中的要求。该文件定义
.skills/<CODE>/execution-session.json 架构(schema_version、harness、
provider、model、resume/fork/worktree support、cache_control、token_telemetry、
pricing_policy、effective_concurrency、rotations)、四种租约轮换触发条件、
pricing-policy 回退规则,以及并发降级规则。
完成条件:派发前已存在运行时快照,所有不可用的能力均已明确说明,并已记录首次生效的并发/租约决策。
台账检查
阅读本文件旁的 ledger-check.md 并严格遵循其中的要求:.skills/ 保持
仅本地可用,从 .skills/<CODE>/progress.md 恢复,记录任务门槛所依据的 lint
基线,并且 Verified: 栏由 prove-claim 填写。
完成条件:已明确下一个任务/单元,并已记录 Lint baseline:。
决策轨迹 — 可观测条件
当用户要求提供决策轨迹/展示工作过程,或任务需无人值守地运行一夜/
多天,或 effective_concurrency > 1 且存在多个未完成单元时 → 阅读
本文件旁的 decision-trail.md 并严格遵循其中的要求;否则在关闭备注中写入
skip: no decision-trail predicate。
待办事项 — 门槛
在任何派发或任务 1 开始前,先在可见列表中列出待办事项——使用 harness 的待办/任务列表工具(如有),否则将清单写入回复,并在每个任务边界 重述:每个任务对应一个待办事项,并且 添加一个终止待办事项 Close branch(即下方的关闭序列——现在创建, 而不是之后创建)。只有在已知某项润色条件成立时(用户预先提出要求),才添加 Polish Diff 待办事项。否则,如果在关闭序列第 3 步时满足润色条件, 则在该步骤创建 Polish Diff 待办事项。
完成条件:列表与计划一致,并且包含 Close branch 待办事项。
Close 流程
完成最后一项任务(waves / inline)或最后一个解锁单元(story)后:
- 审查整个分支。 必需子技能:使用
inspect-change,并将 base 设为git merge-base <branch-base> HEAD——绝不能使用分支中途的 sha。<branch-base>为main,或当工单堆叠在某个阻塞工单之上时使用该阻塞工单的分支(deliver-issues):堆叠工单若对照main进行审查, 就会重新审查其阻塞工单的 diff,并将该 diff 中的文件计入润色范围。 提供 Minor 项台账。使用最高级别的模型。 - 一个修复者处理完整的问题清单 → 重新审查。绝不能为每个问题分别安排一个修复者。Inline 路径:你在
test-first下担任修复者。 - 润色 Diff——可观察条件。 根据下文评估润色判定条件。若任一条款为真 → 必需子技能:在验收前对整个分支的 diff 使用
polish-diff;若 Polish Diff todo 尚不存在,现在就创建;只有在该技能运行后才能将其标记为完成。若没有任何条款为真 → 跳过;在 Close branch 备注中写入skip: no polish predicate。EOD、演示压力、“inspect 很干净”以及“改动小到感觉可有可无”都不是判定条件。 - 验收。 必需子技能:使用
validate-feature。若有失败 → 执行root-cause,然后将通过的检查提升为描述领域行为的已提交测试(仅文档主干——测试文件无需包含需求 ID 标签)。 - 关闭凭证。 加载
close-receipt.md并遵循其生成流程。只有在最后一次修改之后,且仅基于与该 HEAD 绑定的证据,才能签发。只有在证据缺失或过期时才重新运行生成器。 - 完成。 必需子技能:使用
land-branch。
只有在步骤 1–6 均已执行,或按其判定条件跳过后,才能将 Close branch todo 标记为完成。
| 想法 | 实际情况 |
|---|---|
| “任务 todo 全部已完成——Close 可以稍后再做” | Close branch todo 仍未完成;必须运行完整流程后才能 land |
| “Inspect 没问题/分支很小——跳过润色” | Inspect 干净和“感觉改动很小”都不是判定条件。统计文件数;检查公共 API;查看 inspect 遗留项 |
| “EOD/演示——跳过 40 个文件分支的润色” | 时间压力不是判定条件。文件数才是 |
| “始终运行润色,这样就不会忘记” | 对一个三文件的拼写错误安排四个清理 Agent,正是设置此条件机制要避免的成本。跳过时必须写明,绝不能不作记录 |
Close 流程判定条件
润色——以下任一条件成立时为真:用户要求润色、清理或整理;inspect-change 的 Standards 遗留项中包含一项重要级别或更高、且不改变行为的发现(复用、死代码、不必要的复杂性、浪费 I/O);git diff --name-only $(git merge-base <branch-base> HEAD) HEAD 列出超过 15 个文件;该分支新增了公共 API 或导出接口。
危险信号——绝不可
- 跳过 tracker-sync、occupancy 或 workspace preflight
- 当目录 Status 仍为
Approved时隔离或编辑生产文件 - 仅在本次会话创建的 worktree 中写入
In-progress - 重新盖章已处于
In-progress状态的行 - 当此 checkout 仍有未提交的规范/需求改动时进行隔离
- 配置缺失或用户拒绝时,擅自创建 tracker 或工单集
- 未经明确同意就在 main/master 上开始实现
- 未经询问就创建 worktree,或将“当前分支”视为对 main/master 的同意
- 在 todo 列表创建之前派发第一个任务(任务和 Close branch 都要包含)
- 无记录地跳过润色(未写入
skip: no polish predicate) - 无记录地跳过决策轨迹(未写入跳过说明/必需行)
- 将 EOD、演示或“inspect 很干净”视为润色判定条件
- 在 Close branch todo 仍未完成时进入 land-branch
- 写入不完整的凭证,或将其绑定到最后一次修改之前的证据
- 将检查提升为“带 ID 标签的测试”——ID 应保留在文档中