关于 execute
execute 技能用于按计划实施一个开发阶段,面向使用 Doctrine 管理切片和阶段状态的开发者。它结合 TDD、记忆记录与验证门,并支持按需在独立 worktree 中执行。
主要功能
- 01核对阶段进入与退出条件
- 02按 TDD 小步实现任务
- 03检索并记录项目记忆
- 04运行 lint、测试与格式验证
- 05更新阶段状态与符合性边界
- 06可选 worktree 隔离执行
适用场景
- 01实施计划中的单个阶段
- 02编码前检查设计和阶段资料
- 03为实现过程补充测试及可复用记忆
- 04按要求在 worktree 中隔离开发
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ davidlee/ doctrine --skill execute安装后在 Claude Code 中输入/execute确认已加载。
详细介绍
执行
你正在执行计划中的一个阶段。
输入:
- 当前运行时阶段说明(
state/.../phases/phase-NN.md) plan.toml/plan.mddesign.md(权威设计参考)slice-nnn.md(范围)
流程
- 确认当前阶段的进入条件(
EN-)已满足。 - 编码前阅读
design.md、plan.toml和运行时阶段说明。如果阶段说明尚未填写,先运行/phase-plan;如果尚未明确输入、假设和矛盾之处,则使用/preflight。 - 找出预计首先需要处理的具体文件或组件,并在深入阅读或编辑之前,针对这些路径运行
/retrieve-memory,以便尽早了解范围内的注意事项或模式。 - 确保状态与实际情况一致,再开始实现:
- 首个阶段开始时,如果切片状态尚未设置,则执行:
doctrine slice status <id> started(使用裸数字)。 - 使用
doctrine slice phase将阶段切换为in_progress(参阅lib:reference/using-doctrine.md)。此操作会自动记录符合性边界——处理程序会将code_start_oid = HEAD写入阶段说明。无需额外调用;执行状态转换时便会一并完成绑定。(在分派协调上下文中,此操作会自行跳过,由漏斗阶段负责记录。)
- 首个阶段开始时,如果切片状态尚未设置,则执行:
- 将阶段任务拆分为小而连贯的单元,遵循 TDD 红绿重构:编写失败测试,使其通过,然后重构。测试行为,而非琐碎的实现细节。随着工作的推进,完善测试辅助工具和固件。
- 每完成一个有意义的单元,就运行一次
/harvest。 - 如果该单元产生了值得今后检索的持久性注意事项、模式或子系统事实,请先运行
/record-memory,再继续。 - 随做随进行 lint(
cargo clippy,零警告),并确保代码树始终可构建。 - 遵循仓库的提交策略:频繁创建小型常规提交,并在提交范围中注明切片 ID(例如
feat(SL-NNN): …)。尽量保持代码树干净;不要让.doctrine/**工作流编辑变成积压已久、尚未提交的一堆改动。 - 如果
/preflight或实现过程发现尚未解决的设计歧义、意外障碍、权衡或策略歧义,请停止并运行/consult,不要擅自继续处理。 - 随着工作推进,及时更新运行时阶段说明;切勿在编写的
plan.toml/plan.md中记录进度(存储规则)。 - 在宣布阶段就绪前,运行验证门禁——
doctrine check gate(lint + test + format)——并再次检查已修改的子系统和备注,确认是否有遗漏的记忆记录候选项。在阶段收尾时,根据代码审查技能的## Cadence权衡是否进行阶段审查:低于遵循度门槛时默认进行;触发任何触发条件时必须进行。 - 满足退出条件(
EX-)和验证要求(VT-,以及任何 Agent / 人工的VA-/VH-模式)后,使用doctrine slice phase将阶段切换为completed。此操作会关闭符合性边界——处理程序会捕获code_end_oid = HEAD,应用祖先关系/非合并提交保护,并将该阶段的记录写入切片的与分支无关注册表。此过程确定且处于关键路径中——不是“记得另外记录”的步骤;slice record-delta仅作为手动回退方案(用于更正范围或为尚未绑定的阶段引导初始化)。然后移交:若还有下一个阶段,则运行/phase-plan;若切片的所有阶段均已完成,则运行doctrine slice status <id> audit和/audit。
可选:solo 隔离(选择启用)
默认在当前工作树内执行——除非请求隔离,否则上述路径不变。
仅在选择启用时使用——绝不自动启用。 只有用户或计划明确要求隔离时,才在独立的工作树分支上运行该阶段。若未注明,则在当前工作树内实现。
请求隔离时,在实现之前(即步骤 5 之前)调用
/worktree,并设置:
mode = solo,allow_work_in_place = true(sandbox 拒绝时,solo 可以降级为在当前工作树内执行);branch = slice/SL-NNN-slug(切片 ID 在作用域内——例如slice/SL-NNN-<slug>),工作树目录以持久 ID 命名 (.worktrees/SL-NNN)。
/worktree 负责检测、创建流程(doctrine worktree fork)、
配置、启动防护以及绿色基线;它返回的 fork 分支就是交付物。
确保直接写入者入口干净。 solo /execute 是独立的编排器——这里
绝不使用 worker 模式(那是 /dispatch 的路径)。是否为 worker 取决于
进程:如果此 shell 中设置了 DOCTRINE_WORKER,所有经 doctrine 执行的写入
都会在工作中途拒绝执行。确认它在 TDD 循环之前未设置(doctrine worktree status 会
打印解析后的模式);如果已设置,则将其取消设置——无需清除任何陈旧的磁盘状态。
在 fork 内执行 TDD 循环(步骤 5–12)。全部通过后,将 fork 合入协调分支——
land 只能由 /execute 调用:
doctrine worktree land --fork slice/SL-NNN-slug # merge --no-ff, ancestry preserved (NEVER squash)
doctrine worktree gc --fork slice/SL-NNN-slug # reap the spent fork once the oracle proves it landed
有关 land/gc 如此运行的原因,请参阅
lib:reference/dispatch-mechanics.md 中的“导入会切断祖先关系——因此
‘是否已合入?’需要 patch-id oracle”和“squash 的盲点”。
结果
- 阶段目标已实现,有可追溯的证据,最终通过验证。
- 实施期间的阶段状态与实际情况一致,而不只是在收尾时一致。
- 执行期间,笔记和持久化记忆始终保持最新。