Open DS

Take a scheme. Deploy it your way.

Pick a ready-made scheme. Connect your AI and let it deploy the scheme, or use the package and do it yourself. Either way you get a whole working design system, and every piece carries the product reason behind it.

Parcel, a sturdy tin robot, walks forward holding out a paper parcel with an orange wax seal.Parcel, a sturdy tin robot, walks forward holding out a paper parcel with an orange wax seal.

Connect your AI

Connect your AI through MCP. It runs the same CLI to deploy the scheme, and keeps every answer and reason, so it builds the way the system would.

"Deploy the Dense data scheme
  in this project."

Use the package yourself

The CLI, like shadcn/ui. One command copies the scheme’s components and tokens into your repo. You own the code. It is the same engine the MCP uses.

open-ds init dense-data

What you get · a fully fledged design system

  • The answer map

    Every question, its answer and its because. The source the rest is built from.

    • scheme.json
    • AGENTS.md
  • Tokens

    Generated from the answers. Primitive, semantic and component API tiers, light and dark.

    • Style Dictionary
    • DTCG JSON
    • CSS variables
    • Tailwind theme
    • content.json
  • Components

    Built on the component API keys. Every variant exists because an answer made it.

    • shadcn registry
    • React
    • Radix
  • Storybook

    Every component in every scheme, brand and mode.

    • stories
    • scheme switch
    • mode switch
  • Docs

    The design system’s own docs, generated from its answers: reasons, voice, a page per scope, components, themes.

    • Docusaurus
    • init --docs
    • llms.txt
  • Checks

    The harness checks every layer against the instructions and the specs.

    • harness
    • JSON Schema
    • token resolve

The AI layer · optimized for agents

Your agent gets the reasons, not just the values.

Tokens tell an agent what to use. A scheme tells it why, so it can build a new screen the way the system would, and explain itself. Every scheme ships an MCP server and agent files.

MCP tools

list_schemes()
the schemes and what each is for
get_scheme(id, part)
one scheme, or one part of it
get_answer(id, question)
every option, this scheme’s answer and its because
why(id, question | key)
trace a value back to its question and reason
when_to_use(id, situation)
what to use, what not, and why
compare_schemes(a, b)
the same questions, side by side
get_inventory(id)
the components it carries, and why
what_moves(id, question)
what follows from one answer
plan_create(id, dir)
the command that takes the whole system
plan_init(id) · plan_add(component)
the commands for an existing app

An agent, asking why

AgentWhy does Dense data have two densities?

why()spacing.count → Two, because tasks.q1 scan and compare. A second, denser size serves tables and toolbars.

AgentBuilding a delete dialog. What does it say?

when_to_use()Name the exact object and the consequence. Example: “Dismiss 3 alerts? This cannot be undone.”

Also ships:AGENTS.mdllms.txtClaude skill