Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when you want Claude Code CLI as a second opinion for coding tasks such as design tradeoffs, debugging, or diff review, while keeping Codex as the primary implementer.
.claude/skills/cnfjlhj-collaborating-with-claude/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 265% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 33% | 0% |
Use Claude Code CLI as a collaborator while keeping Codex as the primary implementer.
This skill provides a lightweight bridge script (scripts/claude_bridge.py) that returns structured JSON and supports multi-turn sessions via SESSION_ID.
claude directly; always use the bridge script (scripts/claude_bridge.py) so output/session handling stays consistent.--cd set to the repo root (it sets the claude process working directory); use --add-dir when Claude needs access to additional directories.--help first if you are unsure of parameters.SESSION_ID and reuse it for follow-ups to keep the collaboration conversation-aware.--SESSION_ID (resume). Session selectors are mutually exclusive: choose one of --SESSION_ID, --continue, or --session-id.timeout_ms to 600000 (10 minutes) unless a shorter/longer timeout is explicitly required.sonnet for routine work; use opus only for complex tasks or when explicitly requested.claude and /login once if needed).--verbose; the bridge enables this automatically.Claude Code supports model aliases, so you can use --model sonnet / --model opus instead of hard-coding versioned model IDs.
--model, Claude Code uses its configured default (typically from ~/.claude/settings.json, optionally overridden by .claude/settings.json and .claude/settings.local.json).--model <full-name>.⚠️ If your prompt contains Markdown backticks ( like/this ), do not pass it directly via --PROMPT "..." (your shell may treat backticks as command substitution). Use a heredoc instead; see references/shell-quoting.md.
bashPROMPT="$(cat <<'EOF' Review src/auth.py around login() and propose fixes. OUTPUT: Unified Diff Patch ONLY. EOF )" python3 .codex/skills/collaborating-with-claude/scripts/claude_bridge.py --cd "." --model sonnet --PROMPT "$PROMPT" --output-format stream-json
Output: JSON with success, SESSION_ID, agent_messages, and optional error / all_messages.
bash# Start a session PROMPT="$(cat <<'EOF' Analyze the bug in foo(). Keep it short. EOF )" python3 .codex/skills/collaborating-with-claude/scripts/claude_bridge.py --cd "." --PROMPT "$PROMPT" --output-format stream-json # Continue the same session PROMPT="$(cat <<'EOF' Now propose a minimal fix as Unified Diff Patch ONLY. EOF )" python3 .codex/skills/collaborating-with-claude/scripts/claude_bridge.py --cd "." --SESSION_ID "<SESSION_ID>" --PROMPT "$PROMPT" --output-format stream-json
Use assets/prompt-template.md as a starter when crafting --PROMPT.
Provide:
Avoid:
Append this to prompts when requesting code:
OUTPUT: Unified Diff Patch ONLY. Strictly prohibit any actual modifications.python3 .codex/skills/collaborating-with-claude/scripts/claude_bridge.py --help.--output-format stream-json and confirm the JSON contains success: true and a SESSION_ID.--output-format text won’t include a newly generated session id; use stream-json/json to capture it. If you resume with --SESSION_ID in text mode, the bridge echoes that SESSION_ID in its JSON output.Keep this short block updated near the end of your reply while collaborating:
text[Claude Collaboration Capsule] Goal: Claude SESSION_ID: Files/lines handed off: Last ask: Claude summary: Next ask:
assets/prompt-template.md (prompt patterns)references/shell-quoting.md (shell quoting/backticks)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 25,750 | 11,249 | -56% | 1 | 1 | 0% | 223 | 1,726 | +674% | 0 | 0 | — |
case-07 | fail→fail | 6,184 | 6,668 | +8% | 1 | 1 | 0% | 907 | 1,719 | +90% | 0 | 0 | — |
case-02 | fail→fail | 6,285 | 7,171 | +14% | 1 | 1 | 0% | 958 | 1,833 | +91% | 0 | 0 | — |
case-03 | fail→fail | 5,593 | 6,559 | +17% | 1 | 1 | 0% | 929 | 1,843 | +98% | 0 | 0 | — |
case-04 | pass→fail | 5,524 | 5,580 | +1% | 1 | 1 | 0% | 265 | 1,686 | +536% | 0 | 0 | — |
case-05 | pass→pass | 11,205 | 11,958 | +7% | 1 | 1 | 0% | 1,833 | 3,480 | +90% | 0 | 0 | — |
case-06 | pass→pass | 7,730 | 5,033 | -35% | 1 | 1 | 0% | 1,166 | 2,320 | +99% | 0 | 0 | — |
case-08 | fail→fail | 27,858 | 6,751 | -76% | 1 | 1 | 0% | 5,139 | 1,772 | -66% | 0 | 0 | — |
case-09 | fail→fail | 11,436 | 6,208 | -46% | 1 | 1 | 0% | 2,070 | 1,706 | -18% | 0 | 0 | — |
case-10 | fail→fail | 8,647 | 6,347 | -27% | 1 | 1 | 0% | 1,355 | 1,658 | +22% | 0 | 0 | — |
case-11 | fail→pass | 18,651 | 2,220 | -88% | 1 | 1 | 0% | 1,805 | 1,678 | -7% | 0 | 0 | — |
case-12 | fail→fail | 4,816 | 3,938 | -18% | 1 | 1 | 0% | 718 | 2,027 | +182% | 0 | 0 | — |
case-13 | fail→pass | 17,395 | 5,215 | -70% | 1 | 1 | 0% | 1,484 | 2,316 | +56% | 0 | 0 | — |
case-14 | fail→pass | 9,790 | 2,322 | -76% | 1 | 1 | 0% | 1,519 | 1,763 | +16% | 0 | 0 | — |
case-15 | fail→fail | 4,368 | 3,213 | -26% | 1 | 1 | 0% | 687 | 1,933 | +181% | 0 | 0 | — |
case-16 | fail→fail | 7,232 | 7,347 | +2% | 1 | 1 | 0% | 1,020 | 1,760 | +73% | 0 | 0 | — |
case-17 | fail→pass | 4,700 | 5,553 | +18% | 1 | 1 | 0% | 672 | 2,454 | +265% | 0 | 0 | — |
case-18 | fail→pass | 8,615 | 2,325 | -73% | 1 | 1 | 0% | 1,304 | 1,728 | +33% | 0 | 0 | — |
case-19 | fail→pass | 11,793 | 1,690 | -86% | 1 | 1 | 0% | 1,720 | 1,587 | -8% | 0 | 0 | — |
case-20 | fail→pass | 15,086 | 4,396 | -71% | 1 | 1 | 0% | 2,334 | 2,084 | -11% | 0 | 0 | — |
case-21 | pass→pass | 10,453 | 3,269 | -69% | 1 | 1 | 0% | 1,399 | 1,830 | +31% | 0 | 0 | — |
case-22 | fail→pass | 5,853 | 2,149 | -63% | 1 | 1 | 0% | 806 | 1,695 | +110% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 13 counted toward the lift figure. The other 9 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 13 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.