component-composition

Component Composition

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "component-composition" with this command: npx skills add fusengine/agents/fusengine-agents-component-composition

Component Composition

Agent Workflow (MANDATORY)

Before implementation, use TeamCreate to spawn 3 agents:

  • fuse-ai-pilot:explore-codebase - Check existing composition patterns

  • fuse-ai-pilot:research-expert - React 19 composition patterns

After: Run fuse-ai-pilot:sniper for validation.

Overview

Pattern Use Case Complexity

Children Simple containers Low

Slots Named regions Medium

Compound Related sub-components Medium

Render Props Custom rendering High

Quick Reference

Children Pattern

function Card({ children }: { children: React.ReactNode }) { return <div className="bg-surface rounded-2xl p-6">{children}</div>; }

Slots Pattern

function Card({ header, footer, children }: CardProps) { return ( <div className="bg-surface rounded-2xl"> {header && <div className="px-6 py-4 border-b">{header}</div>} <div className="p-6">{children}</div> {footer && <div className="px-6 py-4 border-t">{footer}</div>} </div> ); }

Compound Components

function Card({ children, variant }) { return ( <CardContext.Provider value={{ variant }}> <div className="bg-surface rounded-2xl">{children}</div> </CardContext.Provider> ); }

Card.Header = ({ children }) => <div className="px-6 py-4">{children}</div>; Card.Body = ({ children }) => <div className="p-6">{children}</div>; Card.Footer = ({ children }) => <div className="px-6 py-4">{children}</div>;

// Usage <Card> <Card.Header>Title</Card.Header> <Card.Body>Content</Card.Body> </Card>

Polymorphic Components

function Button<T extends React.ElementType = "button">({ as, children, ...props }: ButtonProps<T>) { const Component = as || "button"; return <Component className="btn" {...props}>{children}</Component>; }

// Usage <Button as="a" href="/link">Link</Button>

Validation Checklist

[ ] Appropriate pattern for complexity [ ] TypeScript props properly typed [ ] displayName set on forwardRef [ ] Max 2-3 composition levels

Best Practices

DO

  • Use children for simple nesting

  • Use slots for named regions (max 3-4)

  • Forward refs for form elements

  • Set displayName

DON'T

  • Over-engineer simple components

  • Create deep nesting (max 2 levels)

  • Forget TypeScript types

  • Skip ref forwarding

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

laravel-livewire

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

laravel-blade

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

laravel-architecture

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

nextjs-i18n

No summary provided by upstream source.

Repository SourceNeeds Review