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 a narratable, accessibility-oriented text description of an existing PartCAD part, assembly, or sketch from its measured bounding box and volume, from renders taken at several viewing angles…
$ npx skills add partcad/partcad --skill describe -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install partcad/partcad describe --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/partcad/partcad.git skills-src && mkdir -p .claude/skills && cp -r skills-src/ai-agents/common/skills/describe .claude/skills/describe && 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 "describe" agent skill from https://github.com/partcad/partcad/tree/devel/ai-agents/common/skills/describe into .claude/skills/describe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "describe", 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/partcad/partcad/tree/devel/ai-agents/common/skills/describeType 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 partcad/partcad --skill describe -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install partcad/partcad describe --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/partcad/partcad.git skills-src && mkdir -p .agents/skills && cp -r skills-src/ai-agents/common/skills/describe .agents/skills/describe && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "describe" agent skill from https://github.com/partcad/partcad/tree/devel/ai-agents/common/skills/describe into .agents/skills/describe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "describe", 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 partcad/partcad --skill describe -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install partcad/partcad describe --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/partcad/partcad.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/ai-agents/common/skills/describe .cursor/skills/describe && 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 "describe" agent skill from https://github.com/partcad/partcad/tree/devel/ai-agents/common/skills/describe into .cursor/skills/describe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "describe", 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/partcad/partcad.git --path ai-agents/common/skills/describe--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 partcad/partcad --skill describe -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install partcad/partcad describe --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/partcad/partcad.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/ai-agents/common/skills/describe .gemini/skills/describe && 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 "describe" agent skill from https://github.com/partcad/partcad/tree/devel/ai-agents/common/skills/describe into .gemini/skills/describe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "describe", 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 partcad/partcad describeInstalls 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 partcad/partcad --skill describe -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/partcad/partcad.git skills-src && mkdir -p .github/skills && cp -r skills-src/ai-agents/common/skills/describe .github/skills/describe && 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 "describe" agent skill from https://github.com/partcad/partcad/tree/devel/ai-agents/common/skills/describe into .github/skills/describe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "describe", 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 partcad/partcad --skill describe -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install partcad/partcad describe --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/partcad/partcad.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/ai-agents/common/skills/describe .opencode/skills/describe && 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 "describe" agent skill from https://github.com/partcad/partcad/tree/devel/ai-agents/common/skills/describe into .opencode/skills/describe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "describe", 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.
describeWrite a narratable, accessibility-oriented text description of an existing PartCAD part, assembly, or sketch from its measured bounding box and volume, from renders taken at several viewing angles…
Describe is an agent skill from partcad/partcad. Write a narratable, accessibility-oriented text description of an existing PartCAD part, assembly, or sketch from its measured bounding box and volume, from renders taken at several viewing angles, and - where it is available - from a dimensioned technical drawing. Use for /pc:describe or when the user asks to describe, summarize, or caption a PartCAD object. Reproduces the retired built-in AI shape-summary.
Its SKILL.md is about 2.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: Package manager for things. Start designing modular hardware! PartCAD is the standard for documenting manufacturable physical products (a.k.a. Digital Thread or TDP). It comes… The licence is Apache-2.0.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e08683a. 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 (its code samples are bash and yaml).
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.
Describe loads about 2.1k tokens when it runs. Until then it costs about 105 tokens; SKILL.md has 1,238 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 partcad/partcad at commit e08683a, republished under its Apache-2.0 licence (© partcad). 1,238 words, ~2,095 tokens.
.claude/skills/describe/SKILL.md (or your agent's skills folder).Produce a text description of an existing PartCAD shape by rendering it and
looking at the result — the replacement for PartCAD's retired built-in AI
summary. The text after the command ($ARGUMENTS) names the object to describe
(optionally with its kind).
One picture is not enough to describe a shape. A single projection hides everything behind it, and a description written from one is a description of a silhouette. Render three views (§3), and where a dimensioned drawing can be had, read the numbers off that rather than estimating them (§4).
Nor is any picture enough to give a size. A projection is rendered to fit its frame, so nothing in it says whether the part is 20 mm across or 200 — which is why this starts by asking PartCAD what it measured (§2) and never estimates a dimension a number was available for.
$ARGUMENTS is the object name (a part by default; an assembly or sketch if the
user says so). Read its desc:/requirements: from partcad.yaml for context.
Make sure PartCAD is available as /pc:init describes.
Pass --no-ansi on every run so the output is plain text; it is a global flag,
goes before the subcommand, and routes the logs to stderr.
This skill describes an object a package declares, because §6 stores the result
back into that package. To describe a bare CAD file that is in no package, render
it with /pc:render (pc adhoc render) and write the description for the user
instead of storing it.
pc info reports what PartCAD measured when it built the object, and those are
the numbers this description is anchored on:
pc --no-ansi info <name> 2>&1 # add -a / -s for an assembly or a sketchRead all of it. The measurements are the first thing to look for, but the
sections below are what the design says about itself, and a filter narrow
enough to catch BoundingBox would cut them off.
BoundingBox — min, max and size in millimetres. size is the
overall envelope of the design: state it, and give every other dimension in
proportion to it rather than in pixels.Volume — how much material is in it, in cubic millimetres, with
Solids saying how many solids that is the volume of. More than one solid in
a part is worth saying out loud: it is usually either deliberate (a part that
is two pieces) or a mistake nobody has noticed. A negative volume means the
faces are oriented inward — report that as a defect rather than dropping the
sign.pc info says so by
leaving Volume out. It is flat, so its bounding box is its size.The rest of what pc info prints is worth a look too, and for an object read
from a file it is where the design's own words are: a STEP file's File,
Products, Layers and Properties, a DXF sketch's Drawing, Layers and
Annotations — including the angle, radius and direction of a sheet metal
bend. Anything stated there is the design's own and beats a reading off a
picture.
The first run builds and measures the object, so it is slow; every run after it is a cache hit. If it fails — no sandbox, a part that does not build — say so in the report and describe the shape from the views alone, without inventing a size.
front, top and iso: two orthographic views to read proportion and features
from, and one pictorial view that shows how they go together. A rendered file is
named after the object, so give each view a directory of its own or they
overwrite each other:
for view in front top iso; do
mkdir -p /tmp/pc-render/$view
pc --no-ansi render -t png --view $view -O /tmp/pc-render/$view <name> # add -a for an assembly
doneView all three — /tmp/pc-render/<view>/<name>.png.
Add right (or back, left, bottom) when the three leave a face
unaccounted for: a part that is not symmetric about an axis has a side you have
not seen, and guessing at it is exactly what this skill must not do.
A sketch is flat, so it has only one view worth rendering, and SVG suits it better than PNG:
mkdir -p /tmp/pc-render
pc --no-ansi render -s -t svg -O /tmp/pc-render <name>The projections above show shape but no numbers. draftwright, a render
implementation published in the public PartCAD index, draws a fully dimensioned
technical drawing instead — orthographic views with dimension lines, hole
callouts, radii, an ISO view, and a title block carrying the material and scale.
Reading a description off that beats estimating from pixels:
mkdir -p /tmp/pc-render/drawing
pc --no-ansi render -t pdf -e //pub/feature/render/draftwright \
-O /tmp/pc-render/drawing <name>-e names the package to read the output configuration from, so this works on
any object without that object's package knowing about draftwright. Then read
/tmp/pc-render/drawing/<name>.pdf — ask for pdf, whose pages can be
looked at directly. Its svg draws every character as paths, so no text can be
read out of that markup.
This is a best-effort extra, not a requirement. It needs the public index among
the package's dependencies: (which pc init writes) and a network connection,
and the first run is slow while PartCAD installs draftwright into a sandbox. It
is also a part drawing — do not expect it of an assembly or a sketch.
draftwright reports what it could not do. When a part has features it cannot dimension at the chosen scale it says so and draws the rest, and the command may exit non-zero having still written a usable file — so check whether the file appeared before giving up on it. If it did not, or anything above failed, describe the object from the three views and say in your report that no dimensioned drawing was available.
From the measurements, the images and the configured desc/requirements,
write a description for a reader who has a mechanical-engineering / CAD
background but cannot see it:
pc info gave no such
number — a sketch, which has no volume; a part that would not build; a machine
with no sandbox — write that the measurement was unavailable. Saying so costs
a clause; the alternative is a figure you made up, which is the one thing this
skill exists to prevent.pc info first, then the dimensioned drawing, then the picture. Where you are
reading a proportion off a picture rather than a stated number, say it is
approximate rather than inventing a figure.pc ide view shows it)pc ide view reads a shape's summary: from its configuration. Write your
description there so the tool and other agents can reuse it:
parts: # or sketches: / assemblies:
<name>:
...
summary: >-
<your description>Report the description to the user, say which views (and whether a dimensioned drawing) it was written from and which numbers were measured rather than judged, and confirm where you stored it.
© partcad, Apache-2.0. 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 ai-agents/common/skills/describe of partcad/partcad.
Open the folder on GitHubat commit e08683a
Describe 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 |
|---|---|---|---|---|---|---|
| Describe this skillpartcad/partcad | 503 | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| 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 | 97 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.
partcad/partcad
Enrich an existing PartCAD part with connection interfaces and ports (mating metadata) so it can be mated to other parts automatically.
partcad/partcad
Convert a CAD file or a PartCAD object to another geometry format - STEP, BREP, STL, 3MF, OBJ, IGES, glTF, three.js, SVG, DXF, URDF, ASSY - with pc convert for an object a package declares (which…
partcad/partcad
Write a CAD file out of an object a PartCAD package declares - STEP, BREP, STL, 3MF, OBJ, IGES, glTF, three.js, URDF for 3D, SVG or DXF for a sketch, or a file type the package implements itself -…
partcad/partcad
Generate a PartCAD part from a natural-language description (and optional reference images/requirements) by authoring a CAD script and validating it with the PartCAD CLI.
partcad/partcad
Generate a PartCAD 2D sketch from a natural-language description by authoring the sketch (build123d / cadquery / dxf / svg / basic) and validating it with the PartCAD CLI.
partcad/partcad
Initialize a PartCAD package in the current directory by running the installed PartCAD CLI (pc init / partcad init).
Categories
Write a narratable, accessibility-oriented text description of an existing PartCAD part, assembly, or sketch from its measured bounding box and volume, from renders taken at several viewing angles…. Describe is an agent skill from partcad/partcad. Write a narratable, accessibility-oriented text description of an existing PartCAD part, assembly, or sketch from its measured bounding box and volume, from renders taken at several viewing angles, and - where it is available - from a dimensioned technical drawing.
Describe fits situations like: the user asks to describe; caption a PartCAD object.
Run `npx skills add partcad/partcad --skill describe -a claude-code`. Or copy the skill folder (ai-agents/common/skills/describe in partcad/partcad) into .claude/skills/describe in your project. Claude Code loads it when a task matches its description.
Run `npx skills add partcad/partcad --skill describe -a codex`. Or copy the skill folder (ai-agents/common/skills/describe in partcad/partcad) into .agents/skills/describe 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 partcad/partcad --skill describe -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/describe, .gemini/skills/describe, .github/skills/describe and .opencode/skills/describe in your project.
SKILL.md names no scripts, command-line tools or credentials: Describe 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.
Describe is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.4k 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 Describe: 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.
partcad (a GitHub organization) maintains it in partcad/partcad, which has 503 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 8, 2026.
Source: partcad/partcad on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.