agentsclimarketplace

Tmux layout

Skill Kanevry/session-orchestrator/skills/tmux-layout

Use this skill when the operator wants a prepared tmux visualization layout for the session's side-channels (STATE.md tail, CI-watch, events.jsonl tail). Renders a 4-pane default layout or debug layout. Read-only side-channel observability — the coordinator chat stays in the operator's original terminal. Trigger phrases: "tmux layout", "split panes for ci watch", "visualize session side-channels", "show me state-md tail and ci".From its SKILL.md

Install
npx -y skills add Kanevry/session-orchestrator --skill tmux-layout

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

6.2 KB, as published. Nobody here has run it

tmux-layout — Operator-Side Visualization Substrate

Status: PROPOSED per ADR-0007 (docs/adr/0007-tmux-visualization-substrate.md). Opt-in skill — NOT default. Project-instruction file resolution: this is CLAUDE.md on Claude Code / Cursor IDE; the equivalent on Codex CLI is AGENTS.md. See skills/_shared/instruction-file-resolution.md.

Purpose

Render a prepared tmux layout for operator-side observability of the session's asynchronous side-channels — STATE.md updates, CI status, events.jsonl wave/gate transitions. NOT a coordinator chat surface, NOT a wave-agent host. The coordinator chat remains in the operator's original terminal, period (per AUQ-001 in .claude/rules/ask-via-tool.md).

When to Use

  • During a long deep-session when you want CI status visible alongside Quality-Gate output without polling glab ci status manually.
  • During /debug Phase 2 hypothesis testing (use --layout debug).
  • Anywhere tail -F .claude/STATE.md + a CI watcher would speed up your loop.

When NOT to Use

  • For wave-agent visualization — wave agents are in-process Agent() calls; no PID, no TTY, no pane to attach.
  • For autopilot multi-story panes — autopilot.jsonl currently shows 11 entries / 8 dry-runs; below the value threshold for a pane-per-story UI.
  • As your coordinator chat surface — that stays in the terminal where you invoked /tmux-layout.

Usage

/tmux-layout                        # default layout (4 panes)
/tmux-layout --layout debug         # debug layout (4 panes, /debug companion)
/tmux-layout --json                 # machine-readable output (no attach)
/tmux-layout --session-name my-ws   # custom tmux session name
/tmux-layout --force                # replace existing session (PSA-003 escape hatch)
/tmux-layout --with-status-pane     # add a 5th pane tailing agent-status telemetry (#565)
/tmux-layout --help                 # full CLI usage

The skill prints a one-line tmux command. Paste it into a SECOND terminal (do not run it where /tmux-layout was invoked). That second terminal becomes the layout. Your original terminal (the coordinator chat) stays where it is.

Default Layout (4 panes; 5 with --with-status-pane)

PaneContentCommand
1Shell (operator scratch — NOT claude)bash (interactive)
2STATE.md tailtail -F <state-dir>/STATE.md
3CI watch (poll-loop wrapper)while true; do clear; glab ci status -R <spec> --output json | jq -r '.jobs[] | ...'; sleep 15; done
4events.jsonl wave/gate filtertail -F .orchestrator/metrics/events.jsonl | jq --unbuffered 'select(.event | test("wave|gate|spiral"))'
5agent-status telemetry (#565, only with --with-status-pane)while true; do clear; jq . .orchestrator/runtime/agent-status-current.json 2>/dev/null || echo ...; sleep 2; done

<state-dir> is resolved via resolveStateDir() from scripts/lib/platform.mjs (.claude/, .codex/, or .cursor/). Pane 3 command is vcs-aware (glab for gitlab, gh pr checks for github, informational echo fallback when no CLI).

Debug Layout (4 panes — --layout debug, depends-on #562)

PaneContentCommand
1Shell (operator scratch)bash (interactive)
2Hypothesis-test runnernpm test -- --watch <scope> (or per-skill-config)
3Debug-artifact tailtail -F .orchestrator/debug/*.md
4Diff-watchwatch -n 2 'git diff --stat | head -30'

Architecture

Three sibling modules under scripts/lib/tmux-layout/:

  • layouts.mjs — renderDefaultLayout(), renderDebugLayout(), detectVcsCommand().
  • vcs-detector.mjs — detectVcsCommand({config, projectRoot}) returns {bin, args, fallback, blocking} per vcs key.
  • tmux-shell.mjs — detectTmuxVersion(), session-collision policy helpers.

Entry point: scripts/tmux-layout.mjs (parseArgs from node:util, dispatcher to layout functions).

PSA-003 Compliance

Session-collision policy: refuse + --force. The skill NEVER kills, overwrites, or modifies a tmux session it did not create unless the operator passes --force explicitly. See .claude/rules/parallel-sessions.md § PSA-003.

AUQ-001 Compliance

The coordinator chat (where AskUserQuestion fires) stays in the operator's ORIGINAL terminal. Pane 1 of the tmux layout is intentionally a scratch shell, NOT a new claude session — there is no second AUQ surface, no decision-authority split. See .claude/rules/ask-via-tool.md § AUQ-001.

Telemetry & Promotion Gate (#563)

This skill emits structured events to .orchestrator/metrics/events.jsonl:

  • tmux-layout.invoked
  • tmux-layout.degraded (tmux missing, version too old, session collision without --force, etc.)
  • tmux-layout.completed (when the user closes the tmux session)

Promotion criteria from opt-in skill to default-recommended in session-start banner: invocation count ≥ 5 across ≥ 3 distinct deep sessions over ≥ 2 calendar weeks, layout-completion rate ≥ 80%, zero AUQ-001 / PSA-003 regressions. See ADR-0007 § Follow-ups.

Troubleshooting

  • tmux not found → install: brew install tmux (macOS) / apt install tmux (Linux). Minimum tmux ≥ 3.0.
  • Session already exists → use --force (acknowledges PSA-003) or --session-name my-other.
  • CI pane shows nothing → glab or gh not installed, or vcs: not set in ## Session Config. Pane will show a clear fallback message.

See Also

  • docs/adr/0007-tmux-visualization-substrate.md — design rationale.
  • skills/_shared/monitor-patterns.md — comparison: tmux-layout vs Monitor vs /loop.
  • skills/debug/SKILL.md — Phase 2 hypothesis testing (use --layout debug as companion).
  • GitLab #561 #562 #563.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most ui components skills give

Counted across 293 of the 305 authors here whose files we hold, read 2026-09-06

  • Start with a --design-system search before designingin 17 of 293, across 15 files
  • Ensure 4.5:1 minimum text contrastin 16 of 293, across 15 files
  • Verify the pre-delivery checklist before delivering UI codein 16 of 293, across 14 files
  • Use SVG icons instead of emojisin 15 of 293, across 14 files
  • Keep touch targets at least 44 pointsin 14 of 293, across 12 files
  • Check page override files before master rulesin 13 of 293, across 11 files
  • Supplement with domain searches as neededin 13 of 293, across 11 files
  • Add cursor-pointer to all clickable elementsin 12 of 293
  • Use CSS variables for themingin 11 of 293, across 7 files
  • Use semantic color tokens, not raw hexin 11 of 293, across 8 files
  • Meet WCAG AA color contrastin 11 of 293, across 7 files
  • Default stack to html-tailwind when unspecifiedin 10 of 293

Said here and by no other author read

  • print a one-line tmux command for the layout
  • paste the command into a second terminal
  • keep the coordinator chat in the original terminal
  • refuse to modify existing tmux sessions without --force
  • use --layout debug for debug hypothesis testing
  • use --session-name to avoid session collisions

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 626,194. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.