Use when creating atomic-level UI components like buttons, inputs, labels, and icons. The smallest building blocks of a design system.
View on GitHubTheBushidoCollective/han
jutsu-atomic-design
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/TheBushidoCollective/han/blob/main/jutsu/jutsu-atomic-design/skills/atomic-design-atoms/SKILL.md -a claude-code --skill atomic-design-atomsInstallation paths:
.claude/skills/atomic-design-atoms/# Atomic Design: Atoms
Master the creation of atomic components - the fundamental, indivisible building blocks of your design system. Atoms are the smallest functional units that cannot be broken down further without losing meaning.
## What Are Atoms?
Atoms are the basic UI elements that serve as the foundation for everything else in your design system. They are:
- **Indivisible**: Cannot be broken down into smaller functional units
- **Reusable**: Used throughout the application in various contexts
- **Stateless**: Typically controlled by parent components
- **Styled**: Implement design tokens for consistent appearance
- **Accessible**: Built with a11y in mind from the start
## Common Atom Types
### Interactive Atoms
- Buttons
- Links
- Inputs (text, checkbox, radio, select)
- Toggles/Switches
- Sliders
### Display Atoms
- Typography (headings, paragraphs, labels)
- Icons
- Images/Avatars
- Badges/Tags
- Dividers
- Spinners/Loaders
### Form Atoms
- Input fields
- Textareas
- Checkboxes
- Radio buttons
- Select dropdowns
- Labels
## Button Atom Example
### Basic Implementation
```typescript
// atoms/Button/Button.tsx
import React from 'react';
import type { ButtonHTMLAttributes } from 'react';
import styles from './Button.module.css';
export type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'danger';
export type ButtonSize = 'sm' | 'md' | 'lg';
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
/** Visual style variant */
variant?: ButtonVariant;
/** Size of the button */
size?: ButtonSize;
/** Full width button */
fullWidth?: boolean;
/** Loading state */
isLoading?: boolean;
/** Left icon */
leftIcon?: React.ReactNode;
/** Right icon */
rightIcon?: React.ReactNode;
}
export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
(
{
variant = 'primary',
size = 'md',
fullWidth = false,
isLoading = false,
leftIcon,
rightIcon,
disabl