Impeccable
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…
Audit prop APIs across a component library: naming consistency, boolean/default patterns, type coverage, exported types, breaking changes between versions.
$ npx skills add murphytrueman/design-system-ops --skill component-api-validator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install murphytrueman/design-system-ops component-api-validator --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/murphytrueman/design-system-ops.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/component-api-validator .claude/skills/component-api-validator && 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 "component-api-validator" agent skill from https://github.com/murphytrueman/design-system-ops/tree/main/skills/component-api-validator into .claude/skills/component-api-validator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "component-api-validator", 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/murphytrueman/design-system-ops/tree/main/skills/component-api-validatorType 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 murphytrueman/design-system-ops --skill component-api-validator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install murphytrueman/design-system-ops component-api-validator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/murphytrueman/design-system-ops.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/component-api-validator .agents/skills/component-api-validator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "component-api-validator" agent skill from https://github.com/murphytrueman/design-system-ops/tree/main/skills/component-api-validator into .agents/skills/component-api-validator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "component-api-validator", 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 murphytrueman/design-system-ops --skill component-api-validator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install murphytrueman/design-system-ops component-api-validator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/murphytrueman/design-system-ops.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/component-api-validator .cursor/skills/component-api-validator && 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 "component-api-validator" agent skill from https://github.com/murphytrueman/design-system-ops/tree/main/skills/component-api-validator into .cursor/skills/component-api-validator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "component-api-validator", 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/murphytrueman/design-system-ops.git --path skills/component-api-validator--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 murphytrueman/design-system-ops --skill component-api-validator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install murphytrueman/design-system-ops component-api-validator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/murphytrueman/design-system-ops.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/component-api-validator .gemini/skills/component-api-validator && 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 "component-api-validator" agent skill from https://github.com/murphytrueman/design-system-ops/tree/main/skills/component-api-validator into .gemini/skills/component-api-validator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "component-api-validator", 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 murphytrueman/design-system-ops component-api-validatorInstalls 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 murphytrueman/design-system-ops --skill component-api-validator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/murphytrueman/design-system-ops.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/component-api-validator .github/skills/component-api-validator && 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 "component-api-validator" agent skill from https://github.com/murphytrueman/design-system-ops/tree/main/skills/component-api-validator into .github/skills/component-api-validator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "component-api-validator", 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 murphytrueman/design-system-ops --skill component-api-validator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install murphytrueman/design-system-ops component-api-validator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/murphytrueman/design-system-ops.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/component-api-validator .opencode/skills/component-api-validator && 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 "component-api-validator" agent skill from https://github.com/murphytrueman/design-system-ops/tree/main/skills/component-api-validator into .opencode/skills/component-api-validator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "component-api-validator", 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.
component-api-validatorAudit prop APIs across a component library: naming consistency, boolean/default patterns, type coverage, exported types, breaking changes between versions.
Component API Validator is an agent skill from murphytrueman/design-system-ops. Audit prop APIs across a component library: naming consistency, boolean/default patterns, type coverage, exported types, breaking changes between versions. Trigger: component API audit, are our props consistent, prop naming review. For semver calls use version-bump-advisor.
Its SKILL.md is about 4.3k 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, covering Design systems. The repository describes itself as: Claude Code skills for the work that keeps a design system alive. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f167898. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteGrepGlobBash(cat:*)Bash(find:*)Bash(head:*)Bash(ls:*)Bash(sort:*)Bash(tail:*)…and 5 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx and npm, 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.
Component API Validator loads about 4.3k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 1,843 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 murphytrueman/design-system-ops at commit f167898, republished under its MIT licence (© murphytrueman). 1,843 words, ~4,319 tokens.
.claude/skills/component-api-validator/SKILL.md (or your agent's skills folder).A skill for auditing the public API surface of a component library — prop naming consistency, type coverage, default value patterns, breaking change detection, and alignment with the design-to-code contract. Treats the component API as infrastructure: the public contract that consuming teams depend on.
Confirm that every path in this skill's frontmatter references: exists relative to this SKILL.md. If any is missing, stop: the install is incomplete, usually because a flattening installer (for example npx skills install) dropped the repo-root knowledge-notes/ directory. Tell the user to reinstall by a method in 1-INSTALL.md and run verify-install.sh from the install root. Proceed without the references only if the user explicitly says to, and then say in the output that it was produced without the pack's reference material.
A component library's most important output is not its visual rendering — it is its API. The props, types, defaults, and composition patterns form a contract with every consuming team. When that contract is inconsistent (some components use variant, others use type, others use appearance for the same concept), unclear (prop types are any or undocumented), or unstable (breaking changes ship without versioning), consuming teams lose trust. And when trust erodes, teams start wrapping system components in local abstractions, which is the beginning of drift.
API validation is not about enforcing a single naming convention. It is about detecting where the library's public surface is working against the teams consuming it. A library where every component follows the same patterns for sizing, variants, event handlers, and composition is a library that teams can learn once and apply everywhere. A library where each component invents its own conventions is a library that requires re-learning for every component.
This skill evaluates the API surface as a whole — not one component at a time, but the patterns that emerge across the library. Individual component reviews are useful but miss the cross-library inconsistencies that frustrate consumers most.
Do NOT use this skill for: deciding the semver bump for a release (use version-bump-advisor) or checking one component against its design spec (use design-to-code-check).
If .ds-ops-config.yml exists, follow the configuration-and-recurring knowledge note (../../knowledge-notes/configuration-and-recurring.md) for loading, integration fallbacks and recurring runs. This skill reads:
system.framework — determines the prop extraction methodsystem.styling — styling approachseverity.api_* — overrides for API finding severityintegrations.github — component source (see below)integrations.storybook — prop metadata (see below)GitHub (integrations.github.enabled: true):
Storybook (integrations.storybook.enabled: true):
Figma (integrations.figma.enabled: true):
Read before asking. package.json gives the package name, version, exports, main and types; the entry point gives the public component list; tsconfig.json or the presence of .d.ts, PropTypes or JSDoc gives the typing approach; the framework shows in the dependencies. Confirm what you found in one line and ask only for:
npm pack <pkg>@<prev> and read its .d.ts files, or an api-extractor report); a git tag or release branch works if nothing was publishedIf no component source is in reach (no path, no checkout, no package to unpack), stop and ask for one; an API audit of described components produces guesses.
For each component in the source path:
react-docgen-typescript (npx react-docgen-typescript or its API) gives name, type, required, default and description per prop from the interfaces. Storybook argTypes (from integrations.storybook) are the same data if the docs addon is set up.vue-component-meta for <script setup> and defineProps; fall back to reading defineProps by hand.npx custom-elements-manifest analyze, or an existing custom-elements.json) lists attributes, properties, events, slots and CSS custom properties; it is the standard, so read it rather than re-deriving it.let declarations, events, slots (read by hand; note that in the Scope block).any/unknown/untyped)children/slots?This is the core of the skill. Evaluate patterns across the entire library, not within individual components.
Look for the same concept implemented with different names across components:
| Concept | Consistent pattern | Inconsistent examples |
|---|---|---|
| Visual variant | All use variant | Some use variant, others type, others appearance, others kind |
| Size | All use size | Some use size, others scale, others dimension |
| Disabled state | All use disabled | Some use disabled, others isDisabled |
| Loading state | All use loading | Some use loading, others isLoading, others pending |
| Event handlers | All use onAction | Some use onChange, others handleChange, others onValueChange |
| Colour/intent | All use intent | Some use intent, others color, others severity, others status |
For each inconsistency, report:
Boolean props are a common source of API inconsistency:
isDisabled or disabled? Pick one, flag deviations.false, so the common case needs no prop. hideLabel is the right shape when labels usually show; showLabel defaulting to true forces showLabel={false} at every call site that hides one. Flag a boolean whose default is true, and flag a library that uses both forms for the same concept (hideLabel on one component, showLabel on another). Don't flag a negative name on its own.compact) but should be an enum (density: 'compact' | 'default' | 'comfortable'). Flag booleans that limit future extensibility.size default to 'medium' in some components and 'md' in others?variant default to the most common use case? Flag surprising defaults.'sm' | 'md' | 'lg') or vague (string)?Select<T>), are they consistently applied?onChange vs onValueChange vs handleChange. Identify the library's convention and flag deviations.value/onChange vs defaultValue)?If a previous version is available, compare the published type declarations of both versions, not the source. Source can differ from what shipped, and declarations show the whole public surface. Diff the package exports (components, hooks, types, utilities) as well as props — a removed export breaks consumers just as surely as a removed prop.
string → 'a' | 'b')Classify each:
Only when a Figma library or exported spec is in reach. Otherwise write "skipped: no design source" under Scope and move on; don't infer design variants from prop names. With a source, cross-reference the API surface against the design-to-code contract:
aria-* attributes passed through to the underlying element? Do icon-only variants require an accessible label (e.g. a required aria-label or label prop in the type for the icon-only case)? A consumer-settable role prop is not required, and usually a smell# Component API Validation Report
[Headline sentence: the most important API problem and how widespread it is]
## Executive Summary
[Library name, component count, framework, TypeScript coverage, headline findings]
## API Inventory
| Component | Props | Typed | Required | Optional | Defaults | Description coverage |
|-----------|-------|-------|----------|----------|----------|---------------------|
[One row per component]
## Cross-Library Consistency
### Prop Naming
[Table of concept → dominant convention → deviations → ✅ PASS / ⚠️ WARN / ❌ FAIL per pattern]
[Counts, e.g. "14 of 19 components use `variant`; 4 use `type`; 1 uses `appearance`" (illustrative)]
### Boolean Patterns
[Findings: negative booleans, boolean-should-be-enum, prefix inconsistency]
### Default Values
[Findings: missing defaults, inconsistent defaults]
### Type Coverage
[Overall: X of Y props explicitly typed]
[Breakdown: full TypeScript / JSDoc / PropTypes / untyped per component]
### Event Handlers
[Convention identified, deviations listed]
### Composition Patterns
[Ref forwarding coverage, children vs render props consistency, slot naming]
## Breaking Change Analysis
[If previous version available]
| Change | Component | Prop | Type | Impact |
|--------|-----------|------|------|--------|
[One row per change]
## Design-to-Code Contract
[Findings: design variants without props, props without design equivalents, missing state coverage]
## Findings Summary
| ID | Severity | Component | Prop | Evidence | Finding | Remediation |
|---|---|---|---|---|---|---|
| AV-01 | 🟠 High | Badge | `type` | `src/components/Badge/Badge.tsx:12` | 14 of 19 components use `variant`; Badge uses `type` for the same concept | Rename to `variant`, keep `type` as a deprecated alias for one minor |
Severity: 🔴 Critical for a breaking change that shipped without a major, or `any`/untyped on a public prop of an interactive component; 🟠 High for one concept named two ways across the library, a missing exported prop type, or a required prop with no description; 🟡 Medium for inconsistent defaults, missing descriptions, or a boolean that should be an enum; ⚪ Low for style (prefix conventions, slot naming). Evidence is the file and line of the prop's declaration, or the `.d.ts` line when comparing versions.
## Prioritised Recommendations
[Grouped: 🔴 Critical (breaking/type safety) → 🟠 High (consistency) → 🟡 Medium (documentation) → ⚪ Low (style)]
**Scope**
- **Inspected:** [source paths, entry points, declaration files, previous version compared against]
- **Not inspected:** [components not exported from the entry point, runtime behaviour, packages out of reach]
- **How "none found" was checked:** [e.g. "no breaking changes" — both versions' `.d.ts` exports were diffed and the diff did pick up the props added in this release]
- **Assumptions:** [e.g. the entry point defines the public API]
If any of these inconsistencies are deliberate (a legacy name kept for compatibility, a convention you've chosen on purpose), tell me and I'll treat them as accepted in future runs.Before delivering the report, verify:
variant, 4 use type, 1 uses appearance"type to variant in AlertDialog, Badge, Toast"For libraries with fewer than 10 components: run the same analysis but present as a single consolidated view. Every finding gets individual attention. Consistency is easier to achieve in a small library — the bar should be 100% consistency, not "mostly consistent."
© murphytrueman, 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 skills/component-api-validator of murphytrueman/design-system-ops.
Open the folder on GitHubat commit f167898
Component API Validator 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 |
|---|---|---|---|---|---|---|
| Component API Validator this skillmurphytrueman/design-system-ops | 201 | — | ~4.3k | Automated safety check: Pass | MIT | |
| 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 | |
| Figma use_figma Plugin API Ruleswarpdotdev/warp | 65k | 4 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| UI StylingOhh-889/skyroc | 795 | 13 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Shadcnsupabase/evals | 143 | 42 repos | ~4.5k | Automated safety check: Pass | Apache-2.0 |
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.
warpdotdev/warp
Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.
Ohh-889/skyroc
Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.
supabase/evals
Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI.
Ohh-889/skyroc
Token architecture, component specifications, and slide generation.
murphytrueman/design-system-ops
Write the AGENTS.md that tells coding agents how to use this design system: where things live, sourced rules, how to check work, what not to do; Claude, Cursor or Copilot pointers on request.
murphytrueman/design-system-ops
Write a six-section prose description (purpose, props, anti-patterns, composition, accessibility, examples) for a Figma component's description field so LLMs read it via MCP.
murphytrueman/design-system-ops
Write release notes, a migration guide and a team announcement for a design system change that is already decided, scaled to its impact.
murphytrueman/design-system-ops
Generate machine-readable index files in .ai/index/ (component inventory, uses/usedBy graph, stats) for AI agents.
murphytrueman/design-system-ops
Generate tested jscodeshift/postcss codemods for design system migrations: token renames, prop renames or removals, import paths, component swaps.
murphytrueman/design-system-ops
Write "choosing between" pages (docs/choosing/) that route an intent to the right component via narrowing questions; YAML trees on request.
Categories
Audit prop APIs across a component library: naming consistency, boolean/default patterns, type coverage, exported types, breaking changes between versions. Component API Validator is an agent skill from murphytrueman/design-system-ops. Audit prop APIs across a component library: naming consistency, boolean/default patterns, type coverage, exported types, breaking changes between versions.
Component API Validator fits situations like: tasks that involve Design systems.
Run `npx skills add murphytrueman/design-system-ops --skill component-api-validator -a claude-code`. Or copy the skill folder (skills/component-api-validator in murphytrueman/design-system-ops) into .claude/skills/component-api-validator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add murphytrueman/design-system-ops --skill component-api-validator -a codex`. Or copy the skill folder (skills/component-api-validator in murphytrueman/design-system-ops) into .agents/skills/component-api-validator 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 murphytrueman/design-system-ops --skill component-api-validator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/component-api-validator, .gemini/skills/component-api-validator, .github/skills/component-api-validator and .opencode/skills/component-api-validator in your project.
Going by SKILL.md and its folder, Component API Validator needs the command-line tools its instructions call (npx and npm). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Grep, Glob, Bash(cat:*), Bash(find:*), Bash(head:*), Bash(ls:*), Bash(sort:*), Bash(tail:*), Bash(wc:*), Bash(npm pack:*), Bash(npx react-docgen-typescript:*), Bash(npx custom-elements-manifest:*), Bash(npx vue-component-meta:*).
SKILL.md contains no URLs. Its commands use npx and npm, 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. Review the folder before installing.
Component API Validator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k 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 Component API Validator: Impeccable (bestofjs/bestofjs, 3.1k stars), Figma Design System Builder (warpdotdev/warp, 65k stars), Figma use_figma Plugin API Rules (warpdotdev/warp, 65k stars) and UI Styling (Ohh-889/skyroc, 795 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
murphytrueman (a GitHub user) maintains it in murphytrueman/design-system-ops, which has 201 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on September 24, 2026.
Source: murphytrueman/design-system-ops on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.