pcx-wave/gemini-skill/gemini-skill
Claude Code and agent skill by pcx-wave/gemini-skill
- community
Checking that the SKILL.md file is still in the repository.
Delegate a coding task to Gemini CLI and supervise the result via git diff. Trigger: /gemini <instruction>. Claude orchestrates, Gemini codes. Also handles /gemini-report [--since N] [--project NAME] [--fails] — token/cost/failure report.
Install
npx vskill@latest install pcx-wave/gemini-skill/gemini-skillSKILL.md
/geminion | /geminioff | /geministatus
Toggle auto-delegate mode — Gemini automatically handles all coding tasks without requiring /gemini each time.
| Command | Action | |
|---|---|---|
/geminion | touch ~/.local/share/gemini-auto.flag → confirm "Auto-gemini ON" | |
/geminioff | rm -f ~/.local/share/gemini-auto.flag → confirm "Auto-gemini OFF" | |
/geministatus | check ~/.local/share/gemini-auto.flag → report ON or OFF |
Run the bash command, print one confirmation line, and stop.
/gemini-report
If the user invokes /gemini-report, run ~/tools/delegate-report with any flags extracted from the arguments, display output verbatim, and stop.
| User says | Flag | |
|---|---|---|
| "last 7 days", "7d" | --since 7 | |
| "last 30 days", "30d" | --since 30 | |
| "project foo" | --project foo | |
| "only failures", "fails", "bugs" | --fails | |
| (nothing) | (no flags — full report) |
Gemini Orchestrator
When the user invokes /gemini <instruction>, Claude delegates the implementation to Gemini CLI via its headless mode (-p/--prompt), monitors in real time, and reports.
Known Limits
Hard constraints of the Gemini CLI — not config options.
1. No --max-turns flag
Vibe lets you cap turn count (--max-turns 8). Gemini CLI has no equivalent. Timeout is the only runaway-control lever. A stuck run burns the full timeout before dying. Set timeouts conservatively and decompose tasks.
2. High context overhead (~900–10k tokens before your task starts)
Gemini CLI loads a large default system prompt on every run:
- Simple prompt → ~883 tokens before the model responds
- File-read task → ~10k tokens of context before first tool call
This means:
- Each run costs more than token-naive estimates suggest
- Short timeouts can expire during context-loading on a slow connection
- The overhead is mostly cached on repeated calls to the same model in a session
3. 503 backoff eats your timeout silently
On the free-tier Gemini API, the model is frequently "under high demand." The CLI auto-retries with exponential backoff — observed taking 60–90s before work even begins. This is invisible until you see the first tool call.
Always add 90s buffer to your "real work" estimate:
4. No --agent flag
Gemini CLI is single-mode only. There is no way to switch to a review-only or plan-only agent. Use plan mode (--approval-mode plan) as a partial substitute.
5. No --workdir flag
The delegate script handles this by cd-ing into the workdir before running.
6. No pseudo-TTY needed (positive difference vs Vibe)
Gemini CLI works fine in a plain pipe — no script -q -c wrapper needed.
7. Orchestration chain has 5 independent failure points
The delegation pipeline is: Gemini CLI -> plain pipe -> Python stream parser -> result event tokens -> git diff -> JSON log. Each link can fail independently:
| Link | Failure mode | Symptom | |
|---|---|---|---|
| Gemini CLI | Auth expired, quota hit, 503 | Immediate exit or silent 90s hang | |
| Stream parser | Gemini changes its JSON event schema | Tool calls not detected, token count 0 | |
| result event | Missing on timeout or crash | Tokens logged as 0, cost not computed | |
| git diff | Not a git repo, or Gemini committed mid-run | Wrong file count | |
| JSON log | ~/.local/share/ not writable | Silent log skip |
When a run produces unexpected results, check these links top to bottom.
Step 1 — Detect workdir
git rev-parse --show-toplevelin the current directory.- If ambiguous or no git repo → ask with
AskUserQuestion.
Step 2 — Choose mode
| Mode | Flag | Writes files? | Use for | |
|---|---|---|---|---|
impl | --yolo | Yes | Implementing changes (default) | |
plan | --approval-mode plan | No | Safe exploration, reading, planning |
Use plan mode when you want Gemini to read the codebase and report back without touching any files. Proposed writes appear as [plan-write] and are blocked.
Step 3 — Decompose the task
Critical rule: Gemini works best on atomic, focused tasks. Given the context overhead and 503 risk, keep tasks smaller than you might expect.
Decide whether to delegate at all:
gemini-delegate has real overhead (503 backoff, context load, stream parser, git diff, JSON log). For trivial changes the setup cost exceeds the savings.
| Signal | Action | |
|---|---|---|
| 1 file, ≤ ~10 lines to change, location already known | Do it directly — don't delegate | |
| 1 file, logic non-trivial OR location unclear | Delegate | |
| 2–3 files, single objective | Delegate | |
| >3 files OR multi-step logic OR migrations | Delegate, broken into sub-tasks |
The sweet spot is medium to heavy tasks.
| Size | Definition | Approach | |
|---|---|---|---|
| Trivial | 1 file, change is obvious and located | Skip delegation — edit directly | |
| Simple | 1 file, non-trivial logic or unknown location | 1 gemini call, impl mode | |
| Medium | 2–3 related files, 1 goal | 1 gemini call with structured prompt | |
| Complex | >3 files OR business logic OR DB migrations | Decompose |
Decomposition for complex tasks:
→ Check git diff between sub-tasks before launching the next.
Step 4 — Write the Gemini prompt
Gemini has no context from the parent conversation. The prompt must be self-contained.
Structure of a good Gemini prompt:
Formulation rules:
- One task per prompt — never "also do X and Y"
- Name the exact files to modify
- Include a grep-based verification criterion (not a file re-read)
- Language: English (better Gemini performance)
- Keep prompts under ~500 words — longer prompts increase context overhead
Prompt adaptations:
- Any task that defines or calls a specific function: include the exact signature —
def validate(data: dict) -> tuple[bool, list[str]]:. - No fixed signature, but conventions matter: point at the file to read first ("read app.py, follow its route/jsonify style") instead — don't do both, they're substitutes.
Verification — always use grep, not file re-read:
A grep is unambiguous. A file re-read can miss content outside the context window.
Examples:
❌ Bad (too vague, too wide):
✅ Good (atomic, verifiable):
Step 5 — Launch Gemini
| Argument | Default | Notes | |
|---|---|---|---|
workdir | — | Absolute path, must exist | |
prompt | — | Self-contained task description | |
timeout-secs | 180 | Budget: work + 90s backoff + 30s context load | |
mode | impl | impl (writes ok) or plan (read-only) |
Recommended timeouts:
- Plan/explore only:
120 - Simple change (1 file):
180 - Medium change (2–3 files):
270 - Hard ceiling:
300— decompose instead
Examples:
Step 6 — Supervise in real time
The script prints live:
In plan mode, proposed writes are blocked and shown as [plan-write]:
Event types emitted by the parser:
| Event | Meaning | |
|---|---|---|
[init] | Session started, model name shown | |
[read] | File read by Gemini | |
[write] | File written (impl mode) | |
[plan-write] | Write proposed but blocked (plan mode) | |
[search] | Grep / search tool called | |
[shell] | Shell command executed | |
[gemini] | Assistant text response | |
[WARN] | Tool error detected |
Gemini never commits. All changes are left unstaged — git checkout . reverts everything if needed.
Red flags to act on immediately:
[WARN]→ Gemini hit a tool errorexit: 1or non-zero → Gemini failed or left verification incomplete- No
[write]after 120s → looping or task too vague === SYNTAX ERRORS ===→ fix before committing=== GEMINI TIMEOUT ===→ check what was done before retrying- Same file read 5+ times → Gemini is circling; run likely lost
Common issues and workarounds:
| Issue | Cause | Fix | |
|---|---|---|---|
| Gemini 503 on startup | High API demand (free tier) | Wait 30s, retry; add 90s to timeout | |
| No tool calls, empty response | Model overloaded or prompt too long | Shorten prompt, retry | |
| Timeout with no writes | Stuck in 503 backoff | Retry off-peak or increase timeout to 300 | |
| File not modified despite "done" | Gemini described but didn't write | Add "make the edit now, do not describe it" | |
| Context load takes 30s | Large system prompt on slow connection | Normal — budget for it | |
[plan-write] but no change | Expected in plan mode | Switch to impl mode to execute |
Step 7 — Iteration
- Max 3 attempts per sub-task before escalating to the user.
- Between attempts, read the git diff to avoid doubling partial work.
- If Gemini did 50% and timed out: complete the rest manually rather than relaunching.
- If 503s are eating all attempts: pause and retry in 10+ minutes.
Step 7b — Log manual completion
When you finish a task manually (after Gemini failures), run this:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingSKILL.md
Popularity
- Repository stars
- 12
- 7-day trend score
- 13
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/pcx-wave/gemini-skill/gemini-skill)