ResilientLang docsDeveloper documentation (draft, product name is a placeholder)

rl-lint

node integrations/ci/bin/rl-lint.mjs [paths] (default .; it skips node_modules, dist, .next and similar). It is heuristic and line-based and follows the extraction rules (EXTRACTION_SPEC.md v1). Warnings do not fail the run unless you pass --strict or --max-warnings; RL001 is an error.

RuleFindsSpec section
RL001 (error)a committed rl_sec_ key (never printed in full)
RL101translate="false" and class="no-translate": markers the extractor ignores2
RL102words inside <noscript> or <template>2
RL103words in SVG <text>2
RL104<img> without alt7
RL105words in attributes that are not extracted (data-tooltip, aria-description, <option label>, meta keywords, ...)7
RL106a word split by an inline element (Hel<span>lo</span>)3
RL107text assigned at runtime from a literal (textContent =, alert()), which build-time prerender cannot see
RL108a sentence built with + or ${}5
RL109several unnumbered %s or %d5
RL110words in CSS content:
RL111<html> without lang

The extractor honours translate="no" and the class notranslate; RL101 flags the look-alike markers it does not honour (see Strings and keys).

Silencing and formats#

Silence one finding with rl-lint-disable-next-line RL105 in a comment on the line above (or rl-lint-disable-line), or a whole rule with --ignore RL104. Formats: --format text|github|json. In CI: node integrations/ci/bin/rl-lint.mjs . --format github.

Hooks#

lint/git-pre-commit.sh (a plain git hook for staged files), lint/pre-commit-config.example.yaml (a local hook for pre-commit.com) and lint/pre-commit-hooks.yaml (a definition for a future hook repository). The hook checks the working-tree copy of staged files.

Known limits#

No real HTML or JavaScript parsing, so templates with unusual syntax can produce false positives.