Kinds, families, and categories
Every rule names a kind: the built-in check it runs. alint ships 94 distinct kinds (105 counting aliases), and it organizes them two ways at once. Each kind has one home family, and each kind is tagged into one or more categories. Same thirteen names, two different relationships.
Kinds are the checks
Section titled “Kinds are the checks”A kind is the built-in implementation a rule invokes: file_exists, no_bidi_controls, filename_case, json_schema_passes, and 90 more. Every rule declares exactly one, and the kind is what decides which extra fields the rule accepts (a file_header takes a pattern, a file_max_size takes a byte limit). A handful of kinds have aliases, second names for the same implementation, which is why the catalog counts 105 entries for 94 distinct checks.
Families are the home group
Section titled “Families are the home group”The 94 kinds are partitioned into 13 families by mechanism: Existence, Content, Naming, Structure, Cross-file, Security / Unicode sanity, Text hygiene, Encoding, Portable metadata, Unix metadata, Git hygiene, Structured query, and Plugin (tier 1). Every kind belongs to exactly one family, so the families are a clean table of contents for the catalog. alint rules list prints the kinds grouped this way.
Categories are cross-cutting tags
Section titled “Categories are cross-cutting tags”The 13 categories carry the same thirteen names, but the relationship is many-to-many: a kind can be tagged with several. A kind’s home family is always its primary category, and 32 kinds carry extra tags on top. no_bidi_controls lives in the Security family but is also tagged encoding; dir_contains lives in Cross-file but is also tagged structure. That is the whole distinction: family answers “where does this kind live?” (one answer), category answers “what concerns does it touch?” (often several). Categories are what you filter on when you want every check that bears on, say, security, regardless of which family implements it.
In practice
Section titled “In practice”Browse the catalog by family, or filter it by category:
alint rules list # every kind alint ships, grouped by familyalint rules list --category security-unicode-sanity # only kinds in that categoryalint list --category security-unicode-sanity # only YOUR configured rules in itAn unknown category slug fails fast with the list of the thirteen valid ones, so a typo never silently returns nothing.
Going deeper
Section titled “Going deeper”- Rules is the full reference for every kind, grouped by family, with each kind’s fields and examples.
- The config model shows how a
kindsits inside the rule record.