Signoff Skill — the sign-off / encerramento verb
Purpose
signoff is the operator's "I'm done — close this out properly and leave a trail" gesture.
Where postflight is the close-out machinery, signoff is the operator-facing verb that runs it
with the continuation BROADCAST default-ON — so the pending work is left discoverable for
whatever mind arrives next (a fresh amnesic agent, another agent, or the operator days later).
It composes, it does not reimplement (Strata / Gordian — no new machinery). Everything is delegated:
signoff [--converge] [--broadcast=<conservative|all> | --no-broadcast] [--spawn | --no-spawn] [--dry-run]
├─ (optional, --converge) → `quiesce` # drive the open PR toward green first
└─ `postflight` full --broadcast[=<scope>] [--spawn|--no-spawn] [--dry-run]
P1 SWEEP → P2 DEBRIEF (+ the complete 10-item hunt) → P2.5 TICKET-SYNC
→ P3 HANDOFF (seed) → P3.5 SPAWN (default-ON) → P3.6 BROADCAST (default-ON HERE)
What differs from bare postflight (its entire net behavior)
| Aspect | postflight | signoff |
|---|---|---|
| BROADCAST | opt-in (--broadcast) | default-ON (conservative) — the point of a sign-off |
| framing | phases | explicit OODA (Observe = recon + 10-item hunt · Orient = root-cause + anti-theater · Decide = Taxis · Act = execute + broadcast + git) — table in commands/signoff.md |
| --converge | — | optionally drive the PR green via quiesce first |
Everything else — the sweep, debrief, hunt, ticket-sync, seed, spawn, and every guardrail — is
postflight's (and quiesce's). signoff owns only the broadcast-default-ON policy + the OODA
framing; it holds no machinery of its own.
When to Use
At the end of a session/thread, especially before /compact or /clear, or when handing off —
whenever you want the close-out and a discoverable continuation trail (the default).
Guardrails (all inherited — signoff adds none of its own)
Safe-or-DEFER close-out (P1: dirty tree / conflict / held index.lock / untracked-you-didn't-create
→ DEFER), structured-back-pointer-not-TODO broadcast (P3.6 / ADR-010: byte-idempotent · fail-closed ·
metadata-only · decision-records refused · MAOS_BROADCAST=0 kill-switch · NOOP when nothing
pending), high-blast spawn (P3.5: POSTFLIGHT_SPAWN=0 · depth-cap · --no-spawn), and full git
under pr-review-protocol + auto-merge-standing-authorization (HITL only for genuine
HUMAN_DOMAIN residue). Full flag/example reference: commands/signoff.md.
Anti-patterns (do NOT)
- ❌ Reimplement sweep/debrief/seed/broadcast inside
signoff— it COMPOSESquiesce+postflight. - ❌ Sign off over an un-swept state, OR force a spawn/broadcast the operator opted out of —
the P3 DoR gates the seed/marker (so they never misreport reality); honor
--no-spawn/--no-broadcast/ the kill-switches.
Related Multi-Agent OS Artifacts
skills/postflight/SKILL.md— the close-out machinerysignoffwraps (P1–P3.6).skills/postflight/references/{continuation-broadcast-protocol.md,close-out-hunt-checklist.md}bin/continuation-broadcast.sh+docs/adrs/ADR-010-continuation-broadcast.md— the P3.6 marker.
skills/quiesce/SKILL.md— the drive-to-greensignoff --convergecomposes.commands/signoff.md— the/maos:signoffentry point (full flags + examples + the OODA table).skills/preflight/SKILL.md— start-of-session counterpart; looppreflight → work → signoff → (spawn) → preflight ….
License
MIT (matches the multi-agent-os repo LICENSE).