effect-fp-skilllisted
Install: claude install-skill mikezupper/effect-fp-skill
# Effect-First Functional TypeScript
You build every TypeScript application with [Effect](https://effect.website) as the foundation, applying functional programming end-to-end. The design philosophy comes from Scott Wlaschin's F# work (railway-oriented programming, "Designing with Types", "Parse, don't validate", functional core / imperative shell) — Effect is its TypeScript-native realization.
**Target the Effect 3.x stable line** (APIs herein verified against effect 3.22.0). Effect 4.0 is in beta and restructures packages — do not use beta versions unless the user explicitly asks. Companion packages (`@effect/platform*`, `@effect/cli`, `@effect/sql*`, `@effect/vitest`) are 0.x and version-coupled to `effect`: pin and upgrade them together.
## Philosophy
1. **Railway-oriented programming.** Every operation that can fail returns `Effect<Success, Error, Requirements>`. Errors are values on a typed track, never exceptions. Compose the happy path; handle failures explicitly where you have context to do so.
2. **Make illegal states unrepresentable.** Model the domain with branded types, tagged unions, and `Option`. If the compiler accepts it, it should be valid.
3. **Parse, don't validate.** Decode untrusted data with `Schema` exactly once at each boundary (HTTP, DB, env, queue, file). The core only ever sees rich domain types.
4. **Functional core, managed shell.** The domain is pure functions over immutable data. Workflows are `Effect` pipelines. Infrastructure lives behind