handoff

my-skills

workflowClaude Codeby rinman24

Summary

Compact a conversation into a handoff doc and spawn a fresh tmux pane to continue with a clean context window.

Install to Claude Code

/plugin install handoff@my-skills

Run in Claude Code. Add the marketplace first with /plugin marketplace add rinman24/claude-skills if you haven't already.

README.md

my-skills

A personal Claude Code plugin marketplace for distributing my own skills across repos, dev containers, and VMs from a single source of truth.

A "marketplace" here is just this git repo plus a catalog file (.claude-plugin/marketplace.json) — there is no separate hosted service.

Install

Inside any Claude Code session (replace rinman24/claude-skills):

/plugin marketplace add rinman24/claude-skills
/plugin install handoff@my-skills

Or from the command line:

claude plugin marketplace add rinman24/claude-skills
claude plugin install handoff@my-skills --scope user

Scope

  • --scope user — available to you across all projects in this Claude Code

install (recommended for a personal dev container).

  • --scope project — committed for all collaborators on a repo.
  • --scope local — just you, just this repo.

CLI flags change; confirm with claude plugin install --help if --scope is not accepted.

Verify

claude plugin validate .            # validate the whole marketplace
/plugin                             # confirm the handoff plugin is listed
/hooks                              # confirm the Stop hook registered

Update after editing: push to the repo, then

claude plugin marketplace update my-skills in each environment.

Plugins

handoff

Compacts the current conversation into .pipeline/<slug>/handoff.md and drops a one-shot marker (.pipeline/.spawn-successor). The plugin's Stop hook then spawns a fresh interactive Claude session in a new lower tmux pane, seeded with the handoff document, to continue with a clean context window.

The hook is the sole spawner — the skill itself never spawns. That keeps the model out of the spawn path entirely (it only writes a file and drops a marker, both reliable), so exactly one successor is created and a forgotten spawn is impossible.

Requirements: tmux (3.3a+), and jq for the hook's loop-guard (the hook degrades gracefully without jq). The session must be running inside tmux for the spawn to work.

Troubleshooting

The handoff runs but no new pane appears

If /handoff writes the document and drops the marker but no successor pane spawns, the most common cause is that the workspace is not trusted. Claude Code silently skips all hooks in untrusted workspaces — no error, nothing in the pane. Trust the workspace (Claude Code prompts on first entry to a new directory, or run /permissions / re-open the folder and accept the trust prompt), then try again.

Other things to check, in order:

1. Hook registered? Run /hooks and confirm a Stop hook pointing at

spawn-handoff-successor.sh is listed. If it isn't, the plugin install or manifest didn't load — re-run claude plugin validate . and reinstall. (The plugin manifest schema changes; valid-looking JSON has silently failed to load before.) 2. Inside tmux? The hook needs $TMUX set and a pane to split. If you launched claude outside tmux, the hook exits cleanly and leaves the marker in place. Start claude inside a tmux session. 3. Marker present? After a handoff, check ls .pipeline/.spawn-successor. If it's gone, the hook spawned successfully (it consumes the marker only on a successful spawn). If it's still there, the spawn didn't happen — re-check 1 and 2. 4. jq / tmux installed? Missing tmux stops the spawn; missing jq only disables the loop-guard (the hook still works).

Related plugins

Browse all →