Install
$ agentstack add skill-dnouri-ai-config-tmux ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README — it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
tmux for Long-Running Processes
Use tmux for any process that needs to run independently (dev servers, background tasks, long-running scripts). Do not use nohup, &, or other backgrounding techniques with the bash tool.
Start a Process
tmux new-session -d -s ' > /tmp/pi-tmux-.log 2>&1'
Naming: Use descriptive names like dev-server, build-kernel, test-run.
Examples:
# Simple command
tmux new-session -d -s dev-server 'npm run dev > /tmp/pi-tmux-dev-server.log 2>&1'
# Compound commands - use braces to capture all output
tmux new-session -d -s build '{ npm install && npm run build; } > /tmp/pi-tmux-build.log 2>&1'
User Visibility (Required)
Immediately after starting a tmux session, always print copy/paste commands so the user can monitor it:
# Live monitoring (interactive)
tmux attach -t
# detach with: Ctrl+b d
# One-shot capture (good for quick checks)
tmux capture-pane -p -J -t -S -200
# Stream redirected logs (if configured)
tail -f /tmp/pi-tmux-.log
Do not assume the user remembers how to inspect the session. Always provide these commands near the action.
List Sessions
tmux ls
Read Output
For long-running processes, use log files (these persist even after the process exits):
# Read with the read tool
/tmp/pi-tmux-.log
# Or tail for recent output
tail -100 /tmp/pi-tmux-.log
For interactive tools (REPLs, prompts), use joined output plus explicit history depth:
# Preferred default: clean output from the last 200 lines
tmux capture-pane -p -J -t -S -200
# Increase history depth when debugging harder failures
tmux capture-pane -p -J -t -S -1000
Use -J to reduce wrapped-line artifacts and -S -N to make capture scope explicit/repeatable. Allow ~0.5 seconds after starting a session before reading output.
Stop a Session
tmux kill-session -t
Send Input (Safe Patterns)
For interactive sessions, prefer literal sends so text is passed exactly as intended:
# Send literal text as-is
tmux send-keys -t -l -- "input text"
# press Enter separately
tmux send-keys -t Enter
When text includes $, quotes, or shell metacharacters, use shell quoting so your local shell does not rewrite the payload:
tmux send-keys -t -l -- 'python3 -c "print(\"$HOME should stay literal\")"'
tmux send-keys -t Enter
# Alternative for explicit escapes/newlines
tmux send-keys -t -l -- $'line1\nline2'
For control/navigation keys, send key names (not escape sequences):
tmux send-keys -t C-c
tmux send-keys -t C-d
tmux send-keys -t Escape
tmux send-keys -t Up
tmux send-keys -t Down
Rule of thumb: use -l for literal text, key names for control keys, and Enter as a separate argument (not "text\n").
Wait for Prompt / Synchronize
Interactive CLIs are race-prone. Before sending follow-up input, wait for a prompt or completion marker.
# Wait for a Python prompt (regex)
./scripts/wait-for-text.sh -t :0.0 -p '^>>> ' -T 15 -l 4000
# Wait for an exact completion message
./scripts/wait-for-text.sh -t :0.0 -p 'Server started' -F -T 30
Use this helper whenever command ordering matters (REPLs, debuggers, installers, login flows). On timeout, the script prints recent pane output to stderr to help debug what went wrong.
Rules
- Always redirect output to
/tmp/pi-tmux-.logso you can read it later - Use descriptive session names - they're easier to manage than PIDs
- Check
tmux lsbefore creating sessions to avoid name conflicts - Always print user monitor commands right after starting a session (
attach,capture-pane, and optionallytail -f) - Prefer safe input sending: literal text with
send-keys -l --, then sendEnter/control keys separately - Prefer explicit pane capture for interactive output:
capture-pane -p -J -S -N(start with-S -200) - Synchronize interactive flows with
./scripts/wait-for-text.shbefore sending follow-up commands - Always clean up: kill sessions without asking; remove log files at your own discretion
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: dnouri
- Source: dnouri/ai-config
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.