Need
Markdown linting currently relies on markdownlint-cli2, which is run through
npx and therefore drags a Node.js/npm toolchain into what is otherwise a
Python project. This adds setup friction locally and in CI (the dedicated
markdown-lint job), and it is slower than the newer Rust-based alternatives.
We want to move markdown linting to rumdl, a
fast Rust-based markdown linter, to remove the Node dependency for this check,
speed up linting, and align markdown tooling with the project's preference for
self-contained, Rust-backed tooling (as with ruff).
Context
markdownlint is wired into several places today, all of which are affected:
.markdownlint-cli2.yaml and docs/.markdownlint.yaml — configuration
tasks.py — lint_markdownlint task and the docs-generate --fix step
.github/workflows/ci.yml — the markdown-lint job
(DavidAnson/markdownlint-cli2-action)
AGENTS.md / .agents/commands/pre-ci.md — contributor-facing references
The existing markdown style rules (see AGENTS.md "Markdown style") and the
current set of linted globs/exclusions should be preserved through the switch.
The rumdl configuration should live in pyproject.toml rather than a separate
config file, keeping tooling config consolidated with the rest of the project.
References
Need
Markdown linting currently relies on
markdownlint-cli2, which is run throughnpxand therefore drags a Node.js/npm toolchain into what is otherwise aPython project. This adds setup friction locally and in CI (the dedicated
markdown-lintjob), and it is slower than the newer Rust-based alternatives.We want to move markdown linting to rumdl, a
fast Rust-based markdown linter, to remove the Node dependency for this check,
speed up linting, and align markdown tooling with the project's preference for
self-contained, Rust-backed tooling (as with ruff).
Context
markdownlintis wired into several places today, all of which are affected:.markdownlint-cli2.yamlanddocs/.markdownlint.yaml— configurationtasks.py—lint_markdownlinttask and the docs-generate--fixstep.github/workflows/ci.yml— themarkdown-lintjob(
DavidAnson/markdownlint-cli2-action)AGENTS.md/.agents/commands/pre-ci.md— contributor-facing referencesThe existing markdown style rules (see
AGENTS.md"Markdown style") and thecurrent set of linted globs/exclusions should be preserved through the switch.
The rumdl configuration should live in
pyproject.tomlrather than a separateconfig file, keeping tooling config consolidated with the rest of the project.
References
.github/workflows/ci.yml(markdown-lint)