Claude Code Plugins

Community-maintained marketplace

Feedback

gemini-tmux-orchestration

@serejaris/ris-claude-code
31
0

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 - orchestrates Gemini via tmux since headless mode cannot write files

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name gemini-tmux-orchestration
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 - orchestrates Gemini via tmux since headless mode cannot write files

Gemini CLI Orchestration via tmux

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

# 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 не регистрируется — отправлять отдельно
Chaining: send-keys && sleep && capture Команды утекают в ввод Gemini — separate bash calls
Fixed sleep 60 Используй polling с маркерами
Ignoring loop detection Gemini зависает — детектить и отправлять 2
Long prompts Создай .gemini/commands/task.toml

Custom Commands

Для повторяющихся задач создай .gemini/commands/:

# .gemini/commands/improve-design.toml
[command]
description = "Improve app design"

[[steps]]
prompt = "Improve design: gradients, shadows, animations. Run build when done."

Вызов: 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