10 · Registry & API

Query the design system from any agent or project.

Every primitive, mascot, logo, token block, voice rule, and the agent skill itself ship as JSON entries under /r/<name>.json. The registry regenerates on every deploy — never out of sync.

shadcn registry v267 items liveCDN-cached static JSON

Quick start

1 · Discover

Get the full catalog · names, types, URLs, counts.

curl https://brand.astry.agency/r/index.json
Copy

2 · Install the primitive pack

shadcn CLI installs astry-ui.tsx + the tokens dependency into the target project.

npx shadcn@latest add https://brand.astry.agency/r/astry-ui.json
Copy

Note · Run this from any project root. The pack pulls tokens automatically via registryDependencies.

3 · Drop the agent skill into Claude Code

Teaches any Claude Code agent how to query the registry and respect brand rules.

mkdir -p ~/.claude/skills/astry-design-system && curl -L https://brand.astry.agency/r/skill.md -o ~/.claude/skills/astry-design-system/SKILL.md
Copy

Note · Restart Claude Code after dropping the file. The skill auto-activates on Astry-related prompts and paths.

4 · Fetch a single asset

Mascots and logos resolve to direct URLs in their meta blocks.

curl -O https://brand.astry.agency/brand/mascot/happy.svg
Copy

Endpoints

All endpoints return JSON (or markdown for the skill). Static · cacheable · no auth.

Open index.json

index

Catalog of every registry item · the entry point.

/r/index.json

astry-ui

Full primitive pack · installable via shadcn CLI.

/r/astry-ui.json

tokens

CSS variables (light + dark) and Tailwind extension.

/r/tokens.json

fonts

Neue Haas Display Pro · 16 .ttf files · next/font + @font-face snippets.

/r/fonts.json

voice

Voice contract · do/don't lists.

/r/voice.json

accessibility

WCAG 2.2 AA contract · a11y rules.

/r/accessibility.json

skill

Drop-in skill file for Claude Code agents.

/r/skill.md

mascot-<name>

Per-mascot metadata + URL of the SVG. 57 entries.

/r/mascot-happy.json

logo-<name>

Per-logo metadata + asset URL.

/r/logo-icon-on-blue.json

team-<slug>

Per-member portrait + name + role + founder flag. 4 entries.

/r/team-martin.json

Item schema

Every /r/<name>.json follows the shadcn registry-item v2 shape with an Astry-specific meta block.

{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "mascot-happy",
  "type": "registry:file",
  "title": "Astry mascot — happy",
  "description": "Default positive state · success · onboarding completion.",
  "homepage": "https://brand.astry.agency",
  "meta": {
    "kind": "mascot",
    "emotion": "happy",
    "category": "mood",
    "available": true,
    "url": "https://brand.astry.agency/brand/mascot/happy.svg",
    "sizeBytes": 576540,
    "reactUsage": "<AstryMascot emotion=\"happy\" size={120} />",
    "directFetch": "curl -O https://brand.astry.agency/brand/mascot/happy.svg"
  }
}
Copy

Item types

typeitemswhat's inside
registry:uiastry-uiSingle-file primitive pack with full source inlined. Install via shadcn CLI.
registry:styletokensCSS variables (light + dark) + Tailwind theme.extend mapping.
registry:libvoice · accessibility · skillBrand contracts and the agent skill, exposed as meta blocks.
registry:filemascot-* · logo-* · anglePer-asset metadata. Binaries are referenced via meta.url, not inlined.

Auto-sync · the registry is regenerated on every deploy from components/astry-ui.tsx, app/globals.css, data/mascots.json, and public/brand/. Source change → push → registry regenerates → all consumers see the update on their next fetch.