From aeb5e88f2de5a8886af870fc0b0e5348008934f3 Mon Sep 17 00:00:00 2001 From: Zach Guo Date: Wed, 15 Jul 2026 15:28:50 +0800 Subject: [PATCH] chore: add murmur-handoff skill Produces one paste-ready prompt to continue murmur work in a fresh session. With args it captures the stated handoff; with none it infers the next step from git/STATUS/PR signals and this thread. Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/skills/murmur-handoff/SKILL.md | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .claude/skills/murmur-handoff/SKILL.md diff --git a/.claude/skills/murmur-handoff/SKILL.md b/.claude/skills/murmur-handoff/SKILL.md new file mode 100644 index 0000000..9751529 --- /dev/null +++ b/.claude/skills/murmur-handoff/SKILL.md @@ -0,0 +1,54 @@ +--- +name: murmur-handoff +description: Use when the user wants to hand off work to a fresh session — asks to "hand off", "write a handoff", "prep a prompt for another session", or types /murmur-handoff. Produces ONE self-contained prompt the user can paste into a new murmur session and run directly. With args, it captures the stated handoff requirements; with no args, it infers the next step from this session. +--- + +# murmur-handoff — produce a paste-ready prompt for a fresh session + +## What it does + +Emit **one fenced code block** holding a prompt the user copies into a new +murmur session verbatim. The receiving session has none of this conversation's +context — the prompt must stand alone. Nothing else is the deliverable; keep any +prose around the block to a line or two. + +## Two modes + +- **With args** — the user stated what to hand off (a task, a bug, a spec step, + constraints). Base the prompt on that; pull in session context only to fill + gaps they didn't spell out. +- **No args** — infer the handoff yourself: what was this session doing, and + what is the obvious next step? Read the live signals below, name that step, + and hand it off. State in your one line of prose what you inferred so the user + can correct it. + +## Gather before writing (cheap, do it every time) + +- `git status` + `git log --oneline -8` — branch, uncommitted work, recent commits. +- `specs/STATUS.md` — the project's live current-focus. +- Any open PR for the branch (`gh pr view` if one exists) and its CI state. +- The thread itself — decisions made, dead ends hit, things left unfinished. + +## The prompt must contain (only what applies) + +1. **Orient** — one line: "murmur repo, branch `X`; read `CLAUDE.md` then + `specs/STATUS.md` first." Don't restate the routing card's content; point at it. +2. **State** — what's already done and committed vs. still dirty/unpushed; + name the branch and any open PR + its CI status. +3. **The task** — the ONE next thing, concrete and verifiable. If handing off + mid-build, name the spec (`spec NN`) so the receiver routes through + `murmur-build-spec` / `murmur-ship`. +4. **Landmines** — decisions already settled (don't relitigate), dead ends + already tried, and any real-boundary caveat (unit-green ≠ delivered). +5. **Done means** — the acceptance check that closes the task. + +## Rules + +- Self-contained: no "as we discussed", no reference to this session's messages. +- Point to files, don't inline them — the receiver can open `CLAUDE.md`, + the spec, `.dev/dev.log`. Paste only facts not on disk (a decision, a failure + mode you hit, an in-progress diff's intent). +- Honest state: uncommitted work, skipped steps, failing tests go in — a handoff + that hides them ships a landmine. +- Lazy length: enough to act, no session-transcript dump. If it's longer than the + work it hands off, cut it.