plugins/coordinator/skills/handoff-archival/SKILL.md
Archive consumed handoffs — moves superseded or PM-approved handoffs from tasks/handoffs/ to archive/handoffs/. Invoked by /update-docs (Phase 8) or standalone. Does NOT auto-archive based on age alone.
npx skillsauth add oduffy-delphi/coordinator-claude handoff-archivalInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Move consumed handoffs from the active directory to the archive (both git-tracked — the archive is the paper trail):
tasks/handoffs/*.md — available for /session-start pickuparchive/handoffs/*.md — consumed, kept for historical referenceSkip entirely if no handoff files exist.
Handoffs are only archived when there is a clear signal they've been consumed:
/pickup, which marks it consumed/distill — knowledge extraction pipeline, which may delete after PM approvalAge alone is NOT a reason to archive. A 2-week-old handoff that nobody picked up is a signal that work was deferred, not that the handoff is stale. Surfacing old handoffs is /workday-start's job; archiving them requires a consumption signal.
Check tasks/handoffs/ for .md files
Chain-aware archival (supersession pass): Scan all active handoffs for Continuing from references (look for the pattern _Continuing from [filename]: or Continuing from [filename] in the ## What Was Accomplished section). If the referenced predecessor file is still in tasks/handoffs/, archive it — the successor has absorbed both the predecessor's context (via the preamble) and its unresolved obligations (via the ## Carried Forward section). The predecessor is fully superseded.
Single-predecessor rule. A successor names exactly one predecessor — the one it explicitly continues from. If you find a successor that names no predecessor, it has none; do not guess one for it from timestamp adjacency. If a Continuing from reference points at a handoff that is itself an active sibling rather than a true ancestor (e.g., concurrent workstream, different machine, no actual hand-off occurred), STOP and surface to the PM rather than archiving — adjacency is not ancestry. Combining two predecessors into one successor only happens by explicit PM direction at session start, and shows up as a successor that names both predecessors with the merge intent in its preamble.
Pickup-consumed pass: Check for handoffs marked as consumed by /pickup. Look for a <!-- consumed: YYYY-MM-DD --> comment in the file (added by /pickup when it loads a handoff). Archive these — the work has been picked up and continued.
Report remaining handoffs: List any handoffs still in tasks/handoffs/ with their age and heading. Do not archive them — they remain active until consumed or the PM directs otherwise.
Do NOT delete archived handoffs — they are the paper trail for why things are written the way they are
.gitignore CheckVerify that tasks/ is NOT in .gitignore. If it is, warn the user — active handoffs must be tracked.
tools
Orient session — preflight, load context, choose work
documentation
Wrap up finished work — capture lessons, update docs
testing
Use before commit, /merge-to-main, /workday-complete, or to validate repo state. Resolves and runs the project's configured fast-test command.
development
Root-cause discipline for ONE identified bug, test failure, or unexpected behavior — pin the premise, reproduce, trace to source, fix at source, verify. For a single known issue, not a codebase sweep.