Agents

Components, tokens, props, keyboard behavior, and install paths are available as text or JSON.

WhereWhat
https://vlak.dev/llms.txtThe index: what Vlak is, the install paths, one line per component
https://vlak.dev/llms-full.txtEverything in one file: every component's docs, props, keyboard, markup
https://vlak.dev/docs/<name>.mdOne component as markdown
https://vlak.dev/r/<name>.jsonThe shadcn registry item: files, dependencies, classes
https://vlak.dev/r/index.jsonEvery registry item
npx @noorddev/vlak-cli list --jsonThe catalogue as JSON, offline
npx @noorddev/vlak-cli docs <name>One component's docs in the terminal
npx @noorddev/vlak-cli tokensThe design tokens as JSON
@noorddev/vlak/propsEvery export's props as JSON, importable

These surfaces are generated from one registry, so the markdown, JSON, and web documentation share one source. Start with llms.txt; it is the short index and links to the detailed records.

{
  "mcpServers": {
    "vlak": {
      "command": "npx",
      "args": ["-y", "@noorddev/vlak-mcp"]
    }
  }
}

@noorddev/vlak-mcp serves the same registry over the Model Context Protocol: list components, read one component's docs and props, fetch the tokens, and get the install command for a given path. Works offline; the snapshot ships in the package. Add the block above to your client's MCP configuration.

// State: value / defaultValue / onValueChange, everywhere a value lives
<Select options={cities} value={city} onValueChange={setCity} />
<Tabs defaultValue="overview" onValueChange={track} />
<Calendar value={date} onValueChange={setDate} />

// Booleans follow the same shape
<Switch checked={on} onCheckedChange={setOn} />
<Toggle pressed={bold} onPressedChange={setBold} />

// Overlays: open + onClose, parent state is the source of truth
<Dialog open={open} onClose={() => setOpen(false)} />

// className and style merge onto the root; refs are forwarded
<Button ref={ref} className="mine" style={{ marginTop: 8 }} />

// Every component has a name or takes one
<Slider aria-label="Volume" />