Rules control the severity of each issue type, making it easy to adopt fallow incrementally in CI.Documentation Index
Fetch the complete documentation index at: https://docs.fallow.tools/llms.txt
Use this file to discover all available pages before exploring further.
Severity levels
| Level | Behavior |
|---|---|
error | Report and fail CI (non-zero exit code) |
warn | Report but exit 0 |
off | Don’t detect or report |
error when not configured. The exceptions are private-type-leaks and coverage-gaps (default off), plus stale-suppressions (default warn).
Configuration
Available rule names
| Rule | Description |
|---|---|
unused-files | Files not reachable from any entry point |
unused-exports | Exported symbols never imported |
unused-types | Type aliases and interfaces never referenced |
private-type-leaks | Opt-in API hygiene check for exported signatures that reference same-file private types (default off) |
unused-dependencies | Packages in dependencies never used |
unused-dev-dependencies | Packages in devDependencies never used |
unused-optional-dependencies | Packages in optionalDependencies never used |
unused-enum-members | Enum values never referenced |
unused-class-members | Class members never referenced |
unused-catalog-entries | Entries in pnpm-workspace.yaml’s catalog: / catalogs: maps that no workspace package references via the catalog: protocol (default warn) |
empty-catalog-groups | Named catalogs.<name>: groups in pnpm-workspace.yaml that contain no package entries (default warn; top-level catalog: placeholders are ignored) |
unresolved-catalog-references | package.json references to catalog: / catalog:<name> whose catalog does not declare the package (default error; pnpm install would fail) |
unused-dependency-overrides | pnpm-workspace.yaml#overrides / package.json#pnpm.overrides entries forcing a version no workspace package depends on (default warn; some are intentional pins for transitive CVEs) |
misconfigured-dependency-overrides | pnpm.overrides entries whose key is unparsable or value is missing (default error; pnpm install would fail) |
unresolved-imports | Imports that can’t be resolved |
unlisted-dependencies | Imported packages not in package.json |
duplicate-exports | Same symbol exported from multiple files |
circular-dependencies | Modules that import each other, directly or transitively |
boundary-violation | Imports that cross user-defined architecture zone boundaries |
type-only-dependencies | Production dependencies only imported via import type |
test-only-dependencies | Production dependencies only imported by test files |
coverage-gaps | Runtime files and exports not reached by any test dependency path (default off) |
stale-suppressions | fallow-ignore comments or @expected-unused JSDoc tags that no longer match any issue (default warn) |
circular-dependencies and circular-dependency are interchangeable. Both forms are accepted in rules, overrides[].rules, and inline directives, so the singular/plural slug doesn’t matter.Incremental adoption strategy
Incremental adoption strategy
Adopting fallow in an existing codebase works best gradually:
- Start permissive. Set all rules to
warnso you see issues without blocking CI. - Fix high-confidence rules first. Promote
unresolved-importsandunlisted-dependenciestoerror. These are almost never false positives. - Tackle unused files. Promote
unused-filestoerror. Unreachable files are safe to remove. - Address unused exports. Usually the largest category. Promote to
erroronce the count is manageable. - Enable remaining rules. Promote
unused-types,unused-enum-members, andunused-class-membersas you clean up each category. Enableprivate-type-leaksonly for packages where public API or declaration hygiene matters.
Use
--fail-on-issues in CI to temporarily treat all warnings as errors without changing the config file. Good for pre-merge gates on critical branches.Exit codes
| Code | Meaning |
|---|---|
0 | No error-severity issues |
1 | Error-severity issues found |
2 | Fatal error (invalid config, parse failure) |
See also
Configuration
Full config file reference with all available fields.
CI Integration
Set up fallow in GitHub Actions, GitLab CI, and more.