Hand off the current task to a fresh session in the other CLI (Claude Code or Codex) by writing a curated brief and shipping it via the `dispatch` command. Use when the user says "handoff to claude", "handoff to codex", "/handoff <target>", "send this to <other tool>", or any equivalent phrasing. They must mention 'via dispatch'
You are about to hand off the current task to a fresh session in the other CLI. The receiver will get only the brief you write — no prior conversation, no tool history, no shared memory. Your brief is the entire context they have to work from. Make it complete enough that they can start being productive on the next concrete step without asking the user "what are we working on?"
The user says any of:
If the user says "fork" (rather than "handoff"), that is a different command (dispatch fork) which the user runs themselves — do not invoke this skill.
Use these four sections. Skip any that genuinely don't apply, but bias toward including all four.
What are we trying to achieve? One or two sentences. The big picture.
Where are we right now? Be concrete:
Avoid summarizing in the abstract. Name files, commands, and exact strings.
Absolute paths the receiver should read first, as a bulleted list. Order them by importance — what they should read first goes first.
Exactly what you want the receiver to do in this fresh session. One concrete next action, not "continue from here." If there are sub-steps, list them. If there are constraints or things to avoid, say so.
Use the heredoc form so multi-paragraph content is delivered cleanly without shell-escaping pitfalls:
dispatch handoff <target> - <<'BRIEF'
## Goal
...
## State
...
## Files
- /abs/path/one
- /abs/path/two
## Ask
...
BRIEF
The literal - after <target> tells dispatch to read the brief from stdin. Use single-quoted heredoc delimiter (<<'BRIEF') to prevent shell interpolation of $, backticks, etc., in the brief content.
<target> is claude or codex — the tool you are handing off to, not the one you are in.
By default the brief opens in a new tmux pane. If the user said "swap to <tool>" or "replace this with <tool>", add --replace:
dispatch handoff codex --replace - <<'BRIEF'
...
BRIEF
Do not ask the user to confirm before shipping. Write the brief, ship it, and let them know which pane it landed in.
Both Claude and Codex accept large first-prompt arguments. Don't artificially compress. A long, concrete brief is better than a short, vague one. The receiver will read what they need from it.
Edit PDFs with natural-language instructions using the nano-pdf CLI.