Skip to content

Creating an
Agentic
Design System

A design system for people and the agents building with them. My exploration of configurable visual language, explicit design decisions and a reviewable path from intent to implementation.

Follow the exploration
Design languageAegis Original
Light / Dark
button.contractv1

Activate an action.

idleloadingdisabled
Loading prevents
duplicate activation
Shared implementation
Button
Create project
Creating project
Aegis AgenticPortable kit
DiscoverComposeVerifyReview

What changes when agents become users of the system?

I started this as a personal exploration of how far I could take a design system. Aegis already had components and a visual language. The next question was how an agent could understand the decisions behind them, and contribute without creating another competing system.

For people
Make the purpose, anatomy and behavior of a component easy to understand.
For agents
Expose the same knowledge as structured requirements, source facts and reusable instructions.
For the designer
Define the language, the boundaries for change and what a good result must preserve.
The project specification
People
Agents
Human referenceShared knowledgeAgent context
When and whyPurposeCapability + intent
Visual languageAppearanceProfile + tokens
States and recoveryBehaviorAuthored contract
Product conventionsCompositionRecipe + policy
Inspect the resultConfidenceChecks + evidence

Different ways in.
One set of design decisions.

Start with a system that is useful on its own.

The agentic layer grows around a conventional React design system. I kept the foundations, controls, data displays, patterns and layouts usable without an agent, a service or an AI model being online.

Foundations
Tokens, typography, color, spacing, shape and motion provide a common vocabulary.
Components
Forms, tables, overlays, feedback and AI interaction components preserve their own behavior and ownership.
Compositions
Page layouts and shared patterns connect those parts into a working application.
Browse the component directory
Actionstrigger
Add userExport
Review with AIPreparing
Team settingsAM

A small surface, shaped by your design language.

Your name
Alex Morgan
Role
Administrator
Save changes
Total revenuedata-display
$24,680

+12.8%vs previous period

Feedback
ActiveInvitedSuspended

Keep the rules. Make the visual language your own.

I wanted Aegis to work as design-system infrastructure. Its default appearance is a starting point: a project profile configures brand, semantic color, typography, shape and density while keeping the underlying interaction contracts intact.

One profile
Aegis Original, Atlas Precision and Solstice Studio exercise distinct visual directions through the same compiler.
Independent axes
Light and dark remain separate from Fundamental and Fundamental Floating presentation.
Traceable values
Profiles feed Primitive → Semantic → Group tokens. Nested components retain the tokens of their own category.
Inspect the profile compiler
Aegis OriginalSoft · Figtree
Atlas PrecisionCompact · System
Solstice StudioRound · Serif
Lightfundamental
Team settings
Your name
Alex Morgan
Darkfloating
Team settings
Your name
Alex Morgan
PrimitiveRaw values
SemanticShared meaningaction.fill
GroupLocal ownershiptrigger.button

Give people a reference they can actually inspect.

I shaped Storybook around the questions a designer or engineer brings to a component. Anatomy, usage, states, API details and the authored contract live beside the real implementation, so the documentation explains decisions as well as properties.

See the parts
Connect the visible anatomy to the labels used in the component API and token mapping.
Understand the choice
Explain which decisions are independent, such as a Button’s intent and emphasis.
Follow the source
Keep generated API facts, authored guidance and behavior requirements identifiable.
Open the Button reference
Button Anatomynative-button
1Action surface
Export report
2Leading icon3Label4Trailing icon
intent="function"emphasis="primary"size="md"
{ }buttonContract v1Schema 2

Activate an action, with intent independent of emphasis.

Component
loading-lock

Disable activation while loading. Preserve the action’s accessible name.

Host
form-intent

Choose submit explicitly. Own authorization, events and asynchronous state.

Make the expectations explicit.

An API can tell an agent that a prop exists. It does not explain who owns an asynchronous state, what loading must preserve or when a component is the wrong choice. I added authored contracts to make those obligations available alongside the code.

Component
Declare purpose, anatomy, states and invariants that the implementation must preserve.
Application
Name the host’s responsibilities, from meaningful labels to persistence and authorization.
Evidence
Keep requirements, implementation, linked checks and recorded results separate. A contract is not a certification.
Read the contract model
Authored contract

dialog v1

Schema 2

A focused modal task with predictable dismissal and focus return.

Anatomy
triggerbackdroppopuptitleclose
ComponentPreserve the behavior.

Base UI modal interaction, an accessible title and normal focus return.

title-and-description
HostOwn the task.

Supply a meaningful title, accepted open state and the async lifecycle.

controlled-open
Design Surface tokens own the shell. Nested controls keep their own categories.
Implementation + APIAegis Modal / Base UI

The code supplies behavior.
API facts describe its props.

openonOpenChange
Checks + evidenceExercise the requirement.

Run the relevant interaction.
Record inputs and results.

Give an agent a route from intent to implementation.

I connected the same catalogue to Storybook, a portable command-line kit and a local MCP adapter. Skills guide the work; the tools let an agent discover contracts, inspect a project’s pinned context and validate a proposed composition.

Discover
Find existing capabilities and read the actual public API before creating something new.
Compose
Use the project profile, supported page recipes and shared product conventions.
Check
Validate the structure and audit the product patterns. The MCP adapter is read-only; it does not edit or release code.
Explore the agent interface
One installed kit

Same catalogue. Same context.

Contracts · profile · registry · project policy

Pinned
StorybookPortable CLILocal MCP
01

Discover

Find the installed context and the right responsibility.

inspect_project_contextsearch_contracts
02

Compose

Use the shared recipes, contracts and agent guidance.

validate_page_recipevalidate_composition
03

Verify

Audit the product’s declared shared patterns.

audit_product_patterns
Reusable skills
build-uicompose-patternaudit-uiextend-design-language

Consistent components still need coherent pages.

The Forma pilot put the system under product pressure across Dashboard, Users, Products, Invoices and Settings. It exposed a gap: pages could obey the tokens while still disagreeing about headers, search widths and filtering behavior.

Page recipes
Collection, detail, settings and dashboard layouts supply a shared structural starting point.
Product policy
Canonical headers, controls and documented exceptions make product decisions explicit.
Visible behavior
The filtering panel pushes and resizes the results beside it. That interaction belongs to a shared pattern.
Explore the working application
FORMAUsers

Manage the people and permissions in your workspace.

Add user
Search users…Filters122 users
UserStatus / role
OR
Olivia RhyeLayers
ActiveAdmin
PB
Phoenix BakerSisyphus
ActiveMember
LS
Lana SteinerCatalog
ActiveMember
DW
Demi WilkinsonCircooles
ActiveMember
DC
Drew CanoHourglass
ActiveViewer

The same brief can leave different decisions open.

In the Relay experiment, two agents independently built the Requests page from the same brief, shared shell, product policy and installed kit. Both passed the measured checks. One discarded a cancelled draft; the other kept it.

Shared inputs
The experiment controlled the kit, profile, dataset and supplied patterns, rather than comparing unrelated products.
Unspecified behavior
The brief required Cancel to close without creating a record. It did not say what should happen when the form reopened.
Design judgment
Visual review also found clipped titles and unexplained counts that the passing checks had not identified.
Read the independent comparison
One Requests-page briefShared shell · policy · dataset · pinned kit
AAgent A

Measured checks passed

Enter titleCancelReopen
Recorded title on reopening

Empty draft

Draft discarded
BAgent B

Measured checks passed

Enter titleCancelReopen
Recorded title on reopening

Cancelled draft observation

Draft retained
The missing decision

What should Cancel preserve?

Grow the system without multiplying interpretations.

TokenInput made the problem concrete. Two independently produced models passed their own tests but disagreed about duplicates, delimiters and confirmation. I used that disagreement to explore how a registry could support a deliberate consolidation.

Discover first
Search capabilities, aliases, status and canonical implementations before proposing another component.
Resolve behavior
Compare the contracts, choose explicit defaults and variants, then verify the combined implementation.
Carry the change
Record version and migration impact. The consolidated TokenInput is implemented and registered experimentally; it is not a stable, owner-approved release.
Inspect the consolidation decisions
ReuseExtendPropose
Candidate A

Reject duplicates

Request correlation.
Atomic value batches.

Candidate B

Ignore duplicates

Skipped-count feedback.
Draft revision checks.

Explicit behavior decision

One experimental TokenInput

v2
  • Reject by default; an explicit ignore variant.
  • Combine request IDs with draft revision checks.
  • Preserve failed batches and document migration.

Keep the installed system identifiable.

I extended the experiment beyond composition into operation. A project pins its release, profile and registry; an infrastructure service inventories configuration and prepares maintenance proposals. A shared workspace adds signed releases, reviewed activation and retained history.

Known context
Portable kits and exact pins make it possible to trace which decisions a project is using.
Deliberate observation
Usage collection starts disabled and requires both project and consumer opt-in. It accepts reviewed technical facts, not page content.
Controlled change
Prepare and inspect an update before activation. Rollback creates a new generation while retaining the previous evidence.
Read the infrastructure model

Installed project

Pinned
ReleaseExact identity
ProfileExact identity
RegistryExact identity
CompilerExact identity

Observe deliberately

Project collectionOff by default
Consumer collectionOff by default
renderactionconfigurationerror
Prepare
Review
Activate
Retained generationsRollback with history

A repair should earn the right to become a change.

I separated deterministic repair of generated output from AI proposals that change source. In a controlled experiment, a real Codex request repaired a deliberately seeded MetricCard overflow, then faced the same browser and regression checks as the original implementation.

Reproduce
The healthy baseline passed 84 browser scenarios. The seeded CSS defect caused 56 of them to fail.
Propose and verify
One proposal removed the excessive minimum width. All 84 scenarios passed again, alongside 429 source tests and the recorded static checks.
Review
The result became a review commit. Source changes, merging, release and consumer updates remain separate decisions.
Inspect the recorded repair experiment
Seeded overflow
Restored containment
Baseline84 / 84scenarios passed
Seeded defect56scenarios failed
After repair84 / 84scenarios passed
Independent checksSame checks. Unchanged boundaries.

429 source tests · types · token ownership · headless boundaries

A reviewable commit

The designer’s work extends into the rules of the system.

Aegis Agentic is now a working beta: a conventional library, configurable language, shared contracts, agent access and bounded maintenance experiments. Building it changed what I pay attention to, from the appearance of a component to how its decisions survive reuse and change.

Implemented
The current catalogue maps 124 API families to authored behavior and includes 127 component and pattern contracts, plus two separate service protocols.
Demonstrated
Independent component and page experiments, installed-kit consumption and one live seeded source repair provide specific evidence.
Still open
Broader repair reliability, production adoption and sustained delivery gains need further evaluation. Human judgment remains essential.
Explore the source and evidence
124API families with
authored behavior
127Component &
pattern contracts
2Separate service
protocols
DefinedLanguage, contracts and shared patterns
ExercisedComponent, product and repair experiments
Still being evaluatedReliability and impact in sustained use

Follow the decisions
into the system.

The illustrations focus on selected parts of the implementation. Storybook contains the working components; the repository records the contracts, experiments and their limits.