A pnpm monorepo of Effect-TS packages — pure functional cores behind thin imperative shells, property-tested and mutation-gated. The oxlint-plugin enforces the System F Software constitution; the monorepo lints itself with it.
| Package | npm | What it does |
|---|
| effect-gherkin-spec | @systemfsoftware/effect-gherkin-spec | feature/scenario/outline DSL for Gherkin-style behaviour tests composed 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 | 18 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. |
oxlint-config and vitest-config are internal to this repository and are not published. Every
other package under packages/ is published independently.
Use the shared oxlint configuration presets from @systemfsoftware/oxlint-config:
// oxlint.config.ts
import base from '@systemfsoftware/oxlint-config/base'
import { defineConfig } from 'oxlint'
export default defineConfig({
extends: [base],
})That config enables the built-in correctness category and every custom rule — the workflow,
schema, test-placement, property-testing, hygiene, entrypoint and cell-vocabulary tiers — each
at error. The rules are type-aware, so the files you lint must be covered by a
tsconfig.json; without one, roughly half of them produce no diagnostics while still reading
as enabled.
Or install one library at a time:
pnpm add @systemfsoftware/effect-gherkin-spec
pnpm add @systemfsoftware/effect-daemon-spec
pnpm add -D @systemfsoftware/oxlint-pluginEach package's README has a usage example and API reference.
effectis a peer dependency of every published package.effect-gherkin-specalso peers@effect/vitestandvitest.
Development setup, build, test, and lint commands: AGENTS.md.
Read the constitution and CONSTITUTION.md before contributing. The constitution is vendored from systemfsoftware/constitution as a subtree.
Licensed under Apache 2.0.