skills/flutter-atomic-design/SKILL.md
Atomic Design system for Flutter with 5 levels: atoms, molecules, organisms, templates, and pages for consistent UI. Trigger: When creating UI components, building screens, or reviewing component hierarchy in the mobile app.
npx skillsauth add 333-333-333/agents flutter-atomic-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Pages → Full screens with business logic (feature-specific)
Templates → Page layouts with slots (shared)
Organisms → Complex, self-contained UI blocks (shared or feature)
Molecules → Small groups of atoms working together (shared or feature)
Atoms → Smallest indivisible UI elements (shared)
shared/presentation/atoms/The smallest possible UI element. Cannot be broken down further. Has NO business logic.
| Examples | NOT atoms |
|----------|-----------|
| AppButton | A form (that's a molecule/organism) |
| AppTextField | A card with title + image (molecule) |
| AppIcon | A navigation bar (organism) |
| AppAvatar | Anything with business logic |
| AppChip, AppDivider, AppLoadingSpinner | |
Rules:
shared/presentation/atoms/App to avoid naming conflictsFButton, FTextField, FCard, etc.) — NEVER use Material or Cupertinocontext.theme (Forui's FThemeData)Example: See assets/atom_app_button.dart
shared/presentation/molecules/Small groups of atoms working together as a unit.
| Examples | NOT molecules |
|----------|--------------|
| AppSearchBar (icon + text field) | A full form with validation (organism) |
| AppLabeledInput (label + text field) | A navigation bar (organism) |
| AppRatingStars (icons + text) | A card with actions and navigation |
| AppPriceTag (icon + amount + currency) | |
Rules:
shared/ or features/{feature}/presentation/widgets/ if feature-specificExample: See assets/molecule_app_labeled_input.dart
shared/presentation/organisms/Complex, self-contained sections of UI. Can have internal state.
| Examples | NOT organisms |
|----------|--------------|
| AppNavBar | A full page (that's a page) |
| AppLoginForm | A single input (atom/molecule) |
| PetCard (photo + name + breed + actions) | |
| CaregiverReviewList, BookingTimePicker | |
Rules:
ConsumerWidget)features/{feature}/presentation/widgets/shared/presentation/organisms/Example: See assets/organism_login_form.dart
shared/presentation/templates/Page layouts that define the structure but NOT the content. Think of them as wireframes.
| Examples |
|----------|
| AuthTemplate (centered card with logo slot + form slot) |
| DashboardTemplate (app bar + side nav + content area) |
| DetailTemplate (hero image + scrollable content + bottom action) |
Rules:
shared/presentation/templates/Example: See assets/template_auth.dart
features/{feature}/presentation/pages/Full screens that combine a template with organisms and connect to business logic.
Rules:
features/{feature}/presentation/pages/Example: See assets/page_login.dart
Is it a full screen tied to a route? → Page (features/{f}/presentation/pages/)
Is it a layout skeleton with slots? → Template (shared/presentation/templates/)
Is it a complex section with multiple parts? → Organism
└─ Feature-specific? → features/{f}/presentation/widgets/
└─ Used across features? → shared/presentation/organisms/
Is it 2-4 atoms grouped together? → Molecule (shared/presentation/molecules/)
Is it the smallest indivisible element? → Atom (shared/presentation/atoms/)
| Level | Prefix/Pattern | Location |
|-------|---------------|----------|
| Atom | App{Name} | shared/presentation/atoms/ |
| Molecule | App{Name} | shared/presentation/molecules/ |
| Organism (shared) | App{Name} | shared/presentation/organisms/ |
| Organism (feature) | {Name} (no prefix) | features/{f}/presentation/widgets/ |
| Template | {Name}Template | shared/presentation/templates/ |
| Page | {Feature}{Action}Page | features/{f}/presentation/pages/ |
| ❌ Don't | ✅ Do |
|----------|-------|
| Business logic in atoms/molecules | Keep them pure visual components |
| A 500-line "organism" | Break it into smaller organisms/molecules |
| Template that imports providers | Templates define layout only |
| Page that builds raw widgets inline | Page composes organisms inside a template |
| Atom that depends on a domain entity | Atoms accept primitive types (String, Color, VoidCallback) |
| Duplicating atoms across features | Move to shared/presentation/atoms/ |
testing
Review Flutter components and screens for UX/UI compliance. Trigger: When user invokes /ux-review command or requests UX audit.
development
TypeScript strict patterns and best practices. Trigger: When implementing or refactoring TypeScript in .ts/.tsx (types, interfaces, generics, const maps, type guards, removing any, tightening unknown).
testing
Testing philosophy and strategy for every feature: test pyramid, mandatory levels per change type, completion checklist, and skill delegation. Trigger: When planning tests for a feature, reviewing test coverage, defining acceptance criteria, or asking what tests a change needs.
development
Terraform security practices: sensitive variables, secret management, state protection, .gitignore patterns, and CI/CD credential handling. Trigger: When handling secrets in Terraform, configuring state backends, reviewing .gitignore for Terraform, or setting up CI/CD pipelines for infrastructure.