Claude Skill

create-handoff

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"

LLM Mart · 0 points · 19 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download tobihagemann-turbo-claude_skills_create-handoff-733e983.zip · 2 KB
Part of tobihagemann/turbo — 147 skills

Install

skills CLI npx skills add https://github.com/tobihagemann/turbo/tree/main/claude/skills/create-handoff
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install tobihagemann-turbo@llmmart
Git git clone https://github.com/tobihagemann/turbo.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole tobihagemann/turbo collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Create Handoff

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.

Step 1: Resolve the Target Path

Get today's date: date +%Y-%m-%d.

Pick a slug for the current task:

  • Lowercase
  • Replace non-alphanumeric characters with hyphens
  • Collapse consecutive hyphens
  • Trim leading and trailing hyphens
  • Truncate to 40 characters at a word boundary

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.

Resolve the repo root with git rev-parse --show-toplevel, except inside a linked worktree — where git rev-parse --git-dir differs from --git-common-dir — in which case use the parent of the common dir, so the handoff lands in the main checkout rather than in a worktree that is destroyed with its branch.

The target path is .turbo/handoff/<YYYY-MM-DD>-<slug>.md under that root. 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 AskUserQuestion 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.

Step 2: Gather Session State

Run git status --short to see uncommitted changes in the working tree.

Survey the conversation context for:

  • Current task: what is being worked on, in one or two sentences
  • Workflow status: where in the workflow this session is (drafting, refining iteration N, applying findings, implementing step M of K, investigating, blocked on Q, etc.)
  • Active artifact: path to the plan or other file at the center of the work, if one exists
  • Open decisions: questions raised but not resolved, choices the user is still weighing, escalations awaiting input
  • In-flight changes: staged or unstaged edits that are not yet committed; what each change is doing and what is missing
  • Closed avenues: approaches that were built or tested and then abandoned, with the observed evidence that ruled them out
  • Next step: the first concrete action the new session should take. When the user has stated what they want to work on next, that intent leads and any work left in flight is ordered after it; say so in the same statement when that work should not resume at all

Read .turbo/improvements.md under the repo root resolved in Step 1 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 AskUserQuestion to resolve it. Default to inferring quietly when the conversation makes the answer clear.

Step 3: Write the Handoff File

Write the file at the path picked in Step 1 with the Write tool, which creates .turbo/handoff/ if it does not exist, including when that path is in the main checkout outside the current working directory: the Bash sandbox denies a shell write there.

When that write is refused while this session runs inside a linked worktree, report that the handoff cannot be persisted from here and print it in full so it can be pasted in from a session that can write to the main checkout, naming any backlog entry noted in Step 2 for deletion there. Leave it out of the worktree's own .turbo/, which is gitignored and is destroyed with the worktree.

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.

Step 4: Confirm

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 use the TaskList tool and proceed to any remaining task.

Files (turbo)
  • SKILL.md 5.1 KB
    ---
    name: create-handoff
    description: "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\"."
    ---
    
    # Create Handoff
    
    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.
    
    ## Step 1: Resolve the Target Path
    
    Get today's date: `date +%Y-%m-%d`.
    
    Pick a slug for the current task:
    
    - Lowercase
    - Replace non-alphanumeric characters with hyphens
    - Collapse consecutive hyphens
    - Trim leading and trailing hyphens
    - Truncate to 40 characters at a word boundary
    
    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.
    
    Resolve the repo root with `git rev-parse --show-toplevel`, except inside a linked worktree — where `git rev-parse --git-dir` differs from `--git-common-dir` — in which case use the parent of the common dir, so the handoff lands in the main checkout rather than in a worktree that is destroyed with its branch.
    
    The target path is `.turbo/handoff/<YYYY-MM-DD>-<slug>.md` under that root. 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 `AskUserQuestion` 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.
    
    ## Step 2: Gather Session State
    
    Run `git status --short` to see uncommitted changes in the working tree.
    
    Survey the conversation context for:
    
    - **Current task**: what is being worked on, in one or two sentences
    - **Workflow status**: where in the workflow this session is (drafting, refining iteration N, applying findings, implementing step M of K, investigating, blocked on Q, etc.)
    - **Active artifact**: path to the plan or other file at the center of the work, if one exists
    - **Open decisions**: questions raised but not resolved, choices the user is still weighing, escalations awaiting input
    - **In-flight changes**: staged or unstaged edits that are not yet committed; what each change is doing and what is missing
    - **Closed avenues**: approaches that were built or tested and then abandoned, with the observed evidence that ruled them out
    - **Next step**: the first concrete action the new session should take. When the user has stated what they want to work on next, that intent leads and any work left in flight is ordered after it; say so in the same statement when that work should not resume at all
    
    Read `.turbo/improvements.md` under the repo root resolved in Step 1 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 `AskUserQuestion` to resolve it. Default to inferring quietly when the conversation makes the answer clear.
    
    ## Step 3: Write the Handoff File
    
    Write the file at the path picked in Step 1 with the Write tool, which creates `.turbo/handoff/` if it does not exist, including when that path is in the main checkout outside the current working directory: the Bash sandbox denies a shell write there.
    
    When that write is refused while this session runs inside a linked worktree, report that the handoff cannot be persisted from here and print it in full so it can be pasted in from a session that can write to the main checkout, naming any backlog entry noted in Step 2 for deletion there. Leave it out of the worktree's own `.turbo/`, which is gitignored and is destroyed with the worktree.
    
    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.
    
    ## Step 4: Confirm
    
    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 use the TaskList tool and proceed to any remaining task.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related