Web Artifacts Builder
anthropics/skills
Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.
Pre-ship gate — runs detector, verifies brief and tokens, applies the 10-pass finish bar, ranks findings by feedback hierarchy.
$ npx skills add educlopez/ui-craft --skill finalize -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install educlopez/ui-craft finalize --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/finalize .claude/skills/finalize && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "finalize" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/finalize into .claude/skills/finalize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "finalize", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/educlopez/ui-craft/tree/main/.codex/skills/finalizeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add educlopez/ui-craft --skill finalize -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install educlopez/ui-craft finalize --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/finalize .agents/skills/finalize && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "finalize" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/finalize into .agents/skills/finalize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "finalize", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add educlopez/ui-craft --skill finalize -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install educlopez/ui-craft finalize --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/finalize .cursor/skills/finalize && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "finalize" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/finalize into .cursor/skills/finalize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "finalize", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/educlopez/ui-craft.git --path .codex/skills/finalize--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add educlopez/ui-craft --skill finalize -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install educlopez/ui-craft finalize --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/finalize .gemini/skills/finalize && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "finalize" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/finalize into .gemini/skills/finalize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "finalize", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install educlopez/ui-craft finalizeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add educlopez/ui-craft --skill finalize -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/finalize .github/skills/finalize && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "finalize" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/finalize into .github/skills/finalize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "finalize", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add educlopez/ui-craft --skill finalize -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install educlopez/ui-craft finalize --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/educlopez/ui-craft.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/finalize .opencode/skills/finalize && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "finalize" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/finalize into .opencode/skills/finalize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "finalize", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
finalizePre-ship gate — runs detector, verifies brief and tokens, applies the 10-pass finish bar, ranks findings by feedback hierarchy.
Finalize is an agent skill from educlopez/ui-craft. Pre-ship gate — runs detector, verifies brief and tokens, applies the 10-pass finish bar, ranks findings by feedback hierarchy. Use when the user wants to ship, merge, or finalize a surface and needs a verdict (READY / NOT READY / BLOCKED) before committing. Invoke when the user asks for finalize on their UI, or mentions 'finalize' alongside design / UI / frontend work.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design. The repository describes itself as: Design engineering system for AI coding agents — ship UI with craft-level quality. Install as an agent skill. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ceecc8e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Finalize loads about 1.9k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 899 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from educlopez/ui-craft at commit ceecc8e, republished under its MIT licence (© educlopez). 899 words, ~1,945 tokens.
.claude/skills/finalize/SKILL.md (or your agent's skills folder).<!-- HARNESS MIRROR — do not edit here. Canonical source: skills/ or commands/. After editing source, copy into cli/assets/<harness>/ and repo-root harness mirrors. -->
Context: this sub-skill is one lens of the broader ui-craft skill. If the ui-craft skill is also installed, read its SKILL.md first for Discovery + Anti-Slop + Craft Test, then apply the specific lens below.
Load the ui-craft skill. This command produces findings only — do NOT edit code.
Look for .ui-craft/brief.md.
/brief first. /finalize requires a design brief to distinguish intentional decisions from findings." Do not proceed.Run npx ui-craft-detect on $ARGUMENTS (or current working surface if no argument).
Capture all output. Every Critical detector finding maps directly to a block-ship finding in the report. Preserve detector source labels.
Quick three-question audit (no deep read required):
Any "no": flag as Major. Do not block ship. Append a recommendation: "Run /tokens to close the gap at [category]."
Applies only when the target is a complete surface (dashboard, landing, auth, settings shell, portfolio) — skip for single components.
references/craft-intent.md §3 (product / auth / marketing lists). Zero → Major ("no signature — surface is competent but anonymous; run /bolder or /polish"). Two or more competing → Major ("signature bets stack — keep the strongest, cut the rest")..ui-craft/spec.md section or session declared a Craft Read, verify the built surface matches it (theme, variance, signature). Mismatch → Major with the specific delta.These findings are Major, never Critical — they gate NOT READY, not BLOCKED.
Applies to landings, portfolios, and campaign pages — skip for product shells.
Load references/recipe-landing.md and run its Acceptance-bar mechanical checks against the built surface — thresholds (eyebrow count, layout-family budget, hero discipline) live there, not here; this step only names which checks apply and where a violation lands.
references/copy.md Copy Self-Audit.references/recipe-landing.md Eyebrow budget. Over budget → Major ("eyebrow flood — delete labels until the count passes").references/recipe-landing.md Layout-family budget. Any repeat or consecutive-split overrun → Major.references/copy.md CTAs & Buttons (one label per intent; CTA fits one line at desktop). Violation → Major.references/recipe-landing.md Hero discipline. Over budget → Major.Load references/finish-bar.md. Run all 10 passes in document order. Do not reorder.
Knob behavior (apply before running):
CRAFT_LEVEL ≤ 6 AND user did not explicitly invoke /finalize: run Passes 1, 6, 8 only; mark remaining as N/A (knob-gated).CRAFT_LEVEL ≥ 7 OR user explicitly invoked /finalize: run all 10 passes.MOTION_INTENSITY ≤ 3: Pass 7 = motion-gap audit only; do not fail on absent entrance animations.VISUAL_DENSITY ≥ 8 AND brief documents compressed rhythm: Pass 4 accepts compressed spacing values.For each pass:
finish-bar.md (Critical / Major / Minor).brief.md: downgrade to "Deferred per brief" and cite the exact principle. If no brief principle covers it, it remains a finding regardless.Load references/review.md Feedback Hierarchy section.
Group all findings (detector + token + finish-bar) into three tiers:
If any Value findings exist: surface them first in the report and add a standing recommendation to defer all Delight findings until Value findings are resolved. This prevents polish work masking broken functionality.
Print this report. Do not add preamble.
## Finalize report — <surface name>
**Ship verdict:** READY / NOT READY / BLOCKED
> BLOCKED = any Critical finding present.
> NOT READY = any Major finding present, no Critical.
> READY = zero Critical, zero Major (Minor explicitly accepted).
### Block-ship findings (must fix before merge)
- [Pass / detector source] — [finding] — [file:line if available]
### Major findings (fix or defer with recorded reason)
- [...]
### Minor findings (polish; ship-okay if explicitly accepted)
- [...]
### Deferred per brief
- [finding] — [principle from brief.md that defers it]
### Recommended next actions
- [ordered, 3–5 items max]If a tier has no findings, omit the section header entirely.
Convergence mode activates ONLY when the user explicitly says "run in convergence mode", "converge until the bar passes", or uses a --converge flag. A vague "keep going", "fix it", or "make it pass" does NOT trigger convergence — the default remains findings-only (Step 7 hard-stop applies).
When explicitly triggered: load skills/ui-craft/references/loops.md and run preset visual-anti-slop (budget the default loop budget defined in loops.md, hard cap 5). Emit the pre-flight cost notice before iteration 1. After each single highest-impact fix, re-run finalize Steps 2–6 (this command's own steps) until READY or budget exhausted. Note: finalize's findings-only hard-stop (Step 7) is lifted ONLY inside convergence mode — fixes are applied during iteration.
Do not edit any file. Do not propose code changes inline. The verdict is the output. If the user asks for fixes after reading the report, respond to that as a separate request.
Next step: Ship. If the gate is red, the findings name the pass to re-run — /polish, /harden or /clarify.
© educlopez, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .codex/skills/finalize of educlopez/ui-craft.
Open the folder on GitHubat commit ceecc8e
Finalize next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Finalize this skilleduclopez/ui-craft | 371 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Web Artifacts Builderanthropics/skills | 180k | 41 repos | ~769 | Automated safety check: Pass | Apache-2.0 | |
| React Doctormakeplane/plane | 61k | 12 repos | ~657 | Automated safety check: Pass | AGPL-3.0 | |
| Impeccablebestofjs/bestofjs | 3.1k | 27 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Figma Design System Builderwarpdotdev/warp | 65k | 2 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| Web Interface Guidelines Reviewervercel-labs/openreview | 1.7k | 98 repos | ~308 | Automated safety check: Pass | None |
anthropics/skills
Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.
makeplane/plane
Scans React code for lint, accessibility, bundle size and architecture issues, reports a health score and checks that changes do not lower it.
bestofjs/bestofjs
A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…
warpdotdev/warp
Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.
vercel-labs/openreview
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my…
anonaddy/anonaddy
Always invoke when the user's message includes 'tailwind' in any form.
educlopez/ui-craft
File contributor or agent papercuts as GitHub issues labeled friction, or investigate those issues as the daily friction-log Cloud Agent.
educlopez/ui-craft
Record a learned design constraint from a correction into the project brief.
educlopez/ui-craft
Full spec-driven pipeline — walks brief → tokens → shape (spec) → craft (build) → converge → ship in one guided run.
educlopez/ui-craft
Front door. An agent skill from educlopez/ui-craft.
educlopez/ui-craft
Audit or establish the project's 3-layer token spine. An agent skill from educlopez/ui-craft.
educlopez/ui-craft
Wireframe-first pass — outputs an ASCII layout + state list + content inventory + question list before any code.
Categories
Pre-ship gate — runs detector, verifies brief and tokens, applies the 10-pass finish bar, ranks findings by feedback hierarchy. Finalize is an agent skill from educlopez/ui-craft. Pre-ship gate — runs detector, verifies brief and tokens, applies the 10-pass finish bar, ranks findings by feedback hierarchy.
Finalize fits situations like: the user wants to ship; finalize a surface and needs a verdict (READY / NOT READY / BLOCKED) before committing; asks for finalize on their UI; mentions finalize alongside design / UI / frontend work.
Run `npx skills add educlopez/ui-craft --skill finalize -a claude-code`. Or copy the skill folder (.codex/skills/finalize in educlopez/ui-craft) into .claude/skills/finalize in your project. Claude Code loads it when a task matches its description.
Run `npx skills add educlopez/ui-craft --skill finalize -a codex`. Or copy the skill folder (.codex/skills/finalize in educlopez/ui-craft) into .agents/skills/finalize in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add educlopez/ui-craft --skill finalize -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/finalize, .gemini/skills/finalize, .github/skills/finalize and .opencode/skills/finalize in your project.
Going by SKILL.md and its folder, Finalize needs the command-line tools its instructions call (npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Finalize is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Finalize: Web Artifacts Builder (anthropics/skills, 180k stars), React Doctor (makeplane/plane, 61k stars), Impeccable (bestofjs/bestofjs, 3.1k stars) and Figma Design System Builder (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
educlopez (a GitHub user) maintains it in educlopez/ui-craft, which has 371 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 3, 2026.
Source: educlopez/ui-craft on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.