Frames show what screens look like; they're silent about everything else — state transitions, interaction rules, content limits, accessibility intent. This playbook generates the written spec pack from your frames and notes, so whatever gets built from your file — by engineers or their coding agents — has a review reference that actually specifies.
Workflow area: Handoff & Collaboration · Tier: Foundation · Hands-on time: ~25 minutes per flow
Handoff debt is the gap between what you designed and what the file says. Engineers fill that gap with guesses, and increasingly their coding agents fill it with statistically-plausible inventions — an unspecified error state doesn't stay unbuilt anymore, it gets hallucinated. The spec pack was always the right answer and never got written because it's tedious. It's also exactly the document type AI drafts well from the raw material you already have: frames, the pb-07 state matrix, critique notes, and your answers to pointed questions.
Assemble the inputs. The pack drafts itself only if the material exists: exported frames (all states from pb-07's sweep), the curated state matrix, interaction notes and critique decisions (pb-09's records if you keep them), and your design system's relevant component names.
Generate the pack skeleton per screen. In Claude or ChatGPT, attach the frames and run:
You are drafting an engineering-facing spec pack for this flow.
Extract what the frames show; ASK rather than invent what they
don't.
Flow: [NAME + ONE-LINE PURPOSE]
Design system: [e.g. "our DS component names are on each frame"]
State matrix: [PASTE FROM pb-07]
Notes: [PASTE INTERACTION/CRITIQUE NOTES]
Frames: [ATTACH — ALL STATES]
For each screen produce:
1. STATE TABLE — every state, what triggers entry/exit, what
persists across transitions
2. INTERACTION RULES — per interactive element: action, result,
disabled conditions, loading behavior, keyboard path
3. CONTENT RULES — per text slot: min/max length, truncation
behavior, empty behavior, localization stretch (+30%)
4. A11Y ANNOTATIONS — focus order, semantic roles, alt-text
intent, touch-target notes, reduced-motion behavior
5. OPEN QUESTIONS — everything the frames and notes do NOT answer,
as questions addressed to the designer. Do not resolve these
yourself.
Answer the open questions — this is the designing. The question list is the pack's most valuable output: it's every gap an engineer or agent would have filled with a guess. Good output looks like:
OPEN QUESTIONS — Review screen
Q1: Amount field — behavior when currency has no decimal
subunit? → A: hide decimals, spec added to CONTENT RULES
Q2: What happens to a half-completed form on session timeout?
→ A: persist locally 24h, restore banner on return —
NEW STATE added to matrix, frame needed
Q3: Focus order after inline error appears? → A: focus moves to
first errored field, error text in aria-describedby
Note Q2: spec-drafting routinely discovers missing design work. That's the pack paying for itself before handoff.
Verify the drafted tables against your frames. The model extracts, and extraction has error bars — it will misread a disabled state as default, or invent a hover behavior because most buttons have one. Walk each state table against its frame; anything in the spec not visible in a frame or written in your notes is either a discovered gap (design it) or a hallucination (delete it). Accessibility annotations get checked against your actual intent, not accepted as plausible defaults — the pack's a11y section feeds pb-31's gate, not replaces it.
Publish the pack next to the frames and use it at review. A page in the Figma file (or the team's Notion, per your convention) — versioned with the design, linked from the ticket. When the build comes back, the pack is the checklist: state by state, rule by rule. Deviations are either bugs or undocumented decisions, and both get resolved in writing.
Spec packs describe unreleased functionality in detail — draft them in your organization's approved AI tenant, and scrub any real user data visible in attached frames before uploading.
Whatever builds from your file — human or agent — builds from what the file says, not what you meant; the spec pack is where what you meant gets written down, and the open-questions list is where your unfinished design decisions stop hiding.