---
name: journey-continuity-audit
description: "Audit a prototype's screens as end-to-end journeys — the gaps that live BETWEEN screens (missing queues/worklists, dead or legacy or context-losing edges, absent handoff receivers, missing states/exceptions/artifacts) — and emit a structured, severity-ranked gap list plus a continuity ledger. Use as the phase-1 exit gate, after any batch of new screens lands, or as a periodic prototype sweep. Runs in TWO venues: pasted into the design-tool session (Claude Design) via CONSOLE_PROMPT.md, or in-repo via the journey-auditor agent under /journey-audit."
allowed-tools: Read, Write, Edit, Grep, Glob, Bash
---

> **Specialization:** generic by design — bind every `<…>` and "per `CLAUDE.md`" reference from the project `CLAUDE.md` (the prototype location + entry point + file pattern, the priority journeys `J-…` and roles, the design-language anchors, the design-backlog board, module codes, the screen registry). See `SPECIALIZE.md`. If a needed value is missing, STOP-and-ask.

## What this is — the third layer of the continuity stack

Screens designed one at a time accumulate gaps that live *between* them — invisible to any per-screen review. The kit already enforces continuity at two layers; this skill adds the missing third:

| Layer | Scope | Side | When |
|---|---|---|---|
| Continuity invariants (`CLAUDE.md §6`) | per-screen rules | both | always |
| **This audit** | **journey-level, between screens** | **prototype** | **phase-1 gate · after design batches · after drift adoption · periodic** |
| `interaction-auditor` | per-affordance closure | built UI | phase 5 + backlog sweeps |

Boundaries are strict: this audits the **prototype's journeys**; `interaction-auditor` audits the **built UI's affordances**; `design-sync` triages **drift**; `spec-researcher` finds **spec-vs-market** gaps. Never fold one into another.

## The method (full fillable prompt: [`CONSOLE_PROMPT.md`](CONSOLE_PROMPT.md) — single source for both venues)

- **Phase 0 — inventory, mechanical:** build the **route ledger** (every screen → module, archetype, shell/style generation) and the **edge ledger** (every CTA/link/row-click → labeled intent + actual destination, classified `OK | DEAD-END | LEGACY | WRONG`). `WRONG` = destination exists but the subject's identity/context doesn't arrive. A third of gaps surface here, deterministically, before any judgment.
- **Phase 1 — trace, don't browse:** per **role × journey**, walk the working day. Arrival/next, the **pick-before-work rule** (a queue/worklist before every task screen — and every worklist row opens the task *carrying that row's identity*), **context continuity** across screens and roles, completion (what the user sees + where they land), the **handoff pair** (sender's done-state AND receiver's incoming surface — the receiver side is the one usually missing), interruption/resumability.
- **Phase 2 — the classic gap patterns:** entry & identity (search-before-create, flow variants, first-run/empty-tenant, **create-form-opens-empty** — a create/new/register/add form must open blank [placeholders + system-proposed defaults only], never bound to a sample/existing record; the *inverse* of Phase-0 `WRONG` context-loss = context present that must be ABSENT; keyed off the sidecar `formMode: create`; an `edit` form opening blank is the mirror gap) · queues/capacity/time (per-station load view, the FULL/overflow path, shift bookends + end-of-day close, concurrency/claim-lock) · states per list AND per record (draft/empty/active/blocked/completed/voided) · exceptions & reversibility (no-show/cancel/refuse/retry/undo; void/correction/unmerge each a designed gated path + audit trace) · connective tissue (cross-links, back-nav/deep links, the notification loop closing) · consistency & role fit (one shell generation; gated-not-hidden) · the artifact trail (every printable/issuable thing designed, with reissue).
- **Phase 3 — report, then STOP:** the structured gap list + the continuity ledger; never build before approval.
- **Phase 4 — fill, additively:** add screens/states/links only, in the existing vocabulary; states-over-screens; wire both ends; batch by journey, S1 first; **re-run Phase 0 + re-trace after each batch** (filling gaps creates new seams).

## The gap-row contract (what every consumer emits)

```
GAP-nn | journey | role | from → to | what's missing/broken (screen · state · link · context-loss)
      | severity S1–S4 | proposed fix (new screen / new state / rewire) | reuse anchor
```
Severity: **S1** blocks the journey · **S2** forces a workaround · **S3** degrades · **S4** polish.
Plus the **continuity ledger**: per journey, the ordered screen chain with gaps marked inline.

## Routing the gaps (kit integration — who fixes what)

| Gap fix class | Route |
|---|---|
| **Missing screen** (no prototype source) | Emit as a `DesignBacklog:` row (module, screen, severity, scaffold, inbound seam, entity, primary CTA → destination, guarded CTAs, reference screens) → the orchestrator files it to the design-backlog board → `design-prompt-authoring` briefs it (splice fields verbatim into §J's Journey-splice block) → `/design-build` (in-repo lane; the builder receives the **journey splice packet**, splices both edges, and the command's **continuity delta check** re-runs this skill's Phase-0 ledger over the journey before the boards flip) or console + `/promote-design`. |
| **Rewire / new state on an existing prototype source, screen NOT built** | A prototype micro-edit: the orchestrator applies it single-writer (or batches it into a console fix session) and **refreshes the source's provenance hash** in the registry row. |
| **Anything touching a BUILT (✅) screen's prototype source** | That is **drift by definition** → hand the delta to `design-sync` for classification (cosmetic/structural/contract-affecting, preserve-wiring) — never edit directly. |
| **Graduated screens** | Prototype frozen; file the gap **forward-only** against the built side (the builders / `interaction-auditor` remediation path). |

## The adoption pairing (design-sync → this skill, post-execution)
Adopting a changed prototype is a journey event: `design-sync` **flags** each drifted screen's journey membership (sidecar `journeys` lookup; inbound-edge counts on REMOVED rows) and its plan ends with *"post-execution continuity delta check → /journey-audit over [journeys]"*; the orchestrator runs that check **after** executing the plan — never during (half-applied edges read as false gaps). Same gate as `/design-build` 6b and `/promote-design` 4b: **the adoption is not done until the flagged journeys' edge ledgers are green.** The boundary stands: `design-sync` classifies drift and never walks a journey; this skill walks journeys and never diffs provenance.

## Done when (per audit run)
- Both ledgers exist and every edge is classified; every S1/S2 gap row names its journey, its from→to, and a reuse anchor.
- The report stopped for approval before any fill; every approved fill closed with a `GAP-nn closed by <…>` line and a re-run of the affected journey's trace.
- Zero gap rows duplicate an existing design-backlog row (dedupe by module + screen/feature).
- **Phase-1 exit criterion** (when used as the gate): zero S1 gaps on the golden journeys per `CLAUDE.md §6`.
