Help us improve
Share bugs, ideas, or general feedback.
From feature-design
Invoke Google's Gemini CLI from inside a Claude session to get an independent response from a non-Claude model. Trigger when the user asks to "ask Gemini", "get Gemini's take", "have Gemini review", "second opinion from Gemini", "run this past Gemini", or when running a multi-model crossfire that needs an independent Google-side perspective. Sends a prompt to Gemini via `gemini -p` and returns the plain-text response. Used by the feature-design plugin's crossfire stages but also independently useful for any second-opinion task.
npx claudepluginhub choughton/feature-design-prompt-templates --plugin feature-designHow this skill is triggered — by the user, by Claude, or both
Slash command
/feature-design:geminiThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Invokes Google's Gemini CLI in non-interactive mode to get an independent response from a non-Claude model. The skill shells out via the Bash tool, captures stdout, and returns the response cleanly.
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
Invokes Google's Gemini CLI in non-interactive mode to get an independent response from a non-Claude model. The skill shells out via the Bash tool, captures stdout, and returns the response cleanly.
Do NOT trigger when:
Before this skill works, the user must have:
npm install -g @google/gemini-cli (Node 20+).GEMINI_API_KEY env var, obtained from https://aistudio.google.com/app/apikey. This is the path of least friction for shell-out.gemini interactively, complete the browser flow, then cached credentials live in ~/.gemini/. Free-tier OAuth has stricter quotas than API key.GOOGLE_APPLICATION_CREDENTIALS + GOOGLE_CLOUD_PROJECT (+ GOOGLE_CLOUD_LOCATION for Vertex).If none is set, gemini -p will either drop into an OAuth flow (which won't work in non-interactive context) or error. Detect and tell the user.
command -v gemini && gemini --version
If unavailable, tell the user:
Gemini CLI doesn't appear to be installed or on PATH. Install with
npm install -g @google/gemini-cli(Node 20+ required), then either setGEMINI_API_KEYor rungeminionce interactively to complete OAuth, then retry.
Stop. Do not attempt the call.
Same as the Codex skill — assemble the prompt from the user's request, file contents, or a parent-flow-supplied template. For long prompts, use a file rather than inline shell-arg quoting.
gemini -p "$PROMPT" --output-format text -m flash 2>/dev/null
Run from the project's working directory so Gemini can read files referenced in the prompt. Crossfire reviewers read the project's docs and code via the CLI's filesystem tools — they don't just respond to inlined text.
Flag rationale:
-p — mandatory for non-interactive use. Without it, Gemini drops into the REPL when stdin is a TTY.--output-format text — plain text on stdout. Use --output-format json for {response, stats, error} if the parent flow needs structured output.-m flash — pick the fast/cheap model. For higher-quality reviews use -m pro (or whatever the current top-tier model is). Defer to user preference if specified.2>/dev/null — suppresses Gemini's progress/spinner output.Note: Gemini auto-loads GEMINI.md from the cwd as additional context, similar to Claude's CLAUDE.md. For crossfire this is fine — it's project-scoped context the reviewer should see. If you specifically need a clean run with no project context, run from a temp directory (but you'll lose file-access to the very docs the prompt references — almost never what you want for crossfire).
For long prompts:
gemini -p "$(cat /path/to/prompt.md)" --output-format text -m flash 2>/dev/null
Or pipe stdin:
cat /path/to/prompt.md | gemini -p "Review the following:" --output-format text -m flash 2>/dev/null
Capture stdout. Present back with framing:
Gemini says:
--approval-mode yolo (or --yolo) — auto-approves any tool calls Gemini wants to make. Only relevant if the prompt encourages tool use; for pure text-in/text-out reviews, prompt phrasing keeps things clean and you don't need this.-m <model> — pin a specific model when the user requests one.--output-format stream-json — for streaming JSON events. Use only if the parent flow consumes streamed structured output.Gemini auto-loads two things from the working directory that can contaminate output:
GEMINI.md — analogous to CLAUDE.md. If the cwd has one, it gets loaded as context. For deterministic crossfire, run from a clean directory or a temp dir..gemini/.env — environment overrides. Loaded from cwd up the directory tree, then ~/.gemini/.env. Variables can leak from project-specific configs.If you want a guaranteed-clean Gemini call:
TEMP_DIR=$(mktemp -d)
cd "$TEMP_DIR"
gemini -p "$PROMPT" --output-format text -m flash 2>/dev/null
cd - >/dev/null
rm -rf "$TEMP_DIR"
| Symptom | Likely cause | Action |
|---|---|---|
command not found | Gemini CLI not installed | Install per Setup section |
| Hangs / browser opens | OAuth flow triggered in non-interactive context | Set GEMINI_API_KEY instead of relying on OAuth |
| Exit code 42 | Input error (malformed prompt, empty stdin where one was expected) | Check prompt construction |
| Exit code 53 | Turn limit reached | Shouldn't happen on single-turn -p calls; if it does, the prompt may have triggered tool-use loops |
| Quota exceeded | Free-tier OAuth quota hit | Switch to GEMINI_API_KEY (paid tier) or wait for reset |
Same caveat as the Codex skill: the user's Gemini CLI is likely installed on Windows; Cowork's Bash runs in a Linux sandbox. If the sandbox can't reach the host binary, install Gemini CLI inside the sandbox (npm install -g @google/gemini-cli) and pass GEMINI_API_KEY as an env var so auth survives the ephemeral sandbox.