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.
Compare React component render counts between origin/main and the current branch during a user-defined UI scenario (e.g.
$ npx skills add imbue-ai/sculptor --skill measure-react-renders -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install imbue-ai/sculptor measure-react-renders --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/imbue-ai/sculptor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/measure-react-renders .claude/skills/measure-react-renders && 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 "measure-react-renders" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/measure-react-renders into .claude/skills/measure-react-renders/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "measure-react-renders", 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/imbue-ai/sculptor/tree/main/.claude/skills/measure-react-rendersType 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 imbue-ai/sculptor --skill measure-react-renders -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install imbue-ai/sculptor measure-react-renders --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/measure-react-renders .agents/skills/measure-react-renders && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "measure-react-renders" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/measure-react-renders into .agents/skills/measure-react-renders/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "measure-react-renders", 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 imbue-ai/sculptor --skill measure-react-renders -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install imbue-ai/sculptor measure-react-renders --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/measure-react-renders .cursor/skills/measure-react-renders && 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 "measure-react-renders" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/measure-react-renders into .cursor/skills/measure-react-renders/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "measure-react-renders", 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/imbue-ai/sculptor.git --path .claude/skills/measure-react-renders--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 imbue-ai/sculptor --skill measure-react-renders -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install imbue-ai/sculptor measure-react-renders --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/measure-react-renders .gemini/skills/measure-react-renders && 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 "measure-react-renders" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/measure-react-renders into .gemini/skills/measure-react-renders/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "measure-react-renders", 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 imbue-ai/sculptor measure-react-rendersInstalls 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 imbue-ai/sculptor --skill measure-react-renders -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/measure-react-renders .github/skills/measure-react-renders && 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 "measure-react-renders" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/measure-react-renders into .github/skills/measure-react-renders/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "measure-react-renders", 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 imbue-ai/sculptor --skill measure-react-renders -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install imbue-ai/sculptor measure-react-renders --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/measure-react-renders .opencode/skills/measure-react-renders && 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 "measure-react-renders" agent skill from https://github.com/imbue-ai/sculptor/tree/main/.claude/skills/measure-react-renders into .opencode/skills/measure-react-renders/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "measure-react-renders", 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.
measure-react-rendersCompare React component render counts between origin/main and the current branch during a user-defined UI scenario (e.g.
Measure React Renders is an agent skill from imbue-ai/sculptor. Compare React component render counts between origin/main and the current branch during a user-defined UI scenario (e.g. panel resize, navigation). Use when verifying that performance changes actually reduced re-renders.
Its SKILL.md is about 600 tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts (for example `scenarios/chat_message.py`, `scenarios/long_chat_scroll.py` and `scenarios/panel_resize.py`).
It sits in Frontend & Design, covering React components. It works with React. The repository describes itself as: Build product with grounded, parallel coding agents. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f847102. 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.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
gitnpmuvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, npm and uv, 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.
Measure React Renders loads about 603 tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 123 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); the scripts in this folder are not scanned.
The full file from imbue-ai/sculptor at commit f847102, republished under its MIT licence (© imbue-ai). 123 words, ~603 tokens.
.claude/skills/measure-react-renders/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.git fetch origin main
git worktree add /tmp/sculptor_baseline origin/main
cd /tmp/sculptor_baseline/sculptor/frontend && npm install --silentIf the user provides one, use it. Otherwise write a Python file exporting:
DESCRIPTION: str — what is being measuredTARGET_COMPONENTS: list[str] — component names to highlightsetup(page, base_url, workspace_id, task_id) — navigate + waitaction(page) — perform the action to measureComponent names must be unminified source names (e.g. SplittableSectionComponent
for the memo-wrapped SplittableSection export, AlphaChatInterface if not wrapped).
See scenarios/panel_resize.py for an example.
uv run --project sculptor python \
.claude/skills/measure-react-renders/scripts/perf_compare.py \
--baseline-dir /tmp/sculptor_baseline \
--current-dir "$(pwd)" \
--scenario path/to/scenario.pyUse --skip-build if frontends are already built.
The script builds both frontends with --minify false (preserves component
names), starts two isolated backends, injects __REACT_DEVTOOLS_GLOBAL_HOOK__
via Playwright's addInitScript before React loads, runs the scenario, and
prints a comparison table.
git worktree remove /tmp/sculptor_baselineimport time
DESCRIPTION = "Section resize render cascade"
TARGET_COMPONENTS = ["AlphaChatInterface", "SectionGrid", "SplittableSectionComponent"]
def setup(page, base_url, workspace_id, task_id):
page.goto(f"{base_url}/#/ws/{workspace_id}/agent/{task_id}")
page.wait_for_load_state("networkidle")
time.sleep(5)
def action(page):
handles = page.locator('[role="separator"]').all()
handle = handles[-1]
handle.focus()
time.sleep(0.3)
for _ in range(5):
page.keyboard.press("ArrowLeft")
time.sleep(0.15)
for _ in range(5):
page.keyboard.press("ArrowRight")
time.sleep(0.15)© imbue-ai, 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 8 other files (scripts) in .claude/skills/measure-react-renders of imbue-ai/sculptor.
Open the folder on GitHubat commit f847102
Measure React Renders 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 |
|---|---|---|---|---|---|---|
| Measure React Renders this skillimbue-ai/sculptor | 238 | — | ~603 | Automated safety check: Pass | MIT | |
| Web Artifacts Builderanthropics/skills | 180k | 40 repos | ~769 | Automated safety check: Pass | Apache-2.0 | |
| React Router Developmentremix-run/react-router | 57k | 1 repos | ~1.5k | Automated safety check: Pass | MIT | |
| React UI State PatternsChrisWiles/claude-code-showcase | 6.1k | 8 repos | ~1.6k | Automated safety check: Pass | None | |
| React View Transitions Guidevercel-labs/next-beats | 168 | 11 repos | ~3.1k | Automated safety check: Pass | MIT | |
| Chakra UI v3 Builderchakra-ui/chakra-ui | 41k | — | ~3.1k | Automated safety check: Pass | MIT |
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.
remix-run/react-router
Guides work on React Router apps by first identifying whether the app uses Framework, Data or Declarative mode, then loading the matching reference and the installed package docs.
ChrisWiles/claude-code-showcase
Sets patterns for React interfaces: when to show loading spinners or skeletons, how to surface errors, how to disable buttons during async work and how to handle empty lists.
vercel-labs/next-beats
Guides implementing animated page and state transitions in React with the native View Transition API, covering shared elements, list reorders and directional navigation.
chakra-ui/chakra-ui
Builds responsive, accessible Chakra UI v3 components and layouts, sets up Chakra in new or existing projects, and designs themes with tokens, semantic tokens and recipes.
Dimillian/Skills
Analyze and optimize React component performance issues (slow renders, re-render thrash, laggy lists, expensive computations).
imbue-ai/sculptor
QA the Sculptor mobile web UI on a real iOS Simulator, driven headlessly from a Mac.
imbue-ai/sculptor
Post a one-line PR announcement to a Slack channel, and mark it :merged: when the PR merges.
imbue-ai/sculptor
Run Claude programmatically against collections of files in the codebase.
imbue-ai/sculptor
Build or modify a Sculptor extension — a runtime ESM module loaded into the Sculptor UI.
imbue-ai/sculptor
Review a set of code changes against Sculptor's review categories and produce a markdown findings table.
imbue-ai/sculptor
Cut a new Sculptor release candidate from main: run just cut-release (which creates the release/sculptor-vX.Y.0 branch at X.Y.0rc1, pushes the tag that triggers the RC build, and opens a PR bumping…
Works with
Categories
Compare React component render counts between origin/main and the current branch during a user-defined UI scenario (e.g. Measure React Renders is an agent skill from imbue-ai/sculptor.g.
Measure React Renders fits situations like: verifying that performance changes actually reduced re-renders; tasks that involve React components.
Run `npx skills add imbue-ai/sculptor --skill measure-react-renders -a claude-code`. Or copy the skill folder (.claude/skills/measure-react-renders in imbue-ai/sculptor) into .claude/skills/measure-react-renders in your project. Claude Code loads it when a task matches its description.
Run `npx skills add imbue-ai/sculptor --skill measure-react-renders -a codex`. Or copy the skill folder (.claude/skills/measure-react-renders in imbue-ai/sculptor) into .agents/skills/measure-react-renders 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 imbue-ai/sculptor --skill measure-react-renders -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/measure-react-renders, .gemini/skills/measure-react-renders, .github/skills/measure-react-renders and .opencode/skills/measure-react-renders in your project.
Going by SKILL.md and its folder, Measure React Renders needs Python for the scripts in its folder and the command-line tools its instructions call (git, npm and uv). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Its commands use git, npm and uv, 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Measure React Renders is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 603 tokens (SKILL.md is roughly 2.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 Measure React Renders: Web Artifacts Builder (anthropics/skills, 180k stars), React Router Development (remix-run/react-router, 57k stars), React UI State Patterns (ChrisWiles/claude-code-showcase, 6.1k stars) and React View Transitions Guide (vercel-labs/next-beats, 168 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
imbue-ai (a GitHub organization) maintains it in imbue-ai/sculptor, which has 238 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 9, 2026.
Source: imbue-ai/sculptor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.