关于 second-opinion
second-opinion 用于调用外部 CLI 审查用户选定的代码变更。它仅提供审查发现,不会修改代码或发布远程评论,并可用同一份差异比较 Codex 与 Antigravity。
主要功能
- 01审查未提交变更、分支差异或提交
- 02选择 Codex、Antigravity 或两者
- 03纳入项目指引与用户指定重点
- 04报告发现但不修改代码
适用场景
- 01审查暂存、未暂存及未跟踪变更
- 02比较两个 CLI 对同一分支差异的结果
- 03检查特定提交中的安全问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ trailofbits/ skills --skill second-opinion安装后在 Claude Code 中输入/second-opinion确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlassets/trail-of-bits-mark.svgreferences/antigravity-invocation.mdcodex-invocation.mdcodex-review-schema.jsongemini-invocation.mdreview-input.md详细介绍
Second Opinion
对用户选定的更改运行外部 CLI 审查。此技能会生成审查结果;不会应用修复,也不会向远程服务发布审查内容。
审查选项
使用用户已提供的提供方、范围、模型和关注点。 仅询问缺失且会影响审查的选项;尽可能在一次调用中集中提问。
- 提供方:Codex、Antigravity,或两者兼选。用户想要对比时提供两者;若用户明确指定了 CLI,则保留该选择。
- 范围:未提交的更改、与指定基准分支对比的分支差异,或指定提交。若未指定基准分支,则从仓库的远程默认分支确定;若无法确定,则询问用户。
- 上下文:除非用户明确排除,否则纳入适用的项目说明。在审查提示词中,将用户的明确要求与仓库内容分开。
- 关注点:若用户未指定安全性、性能等关注点,则关注整体正确性和可维护性。
对于未指定的 Google CLI,优先使用 Antigravity(agy)。明确要求使用 Gemini CLI 时,参照下方的 Gemini 说明。若该账号返回 UNSUPPORTED_CLIENT,请说明迁移到 Antigravity 的方法,并在更换所选 CLI 前征求用户同意。
可执行文件缺失或账号未设置均视为审查失败。报告相关设置说明;若用户要求使用两种提供方,则继续使用可用的提供方,并指出跳过了哪一种。
输入准备
阅读 review-input.md,了解通用提示词和差异配方。对两种提供方使用同一份已捕获的差异,以确保对比涵盖相同的更改。审查未提交的更改时,纳入未跟踪文件,并保留 Git 错误,不要将其解释为空差异。
在调用提供方前,展示选定的范围和简要的更改摘要。若没有更改,则停止,不要调用提供方。若输入超过 CLI 或模型限制,请说明该限制并请求缩小范围;不要静默截断补丁。
使用 mktemp 在工作区之外创建提示词、输出和诊断文件。为每种提供方分别创建输出和诊断文件。在同一次 Bash 调用中定义并使用 shell 变量。后续调用时,将变量重新赋值为已保存的文件路径;shell 变量不会在调用之间保留。将仓库内容作为字面数据写入,不要进行 shell 展开。
提供方参考
仅阅读所选提供方对应的参考文档:
| 提供方 | 调用方式和结果 |
|---|---|
| Codex | codex-invocation.md:使用符合审查架构的 codex exec |
| Antigravity | antigravity-invocation.md:使用 agy 的打印模式输出纯文本 |
| Gemini CLI | gemini-invocation.md:适用于仍支持 Gemini CLI 的账号,以无头模式运行 gemini |
Codex 流程不需要 MCP 服务。不要启动 codex mcp-server,也不要用 codex app-server 替代 CLI 调用。
若用户要求使用两种提供方,且工具接口支持,则并发运行它们的命令。使用前台 Bash 进行审查时,将 timeout 设为 600000,以便最多运行十分钟。若支持后台执行或轮询,则使用这些方式保持进度可见。不要启用自动批准写入来运行审查。
结果与失败
呈现发现时,注明提供方、实际使用的模型、严重程度、文件和行号、影响及建议的修正方案。不要隐藏低严重程度的缺陷。对于 Codex,现有架构使用 0 表示信息级、1 表示低、2 表示中、3 表示高;按降序排列。
对于两份已完成的审查,总结一致和分歧之处,但不要将一致意见当作证据。区分外部发现与自己补充的评估。
阅读捕获的输出和诊断信息。非零退出、缺少输出、无效 JSON、阻止检查的权限拒绝,或要求批准计划,都表示工作尚未完成,不能视为审查无问题。报告失败及任何部分结果。仅在已诊断出可恢复原因时重试;遇到身份验证或配额失败时,不要轮流尝试其他提供方。
示例
/second-opinion:second-opinion use Codex to review my uncommitted changes for bugs选择 Codex,并纳入已暂存、未暂存和未跟踪的更改。/second-opinion:second-opinion compare Codex and Antigravity on this branch against origin/main将同一份分支补丁发送给两者,并比较其发现。/second-opinion:second-opinion use Gemini CLI to review commit abc1234 for security issues保留指定的 CLI,并审查该提交。