Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
The English summary is being prepared. Showing the original description.
Use when designing or reviewing a form — validation timing, error display, submission lifecycle, optimistic UI, dirty/pristine state, idempotency — even on 'why does submit double-fire?'.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Pick the validation timing, lay out error placement, sequence the submission lifecycle, and decide where (and whether) to use optimistic UI. Stack-agnostic — Livewire, Inertia, React Hook Form, server-rendered Blade — the lens is the same. Pair with
laravel-validationfor server-side rules andaccessibility-auditorfor label / error a11y.
Do NOT use when:
laravel-validation (or the
stack equivalent).fe-design or
tailwind-engineer.Inspect every field on the form (text, password, async-checked, file, multi-step) before choosing timing. Three knobs, picked per field:
| Timing | When |
|---|---|
| On submit only | Forms with privacy concerns (passwords); short forms |
| On blur | Default — feedback when the user finishes the field |
| On change (debounced) | Typing-feedback fields (password strength) |
Avoid validate-on-change for the whole form — premature errors shame the user.
An on-change availability check is an enumeration oracle, not a default.
For any field that IDENTIFIES an account — email, phone, login handle — it
answers "does this account exist?" to anyone who types, at whatever rate the
debounce allows. That is the account-enumeration threat row in
threat-modeling's corpus, and the field being a signup form rather than a
login form changes nothing about what the answer tells an attacker.
It is acceptable only where all three hold: the field is a PUBLIC handle that is not a login identifier, the endpoint is rate-limited per account and per source, and the project has recorded the trade deliberately. Otherwise the check belongs on submit, with a response that does not distinguish taken from free.
Per field: error message location (below field), text-based
(never colour-only), aria-describedby wired, focus moves to
first error on submit-fail. Per form: a summary box at top
that lists every error with anchor links — required for forms
5 fields and any wizard step.
Order matters; bake into one helper:
A submit handler that skips step 1 is a duplicate-record bug waiting to fire on slow networks.
Optimistic UI is only safe when rollback is cheap and visible: toggling a like, marking read, in-list reorder. It is unsafe for: multi-field forms, money movements, anything with downstream notifications. Default to non-optimistic; opt in per action with a documented rollback path.
Pristine = identical to the server's last-known value. Dirty =
any difference. On route-leave with dirty form, prompt
confirmation (browser beforeunload for full nav, in-app modal
for client-side route changes). For wizards, dirty state is
per-step; submit at step N validates only that step's fields,
final submit re-validates the whole payload server-side.
Return:
Concrete shape:
Form: <name / route>
Validation timing: per field — <field: timing>
Error display: below field + summary box (≥ 5 fields)
Submit lifecycle: <list of steps 1–7 with any deviations>
Optimistic UI: <none | per action — list with rollback path>
Dirty guard: <yes/no — and the route-leave hook>
Idempotency: <strategy — disable + token? request id?>
Server contract: <endpoint, status codes, error shape>
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
The English summary is being prepared. Showing the original description.
Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.
The English summary is being prepared. Showing the original description.
Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.
The English summary is being prepared. Showing the original description.
Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.
The English summary is being prepared. Showing the original description.
Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.
The English summary is being prepared. Showing the original description.
Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.
The English summary is being prepared. Showing the original description.