@systemfsoftware/oxlint-plugin
Catch Effect-TS violations before they hit review: ban classes, string errors, bare promises, native timers, and every other pattern the System F Software Constitution forbids.
Effect enforces a discipline — no classes, no Date.now(), no Set or Map, no barrel exports, no string errors. But the compiler doesn't catch these. And code review catches them too late, one PR at a time, after someone already wrote the wrong thing.
This plugin turns those rules into instant feedback. Wire it into your oxlint.config.ts, and every pnpm lint run checks every file before commit. Twenty-two rules cover the constitution's pure-core and boundary articles — from no-classes and ban-error-string to policy-no-domain-imports and no-logging-in-catch.
Quick start
pnpm add -D @systemfsoftware/oxlint-pluginConfigure it in your oxlint config:
import { defineConfig } from 'oxlint'
export default defineConfig({
jsPlugins: ['@systemfsoftware/oxlint-plugin'],
rules: {
'@systemfsoftware/oxlint-plugin/no-classes': 'error',
},
})Then lint:
pnpm oxlintIf a class keyword appears anywhere, oxlint prints an error and exits 1. No class survives to review.
For a full setup with every rule enabled at the recommended severity, extend the shared base config:
import baseConfig from '@systemfsoftware/oxlint-config'
export default defineConfig({ ...baseConfig })Browse src/rules/ for every rule and its implementation — that list is always current.
Tech stack
| Component | Technology | Version |
|---|---|---|
| Runtime | Node.js | 24.x |
| Linter | oxlint | 1.60.x |
| Plugin API | @oxlint/plugins | 1.60.x |
| Language | TypeScript | 6.0.x |
License
MIT