NachoDS v0.1.0
Use

Using the system

NachoDS is published once and read many ways: as these pages in a browser, as one text file an AI tool reads, as a machine-readable layer a script joins, over MCP for an agent, as a pinned bundle a website loads, and as whole-page designs a developer ports. This page lays out each way in, who it is for, and what to take from it. Every way in reads the same published release, so every reader works from the same brand.

Who uses it, and how

Each way in serves one kind of reader. Start from the row that describes you; the rest of this page explains each one.

ReaderWay inStart with
A person: a designer, writer, marketer, or printerThese pages, in a browserThe Brand view, then the view for the surface at hand
An AI assistant that reads a URLOne text file with the brand essentials and the page index/llms.txt
An agent with MCPThe timds-design-system-read serverget_consumer_guide, then describe_system
A script or pipelineThe machine-readable layer beside the pages/index.json, /tokens.json, /brand.json
A website or appA pinned release and its consumer bundletimds.consumer.json at the product's root
A developer building a pageThe website designs: whole pages on the system's own stylesheetsThe /designs/ directory in the app bar
A designer, or an agent changing the systemThe system's repository and its editing toolsAGENTS.md in the repository

Read it in a browser

These pages are the published artifact itself, built from the system's source on every release. Each view is one audience's slice of the system, and every page follows the same shape: an eyebrow, a title, a summary, then one block per topic.

On the pageWhat it is
A tableThe rules. Each row is one record every other way in can cite, so a specification or a do-and-don't lives in a table, never in prose.
A noteGuidance that is not a row: a reason, a caution, an exception.
A code blockMarkup to copy as written.
A previewA live sample of the thing described. Its sample text is illustration, never a rule.
PlannedA page declared in the navigation and not yet written. Nothing is published for it, so no reader receives placeholder guidance.
The version in the app barThe release these pages belong to. Every merged change becomes a new patch release.
MarkdownThe check writes a mirror of every page at index.md beside it, the same content as plain text. This page's is /use/index.md.

One URL for any AI tool

A person who wants an assistant to work on-brand pastes one address. The file opens with how to use it, so the tool needs no other instruction.

FileHoldsUse it when
/llms.txtHow to use the file, then the brand essentials: every role color as hex, every font with its family and the files or service that provide it, every logo by variant with its URL, every asset format with its size, and then the page directory.Pasting the system into a chat, or into any tool that reads a URL.
/llms-full.txtEvery page's Markdown in one file.A tool that reads a single URL and needs the whole system, not a directory to follow.

Both files are generated from the built pages on every check, never written by hand, and the published copies carry absolute URLs, so either one can be handed around on its own.

The machine-readable layer

The check (npm run timds -- check) reads the built HTML and CSS and writes these documents beside the pages, and every release publishes them; a plain dev build serves the pages without them. Nothing in them is maintained by hand, so they cannot drift from what the pages say. A script, a render pipeline, or a host reads them directly; the MCP server below serves the same documents.

DocumentHolds
index.jsonEvery page as structured blocks: rules from its tables, one record per row, notes, code, and assets joined to their media records.
tokens.jsonEvery CSS custom property the pages load, resolved, with the scope and kind of each, and the brand roles they fill.
brand.jsonThe brand kit: the role colors and fonts, each font with the files or service that provide it, every logo and image presented as brand material, and the guidance groups.
formats.jsonEvery print sheet and screen canvas with its size, bleed, and safe area, when the system keeps a format catalog.
designs.jsonEvery website design page and state as HTML, with the files it loads.
bundle.jsonEvery file in the consumer bundle with its size and digest, and the immutable copy of this version a website pins.
index.mdBeside every page, its Markdown mirror.

Every record carries a stable id, such as brand/voice#principles: the page, then the block, then the row. Cite the id, and a reviewer can resolve it. A block's id is the citation, so it is never renamed casually.

Brand roleAnswers
color.background, color.panelThe page ground and the raised surface on it.
color.accentThe one color that signals an action or a highlight.
color.text, color.mutedBody text and secondary text.
font.display, font.body, font.uiHeadings, running text, and interface labels.

Ask for a role, not a token name. A role resolves to the token that fills it and that token's value, so a consumer never has to know how this system names things. A role nothing fills is a gap the system reports, never a value to guess.

Connect an agent over MCP

The timds-design-system-read server serves the layer above to any MCP-capable agent. It is read-only apart from filing a gap, never sees authored source, and serves the current published release by default; version selects an earlier one. Every result names the version it was read from.

Where it runsHow to connect
HostedThe TimDS portal serves it over HTTP, authorized with an access token. In a product, timds consumer init writes the entry into .mcp.json.
Against a checkoutnpm run timds -- mcp read in the system's repository, after a check has built the layer.
Against the published copynpm run timds -- mcp read --published URL, with the system's published root.
ToolGives
get_consumer_guideHow to use a system to produce on-brand work. Read it first.
list_design_systems, describe_systemWhat is in scope; the served, published, and pinned versions; the page directory; the consumer bundle and its immutable copy.
resolve_roleA brand role to the token that fills it and its value. An unfilled role is a reported gap, never a guess.
get_tokensResolved custom properties by name, kind, or scope, such as a dark theme.
get_brandThe roles, each font with its sources, the logos, the imagery, and the guidance groups.
list_formatsThe asset format catalog: every sheet and canvas with its size, bleed, and safe margin.
list_pages, read_pageThe page directory, and one page or one block as Markdown or as structured blocks.
list_designs, read_designThe website designs, and one page state's HTML with the files it loads.
search_guidanceThe blocks that answer a question, guidance groups first, every result cited by page and block.
list_mediaThe published media catalog by tag or kind, each with a stable public URL.
report_gapFiles one gap into the system's request intake, when the host provides one.

The resources timds://brand.json, timds://tokens.json, timds://index.json, timds://llms.txt, timds://formats.json, timds://bundle.json, and timds://guidance/{group} serve the same documents to a client that reads resources rather than calling tools.

Pin it in a website or app

A product never copies the system. It pins a release in timds.consumer.json at its root and installs that release's consumer bundle: the stylesheets, scripts, and small assets the system names in bundle.include, fetched into the product's ignored design-system/ directory under the same paths they have here, every digest verified. A clone and an install is all a product, or an agent working in it, needs.

StepCommandWhat it does
Adoptnpm run timds -- consumer init --system IDWrites the manifest with a published pin, wires the sync into postinstall, and installs the consumer skill, the preview workflows, and the hosted MCP entry.
Installnpm ciFetches the pinned bundle and verifies it.
Move the pinnpm run timds -- consumer update VERSIONMoves to a version, or without one to the current release. A pin of current follows every release at the next install.
Checknpm run timds -- consumer checkValidates the manifest and the pin, and that a branch stays inside the product's declared design surface.
Reviewnpm run timds -- consumer preview --app NAMECaptures each route at desktop and phone widths in both color schemes, with the paired design beside it.

A pin names an immutable copy of the release, so a later release never changes what a pinned product loads. In product CSS use a token by name, never by its literal value, so the product follows the pin. The timds-consume-design-system skill the adoption installs tells an agent how to make a design change in the product; when the system lacks what a change needs, the fix is a pull request to the system, never a product-side workaround.

Port the website designs

The system is designer-owned down to the pages. A designer authors whole pages in HTML on the system's own stylesheets, the build writes them to /designs/, and the app bar links there. A named state is a file beside its page, so every state a developer must build is a page they can open.

RuleIn practice
The design is the referenceA port matches it on the product's own stack with the system's stylesheets. The design file is never copied into the product as a page, and never restyled.
Every state is a filePort each one. A state the product cannot express is a developer change to raise, not an omission.
Pair the routeIn the product's manifest, a route is paired with its design so a review shows the two side by side.
Read it as datadesigns.json, and list_designs and read_design over MCP, carry every page state's HTML with the files it loads.

Change the system

Nothing above is edited in place. The system is a repository, every change is a pull request there, and merging releases a patch version that every reader above picks up on its next read.

WhoWhereHow
A designer, or an agent acting for oneThe system's repositoryAGENTS.md is the working contract and the timds-edit-design-system skill holds the procedure. npm run timds -- check validates the change and submit opens the draft pull request.
An agent without a checkoutThe timds-design-system editing server, npm run timds -- mcpGuarded reads and writes of the authored surface, a check as structured findings, and the derived layer. Protected tooling is refused, not merely discouraged.
A product that found a gapreport_gap over MCP, or a pull request to the systemA missing token, role, component, or rule is fixed in the system, and the product waits for the next release.
Video, when the system declares itThe same repositoryThe timds-create-video skill and the video commands, on the client's own video contract.

Versions

Three versions matter to a reader, and every document and tool result says which one it carries.

VersionMeaning
ServedThe release a read returned. Every derived document and every MCP result names it.
PublishedThe current release, and the default for every way in on this page.
PinnedThe release a product is built against. It trails the published release until a developer moves the pin.

Each merged change becomes a patch release, published to the portal and to the stable address every way in on this page reads from. The number in the app bar is the release these pages belong to; this copy is 0.1.0.