๐ŸŽฏ

iterm2-driver

๐ŸŽฏSkill

from indrasvat/claude-code-skills

VibeIndex|
What it does

Drives iTerm2 programmatically to automate terminal tasks, run tests, inject commands, and interact with CLI/TUI applications using Python.

๐Ÿ“ฆ

Part of

indrasvat/claude-code-skills(4 items)

iterm2-driver

Installation

Add MarketplaceAdd marketplace to Claude Code
/plugin marketplace add indrasvat/claude-code-skills
Install PluginInstall plugin from marketplace
/plugin install indrasvat-skills@indrasvat-skills
uv runRun with uv
uv run 01-basic-tab.py
uv runRun with uv
uv run 02-dev-layout.py
Install PluginInstall plugin from marketplace
/plugin uninstall indrasvat-skills

+ 1 more commands

๐Ÿ“– Extracted from docs: indrasvat/claude-code-skills
2Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

Drive iTerm2 programmatically using Python scripts to automate terminal tasks, run tests, or manage sessions. Use when the user needs to test TUIs, CLIs, terminal apps, terminal automation, interactive terminal testing, terminal UI, command-line interface automation, REPL automation, screen monitoring, or terminal screenshots. Supports iTerm2 and iterm automation.

Overview

# iTerm2 Driver Skill

This skill enables you to fully control the iTerm2 terminal emulator using its Python API. You can create windows, tabs, and splits, inject commands, read screen content, and interact with running applications (CLI/TUI/REPL).

CRITICAL: Script Format

Every Python script MUST use uv with inline metadata:

```python

# /// script

# requires-python = ">=3.14"

# dependencies = [

# "iterm2",

# "pyobjc",

# ]

# ///

```

For screenshots, add "pyobjc-framework-Quartz" to dependencies.

Execution: uv run script_name.py

CRITICAL: Docstring Planning

Every script MUST begin with a comprehensive docstring covering: Tests, Verification Strategy, Screenshots, Key Bindings, and Usage. See examples/00-comprehensive-template.py for the canonical format.

Core Concepts

  • Connection: iterm2.run_until_complete(main) for standalone scripts
  • Hierarchy: App -> Window -> Tab -> Session
  • Key Methods:

- session.async_send_text("command\n"): Send input

- session.async_get_screen_contents(): Read screen

- session.async_split_pane(vertical=True/False): Create splits

- session.async_close(): Close session

Quick Reference

| Task | Code |

|------|------|

| Get app | app = await iterm2.async_get_app(connection) |

| Get window | window = app.current_terminal_window |

| New tab | tab = await window.async_create_tab() |

| Get session | session = tab.current_session |

| Send text | await session.async_send_text("ls\n") |

| Read screen | screen = await session.async_get_screen_contents() |

| Get line | screen.line(i).string |

| Ctrl+C | await session.async_send_text("\x03") |

| Enter (TUI) | await session.async_send_text("\r") |

CRITICAL: Multi-Level Cleanup

Always use try-except-finally with multi-level cleanup:

```python

try:

# Test logic

except Exception as e:

print(f"ERROR: {e}")

raise

finally:

await session.async_send_text("\x03") # Ctrl+C

await asyncio.sleep(0.2)

await session.async_send_text("q") # TUI quit

await asyncio.sleep(0.2)

await session.async_send_text("exit\n")

await asyncio.sleep(0.2)

await session.async_close()

```

CRITICAL: TUI Layout Verification

TUI elements (borders, modals, status bars) frequently misalign. Always verify layout integrity.

Common issues:

  • Box corners not connected to edges (โ•ญ not followed by โ”€)
  • Help modals cut off at screen edges
  • Status bars with gaps or truncated content

Quick check pattern:

```python

BOX_CORNERS = 'โ”Œโ”โ””โ”˜โ•ญโ•ฎโ•ฐโ•ฏโ•”โ•—โ•šโ•'

BOX_HORIZONTAL = 'โ”€โ•โ”'

# Check corner connectivity

for j, char in enumerate(line):

if char in 'โ”Œโ•ญโ•”' and j + 1 < len(line) and line[j+1] not in BOX_HORIZONTAL:

print(f"LAYOUT ERROR: Corner not connected at col {j}")

```

See references/verification-patterns.md for complete layout verification helpers.

Screenshot Capture (Quartz)

Use pyobjc-framework-Quartz for window-targeted screenshots (not full screen). The pattern uses CGWindowListCopyWindowInfo to find the iTerm2 window ID, then screencapture -l . See examples/00-comprehensive-template.py or references/templates.md for complete implementation.

Test Reporting

Track results with a results dict containing passed, failed, and tests list. Use log_result(name, status, details) for each test and print_summary() to show final counts and return exit code. See references/reporting.md for complete patterns including JSON/JUnit export.

Special Keys Reference

| Key | Code |

|-----|------|

| Enter | \r (prefer over \n in TUIs) |

| Esc | \x1b |

| Ctrl+C | \x03 |

| Ctrl+X | \x18 |

| Up Arrow | \x1b[A |

| Down Arrow | \x1b[B |

Guidelines

  1. Always use uv run - never suggest running python directly
  2. Check window exists - if window is not None: before operations
  3. Use \r for Enter in TUIs - safer than \n for prompts
  4. Dump screen on failure - always show what went wrong
  5. Track resources - close all created sessions in finally block
  6. Verify layout - check box-drawing characters connect properly

Script Storage

| Scope | Location |

|-------|----------|

| Project-specific | ./.claude/automations/{script}.py |

| General utility | ~/.claude/automations/{script}.py |

Use descriptive names: watch_build_logs.py, drive_k9s_debug.py

Examples & References

Examples (examples/ directory):

  • 00-comprehensive-template.py - Complete template with all patterns
  • 01-basic-tab.py - Simple tab creation
  • 02-dev-layout.py - Multi-pane layout
  • 03-repl-driver.py - REPL automation with verification
  • 04-nano-automation.py - TUI editor with cleanup
  • 05-screen-monitor.py - ScreenStreamer for real-time monitoring
  • 06-environment-vars.py - Environment variable handling
  • 07-cleanup-sessions.py - Session cleanup patterns
  • 08-badge-control.py - Badge and tab control
  • 09-special-keys.py - Special key sequences
  • 10-session-reuse.py - Session reuse patterns
  • 11-layout-verification.py - TUI layout alignment checks

References (references/ directory):

  • templates.md - Complete copy-paste script templates
  • verification-patterns.md - All verification helpers including layout checks
  • reporting.md - Test reporting patterns, JSON/JUnit export

Links

  • [iTerm2 Python API](https://iterm2.com/python-api/)
  • [iTerm2 Scripting Tutorial](https://iterm2.com/python-api/tutorial/index.html)
  • [UV Documentation](https://github.com/astral-sh/uv)