Back to Skills

component-patterns

majiayu000
Updated Today
1 views
58
9
58
View on GitHub
Metareactdesign

About

This skill provides guidelines for organizing React components in Shadow Master, specifically for deciding between single-file and subfolder structures. It includes a decision flowchart and rules for when to create subfolders, such as when components have modals or reusable row components. Use it when creating new components or adding character creation cards to maintain consistent code organization.

Quick Install

Claude Code

Recommended
Plugin CommandRecommended
/plugin add https://github.com/majiayu000/claude-skill-registry
Git CloneAlternative
git clone https://github.com/majiayu000/claude-skill-registry.git ~/.claude/skills/component-patterns

Copy and paste this command in Claude Code to install this skill

Documentation

Component Organization Patterns

Guidelines for structuring React components in the Shadow Master codebase.

Decision Flowchart

Does the component have modals?
├─ Yes → Create subfolder, extract modals
└─ No → Does it have reusable Row/ListItem components?
        ├─ Yes, used elsewhere → Create subfolder
        └─ No → Keep as single file with internal helpers

When to Use a Subfolder

Create a subfolder with index.ts when:

  • Component has one or more modals (selection dialogs, forms, etc.)
  • Component has reusable row/list item components used in multiple places
  • Component exceeds ~600 lines with clear separable concerns
  • Component has distinct UI pieces that could be tested independently

Subfolder structure:

/components/creation/qualities/
├── QualitiesCard.tsx        # Main card component
├── QualityModal.tsx         # Selection/edit modal
├── QualityRow.tsx           # Optional: if row is complex/reusable
├── index.ts                 # Re-exports public components

Index file pattern:

// index.ts - export only public API
export { QualitiesCard } from "./QualitiesCard";
export { QualityModal } from "./QualityModal"; // Only if used externally

When to Keep as Single File

Keep as a single file when:

  • Component is self-contained with only internal helper components
  • Internal components are tightly coupled and only make sense within the parent
  • Component is under ~400 lines with straightforward structure
  • No modals or independently reusable pieces

Creation Component Subfolders

Current organization (15 directories, 89 total components):

FolderComponentsPattern
/armor4Panel + Row + PurchaseModal + ModModal
/augmentations44 specialized modals
/contacts2Card + Modal + support files
/foci2Card + Modal
/gear4Panel + Row + 2 Modals
/identities6Card + 3 modal types
/knowledge-languages5Card + 2 Row types + 2 Modals
/magic-path2Card + Modal + utilities
/matrix-gear3Card + 2 specialized modals
/metatype2Card + Modal + support files
/qualities3Card + SelectionModal + DetailCard
/shared10Reusable utilities and hooks
/skills55 specialized modals
/vehicles44 specialized modals
/weapons4Row + 3 Modals

Adding a New Character Creation Card

  1. Determine if card needs subfolder (see decision flowchart above)

    • Has modals? → Create subfolder with index.ts
    • Simple with internal helpers? → Single file is fine
  2. Create card component in /components/creation/ or /components/creation/{feature}/

  3. Follow the CreationCard wrapper pattern from /components/creation/shared/

  4. Add to SheetCreationLayout.tsx in the appropriate column

  5. Update CreationState type in /lib/types/creation.ts if needed

  6. Export from /components/creation/index.ts


Adding a New API Endpoint

  1. Create /app/api/{path}/route.ts
  2. Export HTTP method handlers (GET, POST, PUT, DELETE)
  3. Follow authentication pattern (getSession → validate user)
  4. Call storage layer functions
  5. Return JSON responses

Adding a New Ruleset Module

  1. Define module type in /lib/types/edition.ts
  2. Add module to book payload in /data/editions/{editionCode}/
  3. Update merge logic in /lib/rules/merge.ts if special handling needed
  4. Create hook in RulesetContext.tsx for easy access

Key Reference Files

  • components/creation/shared/CreationCard.tsx - Card wrapper pattern
  • components/creation/SkillsCard.tsx - Modal-based editing example
  • components/creation/AugmentationsCard.tsx - Category tabs + list
  • app/characters/create/sheet/components/SheetCreationLayout.tsx - Three-column layout

GitHub Repository

majiayu000/claude-skill-registry
Path: skills/component-patterns

Related Skills

content-collections

Meta

This skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.

View skill

creating-opencode-plugins

Meta

This skill provides the structure and API specifications for creating OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It offers implementation patterns for JavaScript/TypeScript modules that intercept and extend the AI assistant's lifecycle. Use it when you need to build event-driven plugins for monitoring, custom handling, or extending OpenCode's capabilities.

View skill

langchain

Meta

LangChain is a framework for building LLM applications using agents, chains, and RAG pipelines. It supports multiple LLM providers, offers 500+ integrations, and includes features like tool calling and memory management. Use it for rapid prototyping and deploying production systems like chatbots, autonomous agents, and question-answering services.

View skill

Algorithmic Art Generation

Meta

This skill helps developers create algorithmic art using p5.js, focusing on generative art, computational aesthetics, and interactive visualizations. It automatically activates for topics like "generative art" or "p5.js visualization" and guides you through creating unique algorithms with features like seeded randomness, flow fields, and particle systems. Use it when you need to build reproducible, code-driven artistic patterns.

View skill