Rule catalog
Every built-in rule, its defaults, and every option it accepts. The config file format is documented in configuration.md. The reasoning behind each rule is in its linked guideline, also available as vibator explain <rule>. Rules with a default severity of off require their mandatory options before they can run.
no-conflict-markers
No unresolved merge conflict markers.
- Scope: file. Default severity:
error - Default include:
**/* - Guideline: rules/no-conflict-markers.md
No options.
max-file-size
No oversized files in version control.
- Scope: file. Default severity:
error - Default include:
**/* - Guideline: rules/max-file-size.md
| Option | Type | Default | Purpose |
|---|---|---|---|
maxKb | integer | 400 | Largest accepted file, in kilobytes |
banned-patterns
Project-banned patterns stay out of the source.
- Scope: file. Default severity:
off - Default include:
**/src/**/*.{ts,tsx,js,jsx,mjs,cjs} - Default exclude:
**/*.test.*,**/*.spec.* - Guideline: rules/banned-patterns.md
| Option | Type | Default | Purpose |
|---|---|---|---|
patterns | object[] | required | The patterns to ban, each carrying its own diagnostic text |
patterns[].pattern | string | required | JavaScript regular expression source, matched per line |
patterns[].flags | string | "" | Regular expression flags, such as i |
patterns[].message | string | required | What is wrong when the pattern matches |
patterns[].expected | string | required | The standard, positively stated |
patterns[].fix | string | required | The concrete next action |
ignoreMarkers | string[] | ["vibator-ignore"] | Comment markers that opt a line out, each requiring a reason |
no-dead-doc-links
Relative links in Markdown point at files that exist.
- Scope: file. Default severity:
error - Default include:
**/*.md - Guideline: rules/no-dead-doc-links.md
No options.
locale-parity
Every locale carries the same keys as the source.
- Scope: project. Default severity:
off - Default include: none; configure to enable
- Guideline: rules/locale-parity.md
| Option | Type | Default | Purpose |
|---|---|---|---|
root | string | required | Directory holding the locale catalogs |
source | string | "en" | The locale every other is seeded from |
layout | "directory-per-locale" or "file-per-locale" | "directory-per-locale" | directory-per-locale expects root/<locale>/<namespace>.json; file-per-locale expects root/<locale>.json |
locales | string[] | (none) | The locales to check; discovered from the layout when omitted |
env-example-sync
The example env file matches what the code reads.
- Scope: project. Default severity:
warn - Default include:
**/src/**/*.{ts,tsx,js,jsx} - Default exclude:
**/*.test.*,**/*.spec.* - Guideline: rules/env-example-sync.md
| Option | Type | Default | Purpose |
|---|---|---|---|
example | string | ".env.example" | The file documenting every configurable variable |
ambient | string[] | see schema.json | Variables the runtime, bundler or CI supplies, never documented |
externallyConsumed | string[] | [] | Variables consumed outside the scanned sources, e.g. by compose |
reportUnread | boolean | true | Whether to report documented variables that nothing reads |
tsdoc-coverage
Every declaration carries a complete TSDoc contract.
- Scope: project. Default severity:
error - Default include:
**/src/**/*.{ts,tsx} - Default exclude:
**/*.test.*,**/*.spec.*,**/*.d.ts - Guideline: rules/tsdoc-coverage.md
| Option | Type | Default | Purpose |
|---|---|---|---|
requireOn | "all" or "exported" | "all" | Which declarations must carry documentation |
requireParams | boolean | true | Whether every parameter needs a @param tag |
requireReturns | boolean | true | Whether value-returning signatures need a @returns tag |
maxInlineCommentLines | integer | 2 | Longest run of consecutive own-line // comments allowed |
meaningful-names
Identifiers we declare carry meaning.
- Scope: project. Default severity:
error - Default include:
**/src/**/*.{ts,tsx} - Default exclude:
**/*.d.ts - Guideline: rules/meaningful-names.md
| Option | Type | Default | Purpose |
|---|---|---|---|
ignoreMarkers | string[] | ["vibator-ignore"] | comment markers that opt a line out, each requiring a reason |
minLength | integer | 3 | Identifiers shorter than this must be allowlisted |
allow | string[] | ["id","ip","ok","db","on","to","up","x","y","z"] | Short names that carry meaning, or that a library imposes |
deny | string[] | see schema.json | Names long enough to pass the bar but still meaningless |
prefer-array-methods
Array methods over single-statement loops.
- Scope: project. Default severity:
warn - Default include:
**/src/**/*.{ts,tsx} - Default exclude:
**/*.d.ts - Guideline: rules/prefer-array-methods.md
| Option | Type | Default | Purpose |
|---|---|---|---|
ignoreMarkers | string[] | ["vibator-ignore"] | comment markers that opt a line out, each requiring a reason |
no-deprecated-apis
No use of APIs marked @deprecated.
- Scope: project. Default severity:
error - Default include:
**/src/**/*.{ts,tsx},*.config.ts - Default exclude:
**/*.d.ts - Guideline: rules/no-deprecated-apis.md
| Option | Type | Default | Purpose |
|---|---|---|---|
projects | string[] | ["tsconfig.json"] | tsconfig paths whose programs this rule resolves against |
codegen-drift
Generated files match the source they derive from.
- Scope: project. Default severity:
off - Default include: none; configure to enable
- Guideline: rules/codegen-drift.md
| Option | Type | Default | Purpose |
|---|---|---|---|
generators | object[] | required | Generators to run, each with the paths it owns |
generators[].name | string | required | Human-readable name, used in messages |
generators[].command | string | required | Shell command that regenerates the output |
generators[].cwd | string | "." | Working directory, relative to the project root |
generators[].paths | string[] | required | Paths the generator writes, relative to the project root |
generators[].timeoutMs | integer | 180000 | How long to allow before treating the run as stuck, ms |