mui-base — Claude Code skill: MUI Base UI component rules
A skill with 48 rules for building headless React component libraries the MUI Base UI way. Useful when logic and styling stay apart.
npx skills add pproenca/dot-skills --skill mui-base -a claude-codeWhat mui-base does
The skill splits into five categories by priority: component patterns (CRITICAL), naming, organization, error handling and style. Inside are 48 rules tagged comp-, name-, org-, err- and style-. Each rule lives in its own file under references/ with an explanation and code samples, and the whole set is compiled into AGENTS.md.
The rules get specific: forwardRef with a named function, useRenderElement for DOM rendering, useControlled to support controlled and uncontrolled modes in one component, memoized state objects and context provider values. There is a section on compound components with render props and on ARIA accessibility patterns. Naming is fixed too: components as ParentPart, props interfaces as ComponentProps, constants in SCREAMING_SNAKE_CASE.
The rules were pulled from the MUI Base UI codebase, so they describe how that library is built rather than general advice. If your components follow a different architecture, expect to drop some of them. Install works through npx skills add in Claude, Codex, Cursor, Gemini CLI and OpenCode; GitHub Copilot uses gh skill install.
What it helps with
- build an unstyled component with no bundled CSS
- create a compound component with render props
- support controlled and uncontrolled modes in one component
- lay out a component library into directories
- add ARIA markup to a UI primitive
Example prompts for the agent
- help me design a headless Select component following mui-base rules
- check my compound component against the comp- rules in mui-base
- how does mui-base name props interfaces and context?
How to install mui-base
1Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill mui-base -a claude-code2Manually: put the files in place
~/.claude/skills/mui-base/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/mui-base/
1Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill mui-base -a codex2Manually: put the files in place
.agents/skills/mui-base/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill mui-base -a cursor2Manually: put the files in place
.cursor/skills/mui-base/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install pproenca/dot-skills mui-base2Manually: put the files in place
.github/skills/mui-base/SKILL.md1Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill mui-base -a gemini-cli2Platform CLI
gemini skills install https://github.com/pproenca/dot-skills --path skills/.curated/mui-baseManually: put the files in place
.devin/skills/mui-base/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add pproenca/dot-skills --skill mui-base -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about mui-base
How do I install mui-base in Claude?
Run npx skills add pproenca/dot-skills --skill mui-base -a claude-code. The skill file then lands at ~/.claude/skills/mui-base/SKILL.md.
What does mui-base do?
It hands the agent 48 rules for building headless React components in MUI Base UI style: component patterns, naming, file organization, error handling and code style.
Is the skill only for MUI Base UI?
The rules come from the MUI Base UI codebase, so they target its architecture. In a library built differently, some rules will not apply.
Source text
SKILL.md · MIT
--- name: mui-base description: MUI Base UI style guidelines for building headless React component libraries (formerly headless-ui-style). This skill should be used when creating unstyled UI components, compound components with render props, accessibility-first patterns, or component libraries that separate logic from styling. Extracted from the MUI Base UI codebase (github.com/mui/base-ui). --- # MUI Headless UI Best Practices Comprehensive style guide for building headless React component libraries following MUI Base UI patterns. Contains 48 rules across 5 categories, prioritized by impact. ## When to Apply Reference these guidelines when: - Building headless/unstyled component libraries - Creating compound components with context-based composition - Implementing accessible UI primitives with ARIA patterns - Using render props and className callbacks for styling flexibility - Writing components that support both controlled and uncontrolled modes ## Rule Categories by Priority | Priority | Category | Impact | Prefix | |----------|----------|--------|--------| | 1 | Component Patterns | CRITICAL | `comp-` | | 2 | Naming Conventions | HIGH | `name-` | | 3 | Organization | HIGH | `org-` | | 4 | Error Handling | HIGH | `err-` | | 5 | Style | MEDIUM | `style-` | ## Quick Reference ### 1. Component Patterns (CRITICAL) - `comp-forward-ref-named` - Use forwardRef with Named Function - `comp-props-parameter-naming` - Name Props Parameter componentProps - `comp-use-render-element` - Use useRenderElement for DOM Rendering - `comp-context-undefined-default` - Create Context with Undefined Default - `comp-context-error-message` - Context Error Messages with Hierarchy - `comp-use-controlled` - Use useControlled Hook for Dual Modes - `comp-state-memoization` - Memoize State Objects - `comp-context-value-memo` - Memoize Context Provider Values - `comp-plain-function-root` - Plain Function for Non-DOM Roots - `comp-hook-namespace-exports` - Hook Namespace Exports - `comp-props-destructure-order` - Props Destructuring Order - `comp-use-client-directive` - Add use client Directive ### 2. Naming Conventions (HIGH) - `name-component-naming` - Component Naming as ParentPart - `name-file-matches-export` - File Name Matches Primary Export - `name-directory-kebab-case` - Directory Naming kebab-case - `name-part-directory-lowercase` - Part Directory Naming lowercase - `name-context-suffix` - Context Naming with Suffix - `name-context-hook` - Context Hook as useComponentContext - `name-props-interface` - Props Interface as ComponentProps - `name-state-interface` - State Interface as ComponentState - `name-namespace-type-exports` - Namespace Type Exports - `name-event-type` - Event Type Naming Convention - `name-constants` - Constant Naming SCREAMING_SNAKE_CASE - `name-data-attributes` - Data Attribute Naming lowercase - `name-hooks` - Hook Naming with use Prefix - `name-refs` - Ref Variable Naming with Suffix - `name-handlers` - Handler Naming Convention ### 3. Organization (HIGH) - `org-component-directory` - Component Directory Structure - `org-dual-barrel-exports` - Dual Barrel Export Pattern - `org-test-colocation` - Test File Colocation - `org-context-placement` - Context File Placement - `org-data-attributes-file` - Data Attributes Documentation File - `org-state-attributes-mapping` - State Attributes Mapping File - `org-css-vars-file` - CSS Variables Documentation File - `org-package-exports` - Package-Level Wildcard Exports ### 4. Error Handling (HIGH) - `err-dev-only-warnings` - Development-Only Warnings - `err-deduplicated-warnings` - Deduplicated Warning Messages - `err-message-prefix` - Message Prefix Standard - `err-context-error-guidance` - Context Error Guidance - `err-prop-validation-timing` - Prop Validation Timing - `err-cancelable-events` - Cancelable Event Pattern - `err-event-reason-constants` - Event Reason Constants - `err-typed-event-reasons` - Type-Safe Event Reasons ### 5. Style (MEDIUM) - `style-react-import` - React Import as Namespace - `style-internal-imports` - Internal Import Paths - `style-explicit-undefined` - Explicit Undefined in Prop Types - `style-default-values` - Default Values in Destructuring - `style-jsdoc-documentation` - JSDoc Documentation ## How to Use Read individual reference files for detailed explanations and code examples: - [Section definitions](references/_sections.md) - Category structure and impact levels - [Rule template](assets/templates/_template.md) - Template for adding new rules - Example: [comp-forward-ref-named](references/comp-forward-ref-named.md) - Example: [org-component-directory](references/org-component-directory.md) ## Source Extracted from [MUI Base UI](https://github.com/mui/base-ui) codebase on 2026-01-17. ## Full Compiled Document For the complete guide with all rules expanded: `AGENTS.md`
© pproenca · MIT · pproenca/dot-skills