Atomic Design methodology for React component architecture. Use for structuring component libraries, organizing UI hierarchies, and creating scalable design systems. Triggers on requests for component organization, design system structure, UI hierarchy, or questions about Atoms/Molecules/Organisms/Templates/Pages.
/plugin marketplace add iButters/ClaudeCodePlugins/plugin install ui-kit-generator@claude-code-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
src/components/
├── atoms/ # Smallest building blocks
├── molecules/ # Simple component groups
├── organisms/ # Complex UI sections
├── templates/ # Page layouts
└── pages/ # Complete views
Indivisible UI elements. No dependencies on other components.
// atoms/Button/Button.tsx
export const Button: FC<ButtonProps> = ({ children, variant, size, ...props }) => (
<button className={cn('btn', `btn--${variant}`, `btn--${size}`)} {...props}>
{children}
</button>
);
// atoms/Input/Input.tsx
export const Input: FC<InputProps> = ({ label, error, ...props }) => (
<div className="input-wrapper">
{label && <label>{label}</label>}
<input className={cn('input', error && 'input--error')} {...props} />
{error && <span className="input-error">{error}</span>}
</div>
);
// atoms/Icon/Icon.tsx
export const Icon: FC<IconProps> = ({ name, size = 24 }) => (
<svg className="icon" width={size} height={size}>
<use href={`#icon-${name}`} />
</svg>
);
Examples: Button, Input, Label, Icon, Avatar, Badge, Spinner, Divider
Combine atoms into functional units with single responsibility.
// molecules/SearchField/SearchField.tsx
export const SearchField: FC<SearchFieldProps> = ({ onSearch, placeholder }) => {
const [value, setValue] = useState('');
return (
<div className="search-field">
<Input
value={value}
onChange={(e) => setValue(e.target.value)}
placeholder={placeholder}
/>
<Button variant="ghost" onClick={() => onSearch(value)}>
<Icon name="search" />
</Button>
</div>
);
};
// molecules/FormField/FormField.tsx
export const FormField: FC<FormFieldProps> = ({ label, error, children }) => (
<div className="form-field">
<Label>{label}</Label>
{children}
{error && <ErrorMessage>{error}</ErrorMessage>}
</div>
);
Examples: SearchField, FormField, NavItem, Card, MenuItem, Toast
Complex, self-contained sections with business logic.
// organisms/Header/Header.tsx
export const Header: FC<HeaderProps> = ({ user, onLogout }) => (
<header className="header">
<Logo />
<Navigation />
<SearchField onSearch={handleSearch} />
<UserMenu user={user} onLogout={onLogout} />
</header>
);
// organisms/ProductCard/ProductCard.tsx
export const ProductCard: FC<ProductCardProps> = ({ product, onAddToCart }) => (
<article className="product-card">
<Image src={product.image} alt={product.name} />
<div className="product-card__content">
<Heading level={3}>{product.name}</Heading>
<Price value={product.price} />
<Rating value={product.rating} />
<Button onClick={() => onAddToCart(product)}>Add to Cart</Button>
</div>
</article>
);
Examples: Header, Footer, ProductCard, CommentSection, Sidebar, DataTable
Page-level layouts without real content. Define structure only.
// templates/DashboardLayout/DashboardLayout.tsx
export const DashboardLayout: FC<DashboardLayoutProps> = ({
sidebar,
header,
content
}) => (
<div className="dashboard-layout">
<aside className="dashboard-layout__sidebar">{sidebar}</aside>
<div className="dashboard-layout__main">
<header className="dashboard-layout__header">{header}</header>
<main className="dashboard-layout__content">{content}</main>
</div>
</div>
);
Templates filled with real data. Connect to state/APIs.
// pages/DashboardPage/DashboardPage.tsx
export const DashboardPage: FC = () => {
const { data: stats } = useStats();
const { user } = useAuth();
return (
<DashboardLayout
sidebar={<DashboardSidebar />}
header={<Header user={user} />}
content={<StatsGrid stats={stats} />}
/>
);
};
| Question | Atom | Molecule | Organism |
|---|---|---|---|
| Has child components? | No | Yes | Yes |
| Has business logic? | No | Minimal | Yes |
| Reusable across projects? | Yes | Usually | Sometimes |
| Contains API calls? | No | No | Possible |
Button, Input, Icon)SearchField, NavItem)ProductCard, CheckoutForm)DashboardLayout, AuthLayout)HomePage, ProductPage)// components/atoms/index.ts
export { Button } from './Button';
export { Input } from './Input';
export { Icon } from './Icon';
// components/index.ts
export * from './atoms';
export * from './molecules';
export * from './organisms';
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.