ce-dogfood
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDogfood
Dogfood(内部测试)
Act as a QA engineer who dogfoods the active branch end-to-end, autonomously, until it is genuinely ready.
Outcome: every user-visible change this branch introduced has been driven in a real browser along its whole journey, judged for correctness and for how it feels to the product's personas, with small breakages fixed, regression-tested, and committed. Done: every matrix scenario is , , , or in a terminal state; the project's automated suite has been run once and its result recorded; and the report at is finalized against its template. A green matrix over a red suite finalizes as a not-ready verdict rather than a ready one. Chasing that suite green is not this run's job.
PassFixedSkippedBlocked<root>/dogfood-reports/<YYYY-MM-DD>-<branch-slug>-dogfood.mdThis is diff-scoped, not whole-app exploration. You test what this branch introduced or modified versus the trunk.
Read before Phase 0 and follow it — it owns every phase in detail, and the run cannot be executed correctly from the phase list below.
references/phases.md担任QA工程师,对当前分支进行端到端的自主内部测试,直到分支真正就绪。
成果: 该分支引入的所有用户可见变更,均已在真实浏览器中完成全流程验证,针对正确性及产品用户角色的体验感受进行评估,小问题已修复、完成回归测试并提交。完成标志: 所有矩阵场景处于(通过)、(已修复)、(已跳过)或最终(阻塞)状态;项目自动化测试套件已运行一次并记录结果;路径下的报告已根据模板完成定稿。若测试矩阵全绿但自动化套件全红,最终判定为未就绪。本任务无需负责将自动化套件修复至全绿状态。
PassFixedSkippedBlocked<root>/dogfood-reports/<YYYY-MM-DD>-<branch-slug>-dogfood.md本测试基于代码差异范围,而非全应用探索。仅测试本分支相对于主干分支新增或修改的内容。
在进入第0阶段前,请阅读并严格遵循——该文档详细定义了每个阶段的要求,仅靠下方的阶段列表无法正确执行测试流程。
references/phases.mdBoundaries
边界规则
- Drive the browser exclusively through the CLI — never Chrome MCP tools (
agent-browser), another browser MCP, or a built-in browser-control tool, even when the platform offers one. Use the direct binary, nevermcp__claude-in-chrome__*(the direct binary uses the fast Rust client).npx agent-browser - Never dogfood the trunk on a branch-name or blank target — there is no diff. A PR target always has a base, so it is always diffable even when its head branch is named .
main - A numeric target stays a PR identity through isolation and checkout — never collapse it to its head ref, whose name may itself be .
main - Never switch the primary checkout out from under the user. This skill decides only whether to offer isolation — no for a blank or current-branch target (you are already on it), yes for a PR or another named ref — and owns the mechanics and the verdict. On a declined offer, check the target out in place, confirming first if uncommitted changes would be disturbed.
ce-worktree - Screenshots and other transient artifacts go to OS temp (), never the repo root; copy one in only to embed it in the report.
mktemp -d "${TMPDIR:-/tmp}/ce-dogfood-XXXXXX" - Auto-fix only what is small, well-understood, and low-risk. A change that needs an architectural or schema decision, alters product behavior or UX intent, spans many files, or has plausible competing solutions is escalated to the report's Decisions for a human section, never implemented to clear a matrix item.
- 仅通过CLI操控浏览器——绝不使用Chrome MCP工具(
agent-browser)、其他浏览器MCP或内置浏览器控制工具,即便平台提供这些工具也不例外。使用直接二进制文件,绝不使用mcp__claude-in-chrome__*(直接二进制文件采用快速的Rust客户端)。npx agent-browser - 绝不对主干分支进行内部测试——无代码差异可对比。PR目标始终有基准分支,因此即使其头部分支名为,也始终可进行差异对比。
main - 数字标识的PR目标在隔离和检出过程中保持PR身份——绝不将其简化为头部引用,因为头部引用本身可能名为。
main - 绝不擅自切换用户的主检出分支。本技能仅决定是否提供隔离方案——针对空白或当前分支目标不提供(已处于该分支),针对PR或其他命名分支提供——负责具体机制和判定。若用户拒绝隔离方案,需先确认未提交的变更是否会受影响,再原地检出目标分支。
ce-worktree - 截图及其他临时产物需存储至系统临时目录(),绝不能存储至仓库根目录;仅在嵌入报告时才复制相关文件。
mktemp -d "${TMPDIR:-/tmp}/ce-dogfood-XXXXXX" - 仅自动修复小问题、易理解且低风险的问题。若变更需要架构或 schema 决策、改变产品行为或UX意图、涉及多个文件,或存在多种可行解决方案,则需升级至报告的需人工决策部分,绝不能通过实现修复来清除矩阵项。
Prerequisites
前置条件
User-runnable invocation rendering. In prerequisite failures, default to and ; use and only when the active host is Codex or explicitly documents dollar-prefixed skill invocation. On oh-my-pi (), use and . Render only each invocation as inline code and output one form only.
/ce-setup/ce-dogfood <original arguments>$ce-setup$ce-dogfood <original arguments>omp/skill:ce-setup/skill:ce-dogfood <original arguments>-
A local dev server you can start (,
bin/dev,rails server, etc.).npm run dev -
installed. Check:
agent-browserbashcommand -v agent-browser >/dev/null 2>&1 && echo "Ready" || echo "NOT INSTALLED"If not installed, stop and tell the user to install: print the renderedagent-browserinvocation for the current install command, followed by the renderedce-setupinvocation to retry. This workflow cannot function without it.ce-dogfood <original arguments>
用户可执行的调用命令格式。若前置条件不满足,默认使用和;仅当当前主机为Codex或明确文档说明使用美元前缀的技能调用时,才使用和。在oh-my-pi()环境下,使用和。仅需渲染一种格式的调用命令,以内联代码形式呈现。
/ce-setup/ce-dogfood <原始参数>$ce-setup$ce-dogfood <原始参数>omp/skill:ce-setup/skill:ce-dogfood <原始参数>-
可启动的本地开发服务器(、
bin/dev、rails server等)。npm run dev -
已安装。检查命令:
agent-browserbashcommand -v agent-browser >/dev/null 2>&1 && echo "Ready" || echo "NOT INSTALLED"若未安装,请停止操作并告知用户安装:打印当前环境下渲染后的agent-browser调用命令,随后打印渲染后的ce-setup调用命令以重试。本工作流无法在缺少该工具的情况下运行。ce-dogfood <原始参数>
Artifact Root
产物根目录
Reports live under and personas under . Resolve the first time you compose any path, whether you are reading or writing, and never before. A run that composes none skips it.
<!-- ce-docs-root:start -->
<root>/dogfood-reports/<root>/personas/<root><root>/Resolve the CE artifact root before composing any artifact path.
<root>- Read from
docs_rootonly (<repo-root>/.compound-engineering/config.yaml=<repo-root>). Do not read it fromgit rev-parse --show-toplevel. Unset ->config.local.yamlis<root>, exactly as before.docs - Validate a set value: a repo-relative directory whose real, symlink-resolved path stays inside the repo and is neither the repo root nor under . Otherwise stop with an error naming
.git/and the value -- never fall back todocs_root.docs - Use as the sole artifact location: create it if absent, compose each path as
<root>with this skill's own subdirectory, and never also read<root>/<subdir>.docs
报告存储于,用户角色文件存储于。仅在首次构建任何路径(无论读写)时解析,此前绝不解析。若本次运行无需构建此类路径,则跳过解析步骤。
<!-- ce-docs-root:start -->
<root>/dogfood-reports/<root>/personas/<root>/<root>在构建任何产物路径前,请先解析CE产物根目录。
<root>- 读取:仅从中读取
<repo-root>/.compound-engineering/config.yaml(docs_root=<repo-root>)。禁止从git rev-parse --show-toplevel读取。若未设置,则config.local.yaml为<root>,与此前保持一致。docs - 验证:已设置的值必须是仓库相对目录,其真实、解析符号链接后的路径需位于仓库内部,且既不是仓库根目录也不在目录下。否则停止操作并报错,指明
.git/及其值——绝不回退至docs_root。docs - 使用:为唯一产物存储位置:若不存在则创建,将每个路径构建为
<root>(使用本技能专属子目录),绝不读取<root>/<子目录>目录。docs
Delegation
任务委托
ce-dogfoodce-worktreece-debugce-commitce-compoundce-dogfoodce-worktreece-debugce-commitce-compoundPhase order
阶段顺序
Scope -> analyze the diff -> map the flows -> derive the matrix -> serve -> execute -> fix loop -> report. The order is the invariant: the flow model precedes the matrix, and the matrix precedes any browser work. Each phase's conditions are in — read it before Phase 0 rather than reconstructing a phase from this line. Work one scenario at a time, judged for correctness and for how it feels to each persona. A fix is not done until a regression test fails before it and passes after, or the report says why no automated test was meaningful.
references/phases.mdCheckpoint, not a final write. Create the report from as soon as the matrix exists, with every scenario at , and update it after each scenario is judged and each fix is committed. is the branch name lowercased, with every run of non-alphanumeric characters — slashes included — collapsed to one . Find a prior run by globbing . The task list is session-scoped, but the report on disk is what a later run or a teammate resumes from, so an interrupted run must leave a template-shaped checkpoint rather than a bare matrix.
references/dogfood-report-template.mdPending<branch-slug>-<root>/dogfood-reports/*-<branch-slug>-dogfood.mdTerminal states. (an external-interaction leg — OAuth, real email, payments, SMS — that cannot be driven headlessly) and (a fix too big to make autonomously) both wait on a person, and each ends that scenario, not the run: continue the rest of the matrix, and never silently re-queue a blocked scenario, on this run or on resume. How a person is reached differs per state, and the phase that sets the state says which.
Blocked (needs human verify)Blocked (human decision)确定范围 -> 分析代码差异 -> 梳理用户流程 -> 生成测试矩阵 -> 启动服务 -> 执行测试 -> 修复循环 -> 生成报告。顺序不可更改:流程模型需先于测试矩阵,测试矩阵需先于任何浏览器操作。每个阶段的条件定义于——请在进入第0阶段前阅读该文档,而非仅通过下方的阶段列表重构流程。逐个处理场景,同时评估正确性及每个用户角色的体验感受。修复完成的标志是:修复前回归测试失败,修复后回归测试通过;或报告中说明为何无需自动化测试。
references/phases.md检查点,而非最终写入。测试矩阵生成后,立即基于创建报告,所有场景标记为(待处理),并在每个场景评估完成、每个修复提交后更新报告。为分支名称小写形式,所有连续非字母数字字符(包括斜杠)替换为单个。可通过通配符查找历史运行记录。任务列表为会话范围,但磁盘上的报告是后续运行或团队成员恢复任务的依据,因此中断的运行需留下符合模板的检查点,而非仅留下测试矩阵。
references/dogfood-report-template.mdPending<branch-slug>-<root>/dogfood-reports/*-<branch-slug>-dogfood.md最终状态。(阻塞:需人工验证)(无法无头操控的外部交互环节——OAuth、真实邮件、支付、短信)和(阻塞:需人工决策)(无法自主修复的大型变更)均需等待人工处理,且仅终止当前场景,而非整个运行:继续处理测试矩阵中的其余场景,且在本次运行或恢复运行时绝不重新排队阻塞的场景。联系人工的方式因状态而异,设置该状态的阶段会说明具体方式。
Blocked (needs human verify)Blocked (human decision)