AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Designing Interfaces

skill-isvlasov-rageatc-oss-designing-interfaces · by isvlasov

Creates a design system for software with a UI. Use when a project has a user interface and architecture is confirmed — whether creating from scratch or extracting patterns from existing code.

No reviews yet
0 installs
20 views
0.0% view→install

Install

$ agentstack add skill-isvlasov-rageatc-oss-designing-interfaces

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-isvlasov-rageatc-oss-designing-interfaces)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Designing Interfaces? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Designing Interfaces

Purpose

This skill guides the orchestrator through defining how the software should look and feel before any UI code is written. It sits between architecture (how to build it) and decomposition (what chunks to build in) — ensuring every UI decision is intentional, domain-rooted, and systematic.

The orchestrator runs this directly (not delegated) because it is dialogic — exploring the product's world with the user to produce a design system that compounds across the entire build.

Scope and Constraints

This skill covers:

  • Exploring the product domain to derive design direction
  • Proposing and confirming a design direction with the user
  • Producing a token architecture and design system
  • Creating .interface-design/system.md as the persistent design record
  • Extracting patterns from existing code (brownfield entry)

This skill does NOT cover:

  • Implementation of UI components (that is the developer-agent's job)
  • Design compliance review during builds (that is the design-compliance review perspective)
  • Marketing design, landing pages, or campaigns
  • Architecture or technology selection (that is architecting-software)

Handoff position:

architecting-software  →  designing-interfaces  →  decomposing-work
(ARCHITECTURE.md)          (system.md)              (ROADMAP.md)

Receive from upstream: a confirmed ARCHITECTURE.md and PRD.md (who the users are, what they need to accomplish).

Hand off downstream: a .interface-design/system.md that decomposition and enrichment can reference, and that developers implement against.

Inputs Required

Before starting, confirm you have:

  • [ ] Confirmed PRD.md — who the users are, what problem is being solved, success criteria
  • [ ] Confirmed ARCHITECTURE.md — tech stack, frontend framework, component structure
  • [ ] The user available for dialogue — design direction requires conversation, not assumption

For brownfield projects, also:

  • [ ] Path to existing UI code — to extract current patterns before refining

Outputs Produced

  • .interface-design/system.md — the design system record (see Template section)

This file persists across sessions. Once created, all UI work references it. Updates happen through this skill, not ad hoc edits.


The Problem

You will generate generic output. Your training has seen thousands of dashboards. The patterns are strong.

You can follow the entire process below — explore the domain, name a signature, state your intent — and still produce a template. Warm colours on cold structures. Friendly fonts on generic layouts. "Kitchen feel" that looks like every other app.

This happens because intent lives in prose, but code generation pulls from patterns. The gap between them is where defaults win.

The process below helps. But process alone does not guarantee craft. You have to catch yourself.

Where Defaults Hide

Defaults do not announce themselves. They disguise themselves as infrastructure — the parts that feel like they just need to work, not be designed.

Typography feels like a container. Pick something readable, move on. But typography is not holding your design — it IS your design. The weight of a headline, the personality of a label, the texture of a paragraph. These shape how the product feels before anyone reads a word. A bakery management tool and a trading terminal might both need "clean, readable type" — but the type that is warm and handmade is not the type that is cold and precise.

Navigation feels like scaffolding. Build the sidebar, add the links, get to the real work. But navigation is not around your product — it IS your product. Where you are, where you can go, what matters most.

Data feels like presentation. You have numbers, show numbers. But a number on screen is not design. The question is: what does this number mean to the person looking at it? A progress ring and a stacked label both show "3 of 10" — one tells a story, one fills space.

Token names feel like implementation detail. But your CSS variables are design decisions. --ink and --parchment evoke a world. --gray-700 and --surface-2 evoke a template.

The trap is thinking some decisions are creative and others are structural. There are no structural decisions. Everything is design.


Workflow

Entry Path: Greenfield (no existing system.md)

Step 1: Establish Intent

Before touching anything visual, answer these — out loud, to the user. Not in your head.

Who is this human? Not "users." The actual person. Where are they when they open this? What is on their mind? What did they do 5 minutes ago, what will they do 5 minutes after? A teacher at 7am with coffee is not a developer debugging at midnight is not a founder between investor meetings. Their world shapes the interface.

What must they accomplish? Not "use the dashboard." The verb. Grade these submissions. Find the broken deployment. Approve the payment. The answer determines what leads, what follows, what hides.

What should this feel like? Say it in words that mean something. "Clean and modern" means nothing — every AI says that. Warm like a notebook? Cold like a terminal? Dense like a trading floor? Calm like a reading app?

If you cannot answer these with specifics, stop. Ask the user. Do not guess. Do not default.

The test: For every decision, you must be able to explain WHY. Why this layout and not another? Why this colour temperature? Why this typeface? If your answer is "it's common" or "it's clean" — you have not chosen. You have defaulted.

Step 2: Explore the Product Domain

This is where defaults get caught — or do not.

Generic output: Task type → Visual template → Theme Crafted output: Task type → Product domain → Signature → Structure + Expression

Do not propose any direction until you produce all four required outputs:

Domain: Concepts, metaphors, vocabulary from this product's world. Not features — territory. Minimum 5.

Colour world: What colours exist naturally in this product's domain? Not "warm" or "cool" — go to the actual world. If this product were a physical space, what would you see? List 5+.

Signature: One element — visual, structural, or interaction — that could only exist for THIS product. If you cannot name one, keep exploring.

Defaults: 3 obvious choices for this interface type — visual AND structural. You cannot avoid patterns you have not named.

Step 3: Propose Direction

Present to the user:

Domain: [5+ concepts from the product's world]
Colour world: [5+ colours that exist in this domain]
Signature: [one element unique to this product]
Rejecting: [default 1] → [alternative], [default 2] → [alternative], [default 3] → [alternative]

Direction: [approach that connects to the above]

Ask: "Does that direction feel right?"

The proposal must explicitly reference domain concepts, colours from the colour world exploration, the signature element, and what replaces each default.

The test: Read your proposal. Remove the product name. Could someone identify what this is for? If not, it is generic. Explore deeper.

Step 4: Build the Design System

Once direction is confirmed, produce the token architecture:

For every decision, state WHY:

Intent: [who is this human, what must they do, how should it feel]
Palette: [colours from your exploration — and WHY they fit this product's world]
Depth: [borders / shadows / layered — and WHY this fits the intent]
Surfaces: [your elevation scale — and WHY this colour temperature]
Typography: [your typeface — and WHY it fits the intent]
Spacing: [your base unit]

Apply the craft foundations (see Craft Foundations section below) and produce a complete system.md using the template in references/system-template.md. Reference references/system-precision.md and references/system-warmth.md for examples of complete systems.

Step 5: Self-Critique Before Presenting

Before showing the user, look at what you made. Ask yourself: "If they said this lacks craft, what would they mean?" That thing you just thought of — fix it first.

Run these checks:

  • The swap test: If you swapped the typeface for your usual one, would anyone notice? The places where swapping would not matter are the places you defaulted.
  • The squint test: Blur your eyes. Can you still perceive hierarchy? Is anything jumping out harshly?
  • The signature test: Can you point to five specific elements where your signature appears? A signature you cannot locate does not exist.
  • The token test: Read your CSS variables out loud. Do they sound like they belong to this product's world, or could they belong to any project?

If any check fails, iterate before showing.

Step 6: Confirm and Save

Present system.md to the user for approval. This is a gate — do not proceed to decomposition without explicit confirmation.

Save to .interface-design/system.md at the project root.


Entry Path: Brownfield (existing UI code)

Step 1: Extract Current Patterns

Scan the existing UI files (tsx, jsx, vue, svelte, css) for:

  • Repeated spacing values → identify the implicit spacing scale
  • Border radius patterns → identify the implicit radius scale
  • Colour values → identify the implicit palette
  • Shadow usage → identify the implicit depth strategy
  • Component patterns → identify buttons, cards, controls
Step 2: Present Findings

Show the user what you found:

  • "Your current code uses these patterns: [extracted patterns]"
  • "These areas are inconsistent: [conflicts found]"
  • "This appears to be the implicit design direction: [inferred direction]"
Step 3: Refine With User

Ask: "Do you want to formalise these patterns as-is, or take this opportunity to establish a new direction?"

  • If formalise → produce system.md from extracted patterns
  • If new direction → switch to Greenfield Step 1, carrying forward any patterns worth keeping
Step 4: Confirm and Save

Same gate as greenfield — present for approval, save to .interface-design/system.md.


Craft Foundations

These apply regardless of design direction. This is the quality floor.

Subtle Layering

This is the backbone of craft. You should barely notice the system working. When you look at Vercel's dashboard, you do not think "nice borders." You just understand the structure. The craft is invisible — that is how you know it is working.

Surface Elevation: Surfaces stack. Build a numbered system — base, then increasing elevation levels. Each jump should be only a few percentage points of lightness. Whisper-quiet shifts that you feel rather than see.

Key decisions:

  • Sidebars: Same background as canvas, not different. A subtle border is enough separation.
  • Dropdowns: One level above their parent surface.
  • Inputs: Slightly darker than surroundings — they are "inset," receiving content.

Borders: Low opacity rgba blends with the background — defines edges without demanding attention. Build a progression: standard, softer separation, emphasis, maximum emphasis for focus rings.

Infinite Expression

Every pattern has infinite expressions. No interface should look the same. A metric display could be a hero number, inline stat, sparkline, gauge, progress bar, comparison delta, or something new.

Before building, ask: What is the ONE thing users do most here? What products solve similar problems brilliantly? Why would this interface feel designed for its purpose, not templated?

Colour Lives Somewhere

Every product exists in a world. That world has colours. Before reaching for a palette, spend time in the product's world. Your palette should feel like it came FROM somewhere — not like it was applied TO something.


Design Principles

Token Architecture

Every colour traces back to primitives: foreground (text hierarchy), background (surface elevation), border (separation hierarchy), brand, and semantic (destructive, warning, success). No random hex values.

Text Hierarchy

Four levels — primary, secondary, tertiary, muted. Each serves a different role. Use all four consistently.

Border Progression

Scale matching intensity to importance — standard separation, softer separation, emphasis, maximum emphasis.

Control Tokens

Dedicated tokens for control backgrounds, control borders, and focus states. Tune interactive elements independently from layout surfaces.

Spacing

Pick a base unit and stick to multiples. Build a scale: micro (icon gaps), component (within buttons/cards), section (between groups), major (between distinct areas).

Depth

Choose ONE approach and commit:

  • Borders-only — Clean, technical. For dense tools.
  • Subtle shadows — Soft lift. For approachable products.
  • Layered shadows — Premium, dimensional. For cards that need presence.
  • Surface colour shifts — Background tints establish hierarchy without shadows.

Do not mix approaches.

Typography

Build distinct levels distinguishable at a glance. Headlines need weight and tight tracking. Body needs comfortable weight. Labels need medium weight at smaller sizes. Data needs monospace with tabular number spacing.

Card Layouts

Design each card's internal structure for its specific content — but keep surface treatment consistent: same border weight, shadow depth, corner radius, padding scale.

Navigation Context

Screens need grounding. Include navigation showing where you are, location indicators, and user context.

Dark Mode

Shadows are less visible on dark backgrounds — lean on borders. Semantic colours often need slight desaturation. Same hierarchy system, inverted values.


Sameness Is Failure

If another AI, given a similar prompt, would produce substantially the same output — you have failed. This is not about being different for its own sake. It is about the interface emerging from the specific problem, the specific user, the specific context. When you design from intent, sameness becomes impossible because no two intents are identical.

Intent must be systemic. Saying "warm" and using cold colours is not following through. If the intent is warm: surfaces, text, borders, accents, semantic colours, typography — all warm. Check your output against your stated intent. Does every token reinforce it?


Avoid

  • Harsh borders — if borders are the first thing you see, they are too strong
  • Dramatic surface jumps — elevation changes should be whisper-quiet
  • Inconsistent spacing — the clearest sign of no system
  • Mixed depth strategies — pick one approach and commit
  • Missing interaction states — hover, focus, disabled, loading, error
  • Dramatic drop shadows
  • Large radius on small elements
  • Pure white cards on coloured backgrounds
  • Multiple accent colours — dilutes focus
  • Different hues for different surfaces — keep the same hue, shift only lightness

References

For more detail on specific topics:

  • references/principles.md — Code examples, specific values, dark mode implementation
  • references/examples.md — Craft in action with real decision-making examples
  • references/validation.md — Memory management, when to update system.md
  • references/critique.md — Post-build craft critique protocol
  • references/system-template.md — Template for system.md
  • references/system-precision.md — Example: precision and density direction
  • references/system-warmth.md — Example: warmth and approachability direction

Evaluation Scenarios

Scenario 1: Greenfield Dashboard — Standard Tier

Context: User wants to build a recipe management dashboard. PRD confirmed, architecture uses React + Tailwind. Orchestrator invokes designing-interfaces at Stage 4.

Expected outcome:

  • Step 1: Establish intent — who (home cook, morning/evening), what (find recipe fast, plan meals), feel (warm kitchen, not clinical)
  • Step 2: Domain exploration — kitchen concepts, ingredient colours, handwritten signature

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.