name: react-composition-structure
description: React and React Native file-system architecture patterns that scale. Use when restructuring component folders, route-bound domain modules (a calendar, cart, or checkout surface placed under components/, screens/, or any repo tree — not a literal features/ directory), index.ts export boundaries, naming conventions, colocated *.data.ts files, or translating composition patterns into stable repo structure. Triggers on compound component folders, route-bound module folders, public API cleanup, and bad-vs-good file organization examples.
metadata:
author: oliverpan
version: 1.0.0
React Composition Structure
File-system and module-boundary patterns for React and React Native codebases.
This skill complements vercel-composition-patterns: Vercel explains the
component architecture; this skill explains how to express those patterns in a
codebase's folders, files, exports, and naming.
When to Apply
Reference these guidelines when:
- Restructuring reusable component folders
- Refactoring pages or screens into route-bound domain modules
- Cleaning up over-exported
index.tsfiles - Normalizing naming conventions across a module
- Deciding where context, data orchestration, and docs should live
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Component Folders | HIGH | architecture- |
| 2 | Route-Bound Module Folders | HIGH | architecture- |
| 3 | Public API Boundaries | MEDIUM | boundaries- |
| 4 | Naming Stems and Suffixes | MEDIUM | naming- |
| 5 | Organization Heuristics | MEDIUM | organization- |
Quick Reference
1. Component Folders (HIGH)
architecture-compound-component-folders- Organize shared multi-part components around one root namespace, clear file ownership, and provider-led state sharing
2. Route-Bound Module Folders (HIGH)
architecture-route-bound-module-folders- Organize pages and screens into foldered domain modules (wherever the repo groups route-bound UI) with thin route wrappers and colocated*.data.ts
3. Public API Boundaries (MEDIUM)
boundaries-public-api- Export one module root by default and keep leaves internal unless they are intentionally public
4. Naming Stems and Suffixes (MEDIUM)
naming-stems-and-suffixes- Keep one module stem, use explicit suffixes, and preserve strong repo conventions instead of mixing naming systems
5. Organization Heuristics (MEDIUM)
organization-nest-when-prefix-repeats- Promote repeated filename prefixes into a nested folder with anindex.tspublic boundary once 3+ files share the stemorganization-colocate-internals- Keep helpers/data/types with their consumer, and tests in module-local__test__/folders, until a second consumer proves the need to lift
How to Use
Read the single rule file that matches the job:
rules/architecture-compound-component-folders.md
rules/boundaries-public-api.md
Each rule file contains:
- A single main concern
- Why it matters
- Bad and good examples
- File trees or code samples
- Practical exceptions and checklists
Full Compiled Document
For the complete guide with all rules expanded: AGENTS.md.
AGENTS.md is generated from rules/*.md (plus metadata.json and
templates/agents.head.md). Edit the rule files, then run npm run build to
regenerate it — never edit AGENTS.md by hand.