Skip to content
Back to skills

Handoff

ASecurity

Use when ending a work session that changed project state, when the user says "facciamo il punto"/"a che punto siamo"/"riprendiamo", when starting work in a project that has a HANDOFF.md, or after a crash/context loss when prior state must be reconstructed.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 22, 2026
ai-agentsrustgogit

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add MissingPackage/nightshift --skill handoff --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Handoff?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Handoff
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/missingpackage-handoff/badge)](https://www.skillsdirectory.com/skills/missingpackage-handoff)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: handoff
description: Use when ending a work session that changed project state, when the user says "facciamo il punto"/"a che punto siamo"/"riprendiamo", when starting work in a project that has a HANDOFF.md, or after a crash/context loss when prior state must be reconstructed.
---

# The Map (HANDOFF.md)

## Overview

`HANDOFF.md` at the project root is the map: the single document a human on a phone and a fresh
agent re-enter from in five minutes. It replaces goal contracts, phases, dockets, journals and
digests. History lives in git and in `.harness/tried.md`. (Projects with a `research/AGENDA.md`
keep that file as the map; never both.)

## On session start

Read it before exploring. Trust its head line and its "next" unless the repo contradicts it; if
it does, say so and fix the map first: a stale map is worse than none.

## The shape (under 150 lines, plain language, titles never IDs, no em dashes)

```
# HANDOFF — <project>   (updated <date>)

## 1. Objective and distance
<objective in the project's currency> · now: <value> · ceiling/reference: <value> · gap: <x>
Next: the single next lever to try and why.
(engine: a table model | host | now | ceiling | gap; product: the user path and what works;
research: the question and the contribution so far)

## 2. Levers
- Open: one line each, expected gain, the kill test
- In progress: what is being tried right now
- Dead: name, number, reason, date (so nobody re-proposes them)

## 3. Fog
Known unknowns, one line each.

## 4. Decisions for the user
At most three, only the four kinds (irreversible, spend, public, objective), each with the
default applied on a bare "ok". Dissent recorded here in one line, attributed.

## 5. Landmines
What the next session must not do or must know.
```

## On session end (state changed)

Refresh in place, never append. Move dead levers to "Dead" with their number. If the head line
did not move, say so in the head line ("gap unchanged since <date>"). Keep under 150 lines; the
Stop hook `handoff-freshness` warns beyond that and when the repo is newer than the map.
Write it with the Edit tool: the user may read it on a phone, where it renders as an app diff.

## "Facciamo il punto"

Answer from the map plus `git log` and `.harness/tried.md`, then refresh the map so the answer
is durable. Do not rebuild the picture from scratch.

## Common mistakes

- Appending forever → refresh in place.
- Recording work done instead of distance to the objective: that is tried.md's job.
- Listing every open question as a decision: only the four kinds are decisions.
- Restating decisions taken elsewhere: one line, attributed, done.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.