--- name: check description: Verify all outputs exist after creating a new component and fix any issues argument-hint: [component-name] --- # Check Component Skill Verify that all 8 required outputs exist and are wired correctly after creating a new component. ## Instructions Given a component name (e.g., `cyclone`, `MapCyclone`), normalize it to its kebab-case slug (e.g., `cyclone`) and run through every check below. ### Check 1: Component Source File - File exists: `src/registry/map/{slug}.tsx` - Has `"use client"` directive (if it uses hooks, event handlers, or browser APIs) - Exports a named component (e.g., `MapCyclone`) - Uses `type` not `interface` for type definitions - Uses arrow functions with explicit returns - Default values use `SCREAMING_SNAKE_CASE` constants above the component - Required props come before optional props in the type definition - Cleanup in useEffect return functions (removes layers, sources, markers, event listeners) ### Check 2: Barrel Export - `src/registry/map/index.tsx` has an export line for the component - If the component exposes a control hook, it is also exported (e.g., `useCycloneControl`) ### Check 3: Registry Entry - `registry.json` has an entry in `items` with: - `name` in kebab-case (e.g., `cyclone`) - `registryDependencies` includes `"https://www.terrae.dev/map.json"` - `files[0].path` matches the source file path - `files[0].target` follows `components/ui/map/{slug}.tsx` ### Check 4: Example Files - At least one example exists: `src/app/docs/_components/examples/{slug}-example.tsx` - Examples import from `@/registry/map` - Examples wrap the map in `
` tag for component name), and `href`
- `href` matches `/docs/{slug}`
## Output Format
Present results as a checklist table:
```
| # | Output | Status | Notes |
| --- | ------------------ | ------ | ----------------------- |
| 1 | Component source | pass | |
| 2 | Barrel export | pass | |
| 3 | Registry entry | fail | Missing target path |
| 4 | Examples | pass | 3 examples found |
| 5 | Documentation page | warn | Missing props: `scale` |
| 6 | Sidebar navigation | pass | |
| 7 | Components page | pass | |
| 8 | Changelog | pass | |
```
- **pass**: Everything correct
- **warn**: Works but has minor issues (e.g., missing optional prop in docs table)
- **fail**: Missing or broken, needs fixing
After the table, list specific issues with file paths and line numbers.
## Fix Phase
If any checks have **fail** or **warn** status, fix them automatically:
1. Work through issues in check order (1–8)
2. Apply the minimal change needed for each issue
3. After all fixes, re-run the checks to confirm everything passes
4. Present the updated checklist table showing all checks as **pass**
If a fix requires a decision (e.g., which sidebar section to place the component in), ask the user before proceeding.