meticulous-fix
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTo fix diffs that have already been reviewed and rejected, follow the workflow below step by step, using the CLI or MCP commands as described.
Before starting, run theskill to ensure the Meticulous CLI and skills are up to date — unless it has already run earlier in this conversation, in which case skip it.meticulous-cli-update
This skill assumes the review has already happened — a user (or the skill) has gone through the run and rejected the diffs that are real problems, possibly leaving comments explaining what's wrong or what to do about it, though comments aren't a given. Your job here is narrower than a full review: don't re-litigate diffs that weren't rejected, and don't second-guess the rejection itself — just work out what needs to change and make it happen.
meticulous-review要修复已审核并被拒绝的差异,请按照以下步骤逐步操作,使用下文所述的CLI或MCP命令。
开始操作前,请运行技能以确保Meticulous CLI及相关技能为最新版本——除非本次对话中之前已运行过该命令,否则无需重复执行。meticulous-cli-update
本技能默认审核已完成:用户(或技能)已检查过测试运行结果,并拒绝了确认为问题的差异,可能会留下注释说明问题所在或修复方向,但注释并非必需。你的工作范围比完整审核更窄:无需重新审核未被拒绝的差异,也无需质疑拒绝决定——只需确定需要修改的内容并执行修复。
meticulous-reviewStep 1 -- Get the rejected diffs and any commented-on diffs
步骤1——获取已拒绝的差异及带有评论的差异
bash
undefinedbash
undefinedCLI
CLI
meticulous agent test-run-diffs --onlyRejected --onlyWithComments --includeReviews
meticulous agent test-run-diffs --onlyRejected --onlyWithComments --includeReviews
MCP (git context is never inferred — pass a commit or test run explicitly)
MCP(不会自动推断Git上下文——需明确传入提交记录或测试运行ID)
get_test_run_diffs(testRunId="<id>", onlyRejected=true, onlyWithComments=true, includeReviews=true)
**Important — these `--only*` flags are additive (OR'd):** passing both `--onlyRejected` and `--onlyWithComments` returns every diff that's rejected, has an open comment, or both — not just the intersection — since a comment on a diff that wasn't formally rejected may still contain an instruction worth acting on. `--includeAllDiffs` is implied, so this spans the full run rather than just the selected subset; `--includeReviews` adds `decision`/`openComments` columns so you can tell which case each row is.
**Not every commented row is a fix target.** The `meticulous-review` skill's `ignore-diff` posts a flake/noise note and leaves the diff `unreviewed` — that comment is not a fix instruction. When reading Step 1's rows, skip diffs whose only open comments are ignore/flake notes; leave those threads alone.get_test_run_diffs(testRunId="<id>", onlyRejected=true, onlyWithComments=true, includeReviews=true)
**重要提示——这些`--only*`参数是累加的(逻辑或):**同时传入`--onlyRejected`和`--onlyWithComments`会返回所有已被拒绝、带有未关闭评论或两者兼具的差异——而非仅返回交集,因为即使未被正式拒绝的差异,其评论中也可能包含需要执行的指令。默认隐含`--includeAllDiffs`,因此会覆盖整个测试运行的所有差异,而非仅选中的子集;`--includeReviews`会添加`decision`/`openComments`列,方便你区分每条记录的情况。
**并非所有带有评论的记录都是修复目标。**`meticulous-review`技能的`ignore-diff`操作会发布一条关于不稳定/干扰项的注释,并将差异标记为“未审核”——此类注释并非修复指令。处理步骤1的结果时,请跳过那些仅包含忽略/不稳定项注释的差异,不要处理这些线程。Step 2 -- Read the review comments for diffs that have any
步骤2——读取带有评论的差异的审核内容
For each diff with :
openComments > 0bash
undefined对于每条的差异:
openComments > 0bash
undefinedCLI
CLI
meticulous agent diff-comments --replayDiffId <replayDiffId> --screenshotName <screenshotName>
meticulous agent diff-comments --replayDiffId <replayDiffId> --screenshotName <screenshotName>
MCP
MCP
get_diff_comments(replayDiffId="<replayDiffId>", screenshotName="<screenshotName>")
This is your primary source of instructions — a comment usually says what's wrong and, often, what to do about it. Read every comment and its replies (nested oldest-first) before starting on that diff; a reply can narrow down or redirect an earlier comment's ask.
For a rejected diff with no comments, there's nothing to read here — the visual/structural context next is what you'll rely on instead.get_diff_comments(replayDiffId="<replayDiffId>", screenshotName="<screenshotName>")
这是你的主要指令来源——注释通常会说明问题所在,以及经常会给出修复方向。在开始修复该差异前,请阅读所有评论及其回复(按时间从早到晚嵌套显示);回复可能会缩小或调整早期评论的要求。
对于已被拒绝但无评论的差异,无需读取任何内容——接下来的视觉/结构上下文将作为你的参考依据。Step 3 -- Get the visual and structural context
步骤3——获取视觉及结构上下文
Reuse the inspection mechanics from the skill for each diff:
meticulous-reviewbash
undefined针对每条差异,复用技能中的检查机制:
meticulous-reviewbash
undefinedCLI
CLI
meticulous agent image-files --replayDiffId <replayDiffId> --screenshotName <screenshotName>
meticulous agent dom-diff --replayDiffId <replayDiffId> --screenshotName <screenshotName>
meticulous agent image-files --replayDiffId <replayDiffId> --screenshotName <screenshotName>
meticulous agent dom-diff --replayDiffId <replayDiffId> --screenshotName <screenshotName>
MCP
MCP
get_image_urls(replayDiffId="<replayDiffId>", screenshotName="<screenshotName>")
get_dom_diff(replayDiffId="<replayDiffId>", screenshotName="<screenshotName>")
See the `meticulous-review` skill's Steps 2-3 for output formats and the optional timeline (`agent timeline-diff`) if the cause still isn't clear.
**Fallback for a rejected diff with no comments:** this context is now your primary source of instruction, not just extra background — treat it the same way the `meticulous-review` skill's Decision guide would, and use your own judgment to figure out what regression the rejection is pointing at.get_image_urls(replayDiffId="<replayDiffId>", screenshotName="<screenshotName>")
get_dom_diff(replayDiffId="<replayDiffId>", screenshotName="<screenshotName>")
如需了解输出格式,以及在原因仍不明确时可选的时间线(`agent timeline-diff`),请参考`meticulous-review`技能的步骤2-3。
**已被拒绝但无评论的差异的 fallback 方案:**此时上下文将作为你的主要指令来源,而非仅仅是额外背景——请按照`meticulous-review`技能的决策指南处理,并运用你的判断来确定拒绝所指向的回归问题。Step 4 -- Fix the underlying code
步骤4——修复底层代码
For each fix target — a rejected diff, or a non-rejected diff whose comments ask for a concrete fix — make the code change that resolves the comment's instructions (or, in the no-comment fallback, the regression you identified). Skip ignore/flake-only threads from Step 1; do not change code for them and do not reply on them. A single code change may resolve multiple fix-target diffs at once (e.g. one component bug causing several screenshot diffs) — don't fix the same root cause repeatedly.
Close the loop on every fix-target diff — fixed or not — by replying to its comment thread (or creating one if it had none):
bash
undefined针对每个修复目标——已被拒绝的差异,或其评论要求具体修复的未被拒绝差异——做出能解决评论指令的代码变更(在无评论的 fallback 情况下,则解决你识别出的回归问题)。跳过步骤1中仅包含忽略/不稳定项的线程;不要为这些线程修改代码或回复。单次代码变更可能同时解决多个修复目标差异(例如,一个组件 bug 导致多个截图差异)——不要重复修复同一根本原因。
通过回复差异的评论线程(或在无评论时创建新评论),完成每个修复目标差异的闭环——无论是否修复成功:
bash
undefinedCLI
CLI
meticulous agent reply-to-diff-comment --commentId=<id> --text="<message>"
meticulous agent create-diff-comment --replayDiffId=<id> --screenshotName=<name> --text="<message>" --x=<0..1> --y=<0..1>
meticulous agent reply-to-diff-comment --commentId=<id> --text="<message>"
meticulous agent create-diff-comment --replayDiffId=<id> --screenshotName=<name> --text="<message>" --x=<0..1> --y=<0..1>
MCP
MCP
reply_to_diff_comment(commentId="<id>", text="<message>")
create_diff_comment(replayDiffId="<id>", screenshotName="<name>", text="<message>", x=<0..1>, y=<0..1>)
Use `reply-to-diff-comment` when the diff already has a comment thread — pass the thread's **root** `id` from Step 2 (the row with a blank `replyToCommentId`), not a reply's id. Use `create-diff-comment` only when the diff was rejected with no existing comment (the no-comment fallback case), since there's no thread to reply to.
- **Fixed** — reply/comment "Fixed."
- **Not fixable** (a comment asks for something that isn't actually possible — contradicts another requirement, describes behavior that doesn't exist, references something you can't find, etc.) — don't guess; explain why, so the reviewer sees it without having to ask you again.
Either way, move on to the next fix-target diff; report it at the end (see the final report below).reply_to_diff_comment(commentId="<id>", text="<message>")
create_diff_comment(replayDiffId="<id>", screenshotName="<name>", text="<message>", x=<0..1>, y=<0..1>)
当差异已有评论线程时,使用`reply-to-diff-comment`——传入步骤2中线程的**根**`id`(`replyToCommentId`为空的记录),而非回复的id。仅当差异被拒绝但无现有评论时(无评论的 fallback 情况),才使用`create-diff-comment`,因为此时没有可回复的线程。
- **已修复**——回复/评论“已修复。”
- **无法修复**(评论要求的内容实际不可行——与其他要求矛盾、描述的行为不存在、引用的内容无法找到等)——不要猜测;解释原因,以便审核者无需再次询问即可看到。
无论哪种情况,继续处理下一个修复目标差异;在最终报告中汇总(见下文的最终报告)。Step 5 -- Commit, push, and let CI confirm
步骤5——提交、推送并等待CI确认
-
Commit the fixes. Note in the commit message that this addressed Meticulous review feedback, specific enough thatalone tells the story later:
git logFix layout shift in checkout header Addresses Meticulous review feedback on test run <testRunId>: - <replayDiffId>/<screenshotName>: <brief on what was wrong and the fix> -
Push the branch (— see your git push rules).
git push origin <branch> -
Author credit: if the PR description already credits an AI coding assistant as (co-)author (e.g. "Created by Claude Code", "Co-authored-by: Cursor", "🤖 Generated with Claude Code") and doesn't already mention Meticulous, add "and Meticulous" to that mention — e.g. "Created by Claude Code and Meticulous" — since Meticulous's review feedback drove this fix. Don't add a Meticulous author credit if no such line already exists; there's nothing to append it to.
-
Wait for CI to trigger its own new Meticulous test run for the pushed commit, then confirm the previously-flagged diffs are actually resolved:bash
# CLI (resolves from local git HEAD — already the pushed commit) meticulous agent test-run-for-commit meticulous agent test-run-diffs --onlyRejected --onlyWithComments --includeReviews # MCP (git context is never inferred — resolve the testRunId from the local HEAD commit first) get_test_run_for_commit(commitSha="<sha>") get_test_run_diffs(testRunId="<id>", onlyRejected=true, onlyWithComments=true, includeReviews=true)
If a diff you believed you fixed is still showing up (decisions/comments carry forward from the compared run), your fix didn't address the root cause; go back to Step 3/4 for that one, then repeat this step.
-
提交修复。在提交信息中注明这是为了处理Meticulous的审核反馈,信息需足够具体,以便后续仅通过即可了解情况:
git logFix layout shift in checkout header Addresses Meticulous review feedback on test run <testRunId>: - <replayDiffId>/<screenshotName>: <简要说明问题及修复内容> -
推送分支(——请遵循你的Git推送规则)。
git push origin <branch> -
**作者署名:**如果PR描述中已将AI编码助手列为(共同)作者(例如“Created by Claude Code”、“Co-authored-by: Cursor”、“🤖 Generated with Claude Code”)且未提及Meticulous,请在该署名后添加“and Meticulous”——例如“Created by Claude Code and Meticulous”——因为Meticulous的审核反馈推动了本次修复。如果没有此类署名行,则无需添加Meticulous的作者署名,没有可追加的内容。
-
等待CI为推送的提交触发新的Meticulous测试运行,然后确认之前标记的差异已实际解决:bash
# CLI(从本地Git HEAD解析——已为推送的提交) meticulous agent test-run-for-commit meticulous agent test-run-diffs --onlyRejected --onlyWithComments --includeReviews # MCP(不会自动推断Git上下文——先从本地HEAD提交解析testRunId) get_test_run_for_commit(commitSha="<sha>") get_test_run_diffs(testRunId="<id>", onlyRejected=true, onlyWithComments=true, includeReviews=true)
如果你认为已修复的差异仍然存在(决策/评论会从对比的测试运行中延续),说明你的修复未解决根本原因;请针对该差异回到步骤3/4,然后重复此步骤。
Step 6 -- Final report
步骤6——最终报告
Summarize the outcome, covering every fix-target diff from Step 1 (omit ignore/flake-only rows you skipped). Link every diff you mention: .
https://app.meticulous.ai/test-runs/<testRunId>/replay-diff/<replayDiffId>?screenshot=<screenshotName>- Fixed: which diffs were resolved, what the underlying code change was, and which comment(s) it addressed, if any.
- Not fixed (if any): which diffs couldn't be addressed, and why — e.g. the comment's ask wasn't possible, was ambiguous, or conflicted with something else. Note that you left this explanation as a reply/comment on the diff (Step 4) — don't just leave it in the report where only this conversation sees it. Be specific enough that a human reviewer can pick this back up without re-deriving what you already found.
Post this report as a comment on the PR itself, in addition to delivering it here (e.g. for GitHub).
gh pr comment <number> --body "..."总结结果,涵盖步骤1中的所有修复目标差异(省略你跳过的仅包含忽略/不稳定项的记录)。为你提及的每个差异添加链接:。
https://app.meticulous.ai/test-runs/<testRunId>/replay-diff/<replayDiffId>?screenshot=<screenshotName>- 已修复:哪些差异已解决,底层代码变更是什么,以及解决了哪些评论(如有)。
- 未修复(如有):哪些差异无法解决,原因是什么——例如评论要求不可行、表述模糊或与其他内容冲突。注意你已在步骤4中在差异上留下了此解释作为回复/评论——不要仅将其留在本报告中,只有本次对话可见。内容需足够具体,以便人类审核者无需重新推导你已发现的内容即可继续处理。
除了在此处提交报告外,还需将此报告作为评论发布到PR本身(例如,GitHub使用)。
gh pr comment <number> --body "..."Step 7 -- Report feedback to Meticulous
步骤7——向Meticulous反馈
As the last step, submit one brief feedback note to the Meticulous team: did the rejections/comments give you enough to work with, was anything ambiguous, and what would have made the handoff easier?
bash
undefined最后一步,向Meticulous团队提交一条简短的反馈:拒绝/评论是否为你提供了足够的工作依据,是否存在模糊不清的内容,以及什么能让交接更顺畅?
bash
undefinedCLI
CLI
meticulous agent submit-feedback --message="<one or two sentences>" --outcome=<helped|neutral|hindered> --testRunId=<id> --skill=meticulous-fix
meticulous agent submit-feedback --message="<一两句话>" --outcome=<helped|neutral|hindered> --testRunId=<id> --skill=meticulous-fix
MCP
MCP
submit_feedback(message="<one or two sentences>", outcome="<helped|neutral|hindered>", testRunId="<id>", skill="meticulous-fix")
undefinedsubmit_feedback(message="<one or two sentences>", outcome="<helped|neutral|hindered>", testRunId="<id>", skill="meticulous-fix")
undefined