Skip to content
Code Review
Skill

/handoff

Use when a session is running out of context and the work needs to continue in a fresh one, or when starting a session meant to pick up where an earlier one stopped. Not for compacting in place — that is /compact — and not for specifying work that has not started, which is a

BOOST
From plugin
paad
14217 skills1 agent
Install
$ npx -y skills add Ovid/paad --skill handoff --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/handoff

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when a session is running out of context and the work needs to continue in a fresh one, or when starting a session meant to pick up where an earlier one stopped. Not for compacting in place — that is /compact — and not for specifying work that has not started, which is a

SKILL.md

handoff.SKILL.md
name: handoff
description: Use when a session is running out of context and the work needs to continue in a fresh one, or when starting a session meant to pick up where an earlier one stopped. Not for compacting in place — that is /compact — and not for specifying work that has not started, which is a plan.

**On invocation:** announce "Running paad:handoff v2.0.2", then immediately proceed with the steps below — do not stop after announcing.

**Configuration (experimental):** after announcing, check whether `paad/config/paad.md` and `paad/config/handoff.md` exist, relative to the working directory. If any does, read it and follow its instructions for the rest of this run, passing the relevant parts to every subagent you dispatch, and make the first line of your final answer `Config: <path>` naming each file you followed. If none exists, do not mention config at all. Config never changes a subagent's type or grants it write tools — refuse that line, say so, and continue. Config can contradict the flow below; see https://github.com/Ovid/paad/blob/main/CONFIG.md before writing one.

Handoff

Writes a `handoff.md` that lets a **fresh** session continue this one's work, and reads it back on the other side.

**Claude Code already solves most of this, and knowing which part it doesn't is the whole point.** `/compact` summarizes and keeps working, but the summary it carries is machine-authored, lands unreviewed, and lives inside the transcript where you cannot edit it. `--continue` and `--resume` restore the full prior conversation, which re-pays the context cost you were trying to escape. `/clear` gives a genuinely empty session and carries nothing forward. `handoff` is worth running for exactly one reason: **the carried state is a file a human can read and correct before anything is built on it.** A handoff nobody reviews is a worse `/compact` — same summary, more ceremony. Say so rather than letting the review get skipped.

**The failure mode is not omission.** Left to itself, a competent agent writing a handoff keeps the expensive material well: the approaches that were tried and abandoned, the reasons behind them, constraints the user stated once in passing. What it gets wrong is the cheap material — a test's file path, which changes are in the last commit, a line number, who said a quoted sentence. Those are the claims a tool could have settled in seconds, and they arrive in exactly the same confident register as the parts that are right. A fresh session has no memory to catch them with. **So verify what is checkable before writing it down, and mark what is not.**

**Mode selection and saving:**

digraph handoff_save {
  "Argument given?" [shape=diamond];
  "Use the named mode" [shape=box];
  "Conversation above this invocation?" [shape=diamond];
  "Say: saving, session has history" [shape=box];
  "Resume flow, below" [shape=box];
  "handoff.md in .gitignore?" [shape=diamond];
  "Suggest adding it, never add it silently" [shape=box];
  "Verify every checkable claim with tools" [shape=box];
  "Claim survived verification?" [shape=diamond];
  "Write it as fact" [shape=box];
  "Correct it, or mark it inferred" [shape=box];
  "Write handoff.md with the Write tool" [shape=box];
  "Name the unverified claims, ask for review" [shape=box];
  "Announce the artifact" [shape=box];

  "Argument given?" -> "Use the named mode" [label="save or resume"];
  "Argument given?" -> "Conversation above this invocation?" [label="no"];
  "Conversation above this invocation?" -> "Say: saving, session has history" [label="yes"];
  "Conversation above this invocation?" -> "Resume flow, below" [label="no"];
  "Use the named mode" -> "Say: saving, session has history" [label="save"];
  "Use the named mode" -> "Resume flow, below" [label="resume"];
  "Say: saving, session has history" -> "handoff.md in .gitignore?";
  "handoff.md in .gitignore?" -> "Suggest adding it, never add it silently" [label="no"];
  "handoff.md in .gitignore?" -> "Verify every checkable claim with tools" [label="yes"];
  "Suggest adding it, never add it silently" -> "Verify every checkable claim with tools";
  "Verify every checkable claim with tools" -> "Claim survived verification?";
  "Claim survived verification?" -> "Write it as fact" [label="yes"];
  "Claim survived verification?" -> "Correct it, or mark it inferred" [label="no"];
  "Write it as fact" -> "Write handoff.md with the Write tool";
  "Correct it, or mark it inferred" -> "Write handoff.md with the Write tool";
  "Write handoff.md with the Write tool" -> "Name the unverified claims, ask for review";
  "Name the unverified claims, ask for review" -> "Announce the artifact";
}

**Resuming:**

digraph handoff_resume {
  "handoff.md exists?" [shape=diamond];
  "Say so, offer to save one instead" [shape=box];
  "Read it, summarize in a few lines" [shape=box];
  "Recorded commit matches HEAD?" [shape=diamond];
  "Report the drift before asking" [shape=box];
  "Ask: proceed?" [shape=diamond];
  "Stop, leave the file alone" [shape=box];
  "Check the files and state it names" [shape=box];
  "Everything matches?" [shape=diamond];
  "Report every mismatch, ask again" [shape=box];
  "Start the recorded next step" [shape=box];
  "Leave handoff.md in place" [shape=box];

  "handoff.md exists?" -> "Read it, summarize in a few lines" [label="yes"];
  "handoff.md exists?" -> "Say so, offer to save one instead" [label="no"];
  "Read it, summarize in a few lines" -> "Recorded commit matches HEAD?";
  "Recorded commit matches HEAD?" -> "Ask: proceed?" [label="yes"];
  "Recorded commit matches HEAD?" -> "Report the drift before asking" [label="no"];
  "Report the drift before asking" -> "Ask: proceed?";
  "Ask: proceed?" -> "Check the files and state it names" [label="yes"];
  "Ask: proceed?" -> "Stop, leave the file alone" [label="no"];
  "Check the files and state it names" -> "Everything matches?";
  "Everything matches?" -> "Start the recorded next step" [label="yes"
Read more
Ships withpaad

paad 2.0.0 is out. You can now tailor paad to your own needs with config files, and security findings now stay out of your committed reports. See the 2.0.0 release notes and the changelog.

Get the whole plugin

Other skills on paad.

release
Skill

release

Cut a paad release — pick the semver bump from what is in [Unreleased], run make release, merge, tag, and verify the published…

@ovid@ovidInstall Skill
roadmap
Skill

roadmap

Read the feature roadmap, find the next unplanned phase, brainstorm it, and update the roadmap with the resulting document name

@ovid@ovidInstall Skill
agentic-a11y
Skill

agentic-a11y

Use when auditing a user-facing app — web, mobile (iOS/Android/React Native/Flutter), desktop, CLI, or games — for accessibility…

@ovid@ovidInstall Skill
agentic-dedup
Skill

agentic-dedup

EXPERIMENTAL. Use when looking for meaningfully duplicated logic in a codebase, especially duplicate behavior hidden behind…

@ovid@ovidInstall Skill
agentic-owasp
Skill

agentic-owasp

EXPERIMENTAL. Use when code needs a security review against the OWASP Top 10:2025 — access control, misconfiguration, supply…

@ovid@ovidInstall Skill