Rules overview
What each rule reports and why is on its page. Report false positives and missed cases in the GitHub issues.
| Topic | Rules |
|---|---|
| Error channel | no-throw-or-primitive-failure, try-object-form, no-effect-promise, no-parameterless-catch-all, split-success-path-from-error-handling, anti-slop-no-manual-effect-error-tag |
| Tagged values | no-manual-discriminant-comparison, no-manual-discriminant-construction |
| Services and Layers | service-port-shape-only, service-key-matches-name, service-built-with-of, provide-named-layer, no-provide-on-definition, anti-slop-no-service-constructor-imports |
| Runtime and entry point | run-only-in-runner, prefer-effect-vitest, all-errors-handled-at-boundary |
| Design and boundaries | adapter-import-boundary, no-transport-types-in-generator |
| Effectful functions | prefer-effect-fn, untraced-recursion, single-style-per-function |
| Code shape | no-nested-match, no-yielded-match, no-inline-yield-star, no-effect-return-type, no-asymmetric-match-handlers, anti-slop-prefer-effect-match |
| Schema | exported-schema-identifier, no-inline-schema-codec |
| Config and secrets | redacted-secret-names |
Absorbed from anti-slop
Some rules come from the Effect rules of dmmulroy/anti-slop, MIT-licensed: see LICENSE.anti-slop.
| Status | Rules |
|---|---|
| Imported | anti-slop-no-manual-effect-error-tag, anti-slop-no-service-constructor-imports, anti-slop-prefer-effect-match |
| Superseded | no-manual-tag-comparison → no-manual-discriminant-comparison, no-manual-tagged-construction → no-manual-discriminant-construction |