mcpField
E
execute

execute

github.com/davidlee开发2143 次安装3 天前更新
代码仓库

关于 execute

execute 技能用于按计划实施一个开发阶段,面向使用 Doctrine 管理切片和阶段状态的开发者。它结合 TDD、记忆记录与验证门,并支持按需在独立 worktree 中执行。

主要功能

  1. 01核对阶段进入与退出条件
  2. 02按 TDD 小步实现任务
  3. 03检索并记录项目记忆
  4. 04运行 lint、测试与格式验证
  5. 05更新阶段状态与符合性边界
  6. 06可选 worktree 隔离执行

适用场景

  1. 01实施计划中的单个阶段
  2. 02编码前检查设计和阶段资料
  3. 03为实现过程补充测试及可复用记忆
  4. 04按要求在 worktree 中隔离开发

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davidlee/doctrine --skill execute

安装后在 Claude Code 中输入/execute确认已加载。

详细介绍

执行

你正在执行计划中的一个阶段。

输入:

  • 当前运行时阶段说明(state/.../phases/phase-NN.md)
  • plan.toml / plan.md
  • design.md(权威设计参考)
  • slice-nnn.md(范围)

流程

  1. 确认当前阶段的进入条件(EN-)已满足。
  2. 编码前阅读 design.md、plan.toml 和运行时阶段说明。如果阶段说明尚未填写,先运行 /phase-plan;如果尚未明确输入、假设和矛盾之处,则使用 /preflight。
  3. 找出预计首先需要处理的具体文件或组件,并在深入阅读或编辑之前,针对这些路径运行 /retrieve-memory,以便尽早了解范围内的注意事项或模式。
  4. 确保状态与实际情况一致,再开始实现:
    • 首个阶段开始时,如果切片状态尚未设置,则执行:doctrine slice status <id> started(使用裸数字)。
    • 使用 doctrine slice phase 将阶段切换为 in_progress(参阅 lib:reference/using-doctrine.md)。此操作会自动记录符合性边界——处理程序会将 code_start_oid = HEAD 写入阶段说明。无需额外调用;执行状态转换时便会一并完成绑定。(在分派协调上下文中,此操作会自行跳过,由漏斗阶段负责记录。)
  5. 将阶段任务拆分为小而连贯的单元,遵循 TDD 红绿重构:编写失败测试,使其通过,然后重构。测试行为,而非琐碎的实现细节。随着工作的推进,完善测试辅助工具和固件。
  6. 每完成一个有意义的单元,就运行一次 /harvest。
  7. 如果该单元产生了值得今后检索的持久性注意事项、模式或子系统事实,请先运行 /record-memory,再继续。
  8. 随做随进行 lint(cargo clippy,零警告),并确保代码树始终可构建。
  9. 遵循仓库的提交策略:频繁创建小型常规提交,并在提交范围中注明切片 ID(例如 feat(SL-NNN): …)。尽量保持代码树干净;不要让 .doctrine/** 工作流编辑变成积压已久、尚未提交的一堆改动。
  10. 如果 /preflight 或实现过程发现尚未解决的设计歧义、意外障碍、权衡或策略歧义,请停止并运行 /consult,不要擅自继续处理。
  11. 随着工作推进,及时更新运行时阶段说明;切勿在编写的 plan.toml / plan.md 中记录进度(存储规则)。
  12. 在宣布阶段就绪前,运行验证门禁——doctrine check gate(lint + test + format)——并再次检查已修改的子系统和备注,确认是否有遗漏的记忆记录候选项。在阶段收尾时,根据代码审查技能的 ## Cadence 权衡是否进行阶段审查:低于遵循度门槛时默认进行;触发任何触发条件时必须进行。
  13. 满足退出条件(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 的盲点”。

结果

  • 阶段目标已实现,有可追溯的证据,最终通过验证。
  • 实施期间的阶段状态与实际情况一致,而不只是在收尾时一致。
  • 执行期间,笔记和持久化记忆始终保持最新。

评论

支持 Markdown