Effect-TS libraries and the lint plugin that enforces the constitution — from System F Software
A pnpm monorepo of Effect-TS packages, each built as a pure functional core behind a thin imperative shell and gated by property tests and a 100% mutation score — the discipline the System F Software constitution codifies. One of the packages, oxlint-plugin, is the linter that enforces that discipline; the monorepo lints itself with it.
| Package | npm | What it does |
|---|---|---|
effect-gherkin-spec |
@systemfsoftware/effect-gherkin-spec |
Write Vitest specs as Effect-native Gherkin features — Given/When/Then steps that compose as Effects, with Scenario Outline expansion and typed step errors. |
effect-daemon-spec |
@systemfsoftware/effect-daemon-spec |
A typed supervision-tree daemon for Effect — leader election, lock primitives, restart-intensity windows, dynamic children, and health latches. |
oxlint-plugin |
@systemfsoftware/oxlint-plugin |
25 oxlint rules enforcing the constitution: ban classes and string errors, forbid native timers/Promise/Date inside Effect, require pipeable composition, keep tests off the I/O boundary. |
effect-schema-law |
@systemfsoftware/effect-schema-law |
One call asserts the codec laws of any Effect Schema as Vitest property tests — decode∘encode is identity, and encoding is stable under a decode round-trip. |
stryker-plugins |
@systemfsoftware/stryker-plugins |
Stryker mutation-testing plugins for Effect — effect-schema-ignorer skips equivalent mutants on Effect Schema declarations so the score reflects behaviour, not data. |
rx-effect |
@systemfsoftware/rx-effect |
Bridge RxJS and Effect — turn an Observable into a typed Effect Stream with backpressure and proper interruption. |
effect-schema-extensions |
@systemfsoftware/effect-schema-extensions |
Extra Effect Schema codecs — branded hex-string schemas with decode/encode and arbitraries. |
Supporting internal tooling (tsconfig, oxlint-config, vitest-config) lives under packages/ and is not published.
pnpm add @systemfsoftware/effect-gherkin-spec
pnpm add @systemfsoftware/effect-daemon-spec
pnpm add -D @systemfsoftware/oxlint-pluginNote
effect is a peer dependency. effect-gherkin-spec also peers @effect/vitest and vitest.
pnpm install
pnpm build # tsdown, in dependency order (turbo)
pnpm typecheck # tsgo (TypeScript 7) + tsc
pnpm test # vitest — property + composition suites
pnpm lint # dprint check + oxlint (self-hosted plugin)
pnpm --filter @systemfsoftware/effect-daemon-spec mutation # stryker, 100% gateImportant
Read CONSTITUTION.md (the design law) and AGENTS.md (workspace invariants) before contributing. The constitution is vendored from systemfsoftware/constitution as a subtree.