From hand
This skill should be used when the user runs "/hand:over", asks to "visualize the handoff", "show handoff diagrams", "generate a handoff report", "explore the handoff", or provides a path to a HANDOFF file. Reads HANDOFF.*.{yaml,json,md} files and produces a prose summary plus Mermaid diagrams for project orientation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hand:handoverThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate a concise orientation report and Mermaid diagrams from a HANDOFF file.
Generate a concise orientation report and Mermaid diagrams from a HANDOFF file.
Resolve the target file in this order:
HANDOFF.*.{yaml|json|md} (case-insensitive).
Reject any other filename with: error: only HANDOFF.*.{yaml|json|md} files are accepted.handoff-detect to find the file for the current directory:
handoff-detect
If exit code 2 (no file exists), report: no HANDOFF file found in this repo and stop.Never read arbitrary files. Never accept paths that don't match the naming pattern.
Controlled by optional flags (default: all modes run):
| Flag | Output |
|---|---|
| (none) | Full report + all diagrams |
--report | Prose summary only |
--diagrams | All diagrams only |
--items | Item table + status flowchart only |
--log | Session log + sequence diagram only |
Write all output to .ctx/HANDOVER.md at the repo root (same directory as the HANDOFF file's
repo). Create .ctx/ if it does not exist.
mkdir -p <repo-root>/.ctx
# write to <repo-root>/.ctx/HANDOVER.md
After writing, print a single confirmation line to the user:
wrote .ctx/HANDOVER.md
The file is generated output — add .ctx/HANDOVER.md to .gitignore if not already present.
Emit sections in this order, omitting any section where data is absent:
Scan all items for extra entries with type: human-edit and no reviewed field. If any exist,
emit this section before everything else:
## Review on Wake
- minibox-4 "Handler Coverage" — human edited `status` → `done` on 2026-04-03
marked done manually — PR merged out of band
Mark these rows in the items table with a * suffix on the status field (e.g. done*).
Omit this section entirely if no unreviewed human-edits exist.
Keep prose minimal. No headers longer than 3 words. No HTML. No emoji.
Render all diagrams for which the data exists. Apply these rules to every node label:
\n) inside node labelsAuth Policy Gate → Auth GateShow items grouped by priority flowing into status buckets.
flowchart LR
P0 --> open1[Auth Gate]
P1 --> open2[CI Enforce]
P1 --> open3[Bench Toggles]
open1 --> S_open[Open]
open2 --> S_open
open3 --> S_open
vz[VZ Bug] --> S_blocked[Blocked]
Show the status state machine with item counts in each state.
stateDiagram-v2
[*] --> Open
Open --> Done
Open --> Blocked
Open --> Parked
Done --> [*]
Blocked --> Open
Parked --> Open
Annotate transitions with counts if >1 item. Example: Open --> Done : 3 items.
Map log entries as a timeline. Use date as the actor label on the left, one Note over per entry.
sequenceDiagram
participant Apr03 as 2026-04-03
participant Apr02 as 2026-04-02
Note over Apr03: Bench timeout fix
Note over Apr02: Tier 1 wins
Only emit this diagram when log has ≥2 entries.
Show which items reference which files. Only emit when items have non-empty files arrays.
erDiagram
ITEM ||--o{ FILE : references
ITEM {
string id
string priority
string status
}
FILE {
string path
}
Follow with a compact table of item→file mappings (max 10 rows; truncate with ... N more).
Emit only when there are ≥6 items. Map priority (P0=high, P2=low) vs status (open/blocked=active, done/parked=inactive).
quadrantChart
title Items by Priority and Status
x-axis Low Priority --> High Priority
y-axis Inactive --> Active
After resolving the HANDOFF file, also read .ctx/HANDOFF.state.yaml from the same repo root if
it exists. This file holds build/tests/branch/notes — it is not in HANDOFF.yaml itself.
<repo-root>/.ctx/HANDOFF.state.yaml # project snapshot — may not exist
<repo-root>/HANDOFF.*.yaml # tasks/items/log
If .ctx/HANDOFF.state.yaml is absent, omit the State section from output rather than guessing.
Read with the Read tool and extract fields manually — do not shell out to a YAML parser.
From HANDOFF.yaml:
items[*].{id, priority, status, title, files, extra}log[*].{date, summary, commits}updatedFrom .ctx/HANDOFF.state.yaml:
build, tests, branch, notesFor .json, same approach via Read tool.
For .md (legacy HANDOFF.md), read as freeform text and infer structure from markdown headers
and tables. No .ctx/HANDOFF.state.yaml will exist for legacy files.
## max, 1–3 words```mermaidreferences/diagram-patterns.md — abbreviation guide, subgraph patterns for ≥3 items per
priority, complex multi-item examples, and the full common-mistakes reference with before/after
fixes for all four Mermaid pitfalls (long labels, newlines, colon IDs, parentheses)Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub 89jobrien/hand