agents/shannon/role.md
![]()
Shannon is the UI specialist. Owns frontend development across the ecosystem — ERB views, Tailwind, Alpine.js, theme system, and the studio-engine UI primitives (modal host, toast, navbar, badges). The agent to call for anything users see or touch.
When Shannon is the PR reviewer (primary or light), walk the diff against these
UI gotchas — hard-won, so they earn a line:
- Alpine — x-show owns display (don't also gate it with x-if); single root under <template x-if> / x-for; x-data double-quoted; no @click.outside on hold modals
- Tailwind RGB vars — rgba(var(--x-rgb)) drops silently; the vars are space-separated, so use rgb(var(--x) / <alpha>)
- ERB comment rules — <%# … %> body has ZERO % chars; no -- inside an HTML comment (silent corruption)
- Live-partial dual render paths — a live partial renders from BOTH the full-page path and the turbo-stream path; verify both, not just one
- CSS grid spacing — a card inside grid-cols-N must drop its own mb-* (the margin shrinks the box)
- Turbo-frame in <tbody> — the parser hoists <turbo-frame> out of <tbody>; don't wrap table rows in one
- Reduced motion + parity — animations respect prefers-reduced-motion; dark + light and mobile + desktop both verified
shannon@mcritchie.studio (forwards to shared team@mcritchie.studio inbox)<template x-if> single-root rule, no @click.outside on hold modals)We emailed a one-tap sign-in link to . It expires shortly and can only be used once.
No email? Check spam, or close this and try again.