Use when: building or evaluating a props-based, "all-in-one" Primer React component for an established, stable pattern. Covers when config components are appropriate, opinionated defaults, the props-driven customization surface, escape hatches to presentational components, and composing rather than duplicating behavior.
67
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Config components are "all-in-one" APIs that let consumers describe intent through props or data rather than composing markup directly.
<List
items={[{label: 'Item one'}, {label: 'Item two'}, {label: 'Item three'}]}
onSelect={item => {
/* ... */
}}
/>Don't reach for a config API for emerging or unstable patterns — see modular-ds-presentational-components for those instead. Config components should typically be built by composing presentational components and behavior hooks, not by reimplementing structure or behavior from scratch.
data-component as a customizable prop. Primer owns data-component values as component identifiers, at every API type.Extension happens only through supported props, slots, render props, or configuration — never through arbitrary internal composition. That list mirrors contributor-docs/style.md; it describes what a config API may legitimately expose, not a menu to pick from freely. Slots in particular are the useSlots/__SLOT__ mechanism documented in the slots skill and remain off by default (see modular-ds-presentational-components). When consumers need to change structure, semantics, or behavior beyond what the config API exposes, the clear escape boundary is to move to the presentational components and behavior hooks underneath (see modular-ds-presentational-components).
Don't invent visual styling without a concrete design reference, image, or specification. If styling isn't specified, keep styles minimal and structural so the component API and accessibility model can be evaluated independently of visual polish.
Prefer HTMLElement for default root refs and polymorphic component typing. Use narrower element types only when the API or behavior genuinely requires a specific element.
When shipping or changing a config component's public API, include: source exports, tests, stories, docs metadata, and a changeset when published package behavior changes. New components and new public exports need a minor changeset for the affected package, and any matching export snapshots or tests must be updated in the same change.
2909f19
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.