# Omega Gemini CLI

> Use when the user wants to use Google Gemini for analysis, large files or codebases, sandbox execution, or brainstorming. Uses headless Gemini CLI scripts (no MCP). Triggers on "use Gemini", "analyze with Gemini", "large file", "sandbox", "brainstorm with Gemini".

- Skill: `oimiragieo/omega-gemini-cli` (Agent Skill, multi-file: 14 files)
- Install (CLI): `npx skillmds@latest add oimiragieo/omega-gemini-cli`
- Raw SKILL.md: https://api.skillmd.com/api/skills/oimiragieo/omega-gemini-cli/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: oimiragieo (https://skillmd.com/u/oimiragieo)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/oimiragieo/omega-gemini-cli

---


# Gemini CLI Skill

Headless wrapper for Google Gemini CLI. Sends prompts via stdin to `gemini -p "" --yolo`.
Free tier available — no API key required (Google OAuth only).

## When to Use

- Get a Google Gemini perspective on any question
- Free-tier AI consultation (no API key costs)
- Code review from Gemini's model
- Brainstorming and analysis tasks
- Cross-validation of Claude's own responses
- Large files or codebases that benefit from Gemini's context window
- Sandbox execution (run/test code via Gemini)

## Response Times

Gemini CLI runs as a subprocess and includes model startup time:

- Simple Q&A / news query: ~2 minutes
- Codebase or large-file review: ~5–10 minutes

Set expectations with the user before running long tasks.

## Usage

### Ask a question

```bash
node .claude/skills/omega-gemini-cli/scripts/ask-gemini.mjs "What is the best caching strategy for a Node.js API?"
```

### Specify model (short or long flag)

```bash
node .claude/skills/omega-gemini-cli/scripts/ask-gemini.mjs "Explain async/await" --model gemini-2.5-flash
node .claude/skills/omega-gemini-cli/scripts/ask-gemini.mjs "Explain async/await" -m gemini-2.5-flash
```

### JSON output

```bash
node .claude/skills/omega-gemini-cli/scripts/ask-gemini.mjs "List 5 design patterns" --json
# Returns: {"response":"..."} on success, {"error":"...","raw":"..."} on parse failure
```

### Code sandbox (short or long flag)

```bash
node .claude/skills/omega-gemini-cli/scripts/ask-gemini.mjs "Write and run a fibonacci function" --sandbox
node .claude/skills/omega-gemini-cli/scripts/ask-gemini.mjs "Write and run a fibonacci function" -s
```

### Stdin usage

```bash
echo "Explain recursion" | node .claude/skills/omega-gemini-cli/scripts/ask-gemini.mjs
```

### File review (embed content in prompt)

```bash
node .claude/skills/omega-gemini-cli/scripts/ask-gemini.mjs "Review this code: $(cat src/auth.ts)"
```

## Availability Check

```bash
node .claude/skills/omega-gemini-cli/scripts/verify-setup.mjs
# Exit 0 = available (Node 18+ and Gemini CLI found)
# Exit 1 = not installed or too old
```

## Scripts

| Script              | Purpose                                                   |
| ------------------- | --------------------------------------------------------- |
| `ask-gemini.mjs`    | Core headless wrapper — sends prompt via stdin            |
| `parse-args.mjs`    | Argument parser (--model/-m, --json, --sandbox/-s)        |
| `verify-setup.mjs`  | Availability check (Node 18+, Gemini CLI via PATH or npx) |
| `format-output.mjs` | Output normalization (JSON envelope handling)             |

## Flags

| Flag            | Short | Description                                                 |
| --------------- | ----- | ----------------------------------------------------------- |
| `--model MODEL` | `-m`  | Gemini model (e.g., gemini-2.5-flash, gemini-2.5-pro)       |
| `--json`        |       | Machine-readable JSON output: `{"response":"..."}` envelope |
| `--sandbox`     | `-s`  | Code execution sandbox mode                                 |

## Models (2026)

| Model ID                 | Notes                                 |
| ------------------------ | ------------------------------------- |
| `gemini-3-pro-preview`   | Latest (2026), highest capability     |
| `gemini-3-flash-preview` | Latest (2026), faster                 |
| `gemini-2.5-pro`         | Stable, high capability               |
| `gemini-2.5-flash`       | Recommended: lower quota/latency      |
| `gemini-2.5-flash-lite`  | Lightest, fastest, lowest quota usage |

## Exit Codes

| Code | Meaning                                                         |
| ---- | --------------------------------------------------------------- |
| 0    | Success                                                         |
| 1    | Error (CLI failure, auth issue, JSON parse failure with --json) |
| 9009 | Windows: command not found (falls back to npx automatically)    |

## Slash Commands (when installed in a project with .claude/commands/)

| Command               | Purpose                                                                 |
| --------------------- | ----------------------------------------------------------------------- |
| `/analyze`            | Run headless script with user's prompt (and any @ file refs)            |
| `/sandbox`            | Run with --sandbox; execute or test code                                |
| `/omega-gemini`       | Alias: run headless for analysis, sandbox, or brainstorm as appropriate |
| `/brainstorm`         | Brainstorm mode (build prompt with challenge + optional methodology)    |
| `/omega-gemini-setup` | Verify Node and Gemini CLI; guide user to install and auth. No MCP.     |

## Anti-Patterns & Iron Laws

1. ALWAYS use verify-setup.mjs before first use
2. NEVER pass prompt as positional arg to raw gemini CLI — use ask-gemini.mjs wrapper
3. ALWAYS validate model parameter (wrapper validates via regex `^[a-zA-Z0-9._-]+$` on Windows)
4. NEVER assume gemini is on PATH — wrapper handles npx `@google/gemini-cli` fallback automatically
5. ALWAYS handle exit code 1 and 9009 gracefully
6. ALWAYS set user expectations about response time before running (2–10 minutes typical)

## Integration Notes

- **Auth:** One-time Google OAuth via `gemini` interactive session (run `gemini` once to sign in)
- **Rate limits:** Governed by Gemini API quotas (generous for personal use on free tier)
- **Platform:** Full cross-platform; Windows uses `shell: true` with model validation; non-Windows uses array args (no shell)
- **npx fallback:** On PATH miss, automatically retries with `npx -y @google/gemini-cli`
- **No timeout flag:** Unlike other omega wrappers, gemini wrapper has no --timeout-ms
- **Stdin delivery:** Prompt always sent via stdin to avoid shell argument length limits (8191-char cmd.exe limit on Windows, ARG_MAX on Linux/macOS)
- **JSON envelope:** `--json` wraps output as `{"response":"..."}` on success or `{"error":"...","raw":"..."}` on failure

## Requirements

- **Node.js 18+** to run the scripts
- **Google Gemini CLI** (`npm install -g @google/gemini-cli`) with one-time Google sign-in

## Memory Protocol

Before work: Read `.claude/context/memory/learnings.md`
After work: Append findings to learnings or issues as needed.

_Note: Use `pnpm search:code` to discover references to this skill codebase-wide._

