Skip to content

Lint Rules

ContextKit includes 40 lint rules organized by tier. Rules are checked with context lint (or npx @runcontext/cli lint) and auto-fixable rules can be applied with context fix (or npx @runcontext/cli fix).

Severity levels: error rules block tier promotion. warning rules are advisory.

Fixable: Rules marked as fixable can be automatically corrected by context fix.

Bronze rules enforce basic structural correctness and naming conventions.

Rule IDSeverityFixableDescription
naming/id-kebab-caseerrorNoModel and field IDs must use kebab-case
osi/descriptions-requirederrorYesAll models and fields must have descriptions
governance/ownership-requirederrorNoEvery model must declare an owner
references/resolvableerrorNoAll $ref pointers must resolve to existing targets
glossary/no-duplicate-synonymserrorNoGlossary synonyms must be unique across all terms
security/no-secretserrorNoContext files must not contain secrets or credentials
osi/valid-schemaerrorNoAll files must conform to the OSI schema
governance/model-existserrorNoReferenced models must exist in the context directory
governance/datasets-existerrorNoReferenced datasets must exist
governance/fields-existerrorNoReferenced fields must exist in their parent model
governance/grain-requirederrorYesEvery model must declare its grain
governance/security-requirederrorYesEvery model must have a security classification

Silver rules require governance metadata that supports operational use.

Rule IDSeverityFixableDescription
governance/trust-requirederrorYesEvery model must declare a trust level
governance/refresh-requirederrorYesEvery model must specify its refresh cadence
lineage/upstream-requirederrorNoEvery model must declare at least one upstream dependency

Gold rules enforce rich semantic metadata, quality definitions, and comprehensive coverage.

Rule IDSeverityFixableDescription
governance/semantic-role-requirederrorNoEvery field must have a semantic role (dimension, measure, etc.)
governance/aggregation-requirederrorNoMeasure fields must specify their aggregation method
governance/additive-requirederrorNoMeasure fields must declare whether they are additive, semi-additive, or non-additive
rules/golden-queries-minimumerrorNoEvery model must have at least one golden query
rules/business-rules-existerrorNoEvery model must have at least one business rule
rules/guardrails-existerrorNoEvery model must have at least one guardrail
rules/hierarchies-existerrorNoModels with dimensional fields must define hierarchies
governance/field-description-qualitywarningNoField descriptions must be substantive, not just the field name restated
glossary/definition-qualitywarningNoGlossary definitions must be substantive and non-trivial
lineage/no-self-referenceerrorNoA model cannot list itself as an upstream dependency
governance/grain-no-placeholdererrorNoGrain declarations must not be placeholder values
osi/relationships-coveragewarningNoModels should define relationships to other models
osi/metrics-definederrorNoModels with measure fields must define at least one metric
glossary/coveragewarningNoKey business terms should have glossary entries

Data rules validate context files against live data sources. These require a configured database connection in contextkit.config.yaml.

Rule IDSeverityFixableDescription
data/source-existserrorNoThe declared data source table or view must exist in the database
data/fields-existerrorNoDeclared fields must exist as columns in the source table
data/field-types-compatibleerrorNoDeclared field types must be compatible with actual column types
data/sample-values-accuratewarningYesSample values in field definitions must actually appear in the data
data/golden-queries-executeerrorNoGolden queries must execute without errors
data/golden-queries-nonemptywarningNoGolden queries must return at least one row
data/guardrails-valid-sqlerrorNoGuardrail SQL expressions must be valid
data/row-counts-nonzerowarningNoSource tables must contain data