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.
Enforces React component authoring best practices. An agent skill from paralleldrive/aidd.
$ npx skills add paralleldrive/aidd --skill aidd-react -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install paralleldrive/aidd aidd-react --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/paralleldrive/aidd.git skills-src && mkdir -p .claude/skills && cp -r skills-src/ai/skills/aidd-react .claude/skills/aidd-react && 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 "aidd-react" agent skill from https://github.com/paralleldrive/aidd/tree/main/ai/skills/aidd-react into .claude/skills/aidd-react/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aidd-react", 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/paralleldrive/aidd/tree/main/ai/skills/aidd-reactType 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 paralleldrive/aidd --skill aidd-react -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install paralleldrive/aidd aidd-react --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/paralleldrive/aidd.git skills-src && mkdir -p .agents/skills && cp -r skills-src/ai/skills/aidd-react .agents/skills/aidd-react && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "aidd-react" agent skill from https://github.com/paralleldrive/aidd/tree/main/ai/skills/aidd-react into .agents/skills/aidd-react/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aidd-react", 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 paralleldrive/aidd --skill aidd-react -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install paralleldrive/aidd aidd-react --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/paralleldrive/aidd.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/ai/skills/aidd-react .cursor/skills/aidd-react && 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 "aidd-react" agent skill from https://github.com/paralleldrive/aidd/tree/main/ai/skills/aidd-react into .cursor/skills/aidd-react/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aidd-react", 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/paralleldrive/aidd.git --path ai/skills/aidd-react--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 paralleldrive/aidd --skill aidd-react -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install paralleldrive/aidd aidd-react --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/paralleldrive/aidd.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/ai/skills/aidd-react .gemini/skills/aidd-react && 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 "aidd-react" agent skill from https://github.com/paralleldrive/aidd/tree/main/ai/skills/aidd-react into .gemini/skills/aidd-react/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aidd-react", 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 paralleldrive/aidd aidd-reactInstalls 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 paralleldrive/aidd --skill aidd-react -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/paralleldrive/aidd.git skills-src && mkdir -p .github/skills && cp -r skills-src/ai/skills/aidd-react .github/skills/aidd-react && 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 "aidd-react" agent skill from https://github.com/paralleldrive/aidd/tree/main/ai/skills/aidd-react into .github/skills/aidd-react/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aidd-react", 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 paralleldrive/aidd --skill aidd-react -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install paralleldrive/aidd aidd-react --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/paralleldrive/aidd.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/ai/skills/aidd-react .opencode/skills/aidd-react && 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 "aidd-react" agent skill from https://github.com/paralleldrive/aidd/tree/main/ai/skills/aidd-react into .opencode/skills/aidd-react/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aidd-react", 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.
aidd-reactEnforces React component authoring best practices. An agent skill from paralleldrive/aidd.
Aidd React is an agent skill from paralleldrive/aidd. Enforces React component authoring best practices. Use when creating React components, binding components, presentations, useObservableValues, or when the user asks about React UI patterns, reactive binding, or action callbacks.
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `README.md`).
It sits in Frontend & Design, covering React components. It works with React. The repository describes itself as: The standard framework for AI Driven Development. The licence is MIT.
Read from SKILL.md and the folder at commit 9a7c8e3. 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 sudolang and typescript).
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.
Aidd React loads about 1.4k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 212 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 paralleldrive/aidd at commit 9a7c8e3, republished under its MIT licence (© paralleldrive). 212 words, ~1,380 tokens.
.claude/skills/aidd-react/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.React components live in the components/ layer per structure. Consume Observe and void actions from plugins per service. Use @adobe/data-react for useDatabase, useObservableValues, and DatabaseProvider.
Constraints {
Binding components must call useDatabase to obtain the main service context
Do not access any other React context
All other services and state reachable from database (db.services, db.observe, db.transactions)
Single context is sufficient
}Binding components must call useDatabase to obtain the main service context. Do not access any other React context. Additional contexts create a context waterfall and hurt performance. All other services and state are reachable from the database — e.g. db.services, db.observe, db.transactions — so a single context is sufficient.
BindingComponent {
injects: "observed values via useObservableValues"
triggers: "re-render when those values change"
binds: "action callbacks to the presentation"
}
Presentation {
type: "pure function (no hooks)"
receives: "data and action callbacks as props"
returns: "JSX"
constraint: "Keep reactive logic in binding component; presentation stays pure"
}Do not pass values from parent except when needed to identify which entity in the database to bind to.
When multiple instances exist (e.g. table rows), the parent passes an identifying value such as entity so the child knows which record to observe.
// Parent: passes entity so child knows which record to bind to
{values.sprites.map((entity) => (
<Sprite key={entity} entity={entity} />
))}
// Child: uses entity prop to observe the right record
function Sprite({ entity }: { entity: Entity }) {
const db = useDatabase();
const values = useObservableValues(
() => ({ sprite: db.observe.entity(entity, db.archetypes.Sprite) }),
[entity],
);
// ...
}Most binding components use a single useObservableValues call. Collect all observed values in one object.
Observe only what you need — the minimal values required for rendering. For values that may resolve slowly, wrap with Observe.withDefault so you can render a skeleton (or placeholder) immediately while waiting. See observe.
function Counter() {
const db = useDatabase(counterPlugin);
const values = useObservableValues(() => ({
count: db.observe.resources.count,
}));
if (!values) return null;
return presentation.render({ ...values, increment: db.transactions.increment });
}Constraints {
Presentation files ONLY export render (and localization bundles where appropriate)
Nothing else
For render args type externally (storybook, testing): use Parameters<typeof render>[0]
}PresentationCallbacks {
are: "action calls, not events"
semantics: "verbNoun — not onClick/onToggle/onSignOut style"
bindingComponent: "passes action callbacks (e.g. toggleView, signOut) as props"
presentation: "invokes them when user intent occurs"
passFunctionReferencesDirectly: true
reason: "All actions are pure functions with no this binding"
}// Binding component: pass the function reference (no arrow wrapper)
increment: db.transactions.increment
// When the action needs arguments, wrap to supply them
toggleSprite: () => db.transactions.toggleSpriteActive({ entity })
// Presentation: receives and invokes when user acts
<button onClick={props.increment}>Increment</button>Testing {
presentation: "add *-presentation.test.tsx when appropriate; unit test the presentation"
bindingComponent: "not unit tested — no business logic; uses Database service (already unit tested)"
}fn whenCreatingOrModifyingReactComponent() {
Constraints {
Call useDatabase for main service context; do not use any other React context
Split into binding component (reactive) and presentation (pure)
Use single useObservableValues in binding component; Observe only minimal values; use Observe.withDefault for slow-resolving values
Pass observed values and action callbacks to presentation; pass function references directly when signature matches; wrap only when supplying arguments
Pass entity (or identifying value) from parent only when child must bind to specific database record
Keep presentation pure — no hooks
Presentation exports only render (and localization bundles where appropriate)
Add *-presentation.test.tsx for presentation when appropriate; do not unit test binding components
Never include business logic within binding components — move into computed values or action handlers
Good binding components should be extremely small
}
}IMPORTANT! Make absolutely certain that all hooks are executed in the same order every call. DO NOT have any early exits or returns preceding any hooks!
© paralleldrive, 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 1 other file in ai/skills/aidd-react of paralleldrive/aidd.
Open the folder on GitHubat commit 9a7c8e3
Aidd React 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 |
|---|---|---|---|---|---|---|
| Aidd React this skillparalleldrive/aidd | 384 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Web Artifacts Builderanthropics/skills | 180k | 40 repos | ~769 | Automated safety check: Pass | Apache-2.0 | |
| React Composition Patternsvercel-labs/openreview | 1.7k | 58 repos | ~721 | Automated safety check: Pass | MIT | |
| 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 | 7 repos | ~1.6k | Automated safety check: Pass | None | |
| 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.
vercel-labs/openreview
Rules for structuring React components with composition instead of boolean props, covering compound components, lifted state, variants and React 19 changes.
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.
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).
paralleldrive/aidd
Guides creating, reviewing or refactoring AI-Driven Development skills so each one stays minimal, composable and named around a single clear function.
paralleldrive/aidd
Enforces a split of UI components into terminal and layout types, with layout components composing others through standard layout tokens, for cleaner structure and fewer re-renders.
paralleldrive/aidd
Enforces @adobe/data/ecs practices when writing Database.Plugin definitions, including property order, plugin composition, services, components, resources and archetypes.
paralleldrive/aidd
Has your agent throw and catch JavaScript and TypeScript errors with the error-causes library, using named causes, preserved originals and routed handlers.
paralleldrive/aidd
Teaches the saga pattern with call and put so network requests and side effects stay out of the logic and sagas can be tested without mocks.
paralleldrive/aidd
Rules for writing Lit elements in an AIDD project: binding elements on DatabaseElement, observed values, presentation components and action-style callbacks.
Works with
Categories
Enforces React component authoring best practices. An agent skill from paralleldrive/aidd. Aidd React is an agent skill from paralleldrive/aidd. Enforces React component authoring best practices.
Aidd React fits situations like: creating React components; binding components; useObservableValues; the user asks about React UI patterns.
Run `npx skills add paralleldrive/aidd --skill aidd-react -a claude-code`. Or copy the skill folder (ai/skills/aidd-react in paralleldrive/aidd) into .claude/skills/aidd-react in your project. Claude Code loads it when a task matches its description.
Run `npx skills add paralleldrive/aidd --skill aidd-react -a codex`. Or copy the skill folder (ai/skills/aidd-react in paralleldrive/aidd) into .agents/skills/aidd-react 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 paralleldrive/aidd --skill aidd-react -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aidd-react, .gemini/skills/aidd-react, .github/skills/aidd-react and .opencode/skills/aidd-react in your project.
SKILL.md names no scripts, command-line tools or credentials: Aidd React 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.
Aidd React 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.4k tokens (SKILL.md is roughly 5.5k 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 Aidd React: Web Artifacts Builder (anthropics/skills, 180k stars), React Composition Patterns (vercel-labs/openreview, 1.7k stars), React Router Development (remix-run/react-router, 57k stars) and React UI State Patterns (ChrisWiles/claude-code-showcase, 6.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
paralleldrive (a GitHub organization) maintains it in paralleldrive/aidd, which has 384 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on June 12, 2026.
Source: paralleldrive/aidd on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.