setup

A command for preparing an existing shadcn project so UIForge can load interface components from its registries. shadcn is a way to add reusable interface code to a project.

In plain words
What is it for?
Use it to check shadcn initialization and configure the Motion Primitives component registry before sourcing UI components.
Why use it?
It catches missing setup and places registry configuration in the project where the component tools expect to find it.

Command

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/taewooopark/uiforge/setup
Clone the repo
git clone --depth 1 https://github.com/TaewoooPark/UIForge
Per session 39 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,127 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00039 $0.01127
Opus 5 $0.00019 $0.00563
Sonnet 5 $0.00008 $0.00225
Haiku 4.5 $0.00004 $0.00113

Measured 2d ago against content hash b4564d3cafc5, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

setup scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

commands/setup.md · 99 lines

How it starts

The opening of the file, as written. The whole thing — 99 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are wiring the current target project so UIForge can source components cleanly through the shadcn registry. The shadcn MCP server (shipped by this plugin's .mcp.json) reads the registry list from this project's components.json — so registry entries must live here, in the target repo, not in the plugin. The default shadcn/ui registry needs no entry; the @motion-primitives registry does. Do the following, reporting each result. (For the design foundation itself — tokens, type, color — that's the uiforge:design-tokens skill; this command only prepares the plumbing.)

1. Confirm this is a shadcn project

  • Check for components.json at the project root (ls components.json).
  • If it is missing, tell the user this project isn't shadcn-initialized and offer to run npx shadcn@latest init (do not run it unprompted — it writes config and may pick a style/base-color). Stop here until they confirm.

2. Ensure the @motion-primitives registry entry

Open components.json. Ensure it contains a registries map with this exact entry (the URL is confirmed from Motion-Primitives' own installation-cli source — do not alter it):

{
  "registries": {
    "@motion-primitives": "https://motion-primitives.com/c/{name}.json"
  }
}
  • If registries is absent, add it with this entry.
  • If registries exists but lacks @motion-primitives, add the key — do not disturb other registries.
  • If @motion-primitives already points at this URL, leave it and say so.
  • {name} is a literal placeholder shadcn substitutes at install time (add @motion-primitives/text-effect.../c/text-effect.json). Keep the braces.

3. Ensure runtime prerequisites

  • Detect the package manager first from the lockfile so you never mix managers: pnpm-lock.yaml → pnpm, yarn.lock → yarn, bun.lockb or bun.lock → bun (Bun ≥1.2 writes the text bun.lock), else package-lock.json/none → npm. Use that manager's add syntax for every offer below (pnpm add …, yarn add …, bun add …, or npm install …).
  • motion and lucide-react are installed (check package.json dependencies). If missing, offer to install them with the detected manager.
  • A cn helper exists at the path this project's components.json aliases.utils resolves to (default lib/utils.ts). If absent, create it — match the project's language: for a TypeScript project write .ts; for a JS-only project (components.json has "tsx": false) write lib/utils.js with the type annotations dropped:

Read the full file on GitHub · 99 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 99 lines · 39 tokens per session scan A b4564d3cafc5

Subscribe to this mod's changes

setup is a command published in the GitHub repository TaewoooPark/UIForge (7 stars, last pushed 1mo ago), licensed MIT. It adds 39 tokens to every session and 1,127 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.