Frontend Design (Distinctive, Production-Grade)
Overview
This skill preserves the upstream frontend-design identity while making it operational for production work.
Use it when the task is not just to "make a UI," but to create a frontend with:
- a clear visual point of view
- semantic structure that matches the content and interaction model
- responsive behavior that works at the component level, not only at viewport breakpoints
- accessibility that survives keyboard, zoom, reduced-motion, and touch usage
- CSS architecture that stays maintainable as the interface grows
- performance and responsiveness that remain acceptable in real product conditions
This is a designer-engineer workflow. Do not generate decorative layouts first and retrofit usability later.
When to Use
Use this skill when the user asks for any of the following:
- design or redesign a page, flow, dashboard, landing page, or application shell
- implement a UI from rough direction, screenshots, wireframes, or product requirements
- make a frontend feel distinctive instead of generic or framework-default
- improve an existing interface without breaking production behavior
- fix weak responsiveness, poor hierarchy, confusing states, or inconsistent component styling
- strengthen accessibility, semantics, keyboard support, motion behavior, or touch usability
- convert design intent into maintainable HTML, CSS, and component structure
Do not use this skill as the primary workflow when the task is mainly:
- backend logic, APIs, authentication internals, or database design
- brand strategy without implementation expectations
- one-off image generation or purely visual mockups with no production path
- generic refactoring unrelated to UI behavior or design quality
Workflow
Clarify the interface goal
- Identify the user task, primary content, success state, and constraints.
- Determine whether the work is new UI, redesign, polish, or remediation.
- Capture brand signals: tone, density, contrast, shape language, motion style, and what should feel distinctive.
Inspect the current system before changing it
- Review existing layout structure, components, tokens, CSS organization, and interaction states.
- Look for hidden constraints: framework primitives, design system rules, SSR/CSR boundaries, existing breakpoints, dialog patterns, and form handling.
- If working from screenshots or vague requests, infer the minimum stable information before coding.
Define the design direction in implementation terms
- Choose the intended hierarchy, spacing rhythm, type scale, surface treatment, and interaction tone.
- Decide what should remain restrained so the distinctive elements have contrast.
- Convert abstract design language into concrete component decisions: card structure, navigation pattern, empty states, forms, tables, overlays, and feedback states.
Build semantic structure first
- Start with HTML or component structure that expresses landmarks, headings, lists, buttons, links, forms, tables, and dialogs correctly.
- Prefer native elements before ARIA-heavy custom widgets.
- Ensure the tab order, labels, headings, and reading order make sense before visual styling.
Make responsiveness component-first
- Favor intrinsic sizing, flexible layouts, and container-query thinking over viewport-only breakpoint stacking.
- Check what happens when components live in narrow sidebars, wide content columns, dense dashboards, and zoomed layouts.
- Treat text wrapping, truncation, target sizing, and control grouping as first-class design decisions.
Apply CSS architecture deliberately
- Use tokens, variables, and predictable naming or layering instead of ad hoc overrides.
- Use cascade layers when they reduce specificity conflicts between reset, tokens, base, components, utilities, and overrides.
- Avoid brittle selectors,
!important escalation, and one-off styles that encode accidental layout dependencies.
Design interaction states and accessibility together
- Define hover, focus, active, disabled, loading, error, success, and empty states.
- Keep visible focus appearance, keyboard reachability, and reduced-motion handling non-negotiable.
- Ensure dialogs, disclosures, menus, and forms have predictable behavior and semantics.
Treat performance as a design acceptance criterion
- Avoid visual decisions that create heavy runtime cost without product value.
- Watch for large DOMs, expensive shadows or filters, layout thrash, unnecessary observers, and animation tied to expensive properties.
- Consider containment, content-visibility, asset sizing, and rendering cost where the UI is dense or repeated.
Validate in realistic conditions
- Check keyboard use, zoom, narrow containers, coarse pointer use, reduced motion, and content extremes.
- Verify the interface still communicates clearly with long labels, empty data, errors, and loading states.
- If modifying existing code, confirm you did not regress semantics or interaction behavior.
Deliver the result with rationale
- Explain the visual direction, structural decisions, accessibility choices, responsiveness approach, and tradeoffs.
- Call out any assumptions, unresolved risks, or follow-up checks.
- If the task was partial, state what remains before the UI should be considered production-ready.
Output Expectations
A strong result usually includes:
- the implemented or proposed UI changes
- a short explanation of the design direction
- semantic and accessibility notes for key components
- responsiveness notes for major layout transitions or container conditions
- any performance-sensitive decisions that influenced the design
- concrete follow-up items when information is missing
Best Practices
Do
- start from user task, hierarchy, and interaction model before styling details
- preserve a clear aesthetic opinion, but express it through reusable system choices
- use semantic HTML first; treat ARIA as support, not a substitute for native structure
- prefer component resilience over pixel-perfect screenshots at one viewport size
- make focus appearance obvious and intentional, not an afterthought
- test states with real or realistic content lengths
- use CSS variables, tokens, and layers to reduce override debt
- make motion opt-in enough that reduced-motion users still get a coherent experience
- document where the design intentionally breaks from framework defaults
Do Not
- generate visually busy interfaces with no hierarchy discipline
- hide interaction affordances behind hover-only behavior
- remove outlines without providing a stronger focus treatment
- rely only on viewport breakpoints when components can appear in multiple container widths
- build custom buttons, links, selects, dialogs, or menus when native elements solve the problem
- use ARIA to patch incorrect structure that should be fixed in markup
- accept inaccessible target sizes, low-contrast focus states, or motion-heavy transitions as polish
- solve CSS conflicts primarily with specificity escalation or
!important
- ignore responsiveness and input latency until after the visual direction is finalized
Troubleshooting
Symptoms: The UI looks polished at one screen size but breaks when the same component is placed in a narrower column or sidebar.
Solution: Rework the component using intrinsic layout rules and container-aware behavior. Reduce dependence on page-level breakpoints. Verify wrapping, control grouping, and media sizing inside the component itself.
Symptoms: The design feels generic even though colors and spacing changed.
Solution: Adjust structural signals, not just surface styling. Revisit type scale, spacing rhythm, edge treatment, density, contrast strategy, and interaction tone. A distinctive frontend usually comes from consistent system choices, not isolated decoration.
Symptoms: Keyboard users can reach controls, but focus is hard to see or disappears on branded surfaces.
Solution: Add a visible, high-contrast focus treatment that survives all themes and states. Test with keyboard only across links, buttons, form controls, dialogs, and composite components.
Symptoms: A custom widget needs many ARIA attributes and still behaves inconsistently.
Solution: Step back and ask whether a native element or simpler pattern can replace it. If not, implement the full keyboard and state model intentionally instead of partial ARIA decoration.
Symptoms: CSS changes keep causing regressions or require repeated overrides.
Solution: Introduce clearer layering and ownership boundaries. Separate reset/base/component/utility/override concerns, reduce selector brittleness, and move repeated values into tokens or variables.
Symptoms: The interface becomes sluggish after adding visual richness or dense repeated cards.
Solution: Audit expensive rendering decisions. Simplify deep shadows, large blur effects, continuous animations, and unnecessary DOM depth. Consider containment or content-visibility where repeated offscreen content is involved.
Symptoms: A modal, menu, or disclosure looks correct but behaves unpredictably with keyboard or screen readers.
Solution: Re-check semantics, focus management, labeling, and escape/close behavior. Use a native or well-understood pattern before inventing interaction rules.
Examples
Example 1: Redesign request with implementation direction
Input
Make this analytics dashboard feel premium and less template-like. Keep it production-ready and accessible.
Expected approach
- Identify what currently makes the dashboard feel generic: flat card repetition, weak type hierarchy, uniform spacing, and framework-default controls.
- Propose a design direction: sharper data emphasis, stronger typography contrast, restrained accent usage, and more deliberate panel grouping.
- Preserve semantic structure for navigation, tables, filters, and chart regions.
- Improve responsiveness by letting summary cards and filter groups adapt to container width rather than only viewport breakpoints.
- Define visible focus styles, larger click targets, and reduced-motion-safe transitions.
- Explain CSS architecture changes needed to avoid override sprawl.
Example 2: Existing component polish without breaking semantics
Input
Restyle this settings form so it feels more modern, but do not sacrifice usability.
Expected approach
- Keep labels, descriptions, validation, and field grouping explicit.
- Improve spacing rhythm, control sizing, and section hierarchy.
- Ensure form actions remain obvious and keyboard reachable.
- Add strong focus treatment and error/success states.
- Check long labels, helper text, and mobile stacking behavior before finalizing the visual treatment.
For a worked before/after style execution example, open examples/worked-example.md.
Additional Resources
references/domain-notes.md — Open this during implementation when you need compact decision rules for container queries, cascade layers, semantic-first accessibility, focus appearance, target sizing, reduced motion, dialog behavior, and performance-sensitive UI choices.
examples/worked-example.md — Open this when you want a concrete prompt-to-output pattern showing how to transform a generic request into a production-grade frontend design response.
Related Skills
No verified related local skills were provided in the source context.
1---2name: frontend-design-v3-23description: Use this skill when the user needs to design, refine, or implement a distinctive production-ready frontend: define visual direction, build or restyle components and pages, improve responsive behavior, strengthen accessibility, and translate design intent into maintainable code without defaulting to generic AI-generated UI patterns.4license: Unknown5---67# Frontend Design (Distinctive, Production-Grade)89## Overview1011This skill preserves the upstream `frontend-design` identity while making it operational for production work.1213Use it when the task is not just to "make a UI," but to create a frontend with:14- a clear visual point of view15- semantic structure that matches the content and interaction model16- responsive behavior that works at the component level, not only at viewport breakpoints17- accessibility that survives keyboard, zoom, reduced-motion, and touch usage18- CSS architecture that stays maintainable as the interface grows19- performance and responsiveness that remain acceptable in real product conditions2021This is a designer-engineer workflow. Do not generate decorative layouts first and retrofit usability later.2223## When to Use2425Use this skill when the user asks for any of the following:26- design or redesign a page, flow, dashboard, landing page, or application shell27- implement a UI from rough direction, screenshots, wireframes, or product requirements28- make a frontend feel distinctive instead of generic or framework-default29- improve an existing interface without breaking production behavior30- fix weak responsiveness, poor hierarchy, confusing states, or inconsistent component styling31- strengthen accessibility, semantics, keyboard support, motion behavior, or touch usability32- convert design intent into maintainable HTML, CSS, and component structure3334Do **not** use this skill as the primary workflow when the task is mainly:35- backend logic, APIs, authentication internals, or database design36- brand strategy without implementation expectations37- one-off image generation or purely visual mockups with no production path38- generic refactoring unrelated to UI behavior or design quality3940## Workflow41421. **Clarify the interface goal**43 - Identify the user task, primary content, success state, and constraints.44 - Determine whether the work is new UI, redesign, polish, or remediation.45 - Capture brand signals: tone, density, contrast, shape language, motion style, and what should feel distinctive.46472. **Inspect the current system before changing it**48 - Review existing layout structure, components, tokens, CSS organization, and interaction states.49 - Look for hidden constraints: framework primitives, design system rules, SSR/CSR boundaries, existing breakpoints, dialog patterns, and form handling.50 - If working from screenshots or vague requests, infer the minimum stable information before coding.51523. **Define the design direction in implementation terms**53 - Choose the intended hierarchy, spacing rhythm, type scale, surface treatment, and interaction tone.54 - Decide what should remain restrained so the distinctive elements have contrast.55 - Convert abstract design language into concrete component decisions: card structure, navigation pattern, empty states, forms, tables, overlays, and feedback states.56574. **Build semantic structure first**58 - Start with HTML or component structure that expresses landmarks, headings, lists, buttons, links, forms, tables, and dialogs correctly.59 - Prefer native elements before ARIA-heavy custom widgets.60 - Ensure the tab order, labels, headings, and reading order make sense before visual styling.61625. **Make responsiveness component-first**63 - Favor intrinsic sizing, flexible layouts, and container-query thinking over viewport-only breakpoint stacking.64 - Check what happens when components live in narrow sidebars, wide content columns, dense dashboards, and zoomed layouts.65 - Treat text wrapping, truncation, target sizing, and control grouping as first-class design decisions.66676. **Apply CSS architecture deliberately**68 - Use tokens, variables, and predictable naming or layering instead of ad hoc overrides.69 - Use cascade layers when they reduce specificity conflicts between reset, tokens, base, components, utilities, and overrides.70 - Avoid brittle selectors, `!important` escalation, and one-off styles that encode accidental layout dependencies.71727. **Design interaction states and accessibility together**73 - Define hover, focus, active, disabled, loading, error, success, and empty states.74 - Keep visible focus appearance, keyboard reachability, and reduced-motion handling non-negotiable.75 - Ensure dialogs, disclosures, menus, and forms have predictable behavior and semantics.76778. **Treat performance as a design acceptance criterion**78 - Avoid visual decisions that create heavy runtime cost without product value.79 - Watch for large DOMs, expensive shadows or filters, layout thrash, unnecessary observers, and animation tied to expensive properties.80 - Consider containment, content-visibility, asset sizing, and rendering cost where the UI is dense or repeated.81829. **Validate in realistic conditions**83 - Check keyboard use, zoom, narrow containers, coarse pointer use, reduced motion, and content extremes.84 - Verify the interface still communicates clearly with long labels, empty data, errors, and loading states.85 - If modifying existing code, confirm you did not regress semantics or interaction behavior.868710. **Deliver the result with rationale**88 - Explain the visual direction, structural decisions, accessibility choices, responsiveness approach, and tradeoffs.89 - Call out any assumptions, unresolved risks, or follow-up checks.90 - If the task was partial, state what remains before the UI should be considered production-ready.9192## Output Expectations9394A strong result usually includes:95- the implemented or proposed UI changes96- a short explanation of the design direction97- semantic and accessibility notes for key components98- responsiveness notes for major layout transitions or container conditions99- any performance-sensitive decisions that influenced the design100- concrete follow-up items when information is missing101102## Best Practices103104### Do105- start from user task, hierarchy, and interaction model before styling details106- preserve a clear aesthetic opinion, but express it through reusable system choices107- use semantic HTML first; treat ARIA as support, not a substitute for native structure108- prefer component resilience over pixel-perfect screenshots at one viewport size109- make focus appearance obvious and intentional, not an afterthought110- test states with real or realistic content lengths111- use CSS variables, tokens, and layers to reduce override debt112- make motion opt-in enough that reduced-motion users still get a coherent experience113- document where the design intentionally breaks from framework defaults114115### Do Not116- generate visually busy interfaces with no hierarchy discipline117- hide interaction affordances behind hover-only behavior118- remove outlines without providing a stronger focus treatment119- rely only on viewport breakpoints when components can appear in multiple container widths120- build custom buttons, links, selects, dialogs, or menus when native elements solve the problem121- use ARIA to patch incorrect structure that should be fixed in markup122- accept inaccessible target sizes, low-contrast focus states, or motion-heavy transitions as polish123- solve CSS conflicts primarily with specificity escalation or `!important`124- ignore responsiveness and input latency until after the visual direction is finalized125126## Troubleshooting127128**Symptoms:** The UI looks polished at one screen size but breaks when the same component is placed in a narrower column or sidebar.129130**Solution:** Rework the component using intrinsic layout rules and container-aware behavior. Reduce dependence on page-level breakpoints. Verify wrapping, control grouping, and media sizing inside the component itself.131132**Symptoms:** The design feels generic even though colors and spacing changed.133134**Solution:** Adjust structural signals, not just surface styling. Revisit type scale, spacing rhythm, edge treatment, density, contrast strategy, and interaction tone. A distinctive frontend usually comes from consistent system choices, not isolated decoration.135136**Symptoms:** Keyboard users can reach controls, but focus is hard to see or disappears on branded surfaces.137138**Solution:** Add a visible, high-contrast focus treatment that survives all themes and states. Test with keyboard only across links, buttons, form controls, dialogs, and composite components.139140**Symptoms:** A custom widget needs many ARIA attributes and still behaves inconsistently.141142**Solution:** Step back and ask whether a native element or simpler pattern can replace it. If not, implement the full keyboard and state model intentionally instead of partial ARIA decoration.143144**Symptoms:** CSS changes keep causing regressions or require repeated overrides.145146**Solution:** Introduce clearer layering and ownership boundaries. Separate reset/base/component/utility/override concerns, reduce selector brittleness, and move repeated values into tokens or variables.147148**Symptoms:** The interface becomes sluggish after adding visual richness or dense repeated cards.149150**Solution:** Audit expensive rendering decisions. Simplify deep shadows, large blur effects, continuous animations, and unnecessary DOM depth. Consider containment or content-visibility where repeated offscreen content is involved.151152**Symptoms:** A modal, menu, or disclosure looks correct but behaves unpredictably with keyboard or screen readers.153154**Solution:** Re-check semantics, focus management, labeling, and escape/close behavior. Use a native or well-understood pattern before inventing interaction rules.155156## Examples157158### Example 1: Redesign request with implementation direction159160**Input**161```text162Make this analytics dashboard feel premium and less template-like. Keep it production-ready and accessible.163```164165**Expected approach**166```text167- Identify what currently makes the dashboard feel generic: flat card repetition, weak type hierarchy, uniform spacing, and framework-default controls.168- Propose a design direction: sharper data emphasis, stronger typography contrast, restrained accent usage, and more deliberate panel grouping.169- Preserve semantic structure for navigation, tables, filters, and chart regions.170- Improve responsiveness by letting summary cards and filter groups adapt to container width rather than only viewport breakpoints.171- Define visible focus styles, larger click targets, and reduced-motion-safe transitions.172- Explain CSS architecture changes needed to avoid override sprawl.173```174175### Example 2: Existing component polish without breaking semantics176177**Input**178```text179Restyle this settings form so it feels more modern, but do not sacrifice usability.180```181182**Expected approach**183```text184- Keep labels, descriptions, validation, and field grouping explicit.185- Improve spacing rhythm, control sizing, and section hierarchy.186- Ensure form actions remain obvious and keyboard reachable.187- Add strong focus treatment and error/success states.188- Check long labels, helper text, and mobile stacking behavior before finalizing the visual treatment.189```190191For a worked before/after style execution example, open [`examples/worked-example.md`](examples/worked-example.md).192193## Additional Resources194195- [`references/domain-notes.md`](references/domain-notes.md) — Open this during implementation when you need compact decision rules for container queries, cascade layers, semantic-first accessibility, focus appearance, target sizing, reduced motion, dialog behavior, and performance-sensitive UI choices.196- [`examples/worked-example.md`](examples/worked-example.md) — Open this when you want a concrete prompt-to-output pattern showing how to transform a generic request into a production-grade frontend design response.197198## Related Skills199200No verified related local skills were provided in the source context.