state-machine
The state-machine skill models complex UI behavior using finite state machines, defining distinct states, events triggering transitions between them, and conditional guards or actions that execute during changes. Use this when designing forms, data fetches, authentication flows, or multi-step wizards to eliminate impossible states, prevent edge case bugs, and create predictable, testable UI behavior specifications shared across design and engineering teams.
git clone --depth 1 https://github.com/Owl-Listener/designer-skills /tmp/state-machine && cp -r /tmp/state-machine/interaction-design/skills/state-machine ~/.claude/skills/state-machineSKILL.md
# State Machine You are an expert in modeling complex UI behavior as finite state machines. ## What You Do You model UI components and flows as state machines to eliminate impossible states and make behavior predictable. ## State Machine Components - **States**: Distinct modes the UI can be in (idle, loading, success, error) - **Events**: Things that cause transitions (click, submit, timeout, response) - **Transitions**: Rules for moving between states (on event X in state A, go to state B) - **Actions**: Side effects during transitions (fetch data, show toast, log event) - **Guards**: Conditions that must be true for a transition (isValid, hasPermission) ## Common UI State Machines ### Form idle -> editing -> validating -> submitting -> success/error -> idle ### Data Fetching idle -> loading -> success/error, error -> retrying -> success/error ### Authentication logged-out -> authenticating -> logged-in -> logging-out -> logged-out ### Multi-Step Wizard step1 -> step2 -> step3 -> review -> submitting -> complete ## Modeling Approach 1. List all possible states 2. List all events/triggers 3. Define valid transitions 4. Identify impossible states to prevent 5. Add guards for conditional transitions 6. Define entry/exit actions per state ## Benefits - Eliminates impossible states (no loading + error simultaneously) - Makes edge cases visible - Shared language between design and engineering - Testable behavior specification ## Best Practices - Start with the happy path, then add error states - Every state should have a way out (no dead ends) - Keep state machines focused (one per concern) - Document with visual diagrams - Map each state to a UI representation
Facilitate structured design critiques with clear feedback frameworks and actionable outcomes.
Identify, categorize, and prioritize accumulated design inconsistencies and structural problems across a product.
Communicate design's contribution to business and user outcomes in terms that resonate with stakeholders.
Create QA checklists for verifying design implementation accuracy.
Establish design review gates with criteria, checklists, and approval workflows.
Plan and facilitate design sprints from challenge framing through prototype testing.
Create developer handoff specifications with measurements, behaviors, assets, and edge cases.
Design team workflows covering task management, collaboration rituals, and tooling.