Back to skills
SKILL.md
Collaborate Gemini
ASecurityUse when delegating coding tasks to Gemini CLI agent, when you need parallel AI execution, or when tasks benefit from Gemini's 1M+ context window.
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added September 27, 2026
Works with
Security analysis
100/100npx -y skills add David-Li0406/meta-skill-evloving --skill collaborate-gemini --agent claude-codeAre you the author of Collaborate Gemini?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-collaborate-gemini)---
name: collaborate-gemini
description: Use when delegating coding tasks to Gemini CLI agent, when you need parallel AI execution, or when tasks benefit from Gemini's 1M+ context window.
---
# Collaborate with Gemini CLI
## Overview
Gemini CLI in headless mode (`-p`) cannot execute shell commands or write files. Use **tmux send-keys** to control Gemini interactively while monitoring via **capture-pane**.
## Quick Reference
| Action | Command |
|--------|---------|
| Start (split pane) | `tmux split-window -h -d "cd PROJECT && gemini --yolo"` |
| Start (session) | `tmux new-session -d -s gemini -x 200 -y 50` |
| Send text | `tmux send-keys -t {right} 'task text'` |
| Send Enter | `tmux send-keys -t {right} Enter` |
| Check output | `tmux capture-pane -t {right} -p -S -100` |
| Clear input | `tmux send-keys -t {right} Escape Escape` |
| Kill pane | `tmux kill-pane -t {right}` |
| Kill session | `tmux kill-session -t gemini` |
Target: `{right}` for split pane, `gemini` for named session.
## Status Markers
Detect Gemini state by grepping capture-pane output:
| Marker | State |
|--------|-------|
| `Type your message` | Idle, ready for input |
| `esc to cancel` | Working on task |
| `✓ built` / `✓ Shell` | Action completed |
| `Found \d+ errors` | Build failed |
| `error TS` | TypeScript error |
| `potential loop` | Needs intervention (send `2` + Enter) |
| `Waiting for auth` | OAuth expired |
## Workflow
```bash
# 1. Start Gemini
tmux split-window -h -d "cd ~/project && gemini --yolo"
sleep 5
# 2. Send task (TWO separate calls - critical!)
tmux send-keys -t {right} 'Build the app per PLAN.md'
tmux send-keys -t {right} Enter
# 3. Poll for completion
while true; do
output=$(tmux capture-pane -t {right} -p -S -50)
# Check if idle (task done)
if echo "$output" | grep -q "Type your message"; then
break
fi
# Handle loop detection
if echo "$output" | grep -q "potential loop"; then
tmux send-keys -t {right} '2'
tmux send-keys -t {right} Enter
fi
sleep 10
done
# 4. Check result
tmux capture-pane -t {right} -p -S -200 | tail -100
```
## Common Mistakes
| Mistake | Fix |
|---------|-----|
| `send-keys 'text' Enter` in one call | Enter doesn't register - send separately |
| Chaining: `send-keys && sleep && capture` | Commands leak into Gemini input - use separate bash calls |
| Fixed `sleep 60` | Use polling with status markers instead |
| Ignoring loop detection | Gemini hangs - detect and send `2` |
| Long prompts | Create `.gemini/commands/task.toml` |
## Custom Commands
For repeating tasks, create `.gemini/commands/`:
```toml
# .gemini/commands/improve-design.toml
[command]
description = "Improve app design"
[[steps]]
prompt = "Improve design: gradients, shadows, animations. Run build when done."
```
Call: `tmux send-keys -t {right} '/improve-design'` + Enter
## When NOT to Use
- Read-only analysis → `gemini -p "analyze" --output-format json`
- Simple questions → direct API call
- Need deterministic output → headless with JSON schema
Attribution
Comments
Loading comments…