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.
npx agentmods add commands/taewooopark/uiforge/forgegit clone --depth 1 https://github.com/TaewoooPark/UIForgeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/taewooopark/uiforge/forge)<a href="https://agentmods.dev/commands/taewooopark/uiforge/forge"><img src="https://agentmods.dev/badge/commands/taewooopark/uiforge/forge.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00031 | $0.01315 |
| Opus 5 | $0.00015 | $0.00658 |
| Sonnet 5 | $0.00006 | $0.00263 |
| Haiku 4.5 | $0.00003 | $0.00131 |
Grade A, and why
forge 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 3d 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.
How it starts
The opening of the file, as written. The whole thing — 70 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Forge the UI described in $ARGUMENTS (if empty, ask for the brief and the
surface). Run the UIForge pipeline in order — do not skip to components. Use the
uiforge:design-director skill as the brain and pull in the other skills at
their step.
- Thesis — write one sentence: who it's for, the feeling on load, where the eye lands, and the single thing it's remembered by. Confirm it before building.
- Direction — commit to ONE point of view from the design-director's
directions.md(Editorial / Precise / Brutalist / Warm / Maximalist). State it. If the brief names a reference (a site/image to feel like), run/uiforge:reskin <ref>(oruiforge-extract.mjs) first to emitsignature.json— the measured reference then drives tokens, sourcing, and the gate below, so the rules come from the reference instead of generic defaults. - Tokens first — invoke
uiforge:design-tokens: emittokens.css(color roles, one type scale, 8px spacing, one radius/shadow) +motion.ts, derived from the direction. Override the shadcn/Tailwind defaults. Nothing downstream uses a value that isn't a token. - Source components — never hand-author; pull the ones that FIT. Rank the
catalog against the need (and the signature, if you extracted one):
node ${CLAUDE_PLUGIN_ROOT}/tools/uiforge-source.mjs "<need>" --spec signature.json --type ui— it scores by semantic fit × style fit (radii vs your signature) × taste (a11y + radix provenance + variants) and prints thenpx shadcn add …for the top picks. Install those (shadcn MCP / CLI; run/uiforge:setupfirst if unwired); at most one effect-maximalist piece, only as the signature. Verify props. - Compose to the budget — one signature moment; everything else quiet. Direct
motion with
uiforge:motion(one signature, reduced-motion) and copy withuiforge:content(outcome labels, real states, no hype). Design every reachable state (loading / empty / error), not just the happy path. - Enforce — loop until the Gate passes (this is not one pass):
a. Run
node ${CLAUDE_PLUGIN_ROOT}/tools/uiforge-lint.mjs . --strict. b. If it exits non-zero, fix the exact violations it names — promote raw hex to tokens, swap a default/system font for a kit face (${CLAUDE_PLUGIN_ROOT}/tools/kits/), drop the purple/gradient, add the reduced-motion path, snap off-grid spacing — then go back to (a). Loop until it exits 0 (cap ~5 rounds; if still stuck, report exactly what and why). c. Render audit (deep tier) — the grep gate is source-only; now grade the rendered result, which is where contrast, accent coverage, rhythm, and layout tells actually live. Render the view and runnode ${CLAUDE_PLUGIN_ROOT}/tools/uiforge-render-audit.mjs <url|file.html> --viewport 1440x900. If you extracted asignature.json, add--spec signature.json— grading becomes reference-relative (match the reference's accent budget, grid, type ramp, and layout), while WCAG contrast stays an absolute a11y floor. Fix every contrast failure; bring accent/rhythm/type/layout into line with the signature (or, with no reference, under the generic defaults). Re-run until the grade is A/A+ with 0 contrast fails. (Needs a browser; if none, say so and skip.) d. Attention & hierarchy — a clean render can still lead the eye nowhere.node ${CLAUDE_PLUGIN_ROOT}/tools/uiforge-attention.mjs <url|file.html> --expect "<your intended #1>". If it reportshierarchy: flator the headline/CTA is buried (the eye lands on a competing block, not your focus), widen the size/contrast/whitespace gap around the focal element and re-run until there is one clear #1 and it is yours. e. Adversarial slop detector — run the design-director'sreferences/slop-detector.md: render + screenshot the view (normal andprefers-reduced-motion), then use an implementation-blind judge (a subagent given only the screenshots) to try to prove a machine made it. Fix every tell it cites; re-render; re-judge until CLEAN. f. Forced subtraction — remove the single least-justified element, then confirm the linter still exits 0.
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.
- 3d ago First seen · 70 lines · 31 tokens per session scan A 3409f1ae1e89
forge is a command published in the GitHub repository TaewoooPark/UIForge (7 stars, last pushed 1mo ago), licensed MIT. It adds 31 tokens to every session and 1,315 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.
Other commands, from other repositories
openhop-flow
Render an animated OpenHop flow diagram for the prompt that follows. Sketches the YAML, pushes it to the local OpenHop server, and returns the per-flow render URL.
ux-audit
Run a combined usability + accessibility audit on a page, component, or screenshot and produce a single scored report.
ux-bootstrap
Scaffold a UX baseline (design tokens, accessible primitives, a11y linting, metrics, and a UX checklist) into the current project, adapted to its stack.
ux-onboarding
Get familiar with a project's UX/design choices and patterns — a guided, part-by-part walkthrough that sends you to read the real code, checks your understanding with questions, and has you reimplement a small recent change.
ux-review
Quick, scored UX review of a single component or screen — from code, a screenshot, or a live page — via the ux-reviewer agent.
verify
Fidelity check — rebuild a page from the extracted tokens, pixel-diff it against the live site, and score how faithfully the tokens capture the design.