agentleFS
HugoLopes45HugoLopes45/design-skills/skills/interaction-design/SKILL.md

interaction-design

Skill1 starsChanged 3 months agoMITView on GitHub

Structure before pixels — object model, task flows, ASCII wireframes, entity representations, and the state matrix every feature must declare. Use when designing a new screen or flow, restructuring a page, deciding what goes where, or when a feature only handles the happy path.

20 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use accessibility-compliance, design-system-patterns and 8 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • CodeWithBehnamSkill

    accessibility-compliance

    Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.

    Also in 3 projects that use this

  • wpankSkill

    design-system-patterns

    Foundational design system architecture — token hierarchies, theming infrastructure, token pipelines, and governance. Use when creating design tokens, implementing theme switching, setting up Style Dictionary, or establishing multi-brand theming. Triggers on design tokens, theme provider, Style Dictionary, token pipeline, multi-brand theming, CSS custom properties architecture.

    Also in 3 projects that use this

  • HamzaSheikh768Skill

    responsive-design

    Implements mobile-first responsive design using Tailwind's responsive utilities, proper breakpoints, flexible layouts, and accessibility considerations.

    Also in 3 projects that use this

  • ozgureyilmazSkill

    apple-design

    Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading), reduced-motion, or the design foundations (feedback, spatial consistency, restraint) behind Apple-style interfaces.

    Also in 3 projects that use this

  • VercelSkill

    emil-design-eng

    This skill encodes Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.

    Also in 3 projects that use this

  • nilssonrSkill

    seo

    Full SEO workflow for auditing pages and creating SEO-optimized content. Provides checklists with educational explanations aligned with Google Search Central documentation.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 3 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 16 edited versions we read keep these.

  • 3

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If the evidence points above the level you were asked to work at (the flow is wrong, not the screen), say so before continuing.

    line 18
  2. Distinctive:

    Every screen has exactly one action the user came to perform.

    line 33
  3. Distinctive:

    Every failure names its recovery.

    line 35

“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Interaction Design

Structure decisions are cheap before code and expensive after. This skill is the pass between "we know what we're building" and "we're choosing colors": flows, screens, states, wireframes. A wireframe change after code exists costs ten times the same change before.

Know which level you're working at

LevelQuestionConcern
StrategyWhy, whatThe user problem and product outcome
UXHow it worksJourney, information architecture, states, language
UIHow it looksHierarchy, layout, type, color, motion

If the evidence points above the level you were asked to work at (the flow is wrong, not the screen), say so before continuing. Don't silently redesign the product while restyling a page.

Model the domain before drawing anything

A flow drawn before the object model encodes guesses. Four lists first:

  1. Objects: the nouns users think in (Invoice, Deployment, Member). When the UI's nouns differ from the users' nouns, the mental model breaks at the front door.
  2. Relations: which object belongs to, contains, or references which. This is the navigation skeleton.
  3. Actions × roles: per object, what each role can do to it. This matrix is the permission model; a screen showing an action the role can't perform is a designed error.
  4. Placement: where each object lives in the information architecture, and the one path a user takes to reach it.

A flow is a role performing an action on an object. Flows come from this model; wireframes come from the flows. Skipping to wireframes is how you get five screens for one object and none for another.

One primary action per screen

Every screen has exactly one action the user came to perform. If you can't name it, the screen isn't ready to wireframe. Everything else on the screen is either input to that action or navigation away from it.

Every failure names its recovery. A journey where an error state dead-ends is unfinished, whatever the visuals look like.

Entities are sets of representations

A domain entity (Invoice, Deployment, Patient, Order) is not one component. It's a set of representations, one per context:

RepresentationContext
RowScanning many: lists, tables
CardBrowsing few, media- or status-rich
Detail viewOne record, full depth
Badge / chipReferenced inside another entity's view
Picker itemBeing selected in a form
Empty stateZero of them exist: domain language + next action, never "No data"
SkeletonLoading, matching the target shape

For each entity, list which representations it needs and on which screens. Representations nobody scans, browses, or picks don't get built. The same entity as a card on one screen and a row on another is normal; the same card pasted everywhere is a smell.

Wireframes: ASCII, cheap to throw away

Low-fi, in markdown. No color, no fonts, no spacing values. Boxes are zones; numbers are hierarchy order (1 = where the eye lands first). A wireframe you hesitate to throw away is too expensive.

Screen: Deployments — list
Flow: Dashboard → Deployments → deploy detail
Entities: Deployment(row), Project(badge)
Primary action: New deployment

+--------------------------------------------------+
| [logo]   Deployments (1)          [New deploy] 2 |
+--------------------------------------------------+
| [filter: env] [filter: status]         [search]  |
+--------------------------------------------------+
| ● api-prod      [proj]  2m ago   Live       ...  |  <- Deployment row 3
| ● web-staging   [proj]  1h ago   Failed     ...  |
| ● worker-prod   [proj]  3h ago   Deploying  ...  |
+--------------------------------------------------+
| (empty: "No deployments yet — connect a repo")   |
+--------------------------------------------------+

Wireframes carry real labels, real error copy, real domain data, never lorem: writing the actual words is how the structure gets tested, and the content-design skill works in parallel here, not after. An error message that needs three sentences won't fit the toast the flow assumed.

Every wireframe carries four annotations: screen name, the flow it belongs to, entity representations used, the primary action. Get the wireframe agreed before any token, component, or code work. For click-through fidelity, grayscale HTML with zero styling is the acceptable step up; a design tool is for iterating with a human, not for skipping the ASCII pass.

The state matrix — declared, not assumed

Generated UI ships the success state only. The fix is not a fixed checklist; it's a declaration. For every feature, walk the full vocabulary and mark each state designed or not applicable, because.... An unmarked state is an undesigned state the browser will design for you, badly.

Data states: initial, loading, populated, empty, partial (some items failed or are still coming), stale (shown data is old; say so). Outcome states: success, error (inline, attached to the failing element, names the recovery; not a toast). Availability states: disabled (with the reason when it isn't obvious), unavailable (feature off for this plan or context), permission-denied (what the role lacks and who to ask), offline.

Rules that hold across the matrix:

  • Loading gets a skeleton matching the final layout shape, not a generic spinner, and reserves the space the content will take.
  • Empty states speak domain language and offer the next action.
  • filtered to zero results is not empty: different message, different action.
  • "Not applicable" is an explicit decision someone can challenge, never a blank.

Interactive elements additionally always carry their interaction states, no declaration needed: hover (subtle, no scale(1.05)), active (translateY(1px) or scale(0.98)), focus (visible ring, 3:1 contrast), disabled.

Evidence discipline

Claims about users cite a source: analytics, support tickets, issue history, an actual test. A cognitive walkthrough is labeled as your assumption, never presented as a user test. No invented personas, no invented KPIs.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.