Skip to content

Lint Rules Overview

llms.txt lists every page for an agent

chant’s lint rules check what your declarations mean as well as how they are structured. Core rules (COR, EVL) apply to all projects. Each lexicon brings its own lexicon-specific rules.

CategoryID RangeScopeDescription
EvaluabilityEVL001–EVL005, EVL007, EVL009–EVL011Single fileFlag TypeScript patterns that cannot be statically evaluated
StyleCOR001–COR009, COR012–COR015Single fileStructural and naming conventions
Cross-FileCOR010–COR011Multi-fileUnused exports and circular dependencies
CorrectnessCOR003, COR004, COR007, COR008, COR017, COR021, COR022–COR026, OPS012–OPS018Single file / post-synthStructural errors
CompositeEVL009, EVL010, COR017, COR018Single fileBest practices for Composite() factories
CompositionCOMP001–COMP007Whole component graphSemantic checks over the discovered Component graph (epic #551 Phase 2)
Decide backendsSYS001, SYS010Single file / post-synthA decide backend’s key is never a literal, and never crosses plain HTTP to a remote host
LexiconVaries by lexiconVariesProvider-specific rules (see lexicon docs)
  • error blocks the build until you fix it.
  • warning is reported and the build continues.
  • info points out a possible improvement.

Severity can be overridden per-rule in your configuration. See Rule Configuration.

Terminal window
chant lint # Lint all files
chant lint --format json # Machine-readable output
chant lint --format sarif # SARIF 2.1.0 for CI integrations (includes rule descriptions, fingerprints, suppressions)
chant lint --watch # Watch for changes
chant lint --fix # Auto-fix fixable issues

Configure rules in chant.config.ts in your project root. Without a config file, chant uses the strict preset.

Strict (@intentius/chant/lint/presets/strict) — recommended for production:

RuleSeverity
COR001error
COR002error
COR003warning
COR004warning
COR005warning
COR006error
COR007warning
COR008error
COR009warning
COR010warning
COR011error
COR012warning
COR013info
COR014warning
COR015warning
EVL001–EVL005, EVL007error
EVL009warning
EVL010warning
EVL011error
COMP001–COMP006error
COMP007warning

Relaxed (@intentius/chant/lint/presets/relaxed) — for migration or prototyping. Disables most style rules and relaxes correctness rules to warnings.

Suppress rules with comments:

// chant-disable — disable all rules for entire file
// chant-disable COR001 COR006 — disable specific rules for file
// chant-disable-line — disable all rules for this line
// chant-disable-next-line COR001 — disable COR001 for next line
// chant-disable COR001 -- reason text — suppress with an audit reason

See Disable Directives for details.

  • Evaluability Rules — EVL001–EVL005, EVL007
  • Style Rules — COR001, COR002, COR005, etc.
  • Cross-File Rules — COR010, COR011
  • Correctness Rules — COR003, COR004, COR007, COR008, COR021, COR022–COR024 (effect-receipt guards), COR025 (stringified reference), COR026 (stale knowledge binding), OPS012–OPS018 (Op model: activity contracts, step-output references, ConvergeOp rule-table refusals, gate approval blocks, gates that resume, gate aliases, shell step images)
  • Composite Rules — EVL009, EVL010, COR017, COR018
  • Composition Rules — COMP001–COMP007, over the discovered Component graph
  • Decide backends: SYS001 and SYS010, over the decide activity’s backends
  • Custom Rules — project-specific rules
  • Configuration — severity, presets, overrides
  • Auto-Fix — automatic fixes

chant