Skip to content
FelicityUI

Registry

FelicityUI owns the registry protocol. The CLI installs from compiled JSON. A shadcn projection exists for the React slice only.

Authoring lives in registry/<name>/spec.json plus native files. The compiler writes CDN-cacheable JSON under /r. The CLI installs from that JSON. It never evaluates TypeScript, Swift, or Kotlin.

Endpoints

Catalog, then one item, then the React-only shadcn projection of the same item.

url
https://forma-web-smoky-delta.vercel.app/r/index.json
url
https://forma-web-smoky-delta.vercel.app/r/button.json
url
https://forma-web-smoky-delta.vercel.app/r/shadcn/button.json

Authoring

One spec, three implementations. Absence of a platform key means the item is not installable there — the CLI fails instead of skipping silently. Specs that fail validation never land in public/r.

spec.json
{
  "name": "input",
  "title": "Input",
  "category": "input",
  "status": "stable",
  "platforms": {
    "react": {
      "adaptation": "Native HTML input and textarea."
    },
    "swiftui": {
      "adaptation": "SwiftUI TextField / SecureField."
    },
    "compose": {
      "adaptation": "Material 3 OutlinedTextField with FelicityUI colors."
    }
  }
}
registry/input
registry/input/
  spec.json
  docs.mdx
  react/input.tsx
  swiftui/Input.swift
  compose/Input.kt

Artifacts

Built payloads are the install source. File path is relative to the item directory and cannot leave it.

PathPurpose
/r/index.jsonCatalog: name, title, description, category, status, platforms.
/r/<name>.jsonFull FelicityUI item with native file contents and SHA-256 digests.
/r/shadcn/<name>.jsonshadcn registry-item.json projection. React files only.

Namespaces

Addresses such as @felicityui/button resolve to this registry. @shadcn/button is reserved for a future adapter. V1 does not fetch third-party registries.

Integrity

Each file in the built payload has digest: sha256:<hex>. The CLI refuses to write a file whose bytes do not match, unless you pass --insecure. Signing is reserved and not implemented in v1.

Catalog

Complete items only. Tokens and utils install as dependencies of these — they are not listed as UI. Do not invent Badge, Field, Select, or Input Group as extra catalog items.

Install

Point init at this registry, then copy source with the CLI. Review the diff.

terminal
npx felicityui init --registry https://forma-web-smoky-delta.vercel.app/r
terminal
npx felicityui add button --platform react
npx felicityui add input --platform react
npx felicityui add accordion --platform react
npx felicityui add dialog --platform react
npx felicityui add drawer --platform react

Same add commands with --platform swiftui or --platform compose. See Installation for project setup, and MCP for a read-only catalog.