tmux-tdd
Interact with tmux-based TDD environments. Use when running tests in tmux panes, checking test output, parsing test failures, or orchestrating TDD workflows. Works with any language (Rust, Python, JavaScript, Go, etc). Read test output directly from tmux panes.
When & Why to Use This Skill
The tmux-tdd skill empowers Claude to seamlessly orchestrate Test-Driven Development (TDD) workflows within tmux environments. By interacting directly with terminal panes, it enables real-time monitoring of test runners, automated parsing of test failures, and rapid code-fix-verify cycles across any programming language, including Rust, Python, JavaScript, and Go. This skill bridges the gap between code editing and terminal-based test execution, providing a high-efficiency feedback loop for developers.
Use Cases
- Automated TDD Orchestration: Streamline the Red-Green-Refactor cycle by allowing Claude to monitor live test watchers (like cargo watch or jest --watch) and react immediately to failures.
- Multi-Language Test Parsing: Efficiently capture and interpret error logs from various frameworks such as Pytest, Vitest, and Go test directly from the terminal output without manual intervention.
- Headless Environment Debugging: Manage and debug complex test suites in remote or headless server environments through persistent tmux sessions, ensuring stability across different infrastructures.
- Background Process Monitoring: Maintain visibility into long-running test processes in secondary panes while simultaneously performing code modifications in the primary workspace.
| name | tmux-tdd |
|---|---|
| description | Interact with tmux-based TDD environments. Use when running tests in tmux panes, checking test output, parsing test failures, or orchestrating TDD workflows. Works with any language (Rust, Python, JavaScript, Go, etc). Read test output directly from tmux panes. |
tmux TDD Skill
Orchestrate Test-Driven Development in a tmux environment by reading test output directly from panes. Language agnostic.
Environment Layout
┌────────────────┬────────────────┐
│ │ │
│ Pane 0.0 │ Pane 0.1 │
│ Claude Code │ Test Runner │
│ │ │
└────────────────┴────────────────┘
- Pane 0.0: Claude Code (where you are)
- Pane 0.1: Test runner (cargo watch, pytest, jest, go test, etc.)
Instructions
Step 1: Check Current Test Status
Capture output directly from the test pane:
tmux capture-pane -t 0.1 -p -S -50
Options:
-t 0.1: Target pane (test runner)-p: Print to stdout-S -50: Last 50 lines (use-S -for full history)
Step 2: Parse Test Results
Look for pass/fail patterns based on the language:
Rust (cargo test):
test result: ok. 6 passed; 0 failed
test result: FAILED. 4 passed; 2 failed
error[E0425]: cannot find value `x` in this scope
Python (pytest):
6 passed in 0.12s
2 failed, 4 passed in 0.15s
FAILED tests/test_app.py::test_add - AssertionError
E assert 4 == 5
JavaScript (jest/vitest):
Tests: 6 passed, 6 total
Tests: 2 failed, 4 passed, 6 total
FAIL src/app.test.js
✕ should add numbers (5 ms)
Go (go test):
ok mypackage 0.005s
FAIL mypackage 0.005s
--- FAIL: TestAdd (0.00s)
app_test.go:10: expected 5, got 4
Step 3: Make Code Changes
Edit the source files to fix failures. If using a watch mode, tests will automatically re-run.
Step 4: Verify Fix
Wait for tests to re-run, then capture pane again:
tmux capture-pane -t 0.1 -p -S -30
Step 5: Send Commands to Test Pane (if needed)
# Run command in test pane
tmux send-keys -t 0.1 "your-test-command" C-m
# Stop running process
tmux send-keys -t 0.1 C-c
Common Test Commands by Language
| Language | Watch Mode | Single Run |
|---|---|---|
| Rust | cargo watch -x test |
cargo test |
| Python | ptw or pytest-watch |
pytest |
| JavaScript | jest --watch or vitest |
jest or npm test |
| Go | gotestsum --watch |
go test ./... |
| Ruby | guard |
rspec |
Quick Reference
| Task | Command |
|---|---|
| Read test output | tmux capture-pane -t 0.1 -p -S -50 |
| Full history | tmux capture-pane -t 0.1 -p -S - |
| Send command | tmux send-keys -t 0.1 "command" C-m |
| Stop process | tmux send-keys -t 0.1 C-c |
| List panes | tmux list-panes |
TDD Workflow
- RED: Write a failing test, verify it fails via pane capture
- GREEN: Write minimal code to make it pass
- REFACTOR: Clean up while keeping tests green
Always check test status before and after making changes.
Troubleshooting
Empty pane output?
- Test runner may not be running
- Check:
tmux capture-pane -t 0.1 -p -S -5 - Restart the test watcher in pane 0.1
Can't connect to pane?
- Verify tmux session exists:
tmux list-sessions - List panes:
tmux list-panes