← ClaudeAtlas

effect-native-auditlisted

Use when asked to audit this codebase for places we hand-rolled what Effect ships natively, or to run the Effect-native sweep. Triggers on "effect-native audit", "where are we reinventing Effect", "rolled our own instead of an Effect builtin", "sweep for native Effect helpers", "audit our FP/Effect modelling", "audit our concurrency/error handling". A workflow-driven structural, modelling & behaviour audit — not a substitute for the @effect/language-service idiom linter.
CodeForBreakfast/commy · ★ 1 · AI & Automation · score 67
Install: claude install-skill CodeForBreakfast/commy
# Effect-native capability audit Sweep the codebase on **four axes** for code that isn't Effect-native — three **static** (non-native code that is *present*) and one **dynamic** (native code *misused*): - **Substitution** (verbs) — logic that re-implements what Effect already ships: a retry loop that is `Schedule`, manual env parsing that is `Config`, custom equality that is `Equal`/`Data`, a list helper already in `Array`. *Where did we hand-roll a helper?* - **Structural** (wiring) — code whose construction / dependency-injection / error / resource **spine** is still imperative OOP even though the leaves return Effect: a `new`-able class doing DI (ZulipHttp), a `throw` inside an Effect-returning method, a dependency threaded as a config field instead of declared in `R`, a `try/finally` that wants `acquireRelease`. *Effect used inside functions ≠ an Effect-native program.* The substitution axis is blind here — no module's export inventory is named "don't write a class that does DI". - **Modelling** (nouns) — data and state whose **type** throws away a guarantee an Effect data type would give for free: `T | null` that wants `Option`, a sentinel or pure `throw` that wants `Either`, booleans + optional fields that want a `Data.taggedEnum` (make illegal states unrepresentable), a bare `string` id that wants a branded type, in-place array mutation that wants an immutable build, hand-rolled equality that wants `Equal`/`Data`, a data-first helper tha