Skip to content

Rules

1dir_absentExistencealint dir_absent rule (existence): Directory counterpart of file_absent.
2dir_existsExistencealint dir_exists rule (existence): Directory counterpart of file_exists.
3file_absentExistencealint file_absent rule (existence): No file matching paths may exist in the walked tree.
4file_existsExistencealint file_exists rule (existence): Every glob match in paths must correspond to a real file.
5editorconfig_conformsContent, Text hygienealint editorconfig_conforms rule (content): Enforce selected formatting properties from the repository's own .editorconfig files without repeating those...
6file_content_forbiddenContent, Security / Unicode sanityalint file_content_forbidden rule (content): File contents must NOT match a regex.
7file_content_matchesContentalint file_content_matches rule (content): File contents must contain at least one match for a regex.
8file_ends_withContentalint file_ends_with rule (content): Byte-level prefix / suffix check.
9file_footerContentalint file_footer rule (content): The configured number of final lines in each file in scope must match a regex.
10file_hashContent, Security / Unicode sanityalint file_hash rule (content): Content SHA-256 must equal the expected digest.
11file_headerContentalint file_header rule (content): The first N lines must match a regex (line-oriented).
12file_is_asciiContent, Encoding, Security / Unicode sanityalint file_is_ascii rule (content): Every byte in the file must be < 0x80 (pure ASCII), except codepoints listed in allow.
13file_is_textContent, Encodingalint file_is_text rule (content): Content is detected as text (magic bytes + UTF-8 validity check), fails on binary files matched by paths.
14file_max_linesContent, Structurealint file_max_lines rule (content): File must have at most max_lines lines, using the same accounting as file_min_lines.
15file_max_sizeContent, Structurealint file_max_size rule (content): File must be at most max_bytes in size.
16file_min_linesContent, Structurealint file_min_lines rule (content): File must have at least min_lines lines...
17file_min_sizeContent, Structurealint file_min_size rule (content): File must be at least min_bytes in size.
18file_shebangContent, Unix metadataalint file_shebang rule (content): First line of each file in scope must match the shebang regex.
19file_starts_withContentalint file_starts_with rule (content): Byte-level prefix / suffix check.
20markdown_images_have_altContentalint markdown_images_have_alt rule (content): Require every live CommonMark image to have non-empty rendered alt text.
21markdown_no_duplicate_headingsContentalint markdown_no_duplicate_headings rule (content): Reject a later Markdown heading whose generated base anchor collides with an earlier heading.
22markdown_required_headingsContentalint markdown_required_headings rule (content): Require the complete rendered heading sequence to match an ordered headings template.
23pinned_referencesContent, Security / Unicode sanityalint pinned_references rule (content): Require executable references in supported CI and container files to identify immutable artifacts rather...
24spdx_identifier_validContent, Security / Unicode sanityalint spdx_identifier_valid rule (content): Validate every SPDX-License-Identifier: value as a strict SPDX license expression.
25dotenv_path_absentStructured queryalint dotenv_path_absent rule (structured query): Query a dotenv document with JSONPath and require it to match nothing.
26dotenv_path_equalsStructured queryalint dotenv_path_equals rule (structured query): Query a dotenv document with JSONPath and require every selected value to equal the expected value.
27dotenv_path_matchesStructured queryalint dotenv_path_matches rule (structured query): Query a dotenv document with JSONPath and require every selected string to match a regular expression.
28hcl_path_absentStructured queryalint hcl_path_absent rule (structured query): Query an HCL document with JSONPath and require it to match nothing.
29hcl_path_equalsStructured queryalint hcl_path_equals rule (structured query): Query an HCL document with JSONPath and require every selected value to equal the expected value.
30hcl_path_matchesStructured queryalint hcl_path_matches rule (structured query): Query an HCL document with JSONPath and require every selected string to match a regular expression.
31ini_path_absentStructured queryalint ini_path_absent rule (structured query): Query an INI document with JSONPath and require it to match nothing.
32ini_path_equalsStructured queryalint ini_path_equals rule (structured query): Query an INI document with JSONPath and require every selected value to equal the expected value.
33ini_path_matchesStructured queryalint ini_path_matches rule (structured query): Query an INI document with JSONPath and require every selected string to match a regular expression.
34json_path_absentStructured queryalint json_path_absent rule (structured query): Query a JSON document with JSONPath and require it to match nothing.
35json_path_equalsStructured queryalint json_path_equals rule (structured query): Query a JSON document with JSONPath and require every selected value to equal the expected value.
36json_path_matchesStructured queryalint json_path_matches rule (structured query): Query a JSON document with JSONPath and require every selected string to match a regular expression.
37json_schema_passesStructured queryalint json_schema_passes rule (structured query): Validate every JSON / YAML / TOML / XML / dotenv / properties / INI / HCL file in paths against a JSON...
38properties_path_absentStructured queryalint properties_path_absent rule (structured query): Query a Java properties document with JSONPath and require it to match nothing.
39properties_path_equalsStructured queryalint properties_path_equals rule (structured query): Query a Java properties document with JSONPath and require every selected value to equal...
40properties_path_matchesStructured queryalint properties_path_matches rule (structured query): Query a Java properties document with JSONPath and require every selected string to match...
41toml_path_absentStructured queryalint toml_path_absent rule (structured query): Query a TOML document with JSONPath and require it to match nothing.
42toml_path_equalsStructured queryalint toml_path_equals rule (structured query): Query a TOML document with JSONPath and require every selected value to equal the expected value.
43toml_path_matchesStructured queryalint toml_path_matches rule (structured query): Query a TOML document with JSONPath and require every selected string to match a regular expression.
44xml_path_absentStructured queryalint xml_path_absent rule (structured query): Query an XML document with JSONPath and require it to match nothing.
45xml_path_equalsStructured queryalint xml_path_equals rule (structured query): Query an XML document with JSONPath and require every selected value to equal the expected value.
46xml_path_matchesStructured queryalint xml_path_matches rule (structured query): Query an XML document with JSONPath and require every selected string to match a regular expression.
47yaml_path_absentStructured queryalint yaml_path_absent rule (structured query): Query a YAML document with JSONPath and require it to match nothing.
48yaml_path_equalsStructured queryalint yaml_path_equals rule (structured query): Query a YAML document with JSONPath and require every selected value to equal the expected value.
49yaml_path_matchesStructured queryalint yaml_path_matches rule (structured query): Query a YAML document with JSONPath and require every selected string to match a regular expression.
50filename_caseNamingalint filename_case rule (naming): Basename (stem only or full) matches a case convention: snake, kebab, pascal, camel, screaming-snake, flat, lower, upper.
51filename_regexNamingalint filename_regex rule (naming): Basename matches a regex.
52final_newlineText hygienealint final_newline rule (text hygiene): File must end with a single \n.
53indent_styleText hygienealint indent_style rule (text hygiene): Every non-blank line indents with the configured style (tabs or spaces).
54line_endingsText hygiene, Portable metadataalint line_endings rule (text hygiene): Every line ending matches target: lf or crlf.
55line_max_widthText hygienealint line_max_width rule (text hygiene): Cap line length in characters (not bytes, code points).
56max_consecutive_blank_linesText hygienealint max_consecutive_blank_lines rule (text hygiene): Cap runs of blank lines to max.
57no_trailing_whitespaceText hygienealint no_trailing_whitespace rule (text hygiene): No line may end with space or tab.
58no_bidi_controlsSecurity / Unicode sanity, Encodingalint no_bidi_controls rule (security / unicode sanity): Flag Trojan-Source bidi override characters (U+202A to U+202E, U+2066 to U+2069).
59no_merge_conflict_markersSecurity / Unicode sanity, Text hygienealint no_merge_conflict_markers rule (security / unicode sanity): Flag <<<<<<<, =======, >>>>>>>, ||||||| markers at the start of a line, almost always...
60no_zero_width_charsSecurity / Unicode sanity, Encodingalint no_zero_width_chars rule (security / unicode sanity): Flag body-internal zero-width characters (U+200B, U+200C, U+200D, and non-leading U+FEFF).
61no_bomEncoding, Text hygienealint no_bom rule (encoding): Flag a leading UTF-8 / UTF-16 LE/BE / UTF-32 LE/BE byte-order mark.
62max_directory_depthStructurealint max_directory_depth rule (structure): Tree depth from repo root may not exceed max_depth.
63max_files_per_directoryStructurealint max_files_per_directory rule (structure): Per-directory fanout may not exceed max_files.
64no_empty_filesStructurealint no_empty_files rule (structure).
65no_case_conflictsPortable metadata, Namingalint no_case_conflicts rule (portable metadata): Flag paths that differ only by case (e.g. README.md + readme.md).
66no_illegal_windows_namesPortable metadata, Namingalint no_illegal_windows_names rule (portable metadata): Reject path components that Windows cannot represent.
67executable_bitUnix metadataalint executable_bit rule (unix metadata): Assert every file in scope either has the +x bit set (require: true) or does not (require: false).
68executable_has_shebangUnix metadata, Contentalint executable_has_shebang rule (unix metadata): Every file with +x set must begin with #!.
69no_symlinksUnix metadata, Portable metadata, Security / Unicode sanityalint no_symlinks rule (unix metadata): Flag tracked paths that are symbolic links.
70shebang_has_executableUnix metadata, Contentalint shebang_has_executable rule (unix metadata): Every file starting with #! must have +x set.
71changeset_requires_pathGit hygiene, Cross-filealint changeset_requires_path rule (git hygiene): The <since>...HEAD diff must add (git status A) at least one path matching add_glob...
72commented_out_codeGit hygiene, Contentalint commented_out_code rule (git hygiene): Heuristic detector for blocks of commented-out source code...
73git_blame_ageGit hygienealint git_blame_age rule (git hygiene): Fire on lines matching a regex whose git blame author-time is older than max_age_days.
74git_commit_author_allowlistGit hygiene, Security / Unicode sanityalint git_commit_author_allowlist rule (git hygiene): Assert every commit author in scope matches an allowed email and/or name pattern.
75git_commit_gpg_signedGit hygiene, Security / Unicode sanityalint git_commit_gpg_signed rule (git hygiene): Assert every commit in scope has a verifying signature (git verify-commit exits 0).
76git_commit_messageGit hygienealint git_commit_message rule (git hygiene): Validate commit-message shape via regex, max-subject-length, or required-body.
77git_commit_no_fixupGit hygienealint git_commit_no_fixup rule (git hygiene): Fail on residual fixup! / squash! / amend! commits left in scope, the ones git commit --fixup / --squash...
78git_commit_signed_offGit hygienealint git_commit_signed_off rule (git hygiene): Assert every commit in scope carries a DCO (Developer Certificate of Origin) Signed-off-by: trailer...
79git_commit_subject_matchesGit hygienealint git_commit_subject_matches rule (git hygiene): Each commit's subject line (the first line of its message) must match the matches: regex...
80git_no_denied_pathsGit hygiene, Security / Unicode sanityalint git_no_denied_paths rule (git hygiene): Fire when any tracked file matches a configured glob denylist.
81markdown_paths_resolveGit hygiene, Cross-filealint markdown_paths_resolve rule (git hygiene): Validate that backticked workspace paths in markdown files resolve to real files or directories in the repo.
82no_submodulesGit hygienealint no_submodules rule (git hygiene): Flag the presence of .gitmodules at the repo root, always, regardless of paths.
83pair_changed_togetherGit hygiene, Cross-filealint pair_changed_together rule (git hygiene): If the <since>...HEAD diff changes any path matching if_changed:, at least one path matching...
84command_idempotentCross-filealint command_idempotent rule (cross-file): Run a user-declared formatter/checker in its --check (idempotence) mode once: exit 0 => the tree is...
85cross_fileCross-filealint cross_file rule (cross-file): A source must hold a relation to one or more targets (or, for resolves, the filesystem).
86dir_containsCross-file, Structurealint dir_contains rule (cross-file): Every directory matching select: must contain files matching every glob in require.
87dir_only_containsCross-file, Structurealint dir_only_contains rule (cross-file): Every direct-child file of a directory matching select: must match at least one glob in allow.
88every_matching_hasCross-filealint every_matching_has rule (cross-file): For every file or directory matching select:, every nested rule under require: must be satisfied.
89file_graphCross-filealint file_graph rule (cross-file): Assemble the repo's file -> file reference graph and assert a global structural property the 1-level cross-file kinds...
90for_each_dirCross-filealint for_each_dir rule (cross-file): For every matching directory / file, evaluate a nested require: block with the entry as context.
91for_each_fileCross-filealint for_each_file rule (cross-file): For every matching directory / file, evaluate a nested require: block with the entry as context.
92for_each_matchCross-filealint for_each_match rule (cross-file): For each line matching select (a regex), the line must satisfy the nested require: predicates.
93generated_file_freshCross-file, Security / Unicode sanityalint generated_file_fresh rule (cross-file): A committed artefact must equal what a declared command generator produces, in one of two modes...
94import_gateCross-file, Security / Unicode sanityalint import_gate rule (cross-file): Forbid imports whose extracted target matches a forbid regex, within the paths scope, an architectural import...
95key_parityCross-filealint key_parity rule (cross-file): One reference file and a glob of peers must declare the same key set.
96markdown_fragments_resolveCross-file, Contentalint markdown_fragments_resolve rule (cross-file): Require every live local Markdown link fragment to name a heading anchor in its resolved target document.
97markdown_links_resolveCross-file, Contentalint markdown_links_resolve rule (cross-file): Validate live Markdown link, image, and reference-definition destinations against the repository tree.
98ordered_blockCross-file, Text hygienealint ordered_block rule (cross-file): The lines between a start / end marker pair must stay sorted (and, with unique: true, free of duplicates) under...
99pairCross-filealint pair rule (cross-file): For every file matching primary, a file matching the partner template must exist.
100pair_hashCross-file, Security / Unicode sanityalint pair_hash rule (cross-file): The algorithm digest (sha256 default / sha512) of every file matching source must appear in the single target file...
101registry_paths_resolveCross-filealint registry_paths_resolve rule (cross-file): A manifest file enumerates path entries; each must resolve to an on-disk artefact.
102unique_byCross-filealint unique_by rule (cross-file): No two files matching select may share the value of key...
103commandPlugin (tier 1)alint command rule (plugin (tier 1)): Shell out to an external CLI per matched file.