mcpField
R
review-image

review-image

github.com/mizchi测试与质量41671 次安装1 周前更新
代码仓库

关于 review-image

review-image 是一个 Deno 技能,用于快速获取视觉模型对图像的评估,适合检查截图、生成图像或 CI 输入。它提供自由格式审查和 JSON 输出的 CI 门禁。

主要功能

  1. 01自由格式图像审查
  2. 02输出 JSON、用量和费用
  3. 03CI 通过/失败门禁
  4. 04可配置模型

适用场景

  1. 01快速检查视觉回归截图
  2. 02标记空白或格式异常的图像
  3. 03核对图像是否符合提示词
  4. 04在 CI 中加入图像审查

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mizchi/skills --skill review-image

安装后在 Claude Code 中输入/review-image确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
agents/
openai.yaml
scripts/
review-image_test.ts
review-image-ci_test.ts
review-image-ci.ts
review-image.ts

详细介绍

review-image

当你想先对图像征求一个低成本的视觉模型意见,再进行更繁重的工作时,请使用此技能。

适用场景

  • 快速进行 VRT 合理性检查
  • 检测明显损坏、空白、格式错误或可疑的输入
  • 询问模型截图或生成图像是否符合提示词
  • 在 CI 中添加简单的图像审核关卡

要求

  • Deno
  • OPENROUTER_API_KEY 或 OPENROUTER_KEY

调用方式

两个脚本都是带有 shebang #!/usr/bin/env -S deno run --allow-env --allow-net --allow-read 的可执行 Deno 文件。直接运行即可,无需使用 deno run 包装。

通过 APM 安装此技能时,脚本位于 ~/.claude/skills/review-image/scripts/ 下。以下示例使用 ~/... 形式,该形式会由 shell 展开。在非 shell 的执行环境中(例如未设置 shell: true 的 child_process.spawn),~ 和 $HOME 都会保持为字面内容——请替换为解析后的绝对路径(/Users/<you>/.claude/skills/review-image/scripts/...)。

标志可以出现在位置参数之前、之间或之后。--model 支持 --model X 和 --model=X 两种形式。两个脚本都会将程序输出写入 stdout,将日志和错误写入 stderr——但只有输出 JSON 的模式(CI 关卡始终如此;自由格式模式使用 --json 时如此)才能安全地直接传入 jq / JSON.parse。自由格式模式默认输出散文,而非 JSON。

脚本

自由格式审核 — review-image.ts
~/.claude/skills/review-image/scripts/review-image.ts <image-path-or-url> "<prompt>" [--model <id>] [--json]

# example with flag interleaved with positionals:
~/.claude/skills/review-image/scripts/review-image.ts ./shot.png "VRT diff broken?" --model google/gemini-2.5-flash

默认输出:stdout 上的纯文本(模型的回复,单个文本块)。

使用 --json 时:stdout 会输出单个 JSON 对象,可安全地传入 jq / JSON.parse:

{
  "id": "gen-...",
  "model": "<resolved>",
  "text": "<freeform answer>",
  "usage": { "prompt_tokens": 123, "completion_tokens": 45, "total_tokens": 168, "cost": 0.0001 },
  "raw": { /* full upstream OpenRouter response, opaque */ }
}

读取 .text 获取答案;读取 .usage.cost(美元)和 .usage.total_tokens 获取成本遥测数据。

退出码:成功时为 0,发生任何错误时为 1(缺少 API 密钥、网络/HTTP 故障、响应格式错误)。

CI 关卡 — review-image-ci.ts
~/.claude/skills/review-image/scripts/review-image-ci.ts <image-path-or-url> "<prompt>" [--model <id>]

始终在 stdout 上输出单个 JSON 对象(若未提供 --json 标志,该标志会被静默忽略,不发出警告——输出始终为 JSON):

{
  "decision": "pass",
  "summary": "<short reason>",
  "issues": [],
  "model": "<resolved>",
  "usage": { "prompt_tokens": 123, "completion_tokens": 45, "total_tokens": 168, "cost": 0.0001 },
  "rawText": "<unparsed model reply>"
}

issues 始终是字符串数组(永远不会为 null / 永远不会省略)——pass 时为空,fail 时会包含一个或多个原因。usage 的键与自由格式脚本一致,也可能包含额外的 OpenRouter 透传字段(例如 is_byok、*_details);请将列出的四个键(prompt_tokens、completion_tokens、total_tokens、cost)视为稳定契约。

CI 关卡会在内部使用严格的 JSON schema 指令包装你的提示词。请将 <prompt> 写成描述关卡标准的普通英文——不要自行添加 schema、格式指令或“以 JSON 格式回复”等内容;这些内容会自动提供,你自行添加的内容可能与其冲突。

退出码:

  • 0 — decision: pass
  • 2 — decision: fail
  • 1 — 脚本错误(缺少 API 密钥、网络/HTTP 故障、模型响应格式错误)。在 CI 中既不要将其视为通过,也不要视为失败;不要仅根据 $? -ne 0 设置关卡。

编写提示词

<prompt> 参数应使用普通英文描述要检查的内容。可从以下模板开始:

CI 关卡(关卡标准风格)——描述应该包含哪些内容,以及什么情况算失败。避免使用含糊的“这是不是坏了?”;像素画和有意采用低分辨率的内容会被措辞不当的关卡误判为失败:

"This image is {expected: a Playwright screenshot of /dashboard / a generated cactus illustration / ...}. Pass if it shows recognizable intended content (any style, including pixel art, low-res, or stylized). Fail only if blank, all-black/all-white, corrupted, an error page, or visibly malformed."

自由格式(诊断风格)——询问具体细节,让散文回答具有可操作性:

"This image is supposed to be {expected subject}. Describe what you see and call out any visual artifacts, broken layout, color anomalies, or signs of file corruption."

默认模型

google/gemini-2.5-flash-lite

使用 --model 按次调用覆盖,或通过 OPENROUTER_MODEL 全局覆盖。

评论

支持 Markdown