AgentSkillsCN

collaborate-gemini

当需要将编码任务委派给Gemini CLI智能代理,或在需要并行执行AI任务时,又或当任务受益于Gemini超过100万条上下文记忆时,此技能可助你高效完成工作。

SKILL.md
--- frontmatter
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

ActionCommand
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 texttmux send-keys -t {right} 'task text'
Send Entertmux send-keys -t {right} Enter
Check outputtmux capture-pane -t {right} -p -S -100
Clear inputtmux send-keys -t {right} Escape Escape
Kill panetmux kill-pane -t {right}
Kill sessiontmux kill-session -t gemini

Target: {right} for split pane, gemini for named session.

Status Markers

Detect Gemini state by grepping capture-pane output:

MarkerState
Type your messageIdle, ready for input
esc to cancelWorking on task
✓ built / ✓ ShellAction completed
Found \d+ errorsBuild failed
error TSTypeScript error
potential loopNeeds intervention (send 2 + Enter)
Waiting for authOAuth 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

MistakeFix
send-keys 'text' Enter in one callEnter doesn't register - send separately
Chaining: send-keys && sleep && captureCommands leak into Gemini input - use separate bash calls
Fixed sleep 60Use polling with status markers instead
Ignoring loop detectionGemini hangs - detect and send 2
Long promptsCreate .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