bip-conductor-recover
Recover bip-conductor fleet Claude sessions after a host reboot — replay a planned-reboot manifest if one exists, else find the killed sessions by scanning…
Skill by matsen
Chalk Labs
Need help deploying bip-conductor-recover?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/matsen-bip-conductor-recover
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/bip-conductor-recover
Tools it pre-approves 2
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash,Read
What's inside
- Skill name
bip-conductor-recover- Description
- Recover bip-conductor fleet Claude sessions after a host reboot — replay a planned-reboot manifest if one exists, else find the killed sessions by scanning jsonl, label them, and resume each into a tmux window. Use when a box running a bip-conductor fleet rebooted and the tmux sessions are gone.
- License
- MIT
- Allowed tools
- Bash,, Read
- Instructions
- 162 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Files (2)
- SKILL.md
- epic-recover
SKILL.md (first lines)
# /bip-conductor-recover
A reboot of a host running a bip-conductor fleet kills the tmux server and every `claude` process at once.
The clones, their `.epic-status.json`/`.epic-worklog.md`, and the full per-session `~/.claude/projects/*/<id>.jsonl` conversations all survive on disk, so the sessions are resumable via `claude --dangerously-skip-permissions --resume <id>`.
This skill finds those sessions, labels them in human terms, and resumes the ones you pick into tmux windows.
The deterministic engine is the bundled `epic-recover` shell helper; this skill is the brain that turns its raw output into labeled choices.
Run it **on the box that rebooted** — that is where the tmux, jsonl, and clones live.
## Usage
```
/bip-conductor-recover [project]
```
`project` is a path to a bip-conductor project's **main clone** (the dir holding `.epic-config.json`), or its basename.
Defaults to the current directory.
## The bundled helper
This skill ships the `epic-recover` shell helper next to `SKILL.md` — no separate install.
At the start of the run, set `HELPER` to its absolute path (this skill's base directory, given at invocation, + `/epic-recover`) and use `"$HELPER"` in every command below:
```bash
HELPER="<this-skill-dir>/epic-recover"
```
It needs GNU `date` (or `gdate`), `stat`, bash ≥ 4, and `jq`: it runs on Linux out of the box, and on macOS with `brew install coreutils bash`.
It exits 2 with guidance if a prerequisite is missing.
Start tmux the usual way first (e.g. `eval $(keychain --eval id_rsa) && tmux`) so the server holds your ssh-agent; windows the helper creates inherit that env.
## Two recovery paths
If the reboot was **planned** and `/bip-conductor-prepare-reboot` parked the host first, a host-wide manifest at `~/.epic-recover/manifest.json` records every session/window with its exact `session_id`.
Replaying it is deterministic and lossless — prefer it.
Otherwise fall back to the jsonl **scan** below, which infers the live-at-reboot set from file mtimes.
### Step 0: Check for a planned-reboot manifest
```bash
"$HELPER" --manifest-status
```
- **Exit 0 (`VALID …`)** — a manifest exists, was parked *before* the running tmux server started (a reboot or a tmux restart), and is not yet consumed.
Use the **manifest path** (Step M) and skip the scan entirely.
- **Exit 1 (`none` / `stale` / `invalid`)** — no usable manifest (none written, parked *after* the tmux server started, already consumed, or unparseable).
Fall through to the **scan path** (Step 1).
This is project-specific, so `cd` to the project's main clone first.
### Step M: Replay the manifest
```bash
"$HELPER" --manifest-list # TSV: session, index, window, cwd, session_id, method, confidence, issue, candidates, pane
```
Present the plan grouped by session (real names, windows in order).
Most windows resume straight to their recorded id.
For any window with `confidence=ambiguous`, show its `candidates` and **ask the user which id to resume** (or to leave it a plain shell) — do not guess.
Then replay:
```bash
"$HELPER" --manifest-resume \
["<session>:<index>[.<pane>]=<chosen-id>" ...] \ # one per ambiguous pane the user resolved
["<session>:<index>=skip" ...] # leave that window a plain shell
```
This rebuilds **every** session by its real name with windows in order, split windows with their saved pane layout — Claude panes `--resume`'d to their ids, shell panes as bare shells — and reports "(from manifest)".
Ambiguous windows not given an explicit pick are left as plain shells.
On success it stamps the manifest consumed (renames it `manifest.<restart>.done`) so a later *unplanned* reboot does not replay a stale park.
Then nudge resumed workers per **Step 5**.
## Scan path (no usable manifest)
### Step 1: Enumerate the killed sessions
From the project's main clone, run the helper's list mode:
```bash
cd <project-main-clone>
"$HELPER" --list
```
This emits one TSV row per Claude session whose cwd is the main clone **or any worker clone** and whose jsonl was active in the window before the last reboot (default 36h; `EPIC_RECOVER_SINCE_HOURS` to widen).
Columns: `last_active clone branch issue phase session first_prompt`.
There is intentionally **no git-branch filter** — a worker clone often returns to `main` while its conversation continues, and the main clone hosts several concurrent sessions (conductor, planning, topic coordination).
### Step 2: Label each session
`first_prompt` is often spawn-prompt boilerplate ("IMPORTANT: Before doing any work…", "Caveat: The messages below…", a ralph-loop preamble) rather than the topic.
When it is, peek deeper to name the session — read the first human-authored message past the preamble:
```bash
f=~/.claude/projects/$(printf '%s' "<clone-cwd>" | sed 's#/#-#g')/<session-id>*.jsonl
jq -rs '[.[]|select(.type=="user")|.message.content
| if type=="string" then . elif type=="array" then (.[]|select(.type=="text")|.text) else empty end]
| map(select(test("tool_result|tool_use_id|^Caveat:|^IMPORTANT: Before")|not))
| .[0:3] | .[]' "$f" | head -c 600
```
Turn each row into a short human label, e.g. `#1481 → clade-matched ASR parity`, `pcp-pipeline #52 follow-ups`, `coordinate-pca`, `DASM planning`.
Note duplicates: a clone may have several sessions across the day; the newest is usually the one that was live at reboot.
### Step 3: Present the choices and confirm
Show a compact labeled table (last-active, clone, label, short session-id) sorted newest first.
Recommend the live-at-reboot set (newest per clone, plus the distinct main-clone sessions) but let the user choose.
Always offer an explicit **Recover all** option alongside the per-session picks (and "Recommended set" / "Cancel"); when the user picks **Recover all**, pass *every* listed session-id to `--resume` in one call.
**Do not spawn anything before the user confirms which sessions to resume.**
### Step 4: Resume the chosen sessions
Pass the selected session-ids to the helper.
Run this from inside the project's tmux session so windows are added to it (the helper detects `$TMUX`):
```bash
"$HELPER" --resume <id1> <id2> ...
```From matsen/bipartite, MIT.
More from matsen/bipartite
- 0.652score
bip-review-post
matsen
Post a review window's findings as the user's GitHub review — approve unless the user already has, distill _ignore/REVIEW-p<N>.md into a comment, fact-check…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-talk
matsen
Cold-start for a talks session — the live layer of a project.
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-ms-math
matsen
Revise the mathematics of a TeX manuscript as a series of small, separately checkable commits — proofs in proof blocks, duplicate proofs cut, long paragraphs…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-remove-metaspeak
matsen
Cut what does not earn its place out of a document or PR body — internal dialogue, meta-commentary, and whole passages the document itself undercuts — while…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-spawn-resume
matsen
Cold-start into a worktree/clone from a fresh conversation — read the PR, issue, and any status files, figure out where things stand, then STOP and ask the…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-staff
matsen
Cold-start the long-lived staff session — the last layer of adjudication before the user, across every EPIC, conductor, and manuscript session.
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-helper
matsen
Start, message, resume, and shut down a long-lived helper session — a `claude --bg` peer that survives the primary's compaction and restarts, can message any…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-lit
matsen
Unified guidance for using the bipartite reference library CLI.
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-infra
matsen
Cold-start a long-lived infra session that tracks compute hosts and outages for the whole fleet — verifies outage reports independently, broadcasts status and…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-ms-sweep
matsen
Pre-share / pre-submission polish sweep of a TeX manuscript.
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-edit
matsen
Edit prose live with the author, line by line — a TeX manuscript or a blog post.
SkillAFreshness: A★ 33Claude Code - 0.652score
bip-tuckin
matsen
Universal tuckin dispatcher — persist session state before a context reset by delegating to the right /bip-*-tuckin (ms, spawn, epic, conductor), or a generic…
SkillAFreshness: A★ 33Claude Code
Signals
- Stars
- 33
- Forks
- 5
- Open issues
- 29
- Last commit (this folder)
- Oct 21, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/matsen/bipartite
- Website
- matsen.github.io/bipartite/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from matsen
- 0.652score
bip-edit
matsen
Edit prose live with the author, line by line — a TeX manuscript or a blog post.
SkillAFreshness: A★ 33Claude Code - 0.652score
bip-helper
matsen
Start, message, resume, and shut down a long-lived helper session — a `claude --bg` peer that survives the primary's compaction and restarts, can message any…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-infra
matsen
Cold-start a long-lived infra session that tracks compute hosts and outages for the whole fleet — verifies outage reports independently, broadcasts status and…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-lit
matsen
Unified guidance for using the bipartite reference library CLI.
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-ms-math
matsen
Revise the mathematics of a TeX manuscript as a series of small, separately checkable commits — proofs in proof blocks, duplicate proofs cut, long paragraphs…
SkillAFreshness: A★ 33Claude Code +9 - 0.652score
bip-ms-sweep
matsen
Pre-share / pre-submission polish sweep of a TeX manuscript.
SkillAFreshness: A★ 33Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get bip-conductor-recover running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
bip-conductor-recover skill. Agent Mart. https://agentmart.dev/skills/matsen-bip-conductor-recover (last updated 2026-10-24)