质量与测试
五个证明工作正确的技能:simplify、浏览器测试、iOS 模拟器、dogfood QA、线上 UX polish。
ce-simplify-code
目的:打磨最近改动的代码以提升复用、质量、效率 — 行为保持不变。3 个审查者并行。
5 步流程
- 范围:用户指定 > 与 base 的 git diff > 指定文件。跳过 若无实质代码(仅文档/生成/外部依赖/依赖项)。
- 3 个审查者并行:
code-reuse-reviewer、code-quality-reviewer、efficiency-reviewer。人格 prompt 放在references/personas/;逐字 传入,不要改写。 - 直接应用有价值的发现;低价值发现记为 skipped,不再询问。只 编辑已解决的范围 + import/export 行。
- 验证行为保持:typecheck、lint、定向测试、若无法衡量范围则跑全量套件。修复或回退 由简化引发的失败。
- 总结 按 复用 / 质量 / 效率 分别列出已应用项;不要用“净减少行数”作为成功指标。
硬规则
- 行为保持优先于行数更少。不要为压行而压行。
- 保留:信任边界校验、数据丢失保护、安全检查、a11y 可达性。跳过 任何会削弱或移除这些的发现。
- 尊重调用方传入的结构性约束:以 structure-pin 约束传入的计划路径是上下文而非范围。保留
session-settled:KTD。 - 接口删除:仅当已解决范围之外不存在外部 / 持久 / 公开 / 外部 / 依赖分支 / 仓库内调用者时。
- 模型:均衡中档(Sonnet 类);除非宿主暴露覆盖,否则继承父级。
- 权限模式:分派时不带
mode— 沿用用户配置的权限。
References(3 个人格,约 35 行)
references/personas/code-reuse-reviewer.md(7)references/personas/code-quality-reviewer.md(17)references/personas/efficiency-reviewer.md(11)
ce-test-browser
目的:对当前 diff/PR 影响到的页面跑浏览器测试。优先用宿主原生浏览器;用 agent-browser 兜底;绝不引入第三种浏览器栈。
驱动策略(3 层,只选一种)
- 宿主原生集成浏览器 — Claude Code 的 Chrome 集成、Cursor 的集成等。遵循宿主自身指令。
agent-browserCLI 兜底 —references/agent-browser-driver.md。- 绝不 独立的 Play / Puppeteer / 第三方浏览器 MCP。
模式
| 模式 | 行为 |
|---|---|
| 手动(默认) | 由用户控制 dev server。在兜底路径下询问 headed/headless。 |
流水线(mode:pipeline) | 无头,永不在 human-verify 处暂停。记录 + 带原因 skip。在 server-start 块内执行 scripts/resolve-port.sh --free。 |
端口解析
scripts/resolve-port.sh 顺序:参数 --port → package.json dev 脚本中的 --port → .env* 中的 PORT= → 3000。每次 shell 调用独立执行。
路由映射
- PR 号 →
gh pr view [N] --json files -q '.files[].path' - current / 空 →
git diff --name-only main...HEAD - 分支名 →
git diff --name-only main...[branch]
流水线模式下的覆盖规则
- 不出现 headed/headless 询问。
- 不在 human-verify(OAuth、邮件、支付、SMS)处暂停 — 记 Skip 并附原因。
- 不出现“现在修还是跳过”的询问 — 记录 + 继续。
- resolve-port 使用
--port --free。
结果格式
每个被影响的路由一行:Pass / Fail / Skip(附原因)。末尾汇总。漏掉一条路由 = 失败。
References(3 文件,219 行)
references/agent-browser-driver.md(47)references/pipeline-orchestration.md(43)references/route-and-report.md(129)
ce-test-xcode
目的:通过 XcodeBuildMCP 在模拟器上测试 iOS 应用。disable-model-invocation: true — 仅手动调用。
2 个阶段
- 准备与启动(
references/setup-and-build.md):XcodeBuildMCP 可用性 → 项目 + scheme → 模拟器选择 → 构建 → 安装 → 启动 → 日志捕获。 - 演练与报告(
references/test-and-report.md):每屏证据 → 仅人工流程 → SwiftUI 内联链接限制 → 失败处理 → 清理 → 固定汇总。
结果枚举
按表面:PASS / FAIL / SKIP。整体:只要有 FAIL 即 FAIL;无 FAIL 但存在范围性跳过时为 PARTIAL;其余为 PASS。
边界
若需要修复,以收窄的权限调用 ce-debug — 收窄到不进行 commit/push/PR。
ce-dogfood
目的:无人值守的浏览器 QA。Diff 范围(非全应用)。驱动真实浏览器,用回归测试修小问题,按产品人格评判体验,写出一份耐久报告。
disable-model-invocation: true — 手动调用。
7 个阶段(顺序不可变)
- Scope
- Analyze the diff
- Map the flows
- Derive the matrix
- Serve
- Execute
- Fix loop → report
硬规则
- 浏览器驱动:直接调用
agent-browserCLI 二进制,绝不用 Chrome MCP、Puppeteer、或npx agent-browser。 - Diff 范围:测试本分支相对主干引入的内容。空/current-branch 目标 = 无 diff(跳过)。
- 数字目标 = PR 号,绝不要塌缩成它的 head ref(其名可能是
main)。 - 仅自动修复 小 / 理解充分 / 低风险 的问题。更大 = 上报到报告的 Decisions for a human。
- 测试套件必须能跑通。UI 全绿 + 套件红 = 未就绪。去追套件变绿不是本技能的事。
- Compound Packs 提供 personas(描述用户)和 criteria(描述产品行为)。与 pack 规则冲突 = fix-loop 失败。有意为之的冲突 = 交由人决策。
- 永不切换主 checkout。非平凡目标请用
ce-worktree。
报告
<root>/dogfood-reports/YYYY-MM-DD-<branch-slug>-dogfood.md,基于 references/dogfood-report-template.md。创建时为 Pending,按场景更新。
终止状态
- Blocked (needs human verify) — OAuth / 真邮件 / 支付 / SMS → 该场景暂停,矩阵继续。
- Blocked (human decision) — 修复太大 → 该场景暂停,矩阵继续。
References(3 文件,326 行)
references/phases.md(167)— 全部 7 个阶段references/test-matrix-taxonomy.md(62)references/dogfood-report-template.md(97)
ce-polish
目的:通过实时用户反馈打磨 UX。disable-model-invocation: true — 仅手动。
循环
用户在浏览器里看线上功能 → 用户说改哪里 → 仅在必要时检视 → 编辑 → 热重载 → 再看。用户主导;没有自主清单。
边界
- 不在默认分支上工作。
- 不推送,不开 PR。
- 不扩张成通用 QA。
收尾
用户说完成时,调用 ce-commit 提交 polish 改动。汇报 commit、仍在运行的 server URL、残留阻塞。
References(11 文件,728 行)
polish 技能拥有最深的框架专属 dev-server 配置库 — 每个支持的框架一份(Astro、Next、Nuxt、Rails、Remix、SvelteKit、Vite、Procfile)。另有 references/launch-json-schema.md 描述 .claude/launch.json。
跨技能边界
| From | To | 何时 |
|---|---|---|
| ce-simplify-code | (输出:对工作树的编辑) | lfg step 3 |
| ce-test-browser | (输出:报告) | lfg step 8 |
| ce-test-xcode | ce-debug(收窄) | 需要修复时;以收窄的权限 |
| ce-dogfood | ce-worktree, ce-debug, ce-commit, ce-compound | 按需委托 |
| ce-polish | ce-commit | 收尾时 |