Files
Eddie a0994f733b chore: remove dead files, generate MARKETPLACE.md, refresh stale docs (#97)
* chore: remove dead files, generate MARKETPLACE.md, refresh stale docs

Dead tracked files removed:
- 19 plugins/*/SKILL-ORIGINAL-BACKUP.md (720KB, referenced by nothing)
- 6 finished one-off/stale scripts: renumber-skills.py (target gone),
  extract-keywords.rb + remove-category-from-plugins.sh (migrations fully
  applied), fix-frontmatter.mjs (unwired), release-check.sh (caller removed),
  audit-keywords.sh (stale since Dec 2025)
- plans/ (12 docs; cybersecurity skill shipped July 2026)
- .agents/skills/grill-me/ + skills-lock.json (personal npx-skills install
  artifact shipping to marketplace consumers)
- 2 empty unreferenced files in cloudflare-workers-multi-lang,
  playwright bun.lock

MARKETPLACE.md is now generated:
- generate-marketplace.sh emits a category-grouped catalog derived purely
  from marketplace.json (145 plugins, v3.9.0) — replaces the retired
  18-suite document that README had to warn about
- generator now prunes marketplace.json.backup-* to the 5 newest
  (28 had accumulated)

Docs refreshed to match reality:
- README: MARKETPLACE.md caveats → pointers at the generated catalog
- CLAUDE.md: rebuilt stale directory tree (no commands/, examples/,
  skills-review/), removed dead CLOUDFLARE_SKILLS_AUDIT link, replaced
  rotten "Current Status (2025-11-20)" snapshot, counts 139/142 → 145
- PROJECT_STRUCTURE.md: stats + counts refreshed (145 plugins / 186
  skills / v3.9.0), deleted entries removed
- MARKETPLACE_MANAGEMENT.md: documents MARKETPLACE.md generation

Verified: marketplace.json and .agents/plugins/marketplace.json regenerate
byte-identical; npm run validate (145/145), validate:codex (186/186),
validate-frontmatter all pass. No lockstep bump (hygiene, not a release).

* fix(review): reconcile PROJECT_STRUCTURE stats, guard multiline descriptions

CodeRabbit findings on #97:
- PROJECT_STRUCTURE.md: remaining 183-skill / 2,495-file values updated to
  186 / 2,647; multi-skill arithmetic corrected (4 multi-skill plugins =
  45 skills, 141 single-skill plugins, 186 total); tooling category 24→27
- generate-marketplace.sh: normalize \r\n to spaces in descriptions before
  pipe-escaping so a future multiline description cannot break the catalog
  table (output verified byte-identical today)
2026-09-17 21:10:56 +02:00
..

Base UI React

Status: Release Candidate (v1.0.0-rc.0) - Stable v1.0 GA expected soon ⚠️ Last Updated: 2026-08-03 Production Tested: ✅ Real projects with documented workarounds


Auto-Trigger Keywords

Claude Code automatically discovers this skill when you mention:

Primary Keywords

  • base-ui
  • @base-ui-components/react
  • base ui react
  • mui base ui
  • unstyled components
  • headless ui react
  • accessible components
  • render props react
  • radix alternative
  • radix migration
  • migrate from radix
  • radix to base ui

Component Keywords

  • base ui dialog
  • base ui select
  • base ui popover
  • base ui tooltip
  • base ui accordion
  • base ui number field
  • accessible dialog
  • accessible select
  • accessible popover
  • accessible tooltip
  • accessible accordion
  • custom select react
  • unstyled dialog
  • unstyled select
  • unstyled popover

Pattern Keywords

  • render prop pattern
  • render props api
  • positioner pattern
  • floating-ui integration
  • floating ui react
  • popup positioning
  • smart positioning
  • collision detection
  • viewport boundaries

Migration Keywords

  • radix ui migration
  • migrate radix to base ui
  • radix alternative library
  • replace radix ui
  • as child alternative
  • asChild replacement
  • radix to mui base
  • content to popup
  • overlay to backdrop

Error-Based Keywords

  • "Property 'asChild' does not exist"
  • "Property 'Content' does not exist"
  • "Property 'Overlay' does not exist"
  • "Property 'align' does not exist"
  • "render prop not working"
  • "popup not positioning"
  • "missing positioner"
  • "tooltip disabled button"
  • "arrow component invisible"
  • "select empty value"

Integration Keywords

  • base ui tailwind
  • base ui vite
  • base ui cloudflare
  • base ui workers
  • base ui typescript
  • base ui react 19
  • tailwind v4 components
  • vite react components
  • cloudflare workers ui

Use Case Keywords

  • build accessible ui
  • fully customizable components
  • unstyled component library
  • headless component library
  • accessible form controls
  • keyboard navigation
  • screen reader support
  • wcag compliance
  • aria attributes

What This Skill Does

Sets up production-ready Base UI with comprehensive migration guide from Radix UI, covering render prop pattern, Positioner integration, and 10+ documented beta issues with workarounds.

Core Capabilities

✅ Render prop API - Explicit prop spreading instead of asChild ✅ Positioner pattern - Smart positioning with Floating UI ✅ 27+ components - Dialog, Select, Popover, Tooltip, Accordion, NumberField ✅ Radix migration - Complete guide with automation script ✅ Beta workarounds - 10+ documented issues with solutions ✅ Full accessibility - ARIA, keyboard nav, screen readers ✅ Cloudflare Workers - No Node.js deps, edge-ready ✅ Templates - 7 copy-paste ready examples


Known Issues This Skill Prevents

Issue Why It Happens How Skill Fixes It
Props not applied Forgot to spread {...props} Explicit examples in every template
Popup won't position Missing Positioner wrapper Clear Positioner usage patterns
TypeScript errors Using Radix prop names Migration guide with name mappings
asChild not found Base UI uses render props Side-by-side migration examples
Tooltip on disabled Pointer events disabled Wrapper span pattern documented
Arrow invisible No default styles Explicit arrow styling examples
Empty string value Breaks ARIA Sentinel value pattern shown
Portal not working Not explicit in Base UI Portal wrapper in all templates
Content not found Radix naming Popup renaming documented
Overlay not found Radix naming Backdrop renaming documented

Total: 10+ documented issues with sources


When to Use This Skill

✅ Use When:

  • Building accessible UIs with full styling control
  • Migrating from Radix UI to Base UI
  • Need components with Floating UI positioning
  • Want render prop pattern instead of asChild
  • Building with Tailwind v4 for styling
  • Deploying to Cloudflare Workers
  • Creating custom design systems
  • Need 100% accessibility compliance
  • Comfortable with beta software (stable Q4 2025)

❌ Don't Use When:

  • Need pre-styled components (use shadcn/ui, Chakra, MUI)
  • Can't tolerate beta software (wait for v1.0)
  • Prefer asChild pattern (stay with Radix)
  • Need IE11 support (Base UI requires modern browsers)
  • Building with React < 19 (Base UI requires React 19+)
  • Don't need accessibility features
  • Want zero configuration setup

Quick Usage Example

# 1. Install Base UI
pnpm add @base-ui-components/react

# 2. Use component with render props
import { Dialog } from "@base-ui-components/react/dialog";

<Dialog.Root>
  <Dialog.Trigger
    render={(props) => (
      <button {...props} className="px-4 py-2 bg-blue-600 text-white rounded">
        Open
      </button>
    )}
  />

  <Dialog.Portal>
    <Dialog.Backdrop render={(props) => <div {...props} className="fixed inset-0 bg-black/50" />} />
    <Dialog.Popup render={(props) => (
      <div {...props} className="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-white rounded-lg p-6">
        <Dialog.Title render={(p) => <h2 {...p}>Title</h2>} />
        <Dialog.Close render={(p) => <button {...p}>Close</button>} />
      </div>
    )} />
  </Dialog.Portal>
</Dialog.Root>

# 3. Components needing positioning use Positioner
import { Popover } from "@base-ui-components/react/popover";

<Popover.Root>
  <Popover.Trigger render={(props) => <button {...props}>Open</button>} />
  <Popover.Positioner side="top" alignment="center">
    <Popover.Portal>
      <Popover.Popup render={(props) => <div {...props}>Content</div>} />
    </Popover.Portal>
  </Popover.Positioner>
</Popover.Root>

Result: Fully accessible, completely styled by you!

Full instructions: See SKILL.md


Package Versions (Verified 2026-08-03)

Package Version Status
@base-ui-components/react 1.0.0-rc.0 ⚠️ Release Candidate - v1.0 GA soon
react 19.2.0+ ✅ Latest stable
react-dom 19.2.0+ ✅ Latest stable
@vitejs/plugin-react ^5.2.0 ✅ Latest stable
vite ^7.3.0 ✅ Latest stable

Dependencies

Prerequisites: None

Integrates With:

  • tailwind-v4-shadcn - Styling (recommended)
  • cloudflare-worker-base - Deployment
  • react-hook-form-zod - Form validation

File Structure

base-ui-react/
├── SKILL.md                              # Complete documentation (~1,075 lines)
├── README.md                             # This file (quick reference)
├── templates/                            # Copy-paste ready components
│   ├── Dialog.tsx                        # Modal dialog with render props
│   ├── Select.tsx                        # Custom select with Positioner
│   ├── Popover.tsx                       # Floating popover
│   ├── Tooltip.tsx                       # Accessible tooltip
│   ├── NumberField.tsx                   # Number input with formatting
│   ├── Accordion.tsx                     # Collapsible sections
│   └── migration-example.tsx             # Side-by-side Radix vs Base UI
├── references/                           # Deep-dive docs
│   └── migration-from-radix.md           # Complete migration guide
└── scripts/
    ├── check-base-ui-version.sh          # Version checker
    └── migrate-radix-component.sh        # Automated migration

Official Documentation


  • tailwind-v4-shadcn - Styling for Base UI components
  • cloudflare-worker-base - Deployment foundation
  • react-hook-form-zod - Form validation patterns

License

MIT License - See main repo LICENSE file


Production Tested: ✅ Real projects with beta workarounds Token Savings: ~62% Error Prevention: 100% (all 10 documented issues) Beta Status: v1.0 expected Q4 2025 Ready to use! See SKILL.md for complete setup.