pm7y-component-patterns
Discovers existing React component patterns (file structure, state management, naming conventions, prop patterns, TypeScript conventions) in a codebase before writing new components. Produces a "use these patterns" summary to ensure consistency. Use this skill when: - About to write a new React component - Before creating a new feature with multiple components - When unsure what patterns or conventions exist in a codebase - Before a code review to understand existing patterns
What this skill does
# React Component Pattern Discovery Skill
Discovers existing React component patterns in a codebase to ensure new components follow established conventions.
---
## Overview
This skill scans a codebase to build a comprehensive inventory of:
- **File structure** - How components are organized and named
- **Component patterns** - Functional vs class, hooks usage, composition patterns
- **State management** - Local state, context, Redux, Zustand, etc.
- **Prop patterns** - TypeScript interfaces, default props, destructuring
- **Naming conventions** - Files, components, props, handlers, types
**Output:** A "Use These Patterns" summary that provides actionable guidance for writing new components.
**When to use:**
- Before writing a new React component
- Before creating a feature with multiple components
- When onboarding to an unfamiliar React codebase
- Before reviewing component code to understand expectations
---
## Discovery Process
### Step 1: Find All Component Files
Locate React component files in the project:
```
# Search patterns
**/components/**/*.tsx
**/components/**/*.jsx
**/*.component.tsx
**/pages/**/*.tsx
**/views/**/*.tsx
**/features/**/*.tsx
# Exclude patterns
node_modules/
dist/
build/
.next/
coverage/
**/*.test.tsx
**/*.spec.tsx
**/*.stories.tsx
```
Record the file structure - note organizational patterns like:
- Feature-based: `features/[Feature]/components/`
- Flat: `components/[Component].tsx`
- Nested: `components/[Component]/[Component].tsx`
- Atomic design: `atoms/`, `molecules/`, `organisms/`
### Step 2: Analyze File Structure Patterns
For each component directory, identify:
**Colocated files:**
- `Component.tsx` - Main component
- `Component.styles.ts` or `Component.scss` - Styles
- `Component.test.tsx` - Tests
- `Component.types.ts` - TypeScript types
- `index.ts` - Barrel export
- `hooks/` - Component-specific hooks
- `utils/` - Component-specific utilities
**Naming patterns:**
| Pattern | Example |
|---------|---------|
| PascalCase files | `UserProfile.tsx` |
| kebab-case files | `user-profile.tsx` |
| Index exports | `components/Button/index.tsx` |
| Suffixed files | `UserProfile.component.tsx` |
### Step 3: Analyze Component Patterns
Search for component definition patterns:
**Functional components:**
```
Pattern: (export const|export default function|const) \w+ = \(|: (React\.)?FC
```
**Class components:**
```
Pattern: class \w+ extends (React\.)?(Component|PureComponent)
```
**Component patterns to identify:**
| Pattern | Indicator |
|---------|-----------|
| Arrow function | `const Component = () =>` |
| Function declaration | `function Component()` |
| Typed FC | `const Component: FC<Props>` or `React.FC<Props>` |
| forwardRef | `forwardRef<Ref, Props>` |
| memo | `React.memo(Component)` |
### Step 4: Analyze Props and TypeScript Patterns
Search for prop type definitions:
**Interface patterns:**
```
Pattern: interface \w+Props
Pattern: type \w+Props =
```
Identify TypeScript conventions:
| Convention | Example |
|------------|---------|
| Props interface | `interface ButtonProps { ... }` |
| Props type | `type ButtonProps = { ... }` |
| Inline props | `({ label, onClick }: { label: string; onClick: () => void })` |
| Generic props | `interface ListProps<T> { items: T[] }` |
**Common prop patterns:**
- Children handling: `children: React.ReactNode` vs `children: ReactNode`
- Event handlers: `onClick`, `onSubmit`, `onChange` naming
- Render props: `render*` or `*Renderer` props
- Ref forwarding: `forwardRef` usage
### Step 5: Analyze State Management
**Local state:**
```
Pattern: useState<
Pattern: useReducer<
```
**Context usage:**
```
Pattern: createContext
Pattern: useContext
Pattern: \.Provider
```
**External state libraries:**
| Library | Indicators |
|---------|------------|
| Redux | `useSelector`, `useDispatch`, `connect` |
| Redux Toolkit | `createSlice`, `configureStore` |
| Zustand | `create()`, `useStore` |
| Jotai | `atom(`, `useAtom` |
| Recoil | `atom({`, `useRecoilState` |
| MobX | `observer(`, `makeObservable` |
| TanStack Query | `useQuery`, `useMutation`, `QueryClient` |
### Step 6: Analyze Hooks Patterns
Search for custom hooks:
```
Pattern: (export )?(const|function) use[A-Z]
```
Identify hook patterns:
- Location: `hooks/` directory vs colocated
- Naming: `use[Feature]` convention
- Return type: tuple, object, or single value
**Common hook patterns:**
- Data fetching hooks: `useFetch*`, `useGet*`, `useLoad*`
- Form hooks: `useForm`, `useField`, `useValidation`
- UI state hooks: `useToggle`, `useModal`, `useDisclosure`
- Side effect hooks: `useDebounce`, `useInterval`, `useEventListener`
### Step 7: Analyze Import/Export Patterns
**Import organization:**
```
# Check first 20-30 lines of component files for patterns
```
Identify ordering conventions:
1. React imports
2. Third-party imports
3. Internal imports (absolute paths)
4. Relative imports
5. Type imports
6. Style imports
**Export patterns:**
- Default exports: `export default Component`
- Named exports: `export { Component }`
- Barrel exports: `index.ts` files
### Step 8: Analyze Composition Patterns
**Children patterns:**
```
Pattern: {children}
Pattern: React\.Children
Pattern: cloneElement
```
**Render prop patterns:**
```
Pattern: render[A-Z]\w*=
```
**Compound components:**
```
Pattern: \w+\.\w+ =
Example: Menu.Item, Dialog.Title
```
---
## Output Format
After completing discovery, produce a summary in this format:
```markdown
## Use These Patterns
### File Structure
**Component organization:**
- Location: `src/components/[Category]/[Component]/`
- Files per component: `Component.tsx`, `Component.styles.ts`, `index.ts`
**Naming conventions:**
- Files: PascalCase (`UserProfile.tsx`)
- Components: PascalCase (`UserProfile`)
- Props interfaces: `[Component]Props`
- Hooks: `use[Feature]`
### Component Definition
**Preferred pattern:**
```tsx
interface ComponentProps {
// props
}
export const Component = ({ prop1, prop2 }: ComponentProps) => {
return (...)
}
```
**Common patterns used:**
- [ ] Arrow functions with explicit return
- [ ] Arrow functions with implicit return
- [ ] Function declarations
- [ ] React.FC type annotation
- [ ] forwardRef for ref forwarding
- [ ] memo for optimization
### Props Patterns
**TypeScript conventions:**
- Props defined as: `interface [Component]Props`
- Optional props: `prop?: type`
- Children type: `React.ReactNode`
- Event handlers: `on[Event]: () => void`
**Common prop patterns:**
- Destructuring in function signature
- Default values via destructuring: `{ prop = defaultValue }`
- Spread props for flexibility: `...rest`
### State Management
**Local state:**
- `useState` for simple state
- `useReducer` for complex state
**Global state:**
- [Library name] for [use case]
- Context for [use case]
### Hooks
**Custom hooks location:** `src/hooks/` or colocated
**Existing hooks:**
| Hook | Purpose |
|------|---------|
| `useAuth` | Authentication state |
| `useFetch` | Data fetching |
| [list discovered hooks] |
### Import Organization
```tsx
// 1. React
import { useState, useEffect } from 'react'
// 2. Third-party
import { motion } from 'framer-motion'
// 3. Internal (absolute)
import { Button } from '@/components/Button'
// 4. Relative
import { useLocalHook } from './hooks'
// 5. Types
import type { ComponentProps } from './types'
// 6. Styles
import styles from './Component.module.css'
```
### Export Patterns
**Preferred export style:** [named/default]
**Barrel exports:** [yes/no, pattern if yes]
```
```
---
## Discovery Checklist
Before producing the summary:
- [ ] Found all component files (excluding tests, stories, node_modules)
- [ ] Identified file structure pattern (flat, nested, feature-based)
- [ ] Identified file naming convention
- [ ] Identified component definition pattern (arrow, function, FC)
- [ ] Found TypeScript props patterns (interface, type, inline)
- [ ] Identified state management approach (local, conRelated in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.