{"id":"9e7251b4-f65b-46ae-8a95-3764186626eb","shortId":"WsctCx","kind":"skill","title":"collaborating-with-gemini","tagline":"Delegate tasks to Gemini CLI for prototyping, debugging, code review, and web search. Supports multi-turn sessions via SESSION_ID.","description":"# Collaborating with Gemini\n\nUse Gemini CLI as a collaborator while Codex remains the primary implementer.\n\nThe bridge script (`scripts/gemini_bridge.py`) wraps `gemini -p` (headless mode), returns structured JSON, and manages session continuity via `SESSION_ID`.\n\n## Safety\n\nGemini can read and write files in the workspace by default. The bridge does **not** restrict this.\n\nTo limit what Gemini can do:\n- `--sandbox` — blocks shell commands and file writes. **Recommended for review/consultation tasks.**\n- Include `OUTPUT: Unified Diff Patch ONLY. Do not modify any files.` in your prompt when requesting code changes. This is a convention, not enforced.\n\n⚠️ `--approval-mode plan` does NOT reliably prevent writes — Gemini may self-approve plans and use shell commands to bypass file-write restrictions. Do not rely on it for safety.\n\n## When to use\n- Second opinion on design tradeoffs, edge cases, or test gaps.\n- Web search and research (Gemini has built-in grounding).\n- Reviewing a diff or proposing changes as unified diff.\n- Screenshot / image analysis.\n\n## When not to use\n- Trivial one-shot tasks — do them in Codex directly.\n- Tasks requiring file edits — Codex edits, Gemini advises.\n- Anything involving secrets, private keys, or prod data.\n\n## Quick start\n\n⚠️ Backticks in prompts trigger shell command substitution — use a heredoc. See `references/shell-quoting.md`.\n\n```bash\nPROMPT=\"$(cat <<'EOF'\nReview src/auth.py around login() and propose fixes.\nOUTPUT: Unified Diff Patch ONLY.\nEOF\n)\"\npython3 .codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py \\\n  --cd \".\" --PROMPT \"$PROMPT\"\n```\n\n**Returns:** `{ \"success\": true, \"SESSION_ID\": \"...\", \"agent_messages\": \"...\" }`\n\n## Multi-turn sessions\n\nCapture `SESSION_ID` from the first call and pass it back:\n\n```bash\n# Turn 1\npython3 .codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py \\\n  --cd \".\" --PROMPT \"Analyze the bug in foo().\"\n\n# Turn 2 — resume\npython3 .codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py \\\n  --cd \".\" --SESSION_ID \"<id>\" --PROMPT \"Propose a fix as unified diff.\"\n```\n\nSessions are persisted by the Gemini CLI at `~/.gemini/tmp/<project>/chats/`. The bridge captures and returns the ID — the caller is responsible for storing and reusing it.\n\n## Bridge flags\n\n| Flag | Purpose | Default |\n|---|---|---|\n| `--PROMPT` | Prompt text (required) | — |\n| `--cd` | Workspace root (required) | — |\n| `--SESSION_ID` | Resume a previous session | new session |\n| `--model` | Override Gemini model | CLI default |\n| `--sandbox` | Block shell and file writes | off |\n| `--approval-mode` | `default` · `auto_edit` · `yolo` · `plan` | CLI default |\n| `--include-directories` | Additional workspace dirs (repeatable) | none |\n| `--return-all-messages` | Include tool calls and traces in output | off |\n\nDefault timeout: set `timeout_ms` to **600000** (10 min) when invoking via Codex command runner.\n\n## Prompting patterns\n\nUse `assets/prompt-template.md` for structured starters. Key principles:\n\n- **Point, don't paste** — give file paths and line numbers, not code blocks.\n- **One objective per prompt** — multiple competing goals produce noisy output.\n- **Enforce output format** — append `OUTPUT: Unified Diff Patch ONLY.` for code changes.\n- **Leverage grounding** — Gemini can search the web; ask for research when needed.\n\n### Screenshots\n\nGemini can only read files inside the workspace. Copy clipboard PNGs into `.codex_uploads/` first:\n\n```bash\nmkdir -p .codex_uploads && cp \"${TMPDIR:-/tmp}\"/codex-clipboard-*.png .codex_uploads/\n```\n\nDo **not** add `.codex_uploads/` to `.gitignore` — Gemini refuses to read ignored paths. Delete screenshots when done.\n\n## Verification\n\n- Smoke test: `python3 .codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py --help`\n- Session test: run one prompt, confirm JSON contains `success: true` and a `SESSION_ID`.\n\n## Collaboration State Capsule\n\nKeep this block updated while collaborating:\n\n```\n[Gemini Capsule] Goal: | SID: | Files: | Last: | Next:\n```\n\n## References\n- [Prompt template](assets/prompt-template.md) — structured prompt patterns\n- [Shell quoting](references/shell-quoting.md) — heredoc quoting for backticks","tags":["collaborating","with","gemini","agent","designer","appautomaton","agent-skills","agentic-workflows","ai-agents","ai-coding-assistant","claude-code","claude-skills"],"capabilities":["skill","source-appautomaton","skill-collaborating-with-gemini","topic-agent-skills","topic-agentic-workflows","topic-ai-agents","topic-ai-coding-assistant","topic-claude-code","topic-claude-skills","topic-codex","topic-gemini-cli","topic-mcp"],"categories":["agent-designer"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/appautomaton/agent-designer/collaborating-with-gemini","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add appautomaton/agent-designer","source_repo":"https://github.com/appautomaton/agent-designer","install_from":"skills.sh"}},"qualityScore":"0.506","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 113 github stars · SKILL.md body (4,195 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:56:19.443Z","embedding":null,"createdAt":"2026-05-06T00:55:54.635Z","updatedAt":"2026-05-18T18:56:19.443Z","lastSeenAt":"2026-05-18T18:56:19.443Z","tsv":"'/.gemini/tmp':309 '/chats':310 '/codex-clipboard-':486 '/tmp':485 '1':276 '10':398 '2':287 '600000':397 'add':492 'addit':374 'advis':207 'agent':257 'analysi':185 'analyz':281 'anyth':208 'append':441 'approv':120,132,362 'approval-mod':119,361 'around':236 'ask':457 'assets/prompt-template.md':409,546 'auto':365 'back':273 'backtick':218,556 'bash':230,274,478 'block':85,355,427,532 'bridg':42,73,312,327 'bug':283 'built':171 'built-in':170 'bypass':139 'call':269,385 'caller':319 'capsul':529,537 'captur':263,313 'case':160 'cat':232 'cd':249,279,291,336 'chang':112,179,449 'cli':9,31,307,352,369 'clipboard':472 'code':13,111,426,448 'codex':36,198,204,403,475,481,488,493 'codex/skills/collaborating-with-gemini/scripts/gemini_bridge.py':248,278,290,511 'collabor':2,26,34,527,535 'collaborating-with-gemini':1 'command':87,137,223,404 'compet':433 'confirm':518 'contain':520 'continu':56 'convent':116 'copi':471 'cp':483 'data':215 'debug':12 'default':71,331,353,364,370,391 'deleg':5 'delet':503 'design':157 'diff':98,176,182,243,300,444 'dir':376 'direct':199 'directori':373 'done':506 'edg':159 'edit':203,205,366 'enforc':118,438 'eof':233,246 'file':66,89,105,141,202,358,420,467,540 'file-writ':140 'first':268,477 'fix':240,297 'flag':328,329 'foo':285 'format':440 'gap':163 'gemini':4,8,28,30,46,61,81,128,168,206,306,350,452,463,497,536 'gitignor':496 'give':419 'goal':434,538 'ground':173,451 'headless':48 'help':512 'heredoc':227,553 'id':25,59,256,265,293,317,341,526 'ignor':501 'imag':184 'implement':40 'includ':95,372,383 'include-directori':371 'insid':468 'invok':401 'involv':209 'json':52,519 'keep':530 'key':212,413 'last':541 'leverag':450 'limit':79 'line':423 'login':237 'manag':54 'may':129 'messag':258,382 'min':399 'mkdir':479 'mode':49,121,363 'model':348,351 'modifi':103 'ms':395 'multi':20,260 'multi-turn':19,259 'multipl':432 'need':461 'new':346 'next':542 'noisi':436 'none':378 'number':424 'object':429 'one':192,428,516 'one-shot':191 'opinion':155 'output':96,241,389,437,439,442 'overrid':349 'p':47,480 'pass':271 'past':418 'patch':99,244,445 'path':421,502 'pattern':407,549 'per':430 'persist':303 'plan':122,133,368 'png':487 'pngs':473 'point':415 'prevent':126 'previous':344 'primari':39 'principl':414 'privat':211 'prod':214 'produc':435 'prompt':108,220,231,250,251,280,294,332,333,406,431,517,544,548 'propos':178,239,295 'prototyp':11 'purpos':330 'python3':247,277,289,510 'quick':216 'quot':551,554 'read':63,466,500 'recommend':91 'refer':543 'references/shell-quoting.md':229,552 'refus':498 'reli':146 'reliabl':125 'remain':37 'repeat':377 'request':110 'requir':201,335,339 'research':167,459 'respons':321 'restrict':76,143 'resum':288,342 'return':50,252,315,380 'return-all-messag':379 'reus':325 'review':14,174,234 'review/consultation':93 'root':338 'run':515 'runner':405 'safeti':60,150 'sandbox':84,354 'screenshot':183,462,504 'script':43 'scripts/gemini_bridge.py':44 'search':17,165,454 'second':154 'secret':210 'see':228 'self':131 'self-approv':130 'session':22,24,55,58,255,262,264,292,301,340,345,347,513,525 'set':393 'shell':86,136,222,356,550 'shot':193 'sid':539 'skill' 'skill-collaborating-with-gemini' 'smoke':508 'source-appautomaton' 'src/auth.py':235 'start':217 'starter':412 'state':528 'store':323 'structur':51,411,547 'substitut':224 'success':253,521 'support':18 'task':6,94,194,200 'templat':545 'test':162,509,514 'text':334 'timeout':392,394 'tmpdir':484 'tool':384 'topic-agent-skills' 'topic-agentic-workflows' 'topic-ai-agents' 'topic-ai-coding-assistant' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'topic-gemini-cli' 'topic-mcp' 'trace':387 'tradeoff':158 'trigger':221 'trivial':190 'true':254,522 'turn':21,261,275,286 'unifi':97,181,242,299,443 'updat':533 'upload':476,482,489,494 'use':29,135,153,189,225,408 'verif':507 'via':23,57,402 'web':16,164,456 'workspac':69,337,375,470 'wrap':45 'write':65,90,127,142,359 'yolo':367","prices":[{"id":"1679e915-a385-4bb2-a0d2-19dd3fbd71cd","listingId":"9e7251b4-f65b-46ae-8a95-3764186626eb","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"appautomaton","category":"agent-designer","install_from":"skills.sh"},"createdAt":"2026-05-06T00:55:54.635Z"}],"sources":[{"listingId":"9e7251b4-f65b-46ae-8a95-3764186626eb","source":"github","sourceId":"appautomaton/agent-designer/collaborating-with-gemini","sourceUrl":"https://github.com/appautomaton/agent-designer/tree/main/skills/collaborating-with-gemini","isPrimary":false,"firstSeenAt":"2026-05-06T00:55:54.635Z","lastSeenAt":"2026-05-18T18:56:19.443Z"}],"details":{"listingId":"9e7251b4-f65b-46ae-8a95-3764186626eb","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"appautomaton","slug":"collaborating-with-gemini","github":{"repo":"appautomaton/agent-designer","stars":113,"topics":["agent-skills","agentic-workflows","ai-agents","ai-coding-assistant","claude-code","claude-skills","codex","gemini-cli","mcp"],"license":null,"html_url":"https://github.com/appautomaton/agent-designer","pushed_at":"2026-04-06T19:03:10Z","description":"Portable SKILLs workspace for Claude Code, Codex, and Gemini — issue-driven workflows and cross-agent collaboration via bridge scripts with session continuity.","skill_md_sha":"e47d727fafe9bf2fa9b5e33e8626f952659975b5","skill_md_path":"skills/collaborating-with-gemini/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/appautomaton/agent-designer/tree/main/skills/collaborating-with-gemini"},"layout":"multi","source":"github","category":"agent-designer","frontmatter":{"name":"collaborating-with-gemini","description":"Delegate tasks to Gemini CLI for prototyping, debugging, code review, and web search. Supports multi-turn sessions via SESSION_ID."},"skills_sh_url":"https://skills.sh/appautomaton/agent-designer/collaborating-with-gemini"},"updatedAt":"2026-05-18T18:56:19.443Z"}}