>o)
(_>
Cross-model second opinion companion for AI coding agents.
Inspired by GitHub Copilot's Rubber Duck — the same idea, built for Claude Code using Codex CLI as the cross-model reviewer.
Like the classic debugging practice — you explain what you did, the duck listens, and sometimes it spots what you missed.
- Reviews the decisions your AI agent made — not code style
- Gives a plain-language take, like a colleague's quick read
- Ends with an actionable bottom line (ship it / fix X / rethink Y)
- Activates automatically at high-signal checkpoints or on demand
>o)
(_>
Took a look at what you just did.
-
The retry logic in
fetcher.ts:82doesn't back off — it'll hammer the endpoint on transient failures. This project usesp-retryelsewhere, probably worth using it here too. -
user.preferencescan be null but you're accessing.themedirectly on line 112. Added optional chaining.
Ship it after switching to p-retry.
Codex CLI must be installed and authenticated:
npm install -g @openai/codex
codex loginapm install chkp-roniz/cc-rubber-duck
apm compile --target claude --local-onlyAPM compiles the trigger criteria into your project's CLAUDE.md, so
Claude sees them at session start and invokes the duck automatically at
high-signal checkpoints.
claude /plugin marketplace add chkp-roniz/cc-rubber-duckClaude sees the skill description (which includes trigger hints), but
automatic activation depends on the agent reading the description and
deciding to invoke. Use /rubber-duck to invoke explicitly.
Copy skills/, commands/, and instructions/ into your project's .claude/:
cp -r skills/ .claude/skills/
cp -r commands/ .claude/commands/
cp -r instructions/ .claude/instructions/Type /rubber-duck in Claude Code, or just say "rubber duck this",
"second opinion", "what am I missing", etc.
The duck activates on its own when Claude:
- Finishes a plan touching 3+ files
- Writes 100+ lines of meaningful changes
- Completes a test suite
- Gets stuck retrying the same fix
- Is about to do something destructive
- Shows the duck logo
- Gathers context (git diff, recent files, or conversation context)
- Pipes it to
codex execwith a decision-review prompt - Evaluates concerns against full codebase context
- Presents a short, honest summary with an actionable bottom line
The duck runs in --sandbox read-only mode — it can't modify your code.
rubber-duck/
├── plugin.json # Plugin manifest
├── instructions/
│ └── rubber-duck.instructions.md # Trigger criteria (compiled into CLAUDE.md by APM)
├── skills/
│ └── rubber-duck/
│ └── SKILL.md # Full skill definition (behavior + presentation)
├── commands/
│ └── rubber-duck.md # /rubber-duck slash command
└── README.md
MIT