| name | code-review |
| description | Review code for Effect-TS patterns, common issues, and project conventions. Use when reviewing PRs, checking code quality, or before committing changes. |
| allowed-tools | Read, Grep, Glob |
Code Review
Read-only review skill for checking code quality against project conventions.
Checklist
Effect-TS Patterns
- Uses
Effect.genwithyield*, not async/await - No type casts (
as Type) - usesatisfiesinstead - Errors are
Data.TaggedErrorwith descriptive payloads - Services use
Context.TagorEffect.Servicepattern - Layers properly compose dependencies
Branded IDs (wowlab-core)
- Schema + Brand dual pattern for IDs
-
eslint-disable no-redeclarecomment present - Validation logic matches between Schema and Brand
Portal Components
- Pages are minimal (just render component)
-
loading.tsxuses*Skeletoncomponent -
"use client"only where needed - Barrel exports in
index.ts - Jotai atoms in domain folders under
atoms/ - Uses
@/lib/formatutilities (not raw.toLocaleString()or manual formatting) - Loading states use Flask components (not Loader2 from lucide)
- Providers export hook + Provider + types from
providers/index.ts
General
- No unused imports or variables
- No
console.login production code - Error handling is comprehensive
- Types are explicit at module boundaries
- Control flow has braces (no single-line if/for)
- No backwards-compat shims or deprecated code
How to Use
- I'll read the files you want reviewed
- Check against the patterns above
- Report issues with file:line references
- Suggest fixes where applicable
Common Issues
Wrong
const data = await fetchData(); // async/await
const x = foo as Bar; // type cast
Right
const data = yield * fetchData(); // Effect.gen
const x = foo satisfies Bar; // satisfies