スキル一覧に戻る
Jasrags

component-patterns

by Jasrags

A tabletop RPG management system for Shadowrun with support for multiple editions (SR3, SR5), multiple interfaces (web and CLI), and extensibility for future editions.

1🍴 0📅 2026年1月24日
GitHubで見るManusで実行

SKILL.md


name: component-patterns description: Guidelines for organizing React components in Shadow Master. Use when creating new components, deciding between single-file vs subfolder structure, or adding character creation cards. allowed-tools: Read, Grep, Glob

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

スコア

総合スコア

70/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です