원클릭으로
marchen-review
对照变更意图检查代码实现的完整性和一致性,支持基于 chrome-devtools MCP 的 UI 场景验证。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
对照变更意图检查代码实现的完整性和一致性,支持基于 chrome-devtools MCP 的 UI 场景验证。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
预览 propose 生成的变更摘要。从 proposal/design/specs/tasks 浓缩为终端卡片,便于人快速 review,决定下一步是 apply 还是改 propose。
提出新变更,创建并填充所有 artifact。适用于用户想快速描述需求并生成完整的 proposal、specs、design、tasks。
按变更的 tasks.md 逐个实现任务。适用于用户想按任务清单逐步实现代码。
归档已完成的变更。检查完成度后执行归档,适用于实现完毕后收尾。
进入探索模式 — 思考想法、调查问题、厘清需求。适用于用户想在动手之前先理清思路。
一键式轻量变更流程。创建 lite 变更、实现任务、询问归档,一气呵成。适合 bug 修复、小改动。
| name | marchen-review |
| description | 对照变更意图检查代码实现的完整性和一致性,支持基于 chrome-devtools MCP 的 UI 场景验证。 |
对照变更的 artifact 检查代码改动,必要时驱动浏览器验证 UI 行为,报告遗漏、偏差和阻塞。
输入:用户的请求应包含变更名称,或可从上下文推断。
流程
选择变更
有名称就用,没有则:
marchen list --json + AskUserQuestion 让用户选显示:"Review 变更: <name>"
嗅探 diff 中的 UI 改动
执行 git diff --name-only HEAD,判断改动是否涉及前端 UI(组件、样式、模板、静态资源等)。命中则记下命中文件,用于下一步的提示。
AskUserQuestion 选择 review 模式
用 AskUserQuestion 让用户三选一:
若上一步命中 UI 文件,在问题描述里附一句:"检测到 diff 涉及 UI 文件(<列出命中文件>),建议选 UI 验证或两者都做。" 未命中时不附加提示,默认推荐"代码 review"。
保存用户选择为 <mode>。
获取意图与改动(公共前置)
marchen instructions <name> apply --json,从返回 JSON 的 context 数组里读取 status 为 "filled" 的 artifact(proposal/specs/design/tasks)作为变更意图git diff HEAD;为空则 git diff HEAD~1;仍为空则报告 "未检测到代码改动" 并结束diff 大到可能挤占 context 时,先 git diff --stat HEAD 看摘要,再按需读单个文件 diff。
代码 review(mode 为 "代码 review" 或 "两者都做" 时执行)
逐条对照变更意图和代码改动,输出报告:
任务完成度 — tasks 中每个任务是否有对应改动:
一致性检查 — 实现是否符合 design 决策:
需求覆盖 — specs 中需求是否被覆盖:
发现的问题(如有)
全部通过:输出 "✅ 代码 review 通过。"
遇到无法判断的情况(tasks 描述与 diff 对不上但可能是改名了、spec 表述含糊等),直接用 AskUserQuestion 就地问用户,不要积攒到最后。
UI 验证(mode 为 "UI 验证" 或 "两者都做" 时执行)
尝试调用 chrome-devtools MCP 的只读探测工具(例如列出已打开的页面)。工具不存在或调用失败 → 在报告里写:
⏭ chrome-devtools MCP 不可用,跳过 UI 验证。 安装方法:
npx chrome-devtools-mcp@latest,并参考所用 AI 工具的 MCP 配置文档将其注册。
然后跳过本节剩余步骤。
优先从变更的 specs 文件中提取所有 #### 场景: 块(按 spec 文件分组)。
若 specs 不存在或不含场景 → 退化到从 tasks/proposal 推断 UI 相关验证点,并在报告中标注 "基于 tasks 推断,覆盖度可能不完整"。
两者都没有可提取场景 → 报告 "未找到可验证的 UI 场景" 并跳过本节。
从项目文件(脚本、框架配置、环境变量、README 等)推断 dev server 地址和启动命令,不要硬猜端口。
推出候选 URL 后用 chrome-devtools MCP 的导航工具打开,再用快照工具确认页面像被测应用(合理 title、含框架 root 节点或变更描述涉及的标志性内容)。看着不像被测应用 → 当作未能推断。
推不出 URL → 全部场景 ⏭ "URL unknown",在报告里说明推断依据,提示用户确认地址后重新运行 review,跳过本节执行步骤。
推出来 URL 但导航失败(连接拒绝)→ 主会话 AskUserQuestion,附上推断依据和启动命令:
选"帮我起":
run_in_background 执行推断到的启动命令(如 pnpm dev、npm run dev)选"我手动起":等用户告知启动完成后继续;用户可以新会话执行 /marchen:review 重跑。
选"跳过 UI":所有场景 ⏭ "dev server 未启动",跳过后续步骤。
对每个待验证场景:
遇到阻塞(登录墙、权限不足、缺数据、表单需要真实输入等):主会话可以就地 AskUserQuestion——例如"需要登录账号才能继续,提供测试账号?/ 跳过这个场景 / 暂停 review",而不必积攒到最后。
仍无法继续的场景 → 记录 ⏭ + 阻塞原因,跳到下一个。 场景翻译不出具体操作(例如纯后端行为描述)→ ⏭ "不适合 UI 验证"。
## UI 验证(chrome-devtools MCP)
测试目标:<URL 或 "未确定">
✅ <场景标题> — 通过
说明:<可选简述>
❌ <场景标题> — 失败
证据:<console error 摘要 / 页面文案 / 关键截图路径>
⏭ <场景标题> — 跳过:<阻塞原因>
展示报告并按结果分支
marchen archive <name> 归档。"marchen archive <name>如本次 review 启动了后台 dev server,再次提醒用户进程信息(PID/端口)。
护栏
git diff --stat,按需读单个文件,避免灌爆 context