effect-native-auditlisted
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