skills/skill-tmux-session/SKILL.md
Create and manage grouped tmux sessions where each session focuses on its own window and its own folder. Knows workspace layout, naming conventions, and both multi-project and multi-agent patterns.
npx skillsauth add hasna/skills skill-tmux-sessionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when you need to add a window and session to an existing group, or create a new group from scratch. These are grouped tmux sessions where every named session locks onto its own window so tmux attach -t <name> lands directly in the intended project or tool.
~/workspace/ Linux (spark01, spark02) — always lowercase
~/Workspace/ macOS (apple01) — always capital W
[workspace]/
└── [division]/
└── [area]/
└── [area][status]/
└── [prefix]-[name]/
Examples:
workspace/hasna/opensource/opensourcedev/open-todos
workspace/hasna/opensource/opensourcedev/open-conversations
workspace/hasnaxyz/agent/agentdev/agent-claude
workspace/hasnaxyz/service/servicedev/service-chat
workspace/hasnastudio/hasnastudio-alumia/platform/platform-alumia
workspace/hasnaxyz/internalapp/iapp-takumi
Local tools live under ~/local/local-[name]/.
tmux attach -t open-economy should land in the open-economy window without manual switching.| Work type | Source session | Session/window naming |
|-----------|----------------|-----------------------|
| Multiple OSS repos | opensourcemaintain | open-[name] |
| Multiple agent repos | agentdev | agent-[name] |
| Multiple local tools | local | local-[name] |
| Multiple workers on one project | project name | [project]-01, [project]-02, ... |
Rule: tmux groups live at the area/team level, not the individual repo level.
SOURCE="opensourcemaintain"
NAME="open-economy"
DIR="$HOME/workspace/hasna/opensource/opensourcedev/open-economy"
tmux new-window -t "$SOURCE" -n "$NAME" -c "$DIR"
IDX=$(tmux list-windows -t "$SOURCE" -F "#{window_index}:#{window_name}" | grep ":${NAME}$" | cut -d: -f1)
tmux new-session -d -s "$NAME" -t "$SOURCE"
tmux select-window -t "${NAME}:${IDX}"
SOURCE="opensourcemaintain"
BASE="$HOME/workspace/hasna/opensource/opensourcedev"
WINDOWS=(
"open-todos:$BASE/open-todos"
"open-conversations:$BASE/open-conversations"
"open-mementos:$BASE/open-mementos"
)
tmux new-session -d -s "$SOURCE" -n "open-todos" -c "$BASE/open-todos"
for entry in "${WINDOWS[@]:1}"; do
tmux new-window -t "$SOURCE" -n "$(echo "$entry" | cut -d: -f1)" -c "$(echo "$entry" | cut -d: -f2)"
done
for entry in "${WINDOWS[@]}"; do
name=$(echo "$entry" | cut -d: -f1)
idx=$(tmux list-windows -t "$SOURCE" -F "#{window_index}:#{window_name}" | grep ":${name}$" | cut -d: -f1)
tmux new-session -d -s "$name" -t "$SOURCE"
tmux select-window -t "${name}:${idx}"
done
open-[name]agent-[name]service-[name]local-[name][project]-01..NAlways use the full prefixed name for both the window name and the session name.
tmux display-message -t open-economy -p "#{window_index}:#{window_name} @ #{pane_current_path}"
tmux list-sessions | grep "(group opensourcemaintain)"
tmux list-panes -a -F "#{session_name}:#{window_name} dead=#{pane_dead}" | grep "dead=1"
testing
Merge a GitHub pull request, merge when green, use a merge queue, or decide whether a pull request is mergeable. Use only for explicit merge intent, not ordinary review.
development
Generate premium performance audit reports for web apps, APIs, or SaaS surfaces with metrics, findings, budgets, remediation plans, and manifest metadata.
data-ai
Generate premium customer feedback reports from reviews, support tickets, surveys, call notes, or raw feedback with clusters, sentiment, root causes, roadmap recommendations, evidence, and manifest metadata.
development
Generate high-quality PDF documents from markdown, HTML, or templates