building-compound-components

Wire React UI primitives with contextual state using Radix-style patterns.

7|1|Updated Feb 5, 2026
One-click install
npx skills add https://github.com/wafflebytes/DealDesk-Tambo --skill building-compound-components-wafflebytes
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: building-compound-components
Source: https://github.com/wafflebytes/DealDesk-Tambo/tree/main/.agents/skills/building-compound-components
Command: npx skills add https://github.com/wafflebytes/DealDesk-Tambo --skill building-compound-components-wafflebytes

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Solves the problem of wiring unstyled, composable UI primitives with contextual state across React components.

Core Features & Use Cases

  • Provides a consistent Context pattern to share state across multiple compound parts (Root, Trigger, Content, etc).
  • Supports Radix-style architecture with asChild, Slot-based rendering, data attributes for styling, and strong TypeScript typings.
  • Enables design-system teams to build scalable component libraries with clear separation of concerns between behavior and presentation.

Quick Start

Create unstyled, composable React components following the Radix UI / Base UI pattern.

Frequently Asked Questions about building-compound-components

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I share contextual state across React components using the compound components pattern?▼

You share contextual state across React components by using a Context pattern to wire unstyled UI primitives together, enabling multiple compound parts like Root and Trigger to access shared state without prop drilling.

What is the best way to build a headless UI component library in React?▼

The best way to build a headless UI component library is by enforcing separation of concerns between behavior and presentation, using Radix-style architecture with Slot-based rendering and data attributes for styling.

How do I implement asChild composition and ref forwarding in unstyled React primitives?▼

You implement asChild composition and ref forwarding by adopting a Slot-based rendering approach, which allows unstyled React primitives to pass props and refs through to child elements dynamically.

Can I use compound components to enforce separation of concerns between business logic and presentation?▼

Yes, compound components enforce separation of concerns by wiring contextual state and behavior logic internally while leaving presentation entirely to the consumer through unstyled primitives and data attributes.

Does building Radix-style compound components require specific TypeScript typings?▼

Building Radix-style compound components requires robust TypeScript typings to ensure type-safe context sharing, ref forwarding, and render-prop APIs across the unstyled UI primitives.

When should I not use the compound components pattern for my React UI library?▼

You should not use the compound components pattern for simple UI elements that do not require shared contextual state, as the Context wiring and Slot-based rendering architecture add unnecessary complexity.