Install any skill in seconds. Free to start, no credit card required.
Get Started Free →jpoindexter/atomic-design
Brad Frost's atomic design methodology (atoms → molecules → organisms → templates → pages) for architecting scalable, multi-platform design systems — use when structuring a component library, mapping tokens to components, organizing Figma/code component trees, or deciding the right level of abstraction for a UI element.
Passed 22 of 22 test cases with the skill, and 18 of 22 without it.
and 1 more in the full report
4 fixed18 passed either way0 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 4 test cases the skill fixed. Same model, same prompt, with and without the skill.
During QA on a user profile screen, a user's 50-character display name causes the profile header layout to break and overflow off the screen. An engineer proposes adding a custom CSS override directly on the `UserProfilePage` instance component to fix this overflow. How should this issue be resolved within an atomic design framework?
| Checked | Without skill | With skill |
|---|---|---|
| Recommends modifying the upstream organism or template component rather than applying custom styling overrides to the page instance. | Passed | Passed |
| Explains that pages are instances with real content used to expose flaws that must be fixed upstream in the component or template hierarchy. | Missed | Passed |
The instructions your model reads when the skill loads.
Atomic design is a mental model for decomposing interfaces into reusable, composable parts and reassembling them into screens. It is not a folder structure you copy blindly; it is a vocabulary for talking about granularity and composition so designers and engineers agree on what a "component" is and where it lives. Use it to make a design system legible, not to satisfy a taxonomy.
The core insight: interfaces are not pages, they are systems of components. Build the system, and pages fall out of it. The five stages give you a shared language for the spectrum from raw style primitive to fully-composed screen.
| Stage | Definition | Composable? | UI examples (cross-platform) |
|---|---|---|---|
| Atoms | Smallest functional UI units; can't be broken down without losing meaning. | Building blocks | Button, input, label, icon, checkbox, avatar, badge, spinner, switch, a single Text style |
| Molecules | A small group of atoms bonded into a unit with one job. | Atoms → 1 unit | Search field (input + button + label), form field (label + input + error), list row (avatar + title + chevron), tag chip with remove icon |
| Organisms | Relatively complex, self-contained sections made of molecules/atoms. | Molecules → section | Nav bar, card, comment thread, product tile, data table, bottom tab bar, settings group |
| Templates | Page-level layout: organisms arranged into a structure, placeholder content only. | Layout skeleton | Article layout, dashboard grid, checkout scaffold, master-detail split |
| Pages | A template filled with real, representative content — the highest-fidelity artifact. | Instance | The actual article, a populated dashboard, a real product page |
The irreducible primitives. An atom has a single responsibility and no internal layout decisions about other components. A Button is an atom; a button with an icon and a dropdown is not. Atoms are where your design tokens become visible — an atom is the smallest place a color, font size, radius, or spacing token gets applied.
Litmus test: if removing a child element changes what the thing fundamentally is, you've gone below the atom. A label without its text is still a label; a search field without its input is no longer a search field.
Atoms doing one job together. The classic example is a search form: a label atom + input atom + button atom become a SearchField molecule. Molecules are the "do one thing well" layer — they encapsulate a small interaction (enter a query, toggle a setting, pick a date) and become genuinely reusable. Most of your useful reusable components live here and at the organism level.
Distinct, recognizable sections of an interface. A Header organism might contain a logo atom, a SearchField molecule, and a NavList molecule. Organisms can contain other organisms. They are where layout, responsive behavior, and meaningful state (loading, empty, error) tend to concentrate. On native platforms, a BottomTabBar or a NavigationStack header is an organism.
Templates strip out real content and show structure: where the header goes, how the grid flows, what stacks on mobile. They are the design-system equivalent of a wireframe made of real organisms. Templates answer "how is this page laid out and how does it reflow?" without committing to copy or data. In code, a template is often a layout component or a route's skeleton (e.g. a Next.js layout.tsx, an ArticleLayout with named slots).
Templates with real, representative content plugged in — including the edge cases that break naive designs: the 40-character name, the empty list, the 3,000-comment thread, the right-to-left locale. Pages are where you validate the system against reality. If a page looks wrong, you fix the template or the organisms, not the page. Pages are instances, not new components.
The atoms/molecules/organisms metaphor is a teaching device, not a law. Its value: it conveys hierarchy and composition at a glance and gives non-overloaded names (unlike "component," "module," "widget," which mean ten things). Its limits, which you must hold honestly:
test cases passed, vs 18 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.