Vercel Composition Patterns
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
Authors, validates and reviews SDFormat XML for simulator models and worlds, with explicit frames, SI units and a design ledger.
$ npx skills add earthtojake/text-to-cad --skill sdf -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install earthtojake/text-to-cad sdf --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/earthtojake/text-to-cad.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/sdf .claude/skills/sdf && 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 "sdf" agent skill from https://github.com/earthtojake/text-to-cad/tree/main/skills/sdf into .claude/skills/sdf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdf", 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/earthtojake/text-to-cad/tree/main/skills/sdfType 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 earthtojake/text-to-cad --skill sdf -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install earthtojake/text-to-cad sdf --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/earthtojake/text-to-cad.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/sdf .agents/skills/sdf && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sdf" agent skill from https://github.com/earthtojake/text-to-cad/tree/main/skills/sdf into .agents/skills/sdf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdf", 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 earthtojake/text-to-cad --skill sdf -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install earthtojake/text-to-cad sdf --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/earthtojake/text-to-cad.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/sdf .cursor/skills/sdf && 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 "sdf" agent skill from https://github.com/earthtojake/text-to-cad/tree/main/skills/sdf into .cursor/skills/sdf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdf", 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/earthtojake/text-to-cad.git --path skills/sdf--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 earthtojake/text-to-cad --skill sdf -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install earthtojake/text-to-cad sdf --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/earthtojake/text-to-cad.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/sdf .gemini/skills/sdf && 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 "sdf" agent skill from https://github.com/earthtojake/text-to-cad/tree/main/skills/sdf into .gemini/skills/sdf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdf", 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 earthtojake/text-to-cad sdfInstalls 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 earthtojake/text-to-cad --skill sdf -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/earthtojake/text-to-cad.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/sdf .github/skills/sdf && 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 "sdf" agent skill from https://github.com/earthtojake/text-to-cad/tree/main/skills/sdf into .github/skills/sdf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdf", 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 earthtojake/text-to-cad --skill sdf -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install earthtojake/text-to-cad sdf --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/earthtojake/text-to-cad.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/sdf .opencode/skills/sdf && 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 "sdf" agent skill from https://github.com/earthtojake/text-to-cad/tree/main/skills/sdf into .opencode/skills/sdf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdf", 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.
sdfAuthors, validates and reviews SDFormat XML for simulator models and worlds, with explicit frames, SI units and a design ledger.
This skill is for authoring and reviewing SDFormat documents, the XML format that describes simulator models and worlds: links, joints, poses, frames, inertials, visual and collision geometry, sensors, lights, physics, plugins and includes. It is not for signed-distance-field geometry. The .sdf file is the source of truth and the agent writes the XML directly.
Core rules include validating every created or modified file with the cadgen sdf validate command before reporting completion, identifying the target consumer such as a Gazebo version first, choosing between model-level, world-level or model-in-world documents, using SI units, and preferring SDF version 1.12 for new outputs unless a target constrains it. A design ledger kept as a comment block comes before poses, joint axes, mesh scales and sensors, and relative_to and expressed_in must be written explicitly because implicit frame defaults are the most common failure.
Commands run through uv with a pinned cadgen release, which downloads on first use along with a headless browser for snapshots. Reference files cover the ledger, examples, frame semantics, interoperability, LLM guardrails, workflow, smoke tests and validation, and existing files can be reviewed visually in the CAD Viewer.
12 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 523ae21. 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:
uvxgitFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.astral.shFrom 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.
SDFormat Model and World Authoring loads about 2.6k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 105 tokens; SKILL.md has 1,257 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 earthtojake/text-to-cad at commit 523ae21, republished under its MIT licence (© earthtojake). 1,257 words, ~2,571 tokens.
.claude/skills/sdf/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Provenance: maintained in earthtojake/text-to-cad. Use the installed local skill files as the runtime source of truth; the repository link is only for provenance and release review.
Use this skill when the deliverable is an SDFormat document. SDFormat describes simulator and world behavior: models, worlds, frames, poses, links, joints, inertials, visuals, collisions, sensors, lights, physics, plugins, includes, and simulator metadata.
This skill is for SDFormat, not signed-distance-field geometry.
The .sdf file is the source of truth: author and edit the XML directly. There is no gen_sdf() contract.
Run cadgen through uv, so this skill's commands share one installation, and its warm build daemon, with the CAD app's server:
cadgen below means uvx --no-config --managed-python --python 3.13 --from cadgen==0.7.19 cadgenpython below means uvx --no-config --managed-python --python 3.13 --from cadgen==0.7.19 pythonThe first run downloads that installation and the first snapshot its headless browser; later runs reuse both.
.sdf XML directly and validate every created or modified file with cadgen sdf validate before reporting completion.version="1.12" for new outputs unless the target consumer constrains the version..sdf. Use references/design-ledger.md and references/llm-guardrails.md.relative_to / expressed_in explicitly on every nontrivial pose and axis. Implicit frame defaults are the top SDF failure mode. See references/frame-semantics.md.references/interoperability.md.gz sdf --check itself whenever gz is on PATH), simulator load, joint motion, and plugin/sensor startup.Use this skill for SDFormat outputs. Do not use it for signed-distance-field modeling, raw geometry generation, planning semantics, or to paper over incorrect upstream robot/source data unless the task is explicitly simulator-only.
Show the user each file you create or change, and any they ask to see. Snapshots and validation don't replace this.
If your tools include cad_show (your host may prefix it), use it with the file's
absolute path, and follow its description for when to call it again. cad_view reads
what the user selected; cad_screenshot shows you what they see. Neither is a review
of your own work.
Otherwise run the CAD Viewer, from any folder:
cadgen viewer --host 127.0.0.1 --json --detach--detach returns once the viewer answers requests and leaves it running in the
background: always pass it, since a foreground viewer never exits (and piping its
output through tail can hide the URL for good). It starts this machine's one viewer,
or reuses it. Read url from its one JSON line (never guess the port), and for each
file return url?file=<its URL-encoded absolute path>. If it fails to launch, say so.
Review placement, resources and joints. The viewer does not execute simulator plugins or validate dynamics; keep simulator checks separate.
.sdf and its consumers.references/frame-semantics.md before editing any <pose>, <frame>, joint axis, relative_to, expressed_in, nested scope, sensor frame, or plugin frame.references/examples.md.cadgen sdf validate; treat bundled validation as a guardrail, not simulator proof.references/smoke-tests.md).Run cadgen as Setup defines it. cadgen doctor <skill-dir> reports the installation in use and checks that it is the one this skill pins — docs drift silently on another. Validation itself needs nothing beyond the Python standard library; only snapshots need the browser. Use cadgen <verb> --help for the complete current interface.
cadgen sdf validate path/to/model.sdf
cadgen sdf validate path/to/model.sdf --strict
cadgen sdf validate path/to/model.sdf --json
cadgen sdf snapshot path/to/model.sdf review.pngThe validator checks document shape, name scopes, pose/frame graphs, joints, geometry, mesh URIs, inertials, sensors, and plugins, and prints its findings plus a summary. One run validates ONE file: --strict treats warnings as failures and --json prints one line of {"ok", "path", "issues": [{"severity", "code", "message", "element", "hint"}], "summary"}, where element is the XML path. It exits nonzero if the target fails.
External checking is on by default:
cadgen sdf validate path/to/model.sdf --gz-check required
cadgen sdf validate path/to/model.sdf --gz-check nevergz sdf --check is target-consumer validation. --gz-check auto is the default: it runs when gz is on PATH, reporting gz_check_passed or the tool's own output as the error gz_check_failed, and otherwise notes info: gz_check_unavailable and carries on. An absent optional tool says nothing about the file, so it never fails a clean document and --strict does not change that. --gz-check required makes the tool mandatory — a missing gz is then an error — and --gz-check never skips it outright.
When finishing an SDF task, include a compact report:
Validated: path/to/model.sdf
Checks run:
- bundled SDF validation: passed
- gz sdf --check: skipped, gz not installed
- simulator load: skipped, target simulator unavailable
- viewer review: live link returned, or explicit launch failure
Assumptions:
- Assumed mesh units are meters.
- Assumed lidar frame is coincident with lidar_link.
Risks:
- Camera plugin filename was not verified in the target simulator environment.cadgen sdf snapshot renders the robot to a PNG still, using the same shared
CLI and headless browser runtime every rendering skill uses — so a snapshot matches what
the CAD Viewer shows.
cadgen sdf snapshot path/to/robot.sdf review.pngIt accepts .sdf only (a format door, same TARGET [OUT] grammar as the rest). Pose the robot with --joint-values — {joint: degrees} JSON,
joints you do not name staying at their defaults, where the CAD Viewer opens the robot (the
"jointValues" job field is the same thing in a packet). The snapshot draws the robot with the
viewer's own scene, so it shows what the viewer shows, and a link mesh that cannot be loaded
fails it rather than leaving the link out. Robots are authored in metres and are framed on the
robot scene scale automatically.
A normal snapshot uses the Solid preset and Light appearance; omitted groups inherit preset defaults.
Pass --display render for the shared photographic scene. Inline display JSON and
JSON files use grouped settings such as lighting, background, and floor;
appearance is light (default) or dark. Projection and focal length belong
in display.camera. Top-level --camera and --joint-values remain active in every display
mode. The display modes are solid and render: edges, clip, exploded, the
xray, hidden-line and wireframe modes and the hidden/off surface styles
describe a STEP model's CAD edges, parts and solids, and are refused by name here.
Link meshes are resolved relative to the description, so they must be present: an
unhydrated Git LFS pointer fails as "No link mesh loaded for robot". Run
git lfs checkout <mesh dir> first.
The grammar is cadgen sdf snapshot TARGET [OUT] [flags], the same one every
format door uses. Use cadgen sdf snapshot --help for the complete current
interface — the flags a robot cannot act on are absent from it, not refused by it.
references/sdf-workflow.mdreferences/examples.mdreferences/llm-guardrails.mdreferences/design-ledger.mdreferences/frame-semantics.mdreferences/validation.mdreferences/smoke-tests.mdreferences/interoperability.md© earthtojake, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (references) in skills/sdf of earthtojake/text-to-cad.
Open the folder on GitHubat commit 523ae21
SDFormat Model and World Authoring 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 |
|---|---|---|---|---|---|---|
| SDFormat Model and World Authoring this skillearthtojake/text-to-cad | 19k | — | ~2.6k | Automated safety check: Pass | MIT | |
| Vercel Composition Patternssupabase/supabase | 111k | 58 repos | ~726 | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Typescript Advanced Typesrolling-scopes/rsschool-app | 10k | 25 repos | ~4.2k | Automated safety check: Pass | MPL-2.0 | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT |
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
rolling-scopes/rsschool-app
Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
onyx-dot-app/onyx
Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.
earthtojake/text-to-cad
Measures STL, OBJ, PLY or 3MF mesh files against additive manufacturing design limits and reports printability findings for each print process.
earthtojake/text-to-cad
Find, evaluate, and download common purchasable CAD parts from step.parts, including named off-the-shelf actuators, servos, motors, electronics boards, connectors, screws, bolts, nuts, washers…
earthtojake/text-to-cad
Guided DFM review of a part for sheet metal, CNC machining or injection molding, covering bends, tool access, draft and undercuts, with evidence-first measurement rules.
earthtojake/text-to-cad
Generates, regenerates and validates 2D DXF drawings from Python build123d sources for profiles, gaskets, panels and cut layouts, and reviews them in CAD Viewer.
earthtojake/text-to-cad
Slices STL, 3MF or OBJ models into printer-ready G-code with OrcaSlicer, either headless from the command line or by opening the model in the app.
earthtojake/text-to-cad
Guides writing, editing and validating URDF robot description files, with a design ledger, exact frame semantics and computed inertials checked by a validator.
Categories
Authors, validates and reviews SDFormat XML for simulator models and worlds, with explicit frames, SI units and a design ledger. This skill is for authoring and reviewing SDFormat documents, the XML format that describes simulator models and worlds: links, joints, poses, frames, inertials, visual and collision geometry, sensors, lights, physics, plugins and includes. It is not for signed-distance-field geometry.
SDFormat Model and World Authoring fits situations like: writing a robot or object model as an .sdf file; building a Gazebo world with lights, physics and includes; reviewing an SDF file for frame, pose or inertial mistakes; preparing an SDF model for handoff to a simulator.
Run `npx skills add earthtojake/text-to-cad --skill sdf -a claude-code`. Or copy the skill folder (skills/sdf in earthtojake/text-to-cad) into .claude/skills/sdf in your project. Claude Code loads it when a task matches its description.
Run `npx skills add earthtojake/text-to-cad --skill sdf -a codex`. Or copy the skill folder (skills/sdf in earthtojake/text-to-cad) into .agents/skills/sdf 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 earthtojake/text-to-cad --skill sdf -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sdf, .gemini/skills/sdf, .github/skills/sdf and .opencode/skills/sdf in your project.
Going by SKILL.md and its folder, SDFormat Model and World Authoring needs the command-line tools its instructions call (uvx and git). Our summary lists: uv, to run the cadgen command-line tool; Network access on first run to download cadgen and its headless browser.
SKILL.md names 1 domain. As links in the text: docs.astral.sh. 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.
SDFormat Model and World Authoring is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with SDFormat Model and World Authoring: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
earthtojake (a GitHub user) maintains it in earthtojake/text-to-cad, which has 18,560 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 9, 2026.
Source: earthtojake/text-to-cad on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.