Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when you want Gemini CLI as a second opinion for coding tasks such as prototyping, debugging, or diff review, while keeping Codex as the primary implementer.
.claude/skills/cnfjlhj-collaborating-with-gemini/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 58% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 89% | 0% |
Use Gemini CLI as a collaborator while keeping Codex as the primary implementer.
This skill provides a lightweight bridge script that returns structured JSON and supports multi-turn sessions via SESSION_ID.
gemini directly; always use the bridge script (scripts/gemini_bridge.py) so output/session handling stays consistent.--cd set to the repo root (it sets the gemini process working directory). Use --cd "." only if your CWD is the repo root.SESSION_ID and reuse it for follow-ups to keep the collaboration conversation-aware.timeout_ms to 600000 (10 minutes) unless a shorter/longer timeout is explicitly required.--sandbox to run Gemini in sandbox mode.⚠️ 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-gemini/scripts/gemini_bridge.py --cd "." --PROMPT "$PROMPT"
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-gemini/scripts/gemini_bridge.py --cd "." --PROMPT "$PROMPT" # Continue the same session PROMPT="$(cat <<'EOF' Now propose a minimal fix as Unified Diff Patch ONLY. EOF )" python3 .codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py --cd "." --SESSION_ID "<SESSION_ID>" --PROMPT "$PROMPT"
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.Gemini can only read files inside the workspace root (--cd). Codex saves clipboard PNGs into the OS temp directory (e.g. ${TMPDIR:-/tmp}), which Gemini can’t access, and it may refuse ignored paths (e.g. tmp/). Copy the image into .codex_uploads/, then reference that path in your prompt. Delete screenshots when done. Do not add .codex_uploads/ to .gitignore—Gemini refuses to read ignored paths.
bashmkdir -p .codex_uploads && cp "${TMPDIR:-/tmp}"/codex-clipboard-<id>.png .codex_uploads/
--sandbox: Run Gemini in sandbox mode.--model <name>: Override the default Gemini model.--return-all-messages: Include all raw messages (tool calls, traces) in output JSON.Keep this short block updated near the end of your reply while collaborating:
text[Gemini Collaboration Capsule] Goal: Gemini SESSION_ID: Files/lines handed off: Last ask: Gemini 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 | 9,901 | 7,678 | -22% | 1 | 1 | 0% | 310 | 1,520 | +390% | 0 | 0 | — |
case-02 | fail→fail | 23,571 | 7,465 | -68% | 1 | 1 | 0% | 3,090 | 1,586 | -49% | 0 | 0 | — |
case-03 | fail→fail | 5,864 | 6,203 | +6% | 1 | 1 | 0% | 300 | 1,257 | +319% | 0 | 0 | — |
case-04 | fail→fail | 5,043 | 4,964 | -2% | 1 | 1 | 0% | 246 | 1,180 | +380% | 0 | 0 | — |
case-05 | fail→fail | 6,649 | 18,326 | +176% | 1 | 1 | 0% | 1,037 | 3,184 | +207% | 0 | 0 | — |
case-06 | pass→fail | 10,414 | 5,097 | -51% | 1 | 1 | 0% | 1,875 | 1,304 | -30% | 0 | 0 | — |
case-07 | pass→pass | 9,642 | 3,817 | -60% | 1 | 1 | 0% | 1,522 | 1,374 | -10% | 0 | 0 | — |
case-08 | pass→pass | 4,947 | 2,017 | -59% | 1 | 1 | 0% | 723 | 1,360 | +88% | 0 | 0 | — |
case-09 | pass→pass | 3,724 | 4,337 | +16% | 1 | 1 | 0% | 588 | 1,780 | +203% | 0 | 0 | — |
case-10 | fail→pass | 6,032 | 2,768 | -54% | 1 | 1 | 0% | 843 | 1,329 | +58% | 0 | 0 | — |
case-11 | pass→pass | 11,589 | 5,111 | -56% | 1 | 1 | 0% | 1,725 | 1,808 | +5% | 0 | 0 | — |
case-12 | pass→pass | 6,713 | 2,177 | -68% | 1 | 1 | 0% | 895 | 1,322 | +48% | 0 | 0 | — |
case-13 | pass→pass | 5,070 | 2,078 | -59% | 1 | 1 | 0% | 747 | 1,343 | +80% | 0 | 0 | — |
case-14 | fail→pass | 11,363 | 1,974 | -83% | 1 | 1 | 0% | 1,974 | 1,328 | -33% | 0 | 0 | — |
case-15 | fail→pass | 11,547 | 2,479 | -79% | 1 | 1 | 0% | 1,817 | 1,428 | -21% | 0 | 0 | — |
case-16 | fail→pass | 7,635 | 2,691 | -65% | 1 | 1 | 0% | 1,260 | 1,381 | +10% | 0 | 0 | — |
case-17 | pass→pass | 6,542 | 3,008 | -54% | 1 | 1 | 0% | 1,088 | 1,530 | +41% | 0 | 0 | — |
case-18 | fail→pass | 4,532 | 1,749 | -61% | 1 | 1 | 0% | 693 | 1,308 | +89% | 0 | 0 | — |
case-19 | fail→pass | 9,662 | 3,166 | -67% | 1 | 1 | 0% | 1,534 | 1,603 | +4% | 0 | 0 | — |
case-20 | fail→pass | 10,064 | 4,078 | -59% | 1 | 1 | 0% | 1,588 | 1,680 | +6% | 0 | 0 | — |
case-21 | fail→pass | 10,954 | 1,658 | -85% | 1 | 1 | 0% | 1,679 | 1,278 | -24% | 0 | 0 | — |
case-22 | pass→pass | 10,575 | 2,296 | -78% | 1 | 1 | 0% | 1,489 | 1,367 | -8% | 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 17 counted toward the lift figure. The other 5 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 17 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.