Effect-TS Code Review
Orchestrate a multi-agent review of code changes against Effect-TS best practices.
Workflow
Step 1: Discover Changed Files
Run git diff --name-only main...HEAD to find all changed files on the current branch. If that fails (e.g., on main), fall back to git diff --name-only HEAD~1 or git diff --name-only for unstaged changes.
List the changed files for the user.
Step 2: Categorize Files
Split files into categories:
- Backend Effect files:
.ts files NOT ending in .test.ts, NOT config files (.config.ts, tsconfig, etc.), NOT UI component library directories
- Test files:
.test.ts files
- UI files:
.tsx files
- Skip:
.md, .json, .yml, .css, config files, generated files
Step 3: Launch Sub-Agents in Parallel
Based on which categories have files, launch the appropriate agents using the Agent tool. Launch all applicable agents in a single message for maximum parallelism.
If backend Effect files exist, launch these 4 agents in parallel:
effect-primitives-reviewer — checks Effect primitives (Array, Match, Option, forEach, no try/catch, no async/await, Layer not Effect.provide)
branded-types-reviewer — checks branded type usage for all entity IDs
otel-reviewer — checks tracing setup (Effect.fn trace names, annotateCurrentSpan, structured logging)
error-reviewer — checks error definitions and handling (Schema.TaggedError, catchTag, rich context)
typescript-reviewer — checks TypeScript patterns (no as any, prefer satisfies over as, no manual type annotations on inferred types)
If test files exist, launch:
test-coverage-reviewer — checks @effect/vitest patterns and assesses coverage gaps
If UI files exist, launch:
ui-reviewer — checks component library usage, accessibility, layout, brand consistency
For each agent, provide the prompt:
Review the following files for [agent's specialty]. Read each file and produce a structured report with Critical/Warning/Info findings.
Files to review:
Also review the reference guide at references/[relevant-reference].md (relative to this skill) for the detailed checklist.
Step 4: Unified Report
After all agents complete, compile results into a single report:
# Effect Review Report
## Effect Primitives
[agent output]
## Branded Types
[agent output]
## OTEL / Observability
[agent output]
## Error Handling
[agent output]
## TypeScript Patterns
[agent output]
## Test Coverage
[agent output]
## UI Quality
[agent output]
---
## Summary
| Category | Critical | Warning | Info |
|----------|----------|---------|------|
| Primitives | X | Y | Z |
| Branded Types | X | Y | Z |
| OTEL | X | Y | Z |
| Errors | X | Y | Z |
| TypeScript | X | Y | Z |
| Tests | X | Y | Z |
| UI | X | Y | Z |
| **Total** | **X** | **Y** | **Z** |
**Verdict**: PASS / NEEDS WORK / FAIL
**Score: X/10**
- PASS: 0 critical findings
- NEEDS WORK: 1-3 critical findings
- FAIL: 4+ critical findings
Scoring (0-10)
After compiling all findings, assign an overall score from 0 to 10:
- 10: Perfect — no findings at all, exemplary Effect-TS code
- 9: Excellent — only minor info-level suggestions
- 8: Great — a few warnings, no criticals
- 7: Good — several warnings but no criticals
- 6: Acceptable — 1 critical or many warnings
- 5: Needs work — 2-3 criticals
- 4: Below standard — 4-5 criticals
- 3: Poor — 6+ criticals or fundamental pattern violations
- 2: Very poor — majority of code ignores Effect patterns
- 1: Minimal compliance — almost no Effect patterns followed
- 0: No compliance — entirely non-Effect code submitted as Effect code
Display the score prominently at the end of the report.
Reference Files
Detailed checklists with codebase-specific examples:
references/effect-primitives.md — Effect Array, Match, Option, forEach, Schema, Layer
references/branded-types.md — Branded type usage and known types list
references/otel-patterns.md — Tracing, span annotations, structured logging
references/error-patterns.md — Schema.TaggedError, catchTag, error context
references/typescript-patterns.md — No as any, prefer satisfies over as, no manual type annotations
references/test-patterns.md — @effect/vitest, it.layer, coverage assessment
references/effect-atom-patterns.md — Effect-Atom React patterns, queries, mutations, Result.builder
1---2name: effect-review3description: This skill should be used when the user asks to "review code", "review my changes", "check effect patterns", "run effect review", "effect review", "review for effect best practices", or wants a comprehensive code review against Effect-TS conventions, branded types, observability, error handling, test coverage, and UI quality.4---5
6# Effect-TS Code Review
7
8Orchestrate a multi-agent review of code changes against Effect-TS best practices.
9
10## Workflow
11
12### Step 1: Discover Changed Files
13
14Run `git diff --name-only main...HEAD` to find all changed files on the current branch. If that fails (e.g., on main), fall back to `git diff --name-only HEAD~1` or `git diff --name-only` for unstaged changes.
15
16List the changed files for the user.
17
18### Step 2: Categorize Files
19
20Split files into categories:
21
22- **Backend Effect files**: `.ts` files NOT ending in `.test.ts`, NOT config files (`.config.ts`, `tsconfig`, etc.), NOT UI component library directories
23- **Test files**: `.test.ts` files
24- **UI files**: `.tsx` files
25- **Skip**: `.md`, `.json`, `.yml`, `.css`, config files, generated files
26
27### Step 3: Launch Sub-Agents in Parallel
28
29Based on which categories have files, launch the appropriate agents using the Agent tool. Launch all applicable agents in a **single message** for maximum parallelism.
30
31**If backend Effect files exist**, launch these 4 agents in parallel:
32- `effect-primitives-reviewer` — checks Effect primitives (Array, Match, Option, forEach, no try/catch, no async/await, Layer not Effect.provide)
33- `branded-types-reviewer` — checks branded type usage for all entity IDs
34- `otel-reviewer` — checks tracing setup (Effect.fn trace names, annotateCurrentSpan, structured logging)
35- `error-reviewer` — checks error definitions and handling (Schema.TaggedError, catchTag, rich context)
36- `typescript-reviewer` — checks TypeScript patterns (no `as any`, prefer `satisfies` over `as`, no manual type annotations on inferred types)
37
38**If test files exist**, launch:
39- `test-coverage-reviewer` — checks @effect/vitest patterns and assesses coverage gaps
40
41**If UI files exist**, launch:
42- `ui-reviewer` — checks component library usage, accessibility, layout, brand consistency
43
44For each agent, provide the prompt:
45> Review the following files for [agent's specialty]. Read each file and produce a structured report with Critical/Warning/Info findings.
46>
47> Files to review:
48> - [list of file paths]
49>
50> Also review the reference guide at `references/[relevant-reference].md` (relative to this skill) for the detailed checklist.
51
52### Step 4: Unified Report
53
54After all agents complete, compile results into a single report:
55
56```
57# Effect Review Report
58
59## Effect Primitives
60[agent output]
61
62## Branded Types
63[agent output]
64
65## OTEL / Observability
66[agent output]
67
68## Error Handling
69[agent output]
70
71## TypeScript Patterns
72[agent output]
73
74## Test Coverage
75[agent output]
76
77## UI Quality
78[agent output]
79
80---
81
82## Summary
83
84| Category | Critical | Warning | Info |
85|----------|----------|---------|------|
86| Primitives | X | Y | Z |
87| Branded Types | X | Y | Z |
88| OTEL | X | Y | Z |
89| Errors | X | Y | Z |
90| TypeScript | X | Y | Z |
91| Tests | X | Y | Z |
92| UI | X | Y | Z |
93| **Total** | **X** | **Y** | **Z** |
94
95**Verdict**: PASS / NEEDS WORK / FAIL
96
97**Score: X/10**
98```
99
100- **PASS**: 0 critical findings
101- **NEEDS WORK**: 1-3 critical findings
102- **FAIL**: 4+ critical findings
103
104### Scoring (0-10)
105
106After compiling all findings, assign an overall score from 0 to 10:
107
108- **10**: Perfect — no findings at all, exemplary Effect-TS code
109- **9**: Excellent — only minor info-level suggestions
110- **8**: Great — a few warnings, no criticals
111- **7**: Good — several warnings but no criticals
112- **6**: Acceptable — 1 critical or many warnings
113- **5**: Needs work — 2-3 criticals
114- **4**: Below standard — 4-5 criticals
115- **3**: Poor — 6+ criticals or fundamental pattern violations
116- **2**: Very poor — majority of code ignores Effect patterns
117- **1**: Minimal compliance — almost no Effect patterns followed
118- **0**: No compliance — entirely non-Effect code submitted as Effect code
119
120Display the score prominently at the end of the report.
121
122## Reference Files
123
124Detailed checklists with codebase-specific examples:
125- `references/effect-primitives.md` — Effect Array, Match, Option, forEach, Schema, Layer
126- `references/branded-types.md` — Branded type usage and known types list
127- `references/otel-patterns.md` — Tracing, span annotations, structured logging
128- `references/error-patterns.md` — Schema.TaggedError, catchTag, error context
129- `references/typescript-patterns.md` — No `as any`, prefer `satisfies` over `as`, no manual type annotations
130- `references/test-patterns.md` — @effect/vitest, it.layer, coverage assessment
131- `references/effect-atom-patterns.md` — Effect-Atom React patterns, queries, mutations, Result.builder