A Claude skill that captures the entire current chat as a structured handoff document, ready to paste into Codex, Cursor, or any other IDE-based AI coding agent.
Two files out, identical content, different formats:
.mdfor tools that render markdown.txtflat text for tools that prefer plain output
Most "export this chat" outputs are raw transcripts. This one is lossless distillation. Every detail survives, but reorganized so the next model can act immediately. Critically, every code block from the chat is labeled:
[FINAL]the version currently in use[SUPERSEDED]replaced version, with the reason it was replaced[REJECTED]thrown out, with the reason[DRAFT]proposed but never finalized
The rejection reasons are mandatory. That is the whole point. Without them, the next model re-suggests the same wrong thing.
Any of these will activate the skill mid-chat:
/handoff/export-context/brief codex/give to cursor/dump- "package this for codex"
- "export this chat"
- "make a handoff doc"
- "send this to cursor"
- "i wanna take this to another model"
It also triggers on looser phrasing when the intent is clearly to move the session somewhere else.
# Session Handoff: {Project}
## TL;DR
## Project Context
## Session Goal
## Timeline
## Decisions
## Constraints, Gotchas, and Hard Rules
## Files Touched
## Code Artifacts <-- every block, labeled by status
## Errors and Fixes
## Commands
## User Preferences and Style Rules
## Open Threads
## Next Steps
## Raw Notes
Important: the skill file must stay named
SKILL.md. Do not rename it to anything containing the word "claude" -- claude.ai blocks drag-and-drop installs of skills with "claude" in the filename.
Drop SKILL.md into your skills directory:
mkdir -p ~/.claude/skills/handoff
curl -o ~/.claude/skills/handoff/SKILL.md https://raw.githubusercontent.com/iam25th1/claude-handoff/main/SKILL.mdAdjust the path if your setup uses a different skills location.
- Download
SKILL.mdfrom this repo - Keep the filename as
SKILL.md(do not rename toclaude-handoff.mdor anything with "claude" in it -- the upload will be rejected) - Drag it into a conversation or project in claude.ai
The skill registers as handoff internally, which is what the trigger phrases hook into. The repo name and any wrapper folder name can be whatever you want, only the file itself has the naming restriction.
Mid-chat, when you want to wrap up and move to another tool:
/handoff
Claude will produce two files in the outputs directory:
handoff-{project-slug}-{YYYY-MM-DD}.md
handoff-{project-slug}-{YYYY-MM-DD}.txt
Then paste the contents into Codex, Cursor, or wherever you're continuing the work. A good first prompt for the receiving model:
Read this handoff doc, then continue from Next Step 1.
- One-shot. The skill never asks clarifying questions. It infers the project name from the chat context.
- Verbatim discipline. File paths, error messages, command strings, and version numbers are preserved exactly. Only prose around them gets tightened.
- No em dashes anywhere in the output. Uses double hyphens or commas instead.
- Empty sections are marked
_(none recorded in this session)_rather than omitted, so the receiving model knows nothing was missed.
MIT. Do whatever.