pedreaspolsro

Satchel — Development skill for Claude Code

Development community

Launcher and window manager for terminal windows — juggle many Claude Code sessions across accounts, or any shell.

How to install Satchel

This entry records only its repository, not the path inside it, so there is no exact command to give. Open pedreaspolsro/satchel and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Satchel does

Launcher and window manager for terminal windows — juggle many Claude Code sessions across accounts, or any shell. Group by account, see live status, get pinged when one needs you, dock as a taskbar strip. Windows.

Alternatives in Development

  • Tmux Claude Hatch — tmux plugin that runs Claude Code sessions in popups per project directory, with an fzf picker showing each se 381 ★
  • Tmux Claude Session Manager — Run many Claude Code sessions across your projects, each in its own tmux session — then list them, see which a 380 ★
  • Build.mjs 使用说明 — 这是 Claude Config Manager 的 Node.js 构建脚本,提供了比原生 shell 脚本更好的跨平台支持和更多功能 254 ★

README

Satchel

A launcher + window manager for terminal windows. Built for juggling many **Claude Code** sessions across several accounts, usable for any shell.

Satchel does **not** host terminals. Every session stays a normal terminal window (git-bash / mintty on Windows); Satchel launches them with the right environment, keeps them in one list grouped by tabs, shows what each one is doing, and lets you focus / tile / minimize them.

![Satchel — the panel, grouping sessions by account with live status and a "needs you" alert](docs/screenshot.png)

Sessions above are illustrative. Satchel groups your real terminals by account (e.g. personal vs. work), shows each one's live status, and flags the ones waiting on you.

How it works

  • Profiles (~/.satchel/config.json) = environment + folder + command + group. On first run Satchel detects your Claude config dirs (~/.claude, ~/.claude-) and creates one profile per account (CLAUDE_CONFIG_DIR set accordingly) plus a plain Shell profile.
  • Launch spawns the terminal with that environment and remembers the process. Adopt picks up terminal windows you opened yourself (anything in adoptExecutables).
  • Status comes from the window title. Claude Code rewrites it: ✳ topic when idle, ◐ ◓ ◑ ◒ while working. A session that goes working → idle while you are elsewhere is flagged needs you (row highlight + tab badge + desktop notification) until you focus it.
  • Hooks (optional, precise): a Claude Code hook script reports Stop / Notification / UserPromptSubmit events, so permission prompts and finished tasks light up immediately.

Architecture: platform-independent core (`src/main/sessions.js`, config, hooks) + one **window backend** per OS (`src/main/backends/`) + **terminal adapters** (`src/main/terminals/`).

Backend Status
win32 (koffi → user32, no native build) working
linux (wmctrl + xdotool, X11 only) experimental, untested; status-onl