feat(background-shell): add persistent tmux session plugin

Adds a background-shell plugin providing the `bgsh` helper: named tmux
sessions that survive across tool calls and SSH disconnects, for work
ordinary tool calls cannot hold — interactive prompts, REPLs, TUIs, and
jobs that must outlive a connection.

The skill description is written as a hard gate: over-triggering is the
primary failure mode, so it redirects to plain Bash for everyday work.

- tty is the default mode (output stays in the pane, cd persists);
  --log is the alternate for one-shot captured payloads
- a local registry keeps remote sessions findable, storing *where to
  look* and never *what is running* — every read verifies against the
  host, and prune refuses to act on an unreachable one (UNSURE != STALE)
- bin/bgsh is on the plugin PATH, so no symlink step is needed
- SKILL.md carries a "why bgsh does it this way" table: each row is a
  real failure whose output was indistinguishable from success

Passes `claude plugin validate` with no warnings; bgsh is shellcheck
clean and bash 3.2 compatible.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
movq
2026-07-28 18:25:21 -05:00
parent 187863fa16
commit dde11f3170
6 changed files with 784 additions and 4 deletions

View File

@@ -13,22 +13,27 @@
{
"name": "genealogy",
"source": "./genealogy",
"description": "Genealogy research methodology GPS evidence evaluation, FAN workflows, research journal, claim promotion, and transcription."
"description": "Genealogy research methodology \u2014 GPS evidence evaluation, FAN workflows, research journal, claim promotion, and transcription."
},
{
"name": "composer",
"source": "./composer",
"description": "Discovery-phase companion that walks a project from \"I want an app that\" to a tree of stories in the issue tracker. Pairs with symphony."
"description": "Discovery-phase companion that walks a project from \"I want an app that\u2026\" to a tree of stories in the issue tracker. Pairs with symphony."
},
{
"name": "symphony",
"source": "./symphony",
"description": "Tracker-agnostic orchestrator daemon polls the issue tracker, dispatches isolated worker agents per issue, reconciles state. Pairs with composer."
"description": "Tracker-agnostic orchestrator daemon \u2014 polls the issue tracker, dispatches isolated worker agents per issue, reconciles state. Pairs with composer."
},
{
"name": "fiction-assistance",
"source": "./fiction-assistance",
"description": "General-purpose fiction-writing guidance and analysis proofreading, consistency and believability, story stats, representation tests, developmental and strategic review, world-building extraction, timeline construction, final-review synthesis. Reports only; never edits."
"description": "General-purpose fiction-writing guidance and analysis \u2014 proofreading, consistency and believability, story stats, representation tests, developmental and strategic review, world-building extraction, timeline construction, final-review synthesis. Reports only; never edits."
},
{
"name": "background-shell",
"source": "./background-shell",
"description": "Persistent named tmux sessions for work ordinary tool calls cannot hold: interactive prompts, REPLs, TUIs, and jobs that must outlive an SSH connection. Ships the bgsh helper plus a registry that keeps remote sessions findable."
}
]
}