{"slug":"create-handoff-2","title":"create-handoff","summary":"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\"","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-08-23T08:58:51.441581Z","repo":{"url":"https://github.com/tobihagemann/turbo","stars":403,"forks":31,"license":"MIT","updatedAt":"2026-09-24T14:46:11Z"},"bodyHtml":"<hr>\n<h2>name: create-handoff\ndescription: \"Write a handoff file at .turbo/handoff/</h2>\n<h1>Create Handoff</h1>\n<p>Write a session handoff file at <code>.turbo/handoff/&lt;YYYY-MM-DD&gt;-&lt;slug&gt;.md</code> so a fresh session can pick up where this one left off.</p>\n<h2>Step 1: Resolve the Target Path</h2>\n<p>Get today's date: <code>date +%Y-%m-%d</code>.</p>\n<p>Pick a slug for the current task:</p>\n<ul>\n<li>Lowercase</li>\n<li>Replace non-alphanumeric characters with hyphens</li>\n<li>Collapse consecutive hyphens</li>\n<li>Trim leading and trailing hyphens</li>\n<li>Truncate to 40 characters at a word boundary</li>\n</ul>\n<p>If the work is anchored to an existing plan at <code>.turbo/plans/&lt;slug&gt;.md</code>, reuse that plan's slug verbatim.</p>\n<p>The user may pass an explicit slug or output path; honor it.</p>\n<p>The target path is <code>.turbo/handoff/&lt;YYYY-MM-DD&gt;-&lt;slug&gt;.md</code>. A generated slug takes <code>-2</code>, <code>-3</code>, and so on until the path is free. When the user supplied the slug or path and it already exists, use <code>request_user_input</code> to offer overwrite, a numeric suffix, or a different slug.</p>\n<p>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.</p>\n<p>State the chosen path before continuing.</p>\n<h2>Step 2: Gather Session State</h2>\n<p>Run <code>git status --short</code> to see uncommitted changes in the working tree.</p>\n<p>Survey the conversation context for:</p>\n<ul>\n<li><strong>Current task</strong>: what is being worked on, in one or two sentences</li>\n<li><strong>Workflow status</strong>: where in the workflow this session is (drafting, refining iteration N, applying findings, implementing step M of K, investigating, blocked on Q, etc.)</li>\n<li><strong>Active artifact</strong>: path to the plan or other file at the center of the work, if one exists</li>\n<li><strong>Open decisions</strong>: questions raised but not resolved, choices the user is still weighing, escalations awaiting input</li>\n<li><strong>In-flight changes</strong>: staged or unstaged edits that are not yet committed; what each change is doing and what is missing</li>\n<li><strong>Closed avenues</strong>: approaches that were built or tested and then abandoned, with the observed evidence that ruled them out</li>\n<li><strong>Next step</strong>: the first concrete action the new session should take</li>\n</ul>\n<p>Read <code>.turbo/improvements.md</code> if it exists and note any entry this handoff takes over. When no entry clearly matches, leave the backlog alone.</p>\n<p>When something is genuinely unclear and would leave a gap in the handoff, use <code>request_user_input</code> to resolve it. Default to inferring quietly when the conversation makes the answer clear.</p>\n<h2>Step 3: Write the Handoff File</h2>\n<p>Create <code>.turbo/handoff/</code> if it does not exist. Write the file at the path picked in Step 1.</p>\n<p>Lead with <code># Handoff: &lt;Task Title&gt;</code>. 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.</p>\n<p>Keep it dense. Omit anything that has no real content.</p>\n<p>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.</p>\n<h2>Step 4: Confirm</h2>\n<p>Once the handoff file exists, delete any <code>.turbo/improvements.md</code> entry it takes over, as noted in Step 2. Delete the file if no entries remain.</p>\n<p>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.</p>\n<p>Then call <code>update_plan</code> to mark this step completed and continue with the next step of the active workflow.</p>\n","files":[{"path":"SKILL.md","sizeBytes":4735,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-25T07:39:34.361118Z","sha256":"E6307555F7B24B7F2B1C3B54F59AEC5CE444932D1B8DBC696AF1EBF058362E92","sizeBytes":2227},"review":null,"source":{"repositoryUrl":"https://github.com/tobihagemann/turbo","path":"codex/skills/create-handoff","license":"MIT","commit":"733e9833b3f2bbd29c5811a5eeb22ff358ec2b78","subtreeSha":"AA60F0F2E76891021FEC5CE9D4739448326E061668E8C03EBB600E0BE56D2C67","lastSyncedAt":"2026-09-25T07:38:01.358394Z"},"reviewedAt":"2026-09-25T07:42:24.490763Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/tobihagemann/turbo/tree/main/codex/skills/create-handoff"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install tobihagemann-turbo@llmmart"},{"target":"git","command":"git clone https://github.com/tobihagemann/turbo.git"}]}