工作执行命令
高效执行工作,同时保持质量和精加工功能。
## 介绍
该命令采用工作文档(计划或规范)或描述工作的简单提示,并系统地执行它。重点是通过快速了解需求、遵循现有模式并始终保持质量来交付完整的功能。
Beta 推出说明: 当您想要试用 Codex 授权时,请手动调用 ce-work-beta。在测试期间,规划和工作流程切换保持稳定的 ce-work 以避免双路径编排复杂性。
输入文档
参数解析
解析 $ARGUMENTS 以获得以下可选标记。在将剩余部分解释为计划文件路径或裸提示之前,先剥离每个已识别的标记。
| 代币 | 示例 | 效果 |
|---|---|---|
delegate:codex |
delegate:codex delegate:codex |
激活 Codex 授权模式以执行计划 |
delegate:local |
delegate:local |
即使在配置中启用了委派,也要停用委派 |
所有标记都是可选的。如果不存在,则返回到下面的解决链。
模糊激活: 还可以识别命令性委托意图短语,例如“使用 codex”、“委托给 codex”、“codex 模式”或“委托模式”等价于 delegate:codex。在提示中仅提及“codex”(例如,“修复 codex 转换器错误”)不得激活委托——只有明确的委托意图才会触发它。
模糊停用: 还将“无代码”、“本地模式”、“标准模式”等短语识别为相当于 delegate:local。
设置解析链
从参数中提取令牌后,使用以下优先级链解析委托状态:
- 参数标志 -- 当前调用中的
delegate:codex或delegate:local(最高优先级) - 配置文件 -- 从下面的配置块中提取设置。
work_delegate的值codex激活委派;false停用。 - 硬默认 --
false(委托关闭)
配置(预先解决):
!cat "$(git rev-parse --show-toplevel 2>/dev/null)/.compound-engineering/config.local.yaml" 2>/dev/null || echo '__NO_CONFIG__'
If the block above contains YAML key-value pairs, extract values for the keys listed below.
If it shows __NO_CONFIG__, the file does not exist — all settings fall through to defaults.
If it shows an unresolved command string, read .compound-engineering/config.local.yaml from the repo root using the native file-read tool (e.g., Read in Claude Code, read_file in Codex). If the file does not exist, all settings fall through to defaults.
如果任何设置具有无法识别的值,则转为该设置的硬默认值。对于没有硬默认值的可选设置(work_delegate_model、work_delegate_effort),无法识别或无法解析的值会解析为 unset — 相应的标志在 codex exec 调用中被省略,因此 Codex 从 ~/.codex/config.toml 解析。切勿将无效值替换为 CLI 标志。
配置键:
work_delegate--codex或默认falsework_delegate_consent--true或默认falsework_delegate_sandbox--yolo(默认)或full-autowork_delegate_decision--auto(默认)或askwork_delegate_model-- 要使用的 Codex 模型。可选 — 当未设置或不可解析时,遵循用户的~/.codex/config.toml默认值。 Passthrough — 任何非空字符串都被视为有效;只有 YAML 解析失败或空值才会解析为取消设置。work_delegate_effort--minimal、low、medium、high或xhigh之一。可选 - 当取消设置或设置为此枚举之外的值时,解析为取消设置并遵循用户的~/.codex/config.toml默认值。
存储已解析的状态以供下游消费:
delegation_active-- 布尔值,委托模式是否开启delegation_source--argument或config或default-- 授权是如何解决的(环境卫士使用它来决定通知的详细程度)sandbox_mode--yolo或full-auto(来自配置或默认yolo)consent_granted-- 布尔值(来自配置work_delegate_consent)delegate_model-- 配置中的字符串,或未设置(遵循 Codex 配置)delegate_effort-- 来自配置的字符串,或未设置(遵循 Codex 配置)。每批次工作量选择的下限;没有直接传递到codex exec。effective_effort-- 每批次派生值 (default | medium | high | xhigh),在每批次之前根据delegate_effort计算,并根据references/codex-delegation-workflow.md选取级别(“每批次工作量”)。提供codex exec调用来代替delegate_effort。
执行工作流程
阶段 0:输入分类
根据 <input_document> 中提供的内容确定如何继续。
计划文档(输入是现有计划或规范的文件路径):首先读取计划的元数据 - Markdown 计划的 YAML frontmatter,或 HTML 计划的可见标题文本(两种格式都带有相同的字段)。如果它带有 execution: knowledge-work,则这是一个 非代码计划 - 阅读 references/non-code-execution.md 并遵循该剥离,而不是此工作流程的其余部分。否则(该字段不存在或 execution: code)→ 跳到阶段 1 并运行正常的代码生命周期。 (标记检查位于此处,位于计划文档处理内部,因为检测标记需要已有文件;下面的“裸提示”不受影响。)
裸提示(输入是工作描述,而不是文件路径):
- Scan the work area
- 根据提示识别可能更改的文件
- 查找这些区域的现有测试文件(搜索导入、引用或与实现文件共享名称的测试/规范文件)
- 注意受影响地区的当地模式和惯例
评估复杂性和路线
Complexity Signals Action Trivial 1-2 files, no behavioral change (typo, config, rename) Proceed to Phase 1 step 2 (environment setup), then implement directly — no task list, no execution loop. Apply Test Discovery if the change touches behavior-bearing code Small / Medium Clear scope, under ~10 files Build a task list from discovery. Proceed to Phase 1 step 2 Large Cross-cutting, architectural decisions, 10+ files, touches auth/payments/migrations Inform the user this would benefit from /ce-brainstormor/ce-planto surface edge cases and scope boundaries. Honor their choice. If proceeding, build a task list and continue to Phase 1 step 2
第 1 阶段:快速启动
- 阅读计划并澄清 (如果从阶段 0 到达且仅有提示,则跳过)
- 完整阅读工作文件
- 将计划视为决策工件,而不是执行脚本
- 如果计划包含
Implementation Units、Work Breakdown、Requirements(或旧版Requirements Trace)、Files、Test Scenarios或Verification等部分,请将这些部分用作主要来源材料执行 - 检查每个实现单元上的
Execution note— 这些携带该单元的计划执行状态信号(例如,测试优先或表征优先)。创建任务时请注意它们。 - 检查
Deferred to Implementation或Implementation-Time Unknowns部分 - 这些是规划者在执行过程中故意留给您解决的问题。在开始之前记下它们,以便它们告知您的方法,而不是在任务中让您感到惊讶 - 检查
Scope Boundaries部分 - 这些是明确的非目标。如果实施开始将您拉向相邻的工作,请回头参考它们 - 查看计划中提供的任何参考资料或链接
- 如果用户在此会话中明确要求 TDD、测试优先或表征优先执行,请尊重该请求,即使计划没有
Execution note - 如果有任何不清楚或不明确的地方,请立即提出澄清问题
- 如果需要澄清上述问题,请获得用户对已解决答案的批准。如果不需要澄清,则无需单独的批准步骤即可继续 - 计划范围是计划的权威,无需重新协商
- 不要跳过这个 - 现在提出问题比构建错误的东西更好
- 不要在执行过程中编辑计划主体。 计划是一个决策工件;进度存在于 git 提交和任务跟踪器中,而不是计划中。
ce-work不会改变计划——它是否是从 git 派生的,没有记录在文档中。旧版计划可能在单位标题或status:字段上包含- [ ]/- [x]标记 - 将其作为状态忽略;每个单元的完成情况是在执行期间通过读取当前文件状态来确定的。
- 设置环境
首先,检查当前分支:
current_branch=$(git 分支 --show-current)
default_branch=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
# 如果远程 HEAD 未设置则回退
if [ -z "$default_branch" ];然后
default_branch=$(git rev-parse --verify origin/main >/dev/null 2>&1 && echo "main" || echo "master")
菲
如果已经在功能分支(不是默认分支):
首先,检查分支名称是否有意义 - 像 feat/crowd-sniff 或 fix/email-validation 这样的名称可以告诉未来的读者该作品的内容。自动生成的工作树名称(例如 worktree-jolly-beaming-raven)或其他不透明名称则不会。
如果分支名称无意义或自动生成,建议在继续之前重命名它:
git branch -m <meaningful-name>
从计划标题或工作描述中得出新名称(例如 feat/crowd-sniff)。将重命名作为推荐选项,同时继续按原样进行。
然后问:“继续处理 [current_branch],还是创建一个新分支?”
- 如果继续(无论是否重命名),请继续执行步骤 3
- 如果创建新的,请按照下面的选项 A 或 B 操作
如果在默认分支上,选择如何继续:
选项A:创建一个新分支
git pull origin [default_branch]
git checkout -b feature-branch-name
根据工作使用有意义的名称(例如 feat/user-authentication、fix/email-validation)。
选项 B:使用工作树(建议用于并行开发)
skill: ce-worktree
# The skill will create a new branch from the default branch in an isolated worktree
选项 C:在默认分支上继续
- 需要明确的用户确认
- 仅在用户明确表示“是的,提交到 [default_branch]”后才继续
- 未经明确许可,切勿直接提交到默认分支
建议:在以下情况下使用工作树:
- 您想要同时处理多个功能
- 你想在实验时保持默认分支干净
- 您打算经常在分行之间切换
Create Task List (skip if Phase 0 already built one, or if Phase 0 routed as Trivial)
- Use the platform's task tracking tool (
TaskCreate/TaskUpdate/TaskListin Claude Code,update_planin Codex, or the equivalent on other harnesses) to break the plan into actionable tasks - Derive tasks from the plan's implementation units, dependencies, files, test targets, and verification criteria
- When the plan defines U-IDs for Implementation Units, preserve the unit's U-ID as a prefix in the task subject (e.g., "U3: Add parser coverage"). This keeps blocker references, deferred-work notes, and final summaries anchored to the same identifier the plan uses, so progress and traceability remain unambiguous across plan edits
- Carry each unit's
Execution noteinto the task when present - For each unit, read the
Patterns to followfield before implementing — these point to specific files or conventions to mirror - Use each unit's
Verificationfield as the primary "done" signal for that task - Do not expect the plan to contain implementation code, micro-step TDD instructions, or exact shell commands
- Include dependencies between tasks
- Prioritize based on what needs to be done first
- Include testing and quality check tasks
- Keep tasks specific and completable
- Use the platform's task tracking tool (
选择执行策略
委派路由门: 如果 delegation_active 为 true 并且输入是计划文件(不是简单的提示),请阅读 references/codex-delegation-workflow.md 并遵循其预委派检查和委派决策流程。如果所有检查都通过并且委派继续进行,则强制串行执行并使用工作流的批处理执行循环直接进入第 2 阶段。如果任何检查禁用委派,请参阅下面的标准策略表。如果委派处于活动状态,但输入只是一个简单的提示(无计划文件),请将 delegation_active 设置为 false,并附上简短说明:“Codex 委派需要计划文件 - 使用标准模式。”并继续下面的标准策略选择。
创建任务列表后,根据计划的大小和依赖结构决定如何执行:
| 战略 | 何时使用 |
|---|---|
| 内嵌 | 1-2 个小任务,或在飞行中需要用户交互的任务。 默认为裸提示工作 — 裸提示很少产生足够的结构化上下文来证明子代理调度的合理性 |
| 系列子代理 | 3 个以上任务之间存在依赖关系。每个子代理都会获得一个专注于一个单元的新上下文窗口 - 防止许多任务中的上下文退化。需要计划单元元数据(目标、文件、方法、测试场景) |
| 并行子代理 | 通过并行安全检查的 3 个以上任务(如下)。同时调度独立单元,在其先决条件完成后运行依赖单元。需要计划单元元数据 |
Parallel Safety Check — required before choosing parallel dispatch:
- 从每个候选单元的
Files:部分构建文件到单元的映射(创建、修改和测试路径)- 检查交集 — 任何出现 2 个以上单位的文件路径都意味着重叠
- 如果发现重叠且工作树隔离不可用:降级为串行子代理。记录原因(例如,“单元 2 和 4 共享
config/routes.rb— 使用串行调度”)。串行子代理仍然提供上下文窗口隔离,而无需共享目录写入竞争。 - 如果发现重叠并且工作树隔离可用:并行调度仍然是安全的 - 子代理独立工作,并且重叠表面作为可预测的合并冲突,编排器通过下面的批处理后流程进行处理。记录预测的重叠,以便批处理后流程知道哪些合并会发生冲突。
即使没有文件重叠,共享协调器工作目录的并行子代理也会面临 git 索引争用(并发暂存/提交会损坏索引)和测试干扰(并发测试运行会获取彼此正在进行的更改)。工作树隔离消除了两者;下面的共享目录后备约束可以缓解这些问题。
子代理隔离 — 为每个并行子代理提供自己的工作树:
- Claude 代码(
Agent工具): 通过isolation: "worktree"和run_in_background: true。该工具在其自己的分支上的.claude/worktrees/agent-<id>下创建每个子代理工作树。在依赖它之前验证.claude/worktrees/是否被 gitignored。 - 其他平台没有内置工作树隔离(例如,Codex
spawn_agent、Pisubagent):子代理共享协调器的目录。
子代理调度使用可用的子代理或任务生成机制。对于每个单位,给出子代理:
- 完整的计划文件路径(用于整体上下文)
- 特定单元的目标、文件、方法、执行说明、模式、测试场景和验证
- 与该单元相关的任何已解决的延迟问题
- 在编写测试之前检查单元的测试场景是否涵盖所有适用类别(快乐路径、边缘情况、错误路径、集成)并补充差距的说明
共享目录后备约束 — 仅在工作树隔离不可用时适用:
- 指示每个子代理:“不要暂存文件 (
git add)、创建提交或运行项目测试套件。编排器在所有并行单元完成后处理测试、暂存和提交。” - 这些约束可防止并发子代理之间的 git 索引争用和测试干扰。
- 工作树隔离处于活动状态时,忽略这些约束 — 子代理可以在自己的工作树分支内暂存、提交和运行其单元的测试。
权限模式: 调度子代理时省略 mode 参数,以便应用用户配置的权限设置。不要传递 mode: "auto" — 它会覆盖用户级设置,例如 bypassPermissions。
After each subagent completes (serial mode):
- Review the subagent's diff — verify changes match the unit's scope and
Files:list - Run the relevant test suite to confirm the tree is healthy
- If tests fail, diagnose and fix before proceeding — do not dispatch dependent units on a broken tree
- Update the task list (do not edit the plan body — progress is carried by the commit)
- Dispatch the next unit
批处理中的所有并行子代理完成后(工作树隔离模式):
- 等待当前并行批次中的每个子代理完成。
- 对于每个已完成的子代理,按依赖顺序:检查工作树与协调器分支的差异。如果子代理没有提交自己的工作,则将其暂存并提交到该工作树内。
- 按依赖顺序将每个子代理的分支合并到协调器的分支中。 如果出现合并冲突,则中止合并(
git merge --abort)并针对现在合并的树连续重新分派冲突单元 - 手动解决默默地选择一方并放弃一个单元的意图。 (并行安全检查的预测重叠在这里表现为冲突,而不是共享目录模式下的静默数据丢失。) - 每次合并后,运行相关的测试套件。如果测试失败,请在合并下一个分支之前进行诊断和修复。
- 更新任务列表(进度由合并提交承载)。
- 合并后,移除每个子代理的工作树并删除其分支。使用子代理结果中返回的绝对路径和分支名称。
- 首先解锁工作树 - 线束锁定每个子代理工作树:
git worktree unlock <absolute-path> - 删除工作树:
git worktree remove <absolute-path> - 删除分支:
git branch -d <branch-name>(默认情况下,该分支的寿命比工作树长,如果不清理,则会作为孤儿累积;-d小写拒绝删除未合并的分支,这就是我们想要的安全性 - 如果失败,请在强制之前进行调查)
- 首先解锁工作树 - 线束锁定每个子代理工作树:
- 调度下一批独立单元,或下一个从属单元。
批处理中的所有并行子代理完成后(共享目录后备):
- 等待当前并行批次中的每个子代理完成,然后再对其任何结果采取行动
- 交叉检查发现的文件冲突:比较批次中所有子代理修改的实际文件(而不仅仅是其声明的
Files:列表)。子代理可能会创建或修改计划期间未预期的文件 - 这是预期的,因为计划描述的是什么而不是如何。仅当同一批中的 2 个以上子代理修改同一文件时,冲突才会产生影响。在共享工作目录中,只有最后编写者的版本会幸存 - 其他单元对该文件的更改都会丢失。如果检测到冲突:首先提交所有单元中的所有非冲突文件,然后为共享文件串行重新运行受影响的单元,以便每个单元都建立在对方提交的工作的基础上 - 对于每个已完成的单元,按依赖顺序:检查差异、运行相关测试套件、仅暂存该单元的文件,并使用从单元目标派生的常规消息进行提交
- 如果在提交单元更改后测试失败,请在提交下一个单元之前进行诊断和修复 5.更新任务列表(不要编辑计划主体——进度由刚刚所做的提交承载)
- 调度下一批独立单元,或下一个依赖单元
第 2 阶段:执行
- 任务执行循环
对于按优先级顺序排列的每个任务:
while (tasks remain):
- Mark task as in-progress
- Read any referenced files from the plan or discovered during Phase 0
- **If the unit's work is already present and matches the plan's intent** (files exist with the expected capability, or the unit's `Verification` criteria are already satisfied by the current code), the work has likely shipped on a prior branch or session. Verify it matches, mark the task complete, and move on. Do not silently reimplement.
- Look for similar patterns in codebase
- Find existing test files for implementation files being changed (Test Discovery — see below)
- If delegation_active: branch to the Codex Delegation Execution Loop
(see `references/codex-delegation-workflow.md`)
- Otherwise: implement following existing conventions
- Add, update, or remove tests to match implementation changes (see Test Discovery below)
- Run System-Wide Test Check (see below)
- Run tests after changes
- Assess testing coverage: did this task change behavior? If yes, were tests written or updated? If no tests were added, is the justification deliberate (e.g., pure config, no behavioral change)?
- Mark task as completed
- Evaluate for incremental commit (see below)
当一个单位带有 Execution note 时,请尊重它。对于测试优先的单元,在实施该单元之前编写失败的测试。对于特征优先的单元,在更改之前捕获现有行为。对于没有 Execution note 的单位,请务实地进行。
执行姿势的护栏:
- 当测试优先时,不要在同一步骤中编写测试和实现
- 在实施修复或功能之前,不要跳过验证新测试是否失败
- 当进行测试优先时,不要过度实现超出当前行为切片的内容
- 跳过琐碎的重命名、纯配置和纯样式工作的测试优先原则
测试发现 - 在对文件实施更改之前,查找其现有测试文件(搜索导入、引用或与实施文件共享命名模式的测试/规范文件)。当计划指定测试场景或测试文件时,从那里开始,然后检查计划可能未枚举的其他测试覆盖范围。对实现文件的更改应该伴随相应的测试更新——新行为的新测试、更改行为的修改测试、删除行为的删除或更新测试。
测试场景完整性 — 在为包含功能的单元编写测试之前,请检查计划的 Test scenarios 是否涵盖适用于该单元的所有类别。如果类别缺失或场景模糊(例如,“正确验证”而没有命名输入和预期结果),请在编写测试之前从单元自身的上下文中进行补充:
| 类别 | 何时适用 | 如果缺失如何导出 |
|---|---|---|
| 幸福之路 | 始终适用于具有特征的单元 | 阅读该单元的核心输入/输出对的目标和方法 |
| 边缘情况 | 当单元具有有意义的边界(输入、状态、并发)时 | 识别边界值、空/零输入和并发访问模式 |
| 错误/失败路径 | 当单元出现故障模式时(验证、外部调用、权限) | 枚举单元应拒绝的无效输入、应强制执行的权限/身份验证拒绝以及应处理的下游故障 |
| 整合 | 当单元跨层时(回调、中间件、多服务) | 识别跨层链并编写一个无需模拟即可执行它的场景 |
系统范围的测试检查 - 在将任务标记为完成之前,暂停并询问:
| 问题 | 该怎么办 |
|---|---|
| **运行时会触发什么?**回调、中间件、观察者、事件处理程序 - 从您的更改中跟踪两个级别。 | 阅读实际代码(不是文档),了解您接触的模型上的回调、请求链中的中间件、after_* 挂钩。 |
| 我的测试是否运用了真正的链? 如果每个依赖项都被模拟,则测试证明您的逻辑独立工作 - 它没有说明交互。 | 至少编写一个通过完整回调/中间件链使用真实对象的集成测试。交互层没有模拟。 |
| 失败会留下孤立状态吗? 如果您的代码在调用外部服务之前保留状态(数据库行、缓存、文件),那么当服务失败时会发生什么?重试是否会产生重复项? | 用真实的物体追踪故障路径。如果在有风险的调用之前创建状态,请测试故障是否已清除或重试是否幂等。 |
| 还有哪些其他接口公开了这一点? Mixins、DSL、替代入口点(Agent、Chat 与 ChatMethods)。 | Grep 查找相关类中的方法/行为。如果需要奇偶校验,请立即添加,而不是后续添加。 |
| 错误策略是否跨层一致? 重试中间件 + 应用程序回退 + 框架错误处理 - 它们是否冲突或造成双重执行? | 列出每一层的具体错误类别。验证您的救援列表是否与下层实际提出的内容相匹配。 |
何时跳过: 叶节点更改时没有回调、没有状态持久性、没有并行接口。如果更改纯粹是附加的(新的辅助方法、新的视图部分),则检查需要 10 秒,答案是“没有任何触发,跳过”。
**当这最重要时:**涉及回调模型、回退/重试错误处理或通过多个接口公开的功能的任何更改。
- 增量提交
完成每个任务后,评估是否创建增量提交:
| Commit when... | Don't commit when... |
|---|---|
| Logical unit complete (model, service, component) | Small part of a larger unit |
| Tests pass + meaningful progress | Tests failing |
| About to switch contexts (backend → frontend) | Purely scaffolding with no behavior |
| About to attempt risky/uncertain changes | Would need a "WIP" commit message |
启发式:“我可以编写一条提交消息来描述完整的、有价值的更改吗?如果可以,请提交。如果消息是“WIP”或“部分 X”,请等待。”
如果计划有实施单元,请使用它们作为提交边界的起始指南 - 但根据您在实施过程中发现的内容进行调整。如果一个单元比预期大,则可能需要多次提交,或者小型相关单元可能会合并在一起。使用每个单元的目标来告知提交消息。
提交工作流程:
# 1.验证测试是否通过(使用项目的测试命令)
# 示例:bin/rails 测试、npm 测试、pytest、go 测试等。
# 2. 仅暂存与该逻辑单元相关的文件(不是 `git add .`)
git add <与该逻辑单元相关的文件>
# 3. 使用常规消息提交
git commit -m“壮举(范围):此单元的描述”
处理合并冲突: 如果在变基或合并过程中出现冲突,请立即解决。增量提交使冲突解决变得更容易,因为每次提交都很小且重点突出。
Note: Incremental commits use clean conventional messages without attribution footers. The final Phase 4 commit/PR includes the full attribution.
并行子代理模式: 提交所有权按隔离模式分割(请参阅第 1 阶段第 4 步):
- **工作树隔离:**子代理可以在自己的工作树分支内暂存和提交;编排器在批处理后按依赖顺序合并这些分支。
- **共享目录后备:**子代理不提交;在整个并行批处理完成后,编排器会暂存并提交每个单元。
- 遵循现有模式
- 该计划应引用类似的代码 - 首先阅读这些文件
- 完全匹配命名约定
- 尽可能重用现有组件
- 遵循项目编码标准(请参阅 AGENTS.md;仅当存储库仍保留兼容性垫片时才使用 CLAUDE.md)
- 如有疑问,请 grep 查找类似的实现
- 持续测试
- 在每次重大更改后运行相关测试
- 不要等到结束才进行测试
- 立即修复故障
- 添加新行为的新测试,更新更改行为的测试,删除已删除行为的测试
- **使用模拟的单元测试单独证明逻辑。与真实对象的集成测试证明这些层可以协同工作。**如果您的更改涉及回调、中间件或错误处理 - 您两者都需要。
- 随心所欲地简化
完成一组相关的实现单元(或每 2-3 个单元)后,检查最近更改的文件以寻找简化机会 - 合并重复的模式、提取共享帮助程序并提高代码重用和效率。这在使用子代理时尤其有价值,因为每个代理都在隔离的上下文中工作,并且无法看到跨单元出现的模式。
不要在每个单元之后都进行简化——早期的模式可能看起来重复,但在后面的单元中故意有所不同。等待自然相边界或当您注意到累积的复杂性时。
如果 ce-simplify-code 可用,请在阶段边界调用它(特别是在阶段 3 之前,当差异 >=30 行时)。否则,请自行检查更改的文件以获得重用和整合的机会。
- Figma 设计同步(如果适用)
对于 Figma 设计的 UI 工作:
- 按照设计规范实施组件
- 迭代使用 ce-figma-design-sync 代理进行比较
- 修复发现的视觉差异
- 重复直到实现与设计匹配
- 前端设计指南(如果适用)
对于没有 Figma 设计的 UI 任务——其中实现涉及视图、模板、组件、布局或页面文件,创建用户可见的路线,或者计划包含显式 UI/前端/设计语言:
- 在实施之前加载
ce-frontend-design技能- 遵循其检测、指导和验证流程
- 如果该技能生成了验证屏幕截图,则它满足第 4 阶段的屏幕截图要求 - 无需单独捕获。如果技能退回到心理审查(无法访问浏览器),则第 4 阶段的屏幕截图仍然适用
- 跟踪进度
- 完成任务时保持任务列表更新
- 注意任何阻碍或意外发现
- 如果范围扩大则创建新任务
- 让用户了解主要里程碑
- 当计划为实施单元定义 U-ID 时,或者计划或原始文档带有稳定的 R-ID(以及可选的 A/F/AE ID)时,请在阻止程序、延期工作说明、任务摘要和最终验证中引用它们,而不是例行状态更新。 U-ID 跨计划编辑锚定单元; R/A/F/AE 在头脑风暴计划交接中锚定产品意图。使用计划提供的 ID,不要发明计划未提供的 ID。这样可以保留可追溯性,而不会将信号隐藏在噪声之下。
第 3-4 阶段:质量检查和收尾工作
When all Phase 2 tasks are complete and execution transitions to quality check, read references/shipping-workflow.md for the full shipping workflow: quality checks, code review, final validation, PR creation, and notification.
法典委托模式
当参数解析后 delegation_active 为 true 时,请阅读 references/codex-delegation-workflow.md 以了解完整的委托工作流程:预检查、批处理、提示模板、执行循环和结果分类。
关键原则
快速启动,执行更快
- 一开始就得到澄清,然后执行
- 不要等待完全理解 - 提出问题并行动
- 目标是完成功能,而不是创建完美的流程
计划是你的指南
- 工作文档应引用类似的代码和模式
- 加载这些参考文献并遵循它们
- 不要重新发明 - 匹配现有的
边走边测试
- 在每次更改后运行测试,而不是在最后运行测试
- 立即修复故障
- 持续测试可防止出现重大意外
质量是内置的
- 遵循现有模式
- 为新代码编写测试
- 在推送之前运行 linting
- 当第 1 层可用或第 2 层标准匹配时进行审查(请参阅
shipping-workflow.md)
提供完整的功能
- 在继续之前标记所有已完成的任务
- 不要让功能完成 80%
- 已发布的已完成功能胜过未发布的完美功能
要避免的常见陷阱
- 分析瘫痪 - 不要想太多,阅读计划并执行
- 跳过澄清问题 - 现在就问,而不是在构建错误的东西之后
- 忽略计划参考 - 该计划有链接是有原因的
- 最后测试 - 持续测试或稍后受苦
- 忘记跟踪进度 - 随时更新任务状态或忘记已完成的工作
- 80% 完成综合症 - 完成功能,不要过早继续
- 无故跳过审核 — 在可用时使用第 1 层;仅根据
shipping-workflow.md中的标准升级到第 2 级;当两者都被跳过时记录 - 将计划重新划分为人工时间阶段 - 计划的实施单位定义执行范围。不要估计每个单元的工时、提出多日细分或要求用户为“本次会话”选择单元的子集。代理以代理速度执行,上下文窗口压力通过子代理调度(第 1 阶段第 4 步)解决,而不是通过分阶段会话解决。如果计划文件输入对于单次执行来说确实太大,请明确说明并建议用户返回
/ce-plan以缩小范围 - 不要发明会话阶段作为解决方法。对于裸提示输入,Phase 0 的大型路由已经可以处理超大的工作