@2ndopinion/codex-plugin
v0.3.1
Published
Codex CLI plugin for 2ndOpinion — 10 AI code review tools with Claude, Codex, and Gemini
Downloads
461
Maintainers
Readme
@2ndopinion/codex-plugin
Codex CLI plugin for 2ndOpinion — AI-to-AI code review where Claude, Codex, and Gemini review your code together. 10 tools including consensus reviews, bug hunting, security audits, and AI debates.
Installation
npm install @2ndopinion/codex-pluginConfiguration
Set your API key as an environment variable:
export SECONDOPINION_API_KEY=sk_2op_your_key_hereOr authenticate via the CLI first:
npx 2ndopinion loginGet an API key at get2ndopinion.dev/dashboard/keys. The plugin reads credentials from ~/.config/2ndopinion/config.json (shared with the CLI and MCP server).
Available Tools
| Tool | Description | Plan Required |
|------|-------------|---------------|
| second_opinion | Single-model diff analysis with risk assessment | Free |
| ask_other_model | Ask a different AI model a code question | Free |
| explain_changes | Explain git changes for technical/non-technical/manager audience | Free |
| get_usage | Check credit usage and plan limits | Free |
| review_pr | Review a GitHub PR with AI analysis | Free |
| generate_tests | Generate runnable tests for your changes | Pro+ |
| consensus_review | All 3 models analyze + consensus algorithm | Power+ |
| bug_hunt | 3-model bug detection with deduplication | Power+ |
| security_audit | OWASP-focused security audit (single or multi-model) | Power+ |
| ai_debate | Multi-round debate between 2-3 AI models | Agent |
Usage
import plugin from '@2ndopinion/codex-plugin';
// List all tools
for (const tool of plugin.tools) {
console.log(`${tool.toolName}: ${tool.description}`);
}
// Run a tool
const result = await plugin.tools[0].handler({
llm: 'claude',
});
console.log(result);Individual Tool Imports
import { secondOpinion, askModel, consensus } from '@2ndopinion/codex-plugin';
// Get a second opinion on current git changes
const review = await secondOpinion.handler({ llm: 'claude' });
// Ask a question
const answer = await askModel.handler({
question: 'What is the best way to handle errors in this function?',
llm: 'gemini',
});CI/CD Integration
For automated pipelines, use the 2ndOpinion CLI with --ci for structured JSON output:
# JSON output with exit codes (0=accept, 1=review, 2=reject)
npx 2ndopinion analyze --ci --llm codex > review.json
# Use in GitHub Actions
npx 2ndopinion analyze --ci | jq '.verdict'See the CLI README for full CI/CD documentation.
Development
# Watch mode
pnpm --filter @2ndopinion/codex-plugin dev
# Build
pnpm --filter @2ndopinion/codex-plugin build
# Test
pnpm --filter @2ndopinion/codex-plugin test