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.
Write or update the project's durable design brief at .ui-craft/brief.md.
$ npx skills add educlopez/ui-craft --skill brief -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install educlopez/ui-craft brief --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/brief .claude/skills/brief && 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 "brief" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/brief into .claude/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", 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/briefType 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 brief -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install educlopez/ui-craft brief --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/brief .agents/skills/brief && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "brief" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/brief into .agents/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", 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 brief -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install educlopez/ui-craft brief --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/brief .cursor/skills/brief && 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 "brief" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/brief into .cursor/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", 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/brief--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 brief -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install educlopez/ui-craft brief --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/brief .gemini/skills/brief && 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 "brief" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/brief into .gemini/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", 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 briefInstalls 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 brief -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/brief .github/skills/brief && 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 "brief" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/brief into .github/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", 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 brief -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 brief --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/brief .opencode/skills/brief && 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 "brief" agent skill from https://github.com/educlopez/ui-craft/tree/main/.codex/skills/brief into .opencode/skills/brief/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brief", 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.
briefWrite or update the project's durable design brief at .ui-craft/brief.md.
Brief is an agent skill from educlopez/ui-craft. Write or update the project's durable design brief at .ui-craft/brief.md. Invoke when the user asks for brief on their UI, or mentions 'brief' alongside design / UI / frontend work.
Its SKILL.md is about 1.1k 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.
5 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Brief loads about 1.1k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 641 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). 641 words, ~1,144 tokens.
.claude/skills/brief/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 references/brief.md for the brief format before proceeding.
Check whether .ui-craft/brief.md exists. Use Read or ls on .ui-craft/.
If it exists: load its contents. If $ARGUMENTS names a specific update ("update principles", "shift target user", "add out of scope"), focus the session there and skip unchanged sections. Otherwise summarize what's in the brief and ask: "What do you want to change?"
If it doesn't exist: proceed to Step 2. Also check the repo root for a DESIGN.md or design-tokens.json (an ecosystem convention some teams already maintain) — if present, read it and pre-fill the brief's answers from it instead of re-asking; note the source. The brief complements an existing design contract, never contradicts it.
Walk the user through the five required sections in a single pass. Ask ONE compact question per section. Do not open five separate prompts unless the user asks for depth.
Compact prompt template:
"To write your design brief I need five things — answer as tersely as you like, I'll fill in structure:
- Product purpose — what does it do, in one sentence?
- Primary user — who, by role and context?
- Principles — what does this product believe? Give me three to five stances it takes. (If you don't have these yet, say so — I'll run the principles workshop.)
- Success metric — what does 'the user succeeded on this surface' look like in observable behavior?
- Out of scope — three to five things this surface deliberately does NOT do."
Principles workshop case: if the user says "I don't have principles yet" or gives vague answers ("make it good", "keep it simple"), do NOT fabricate principles from vague input. Load references/principles-catalog.md first. The catalog has 42 worked example principles across 8 product categories — use them as conversation seeds, not as templates to adopt literally. Show 2-3 from the closest category to the user's product, then ask which resonate or which they'd flip. Then run the principles workshop from references/brief.md as a focused sub-flow: ask for three past design decisions that were debated, then derive candidate principles from the patterns. Refuse to accept platitudes — push back and prompt for substance.
Parsing long input: if the user provides a product description or PRD, parse it into the five sections rather than re-asking for information already given. State what you extracted and ask for confirmation or corrections.
Thin answers: if an answer is too vague to constrain a design decision, ask one targeted follow-up. Maximum two follow-ups per section before flagging it as incomplete and moving on.
Always show the proposed brief in full before writing the file. Ask: "Does this look right, or anything to adjust?"
Do not write until confirmed.
Create .ui-craft/ if it doesn't exist. Write the confirmed content to .ui-craft/brief.md.
The file must contain all five sections with the exact headings from references/brief.md. No omissions.
Tell the user the file is at .ui-craft/brief.md. Suggest committing it:
"Commit
.ui-craft/brief.mdto the repo — it's documentation, not config. The agent reads it every session."
Do not auto-commit. Per project rules, commits require explicit user instruction.
[TO DEFINE — YYYY-MM-DD] so the gap is visible.Next step: /tokens — the brief decides the intent, the tokens encode it (rung 2).
© 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/brief of educlopez/ui-craft.
Open the folder on GitHubat commit ceecc8e
Brief 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 |
|---|---|---|---|---|---|---|
| Brief this skilleduclopez/ui-craft | 371 | — | ~1.1k | 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
Pre-ship gate — runs detector, verifies brief and tokens, applies the 10-pass finish bar, ranks findings by feedback hierarchy.
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.
Categories
Write or update the project's durable design brief at .ui-craft/brief.md. Brief is an agent skill from educlopez/ui-craft.md.
Brief fits situations like: asks for brief on their UI; mentions brief alongside design / UI / frontend work.
Run `npx skills add educlopez/ui-craft --skill brief -a claude-code`. Or copy the skill folder (.codex/skills/brief in educlopez/ui-craft) into .claude/skills/brief in your project. Claude Code loads it when a task matches its description.
Run `npx skills add educlopez/ui-craft --skill brief -a codex`. Or copy the skill folder (.codex/skills/brief in educlopez/ui-craft) into .agents/skills/brief 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 brief -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/brief, .gemini/skills/brief, .github/skills/brief and .opencode/skills/brief in your project.
SKILL.md names no scripts, command-line tools or credentials: Brief is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Brief 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.1k tokens (SKILL.md is roughly 4.6k 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 Brief: 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.