Gemini Skill
Role
Run Gemini CLI as a delegated reasoning engine for code review, plan review, and large-context analysis (>200k tokens). Gemini has its own model selection and its own approval model — your job is to invoke it correctly for the execution context, surface its results, and keep the user in control of any side-effecting operation.
Success looks like
- Approval mode matches the execution context:
yolowhen Claude Code invokes Gemini as a background tool call,defaultonly in an interactive human terminal,auto_editwhen the user explicitly wants Gemini to apply edits without confirmation. - Model matches task shape — flagship for review and analysis, fast for speed-critical or high-volume work. The user picked it; you didn't pick silently.
- The output you return to the user is Gemini's output, not a paraphrase. Trust the tool.
- The user knows they can start a fresh Gemini session to follow up, since the CLI is stateless between invocations.
Model selection
Resolve the registry first, since model IDs shift:
Glob(pattern: "**/sdlc/**/config/model-registry.md", path: "~/.claude/plugins")then Read- Default to
gemini-flagship. Offergemini-fastwhen the user flags speed or cost as the constraint. - Ask via
AskUserQuestionbefore invoking — don't pick silently, since flagship and fast have very different cost/quality tradeoffs and the user owns that call.
If the registry load fails, fall back to the table below. Treat the names as possibly stale and say so when reporting.
| Model | Best for | Context | Notes |
| --- | --- | --- | --- |
| gemini-3-pro-preview | Flagship — complex reasoning, coding, agentic tasks | 1M / 64k | 76.2% SWE-bench |
| gemini-3-flash | Sub-second latency, speed-critical | 1M / 64k | Distilled from 3 Pro |
| gemini-2.5-pro | Legacy — strong all-around | 1M / 65k | Thinking mode |
| gemini-2.5-flash | Legacy — cost-efficient, high-volume | 1M / 65k | Cheapest tier |
| gemini-2.5-flash-lite | Legacy — fastest, high throughput | 1M / 65k | Minimal latency |
Invocation shape
Approval mode is the load-bearing flag — the failure mode is silent and expensive, so the reasoning needs to be inline:
--approval-mode yolofor anything Claude Code runs as a tool call. The invocation happens in a non-interactive shell;defaultwaits for a stdin confirmation that will never arrive and the process hangs indefinitely, burning wall-clock until something notices. This is the correct mode for every background invocation in this workspace.yololets Gemini run any tool without confirmation within its sandbox, so it's a blast-radius mode — name it to the user before using.--approval-mode defaultonly in an interactive human terminal where a person can actually typey. If you're unsure whether the shell is interactive, assume it isn't.--approval-mode auto_editwhen the user explicitly wants Gemini to apply edits without per-change confirmation. Also a blast-radius change (it writes files) — name it to the user before using.
Wrap with timeout 300 gemini ... as a safety net when the task has any chance of hanging on network, rate-limit, or a pathological input. The timeout is cheap insurance; a hung Gemini process can sit at 0% CPU for hours. If one slips past the timeout anyway (long runtime, 0% CPU, no network), load references/gemini-cli-reference.md for the detection/diagnosis/kill pattern rather than guessing — surface the exit code and stderr instead of silently retrying.
Use --include-directories <DIR> (repeatable) when the analysis needs files outside the current working directory. Don't rely on Gemini discovering them.
After the run
Tell the user once: "Gemini sessions don't persist — start a new one for follow-up analysis." The CLI is stateless between invocations and doesn't surface that fact, so the one-line hook is what prevents the user from expecting continuity that doesn't exist.
References
CLI flag reference, approval-mode matrix, and troubleshooting for hung processes live in references/gemini-cli-reference.md. Load when you need flag details — don't paraphrase, the examples are the contract:
Glob(pattern: "**/sdlc/**/skills/gemini/references/gemini-cli-reference.md", path: "~/.claude/plugins")→ Read
Arguments
$ARGUMENTS