clone
Clone a website — a working behavior ARCHIVE (real code + data replayed offline; tabs, filters, transitions work), a pixel-identical editable RESTORE (real…
Prepare the current project for UIForge — ensure shadcn init, the component registries (shadcn + @motion-primitives), and the motion/lucide-react/cn prerequisites.
> /plugin marketplace add TaewoooPark/UIForge > /plugin install uiforge@uiforge
How it fires
How this command gets triggered: by you, by Claude, or both.
/setupContext preview
What this command does when you run it.
Prepare the current project for UIForge — ensure shadcn init, the component registries (shadcn + @motion-primitives), and the motion/lucide-react/cn prerequisites.
description: Prepare the current project for UIForge — ensure shadcn init, the component registries (shadcn + @motion-primitives), and the motion/lucide-react/cn prerequisites. argument-hint: "[optional: component to install after setup, e.g. text-effect]" allowed-tools: Read, Edit, Write, Bash(npx:*), Bash(npm:*), Bash(pnpm:*), Bash(yarn:*), Bash(bun:*), Bash(ls:*), Bash(test:*)
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.)
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.
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"
}
}disturb other registries.
(`add @motion-primitives/text-effect` → `.../c/text-effect.json`). Keep the braces.
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 …`).
dependencies). If missing, offer to install them with the detected manager.
`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:
// TypeScript (lib/utils.ts)
import { clsx, type ClassValue } from 'clsx'
import { twMerge } from 'tailwind-merge'
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
} // JavaScript (lib/utils.js) — when components.json "tsx": false
import { clsx } from 'clsx'
import { twMerge } from 'tailwind-merge'
export function cn(...inputs) {
return twMerge(clsx(inputs))
}(needs `clsx` and `tailwind-merge` — offer to install with the detected manager if missing.)
Confirm the chain works by describing (do not force-run) the two equivalent install routes so the user can pick:
If `$1` (or `$ARGUMENTS`) names a component, offer to install it now via the shadcn route and confirm the file lands under the project's components directory.
Summarize: whether `components.json` existed, what you changed in `registries`, prerequisite status, and the exact next command to install a component. Remind the user that the actual motion work is directed by the `uiforge:motion` skill — its budget, single signature, and reduced-motion rules still apply.
Clone a website so it actually works — tabs, filters, lists, client-side transitions, motion, scroll — then also as a pixel-faithful freeze and a pixel-identical, editable React restore.
Repo: TaewoooPark/UIForge
Clone a website — a working behavior ARCHIVE (real code + data replayed offline; tabs, filters, transitions work), a pixel-identical editable RESTORE (real…
Judge the current UI blind (render + screenshot if possible), grep the anti-slop patterns, and run the mandatory forced-subtraction pass.
Run the full UIForge pipeline on a brief — thesis, one direction, tokens first, sourced components, budgeted composition, blind critique, forced subtraction.
Extract a measured design signature (type ramp, accent + its budget, grid unit, radius, layout) from a reference image or site, write it to signature.json, and…
Grade any UI project A–F for slop — a standalone review tool. Runs the UIForge linter and reports a letter grade + the tells, for the current project, a…