Write accessibility constraints — semantic structure, label text, contrast-safe tokens, reduced-motion variants — directly into the generation prompts and templates your team uses, so AI-drafted screens start compliant instead of getting retrofitted. Every violation you prevent at generation time is one your pb-31 gate never has to catch.
Workflow area: Accessibility & Design QA · Tier: Core · Hands-on time: ~30 minutes
Generative UI tools have a default aesthetic, and it is quietly inaccessible: light-gray placeholder text, icon buttons with no labels, meaning carried by color, headings chosen for size rather than structure. Prompt "a clean settings screen" and you inherit all of it. The fix is upstream: accessibility requirements belong in the prompt, stated as constraints the generator must satisfy, and packaged as templates so nobody on the team pastes them from memory. Prevention is cheaper than review — and it compounds, because every generated draft across every designer starts from the same floor.
Turn your gate findings into a constraint inventory. Pull the last few pb-31 findings tables (or run one AI-generated screen through the gate now) and list what generated UI actually gets wrong in your stack: contrast on secondary text, unlabeled icon buttons, color-only status, fake headings, missing focus states, motion with no reduced variant. This local evidence beats any generic checklist — you are encoding your failure modes.
Write the a11y constraint block. One reusable block, versioned, owned by someone:
ACCESSIBILITY CONSTRAINTS (non-negotiable in all generated output)
1. Contrast: body text ≥ 4.5:1 against its background; large text
and UI component boundaries ≥ 3:1. Use only these token pairs:
[YOUR CONTRAST-SAFE TOKEN PAIRS].
2. Touch targets: interactive elements ≥ 44×44 px, ≥ 8 px apart.
3. Labels: every input has a visible label (no placeholder-as-label);
every icon-only button has a text label or explicit aria-label.
4. Structure: one h1 per screen; headings nest without skipping;
text styled as a heading IS a heading.
5. Color: never the only carrier of meaning — pair status color
with icon or text.
6. Focus: all interactive elements get a visible focus state.
7. Motion: any animation over 200 ms gets a reduced-motion variant;
nothing flashes more than 3 times per second.
8. If any instruction above conflicts with the design request,
flag the conflict in output — do not silently drop a constraint.
Fuse it into the team's prompt templates. Constraints live with the request, not in a separate document nobody pastes:
Generate a [SCREEN TYPE] for [PRODUCT] using our design system
components: [LIBRARY/CONTEXT].
DESIGN INTENT: [what the screen does, tone, layout notes]
[PASTE ACCESSIBILITY CONSTRAINT BLOCK v1.3]
After generating, append a COMPLIANCE NOTE: list each constraint
number with met / not-met / not-applicable and one line of evidence.
The compliance note matters: it forces the generator to attest per constraint, and gives your review a diff-able starting point. Sample output tail:
COMPLIANCE NOTE
1. Contrast — met: text/surface pairs from approved token list.
3. Labels — met: search icon button labeled "Search".
7. Motion — N/A: no animation on this screen.
Verify the attestation — the note is a claim, not a fact. Run the generated frame through the deterministic tools from pb-31 (Stark contrast and target checks take two minutes). Generators over-report compliance; the point of the note is that it tells you exactly where to look, not that you believe it.
Close the loop monthly. Every gate finding on a generated screen gets triaged: was the constraint missing, ignored, or impossible for this tool? Missing → add it to the block and bump the version. Ignored → strengthen the wording or move that check to review. Impossible → document it as a known review item. The block is a living artifact; its changelog is your evidence that prevention is working.
Accessible-by-default generation raises the floor for users with disabilities across everything your team drafts — but attested compliance is not tested compliance. Real assistive-technology testing on the built product remains the standard nothing upstream replaces.
Put the requirements where the pixels come from. A versioned constraint block inside every generation prompt, a compliance note you verify, and a monthly loop from gate findings back into the block — that's accessibility as a system, not a sweep.