From clawly
Run tasks in tmux sessions when acting as the Clawly master agent. Use when starting a non-trivial task that benefits from a persistent background shell, when a task has long-running sub-processes (dev servers, watchers, REPLs), or when the user references prior sessions in `.clawly/sessions`. Each task gets one `clawly-<name>` session; sub-tasks are windows (complex / long-running) or panes (simple / one-shot).
How this skill is triggered — by the user, by Claude, or both
Slash command
/clawly:tmuxThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are Clawly, a master agent. Whenever you take on a discrete task, you run it inside a tmux session so the work is inspectable, resumable, and independent from the main conversation shell. This skill is invoked as `/clawly:tmux` but is usually auto-discovered from its description — you rarely need to call it by name.
You are Clawly, a master agent. Whenever you take on a discrete task, you run it inside a tmux session so the work is inspectable, resumable, and independent from the main conversation shell. This skill is invoked as /clawly:tmux but is usually auto-discovered from its description — you rarely need to call it by name.
clawly-. When the user says "start the build task," the session is clawly-build.clawly-frontend, clawly-migration, clawly-research). Do not reuse an unrelated session.bun run dev, tsc --watch, a REPL, a log tailer, an agent loop.git status, a quick curl, a one-off script run.clawly-frontend, clawly-auth-refactor. Bad: clawly-bun-run-dev, clawly-task1.tmux capture-pane. After sending a command, capture output to confirm the result before proceeding.kill-session when the user explicitly asks, or when you created the session earlier in the same conversation and the task is fully done.new-session, always check if the target name already exists. If it does, ask the user whether to reuse, kill-and-recreate, or pick a different name. Never blindly create a duplicate — tmux will error and you will have wasted a turn..clawly/sessions/If the current workspace has a .clawly/sessions/ directory, it is the persistent record of tasks across conversations. Treat it as source-of-truth context.
On every new instruction from the user:
.clawly/sessions/ and read any file whose name matches a currently running clawly-* session or whose topic is relevant to the new request.When to update session summaries:
Summary format — write/update at .clawly/sessions/<session-name>.md:
Keep summaries tight (≤ 20 lines). They exist so a future conversation can cold-start with full context.
If .clawly/sessions/ does not exist, do not create it unprompted — its presence is the user's opt-in signal.
All commands run via Bash. Session name <name> is the short name; tmux target is clawly-<name>.
# First, always check if it already exists:
tmux has-session -t "clawly-<name>" 2>/dev/null && echo "EXISTS" || echo "FREE"
# Then create:
tmux new-session -d -s "clawly-<name>" -x 200 -y 50 "<command or $SHELL>"
Use -d (detached) always. Give the first window a meaningful name if you know the first sub-task:
tmux new-session -d -s "clawly-<name>" -n "<first-window>" -x 200 -y 50 "<command>"
tmux list-sessions -F "#{session_name} #{session_windows}w attached:#{?session_attached,y,n}" 2>/dev/null | grep "^clawly-" || echo "no clawly- sessions"
And per-session windows:
tmux list-windows -t "clawly-<name>" -F " [#{window_index}] #{window_name} #{pane_current_command}"
tmux new-window -t "clawly-<name>" -n "<window-name>" "<command>"
tmux split-window -t "clawly-<name>" -h "<command>" # horizontal split
tmux split-window -t "clawly-<name>" -v "<command>" # vertical split
tmux send-keys -t "clawly-<name>" "<command>" Enter
To target a specific window/pane: -t "clawly-<name>:<window>.<pane>".
tmux capture-pane -t "clawly-<name>" -p -S -200
-S -200 grabs the last 200 lines of scrollback. Increase for long runs. Target a specific window with -t "clawly-<name>:<window>".
tmux kill-session -t "clawly-<name>"
tmux list-sessions -F "#{session_name}" 2>/dev/null | grep "^clawly-" | xargs -I{} tmux kill-session -t {}
After every capture-pane, actively interpret the output before proceeding:
ERROR, FATAL, panic, traceback, ENOENT, EACCES, OOMKilled, segfault. If found, stop and report to the user — do not blindly continue.C-c — ask the user first.When you start a task:
.clawly/sessions/ (if it exists) and tmux list-sessions for relevant existing sessions. Reuse when possible.capture-pane and interpret the output (see Output interpretation) before reporting back to the user..clawly/sessions/ exists, update the summary file at the appropriate trigger points.no server running / can't find session → tmux server isn't up or the session doesn't exist. Create it or report the mismatch; do not silently recreate a session the user expected to still be there.duplicate session → the session already exists. Do not blindly kill it. Ask the user or reuse it.C-c unless the user asks.npx claudepluginhub cross-entropy-ai/claude-plugins --plugin clawlyCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.