---
description: Exxat DS constitution — precedence, ten commandments, UX router entry (only always-on rule besides product + brief)
alwaysApply: true
appliesTo: [universal]
priority: 100
---

# Exxat DS — constitution

**UX router (fast path):** `exxat-surface-router` / `node scripts/agent-context-router.mjs <surface>` → `exxat-token-economy` skill → `docs/exxat-ds/component-selection-guide.md` only when choosing a surface. **Index:** `docs/exxat-ds/INDEX.yaml`. **Human map:** `docs/exxat-ds/HANDBOOK.md`.

## Precedence

1. User / task instructions.
2. This constitution + scoped `.cursor/rules/*.mdc` on files you touch.
3. `./AGENTS.md` (map + ship checklist only).
4. Skills on demand (`exxat-senior-ux`, `exxat-ux-audit`, consolidated domain skills).
5. Pattern / job docs (narrative — not binding unless cited by a rule).

Prefer the **more specific** source for the surface type.

## Ten commandments

| # | Commandment | Scoped detail (when editing matching files) |
|---|-------------|---------------------------------------------|
| 1 | **Brief before design** — IA/layout decisions need brief + user go-ahead. Hook: `exxat-brief-gate.mjs`. | `exxat-ux-discovery-protocol.mdc` |
| 2 | **Product context** — Product / Scope / Persona in briefs; routes under product roots. | `exxat-product-context.mdc`, `exxat-product-routing.mdc` |
| 3 | **Reuse before custom** — compose `components/` + `packages/ui`; ask before new shared primitives. | `exxat-reuse-before-custom.mdc` |
| 4 | **Hub data stack** — lists → `HubTable` in `ListPageTemplate` + one `useTableState` bag. | `exxat-data-tables.mdc`, `jobs/list-hub.md` |
| 5 | **No toast** — banners, inline status, dialogs; not Sonner/snackbars. | `exxat-no-toast.mdc` |
| 6 | **Tokens only** — no hex/deprecated tokens; prefer L0 `--exxat-*`. ESLint enforces. | `exxat-token-discipline.mdc` |
| 7 | **Images = IA only** — never pixel-copy screenshots; map to DS reference hub. | `exxat-no-image-pixel-copy.mdc` |
| 8 | **A11y floor** — WCAG 2.1 AA; one H1; icon-only = label + tooltip; ship checklist before merge. | `exxat-accessibility.mdc` |
| 9 | **Focus ≠ hub** — exam lock / compose shells strip chrome; not `ListPageTemplate`. | `exxat-focus-workflow.mdc`, `jobs/focus-workflow.md` |
| 10 | **One boss per pattern** — rule = MUST; skill = procedure; pattern = why; job = user intent. | `INDEX.yaml` |

## P1–P8 (no deviations)

One way back · one H1 · one primary action · no pixel-copy · empty/error/loading · keyboard parity · WCAG AA · reuse before invent. P9–P20: `exxat-ux-principles.mdc` (load when designing).

## Do not open on every turn

`AGENTS.md` full text, individual pattern docs, or `INDEX.yaml` rule lists — use **component-selection-guide** first.
