A single DESIGN.md works beautifully when you have one brand, one team, and one product.
Then reality arrives.
A second brand. A new theme. A dark mode request. A segment that needs its own colour story but shares the same components.
And suddenly your clean, single file starts showing cracks.
Not because the concept is broken.
Because the system grew. And the file didn't.
This piece is about what happens when your design system gets complex and how to scale DESIGN.md without losing the thing that made it work in the first place.
Want more like this? Subscribe to get my free UX prompt guide for designing with AI and join the exploration.
Complexity Arrives in Two Forms
When a design system scales, it scales in two directions at once.
Horizontally: more brands, more themes, more segments. The same components, different visual languages.
Vertically: more contributors, more teams, more opinions about what the rules should be.
Both are real problems. And they need different solutions.
Most teams try to solve both with one file.
That's where it breaks.
The Multi-Brand Problem
One design system. Multiple brands.
Most common B2B scenario for instance, Enterprise gets red. Wholesale gets Black. SME gets their own branding colour. Dark mode gets its own layer entirely.
The components are the same. The tokens are not.
If your DESIGN.md only documents one set of token values, the AI agent has no way of knowing which brand it's building for.
It will pick one. And it will be consistent about the wrong choice.
This is the multi-brand trap.
The Fix: Theme-Aware DESIGN.md Structure
You don't need four separate files.
You need one file with clear theme boundaries.
Here's what that looks like in practice:
## Theme Architecture
This system supports four themes.
Each theme inherits the same component structure.
Token values differ per theme.
Always declare the active theme at the start of any task.
### Themes
- Enterprise — Primary: color-primary-red — #B2064C
- Wholesale — Primary: color-primary-black — #000000
- SME — Primary: color-primary-yellow — #FFDC2E
- Dark Mode — Surface: color-surface-dark — #0F172A
### Theme rule
If no theme is declared — default to Enterprise.
Never mix token values across themes in a single view.
A component built for Enterprise must never inherit
B2B token values unless explicitly instructed.Why this works:
The agent now knows four themes exist. It knows the default. It knows mixing is not allowed. And it knows exactly which token to reach for per theme without guessing.
The "always declare the active theme" instruction is the most important line. It turns theme selection from an assumption into a deliberate instruction every time.
The Multi-Team Problem
Multiple teams contributing to the same design system is a different kind of complexity.
It's not a token problem. It's a trust problem.
When one designer owns the system, the rules are clear. When five designers contribute to it, the rules become negotiable.
Someone adds a new button variant without documenting it. Someone updates a token value without updating the changelog. Someone writes a component rule that contradicts an existing one.
And the DESIGN.md becomes unreliable.
An unreliable DESIGN.md is worse than no DESIGN.md.
The agent will follow it confidently and generate inconsistent UI with full conviction.
The Fix: Ownership and Contribution Rules
The file needs to say who owns it and how it gets updated.
Not just for humans. For the agent too.
## Contribution Rules
### Ownership
This file is maintained by the Design System Lead.
All changes require review before merging.
No contributor may update token values without
a corresponding CHANGELOG.md entry.
### How to contribute
1. Open a branch — never edit main directly
2. Make your change with a clear commit message
3. Update CHANGELOG.md with plain-English context
4. Open a pull request for review
5. The Design System Lead approves before merge
### For AI agents
Only read from the main branch of this file.
Draft branches may contain unreviewed changes.
If you are working from a branch, stop.
Ask which version to use before proceeding.Why this works:
Contribution rules aren't just governance for humans. They're instructions for the agent about which version of the file to trust.
The "if you are working from a branch stop" line is one most designers never think to include. But an agent working from an unreviewed draft will generate UI based on rules that haven't been approved yet.
One line prevents that entirely.
When One File Is No Longer Enough
There's a threshold where a single DESIGN.md becomes too large to be useful.
When it takes more than five minutes to find a specific component rule, the file has outgrown itself.
At that point, split it.
Not randomly. With intention.
/design-system
DESIGN.md ← master file, overview and principles
/tokens
TOKENS.md ← all resolved token values per theme
/components
BUTTONS.md ← button anatomy, rules, variants
FORMS.md ← input, select, checkbox, radio
NAVIGATION.md ← navbar, sidebar, breadcrumb
FEEDBACK.md ← toast, modal, alert, badge
/themes
ENTERPRISE.md ← Enterprise-specific overrides
B2B.md ← B2B-specific overrides
SME.md ← SME-specific overrides
DARK.md ← Dark mode overrides
CHANGELOG.md ← plain-English update historyThe master DESIGN.md becomes the index. It tells the agent where to find everything else.
## How to read this system
Start here. Then navigate to the relevant file.
- For token values → /tokens/TOKENS.md
- For component rules → /components/[component].md
- For theme overrides → /themes/[theme].md
- For recent changes → CHANGELOG.md
Always read the master file first.
Always read the relevant component file before generating UI.
Never assume if you are unsure which file applies, ask.The Rule That Scales Everything
Here's what most designers miss when their system gets complex.
The problem isn't documentation volume.
It's documentation trust.
An AI agent will follow your DESIGN.md confidently regardless of whether it's accurate. It doesn't know if the file is outdated. It doesn't know if a rule was overridden last sprint. It doesn't know if a theme token was renamed and nobody updated the reference.
It just follows.
Which means the real job of scaling DESIGN.md isn't writing more rules.
It's keeping the rules you have accurate.
One outdated rule in a complex system causes more damage than ten missing ones. Because the agent follows it at scale across every component, every theme, every team's output until someone notices.
And by then, three sprints have passed.
The Discipline That Keeps It Alive
This is the part nobody warns you about.
Scaling a design system isn't a documentation problem. It's a maintenance discipline.
The file doesn't keep itself updated.
Someone has to own it. Someone has to update it every time a token changes. Every time a rule gets refined. Every time a new theme gets introduced.
That someone is you.
Not because the tools aren't good enough.
Because the design system is only as reliable as the person maintaining it.
And when you maintain it well, the AI agent becomes an extension of your judgment, not a replacement for it.
That's the whole point.
Before You Scale: Audit What You Have
Before adding complexity, check what exists.
Ask these questions:
Is every token in my DESIGN.md still accurate?
Does every component rule reflect how the system actually works today?
Is the changelog up to date?
Does the agent know which theme to default to?
Does it know where to go when it doesn't know?
If the answer to any of these is no, fix that first.
A clean simple file scales better than a complex broken one.
Every time.
Next in this series: Part 5: Here's the System I Built. And Here's How You Can Use It.
Subscribe to Design x Machine for more on UX, intelligent systems, and the future of design practice.

