Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Write a handoff file at .turbo/handoff/<YYYY-MM-DD>-<slug>.md capturing current session state — task, status, open decisions, in-flight changes, next step — so a fresh session can continue without re-deriving context. Use when the user asks to "create a handoff", "create handoff", "save handoff", "handoff before compact", "save session state", "handoff for next session", or "capture session state".
.claude/skills/tobihagemann-create-handoff/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 190% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-13 | ✓→✗ | ▼ Worse | 23% | 0% |
| case-19 | ✓→✗ | ▼ Worse | -6% | 0% |
Write a session handoff file at .turbo/handoff/<YYYY-MM-DD>-<slug>.md so a fresh session can pick up where this one left off.
Get today's date: date +%Y-%m-%d.
Pick a slug for the current task:
If the work is anchored to an existing plan at .turbo/plans/<slug>.md, reuse that plan's slug verbatim.
The user may pass an explicit slug or output path; honor it.
The target path is .turbo/handoff/<YYYY-MM-DD>-<slug>.md. A generated slug takes -2, -3, and so on until the path is free. When the user supplied the slug or path and it already exists, use request_user_input to offer overwrite, a numeric suffix, or a different slug.
When an open decision will outlive the rest of the session's state, still unresolved while the work around it is finished, give it its own handoff. Everything else stays in a single file. Slug the split handoff for that decision rather than appending a collision suffix, and write it to stand alone.
State the chosen path before continuing.
Run git status --short to see uncommitted changes in the working tree.
Survey the conversation context for:
Read .turbo/improvements.md if it exists and note any entry this handoff takes over. When no entry clearly matches, leave the backlog alone.
When something is genuinely unclear and would leave a gap in the handoff, use request_user_input to resolve it. Default to inferring quietly when the conversation makes the answer clear.
Create .turbo/handoff/ if it does not exist. Write the file at the path picked in Step 1.
Lead with # Handoff: <Task Title>. Cover the items gathered in Step 2 in whatever structure fits the session — drafting, refining, implementing, and investigating sessions each have different shapes and don't all map to the same headings. Close with a clear statement of the next concrete action so the new session knows exactly what to do first.
Keep it dense. Omit anything that has no real content.
When this handoff splits an open decision out of an existing one, add a line to that existing handoff pointing at the new path, and remove the content the new file now carries.
Once the handoff file exists, delete any .turbo/improvements.md entry it takes over, as noted in Step 2. Delete the file if no entries remain.
Tell the user where the handoff was written, name any backlog entry deleted and any existing handoff edited to point at a split, and quote the next-step statement so the path forward is visible at a glance.
Then call update_plan to mark this step completed and continue with the next step of the active workflow.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,580 | 5,478 | -43% | 1 | 1 | 0% | 1,427 | 1,201 | -16% | 0 | 0 | — |
case-02 | fail→fail | 4,816 | 4,758 | -1% | 1 | 1 | 0% | 292 | 1,106 | +279% | 0 | 0 | — |
case-03 | fail→fail | 10,468 | 4,627 | -56% | 1 | 1 | 0% | 1,684 | 1,104 | -34% | 0 | 0 | — |
case-04 | fail→pass | 10,620 | 13,114 | +23% | 1 | 1 | 0% | 1,969 | 3,451 | +75% | 0 | 0 | — |
case-05 | pass→pass | 7,676 | 2,476 | -68% | 1 | 1 | 0% | 1,302 | 1,272 | -2% | 0 | 0 | — |
case-06 | pass→pass | 10,791 | 3,737 | -65% | 1 | 1 | 0% | 1,974 | 1,601 | -19% | 0 | 0 | — |
case-07 | fail→fail | 4,061 | 2,818 | -31% | 1 | 1 | 0% | 660 | 1,370 | +108% | 0 | 0 | — |
case-08 | fail→pass | 10,112 | 19,902 | +97% | 1 | 1 | 0% | 1,573 | 4,557 | +190% | 0 | 0 | — |
case-09 | pass→pass | 9,792 | 3,152 | -68% | 1 | 1 | 0% | 1,493 | 1,374 | -8% | 0 | 0 | — |
case-10 | fail→fail | 10,618 | 2,915 | -73% | 1 | 1 | 0% | 1,805 | 1,280 | -29% | 0 | 0 | — |
case-11 | fail→pass | 10,720 | 2,746 | -74% | 1 | 1 | 0% | 1,733 | 1,366 | -21% | 0 | 0 | — |
case-12 | fail→fail | 12,425 | 2,641 | -79% | 1 | 1 | 0% | 1,860 | 1,251 | -33% | 0 | 0 | — |
case-13 | pass→fail | 6,622 | 2,226 | -66% | 1 | 1 | 0% | 955 | 1,171 | +23% | 0 | 0 | — |
case-14 | fail→fail | 10,495 | 3,138 | -70% | 1 | 1 | 0% | 1,605 | 1,462 | -9% | 0 | 0 | — |
case-15 | fail→fail | 8,234 | 2,032 | -75% | 1 | 1 | 0% | 1,277 | 1,214 | -5% | 0 | 0 | — |
case-16 | pass→pass | 9,698 | 2,713 | -72% | 1 | 1 | 0% | 1,398 | 1,323 | -5% | 0 | 0 | — |
case-17 | pass→pass | 5,305 | 2,826 | -47% | 1 | 1 | 0% | 793 | 1,327 | +67% | 0 | 0 | — |
case-18 | pass→pass | 4,575 | 1,998 | -56% | 1 | 1 | 0% | 748 | 1,155 | +54% | 0 | 0 | — |
case-19 | pass→fail | 12,163 | 14,494 | +19% | 1 | 1 | 0% | 2,238 | 2,106 | -6% | 0 | 0 | — |
case-20 | pass→pass | 3,655 | 31,105 | +751% | 1 | 1 | 0% | 625 | 6,396 | +923% | 0 | 0 | — |
case-21 | pass→fail | 10,034 | 42,471 | +323% | 1 | 1 | 0% | 1,631 | 8,454 | +418% | 0 | 0 | — |
case-22 | pass→fail | 9,709 | 30,967 | +219% | 1 | 1 | 0% | 1,728 | 5,775 | +234% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -5 percentage points is the difference between those two pass rates over the 18 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/21/2026 | -23% |
Other measured skills in the registry, with their headline benchmark lift.