원클릭으로
frontend-components
Enforce composable UI and behavioral tests for repeated structure.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Enforce composable UI and behavioral tests for repeated structure.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
SDD-mode PR-boundary review policy for Pi. The root launches visible reviewer lanes, publishes triage, ends the turn for acknowledgement, then fixes in a separate follow-up. Review is independent of CI.
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
Create a pull request with review, REQ backlinks, push, and CI handoff.
Verify a deployed UI in a browser for interaction, mobile layout, and visuals.
Workflow for /sdd clean — rescuing a rotted spec. Mode-aware behaviors (interactive/auto/unleashed), safety nets, what gets cleaned (incl. per-AC @impl AND @test anchor backfill at parity, gated by enforce_tdd), JUDGMENT auto-resolution rules. Invoked when /sdd clean runs. Requires the spec-driven-development skill for REQ format and Status semantics, and the spec-enforce skill family for the detection mechanics.
| name | frontend-components |
| description | Enforce composable UI and behavioral tests for repeated structure. |
The standard that exists because a landing page got built as one ~770-line file of hand-duplicated markup, tested by matching copy strings — so the same defect appeared in fifteen places and every "fix" was fifteen edits. Never again.
Every repeated piece of UI is a component. Every value you'd tune more than once (size, colour, spacing, motion, copy) lives in one central place. Every test asserts behavior or structure, never the presence of a copy string.
If you cannot say "to change X everywhere, I edit exactly one place," you are not done.
Terminal chrome + Transcript /
GateSteps / LedgerTable bodies — every terminal's frame is tuned in one file.)Three different things, three different homes:
content/site.ts-style). Components render
data; they don't carry sentences. Deleting a card from the data file removes it
from the page — that's the test, too (assert counts against the data).<style> blocks.font-size: 0.92rem one-offs; add a token or use the scale.When you componentize existing UI, preserve behavior exactly unless a change was explicitly requested. Emit the same class names / DOM shape so existing styles and scripts keep working; move logic into modules without rewriting it.
Transcript and
GateSteps with their timing/classes untouched. Structural, not behavioral.The gut-check (from test discipline): if I gut the implementation, does the test fail? If you can replace the component with a no-op and the test stays green, it's theater.
expect(html).toContain('Our pricing is simple'),
expect(html).toContain('class="card"'), asserting copy that lives in the data
file you're importing anyway. These pass even when the component is broken.animate='cursor');cols=3 → three columns rendered;variant toggles the right class / element (<h2> vs <h3>);vi.useFakeTimers();rows.length, lanes.length).href, a parsed JSON attribute equalling the source array, a hidden
default, a "never points at a real auth route" negative, the no-em-dash tripwire.prefers-reduced-motion alternative for every animation.<style> blocks → one token / one rule.toContain('<copy>') / toContain('class="…"') render assertions → behavioral test..is-visible class applied by JS → visible by default.toContain copy theater.)tdd-enforce / [[tdd-discipline]] — the antipattern catalogue behind §5.impeccable / design-taste-frontend / emil-design-eng — the visual design
layer (this skill is about architecture + tests, not aesthetics).