Qu'est-ce que rumdl ?
rumdl est un linter et formateur Markdown écrit en Rust. Il implémente le jeu de règles que tout le monde connaît déjà par markdownlint, les contrôles MD001 à MD059 sur les niveaux de titre, l'indentation des listes, la longueur des lignes, le style des blocs de code, la syntaxe des liens et les espaces en fin de ligne, et il les passe sur une arborescence de documentation en millisecondes plutôt qu'en secondes. La plupart de ces règles ont une correction, si bien que rumdl check --fix répare ce qu'il signale au lieu de vous laisser une liste, et rumdl fmt reformate un fichier de bout en bout. La configuration tient dans un fichier rumdl.toml ou dans une table [tool.rumdl] de pyproject.toml, un .markdownlint.json existant se convertit avec rumdl import, et rumdl server parle le Language Server Protocol : le même binaire souligne donc les problèmes dans votre éditeur. Voyez-le comme ce que Ruff est à Python, appliqué au Markdown.
rumdl.toml écrit d'après la documentation du jour peut nommer des options qu'une compilation plus ancienne ignore en silence. Ni Debian ni Ubuntu ne l'empaquettent, donc une compilation à jour n'est pas un confort ici : c'est la seule façon de l'avoir via apt.
⚡ Fonctionnalités clés de rumdl
🏎️ Les règles markdownlint à la vitesse de Rust
Les contrôles familiers MD001 à MD059, exécutés par un binaire compilé sans interpréteur à démarrer. Une arborescence de documentation qui occupait une étape de CI à elle seule passe assez vite pour tourner à chaque enregistrement.
🔧 Des corrections, pas seulement des reproches
rumdl check --fix répare les infractions qui ont une correction sûre : ponctuation des titres, marqueurs et indentation des listes, lignes vides autour des blocs, espaces en fin de ligne, style des délimiteurs de code, sur place et sur toute l'arborescence.
🖊️ Un formateur aussi
rumdl fmt reformate le Markdown comme le ferait un formateur de code : la forme d'un fichier cesse d'être un commentaire de revue. --check en fait un garde-fou de CI qui ne modifie rien.
🔌 L'intégration à l'éditeur incluse
rumdl server est un Language Server : VS Code, Neovim, Helix et Zed reçoivent les mêmes diagnostics et les mêmes corrections que la ligne de commande, depuis l'unique binaire installé.
♻️ Votre configuration markdownlint conservée
rumdl import lit un .markdownlint.json ou un .markdownlintrc existant et écrit le rumdl.toml équivalent : basculer un dépôt tient en une commande, pas en un audit des règles.
📖 Des règles qui s'expliquent elles-mêmes
rumdl rule liste tous les contrôles et rumdl explain MD013 en décrit un, avec ce qu'il corrige et comment le configurer : personne n'a plus à deviner ce que voulait dire un code dans un journal de CI.
apt upgrade vous garde sur la dernière version.
📦 Installation depuis deb.griffo.io
Étape 1 : ajouter le dépôt
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo apt update🆓 Il existe un miroir gratuit pour toujours. deb-free.griffo.io distribue des paquets gratuitement pour toujours — sans compte, sans abonnement, au plus 2 mois derrière l'upstream, correctifs de sécurité immédiats. Il contient aujourd'hui cliamp, Ghostty, lazydocker, Oh My Posh et Zed ; rumdl n'en fait pas partie, le dépôt ci-dessus reste donc le seul moyen de l'installer — demandez-le et il pourra y être ajouté.
🧩 À propos de l'option extrepo. extrepo est l'outil de Debian pour les dépôts externes : il écrit le fichier de sources et installe la clé de signature à votre place, après l'avoir vérifiée face à des métadonnées signées. Ce dépôt y est enregistré sous le nom griffo, et le miroir gratuit à vie sous griffo-free ; sur Debian (bookworm, trixie, forky et sid), les commandes ci-dessus constituent donc toute l'installation.
extrepo ne met en place que le fichier de sources et la clé : les identifiants d'un abonnement vont toujours dans /etc/apt/auth.conf.d/deb.griffo.io.conf. Ubuntu n'est pas couvert, car extrepo ne publie de métadonnées que pour les suites Debian : utilisez-y les commandes avec sudo ou en root.
Étape 2 : installer rumdl
# Installer le dernier rumdl
sudo apt install rumdl
# Vérifier l'installation, le binaire est installé dans
# /usr/bin/rumdl
rumdl --version# Installer le dernier rumdl
apt install rumdl
# Vérifier l'installation, le binaire est installé dans
# /usr/bin/rumdl
rumdl --versionÉtape 3 : premier lancement
# Analyser tous les fichiers Markdown sous le répertoire
# courant
rumdl check .
# Corriger tout ce qui a une correction sûre
rumdl check --fix .
# Écrire un rumdl.toml de départ que vous pourrez modifier
rumdl init
# Voir ce que signifie un code de règle
rumdl explain MD013
# Toutes les sous-commandes et toutes les options
rumdl --help🎯 Exemples d'utilisation de base
Vérifier et corriger :
# Un fichier, un répertoire ou un motif
rumdl check README.md
rumdl check docs/
rumdl check "**/*.md"
# Corriger sur place, puis afficher ce qu'il reste
rumdl check --fix .
# Désactiver une règle trop bavarde le temps d'un passage
rumdl check --disable MD013 .
# N'exécuter que les règles qui vous intéressent sur le
# moment
rumdl check --enable MD001,MD009,MD047 .
# Sortie exploitable par une étape d'annotation en CI
rumdl check --output-format json .Formater :
# Reformater les fichiers sur place
rumdl fmt docs/
# Échouer sans rien écrire, la forme utilisée en
# intégration continue
rumdl fmt --check docs/
# Voir les changements avant de les accepter
rumdl fmt --diff docs/Configuration et règles :
# Créer rumdl.toml dans ce dépôt
rumdl init
# Convertir une configuration markdownlint existante
rumdl import .markdownlint.json
# Quelle configuration s'applique vraiment, et d'où elle vient
rumdl config
# Lister toutes les règles, puis en lire une en entier
rumdl rule
rumdl explain MD024
# Complétions du shell, écrites là où votre shell les lit
rumdl completions bash | sudo tee /etc/bash_completion.d/rumdl > /dev/null# Créer rumdl.toml dans ce dépôt
rumdl init
# Convertir une configuration markdownlint existante
rumdl import .markdownlint.json
# Quelle configuration s'applique vraiment, et d'où elle vient
rumdl config
# Lister toutes les règles, puis en lire une en entier
rumdl rule
rumdl explain MD024
# Complétions du shell, écrites là où votre shell les lit
rumdl completions bash | tee /etc/bash_completion.d/rumdl > /dev/null🔧 Intégrations
rumdl est fait pour prendre la place que markdownlint occupe déjà :
- Votre éditeur :
rumdl serverest un Language Server, donc Neovim, Helix, VS Code et Zed affichent les diagnostics dans le texte et appliquent les corrections comme actions de code - Les configurations markdownlint :
rumdl importtransforme.markdownlint.jsonou.markdownlintrcenrumdl.toml, et les codes de règles sont ceux dont votre équipe débat déjà - pyproject.toml : une table
[tool.rumdl]garde les réglages à côté de votre configuration Ruff et pytest au lieu d'ajouter un fichier caché de plus - CI et pre-commit :
rumdl check .sort avec un code non nul en cas d'infraction etrumdl fmt --checkverrouille la mise en forme, sans aucun runtime Node ou Python à installer d'abord sur l'agent - Générateurs de sites statiques : les sources de MkDocs, Hugo, Docusaurus et mdBook sont du Markdown ordinaire, le même contrôle passe donc dessus avant la construction
🚀 Pourquoi choisir deb.griffo.io ?
- Debian officiel : n'empaquette pas rumdl :
apt install rumdléchoue sur un système standard - npm ou pip : fonctionne, mais lie un contrôle Markdown à un environnement Node ou Python et le réinstalle dans chaque projet et chaque image de CI
- Compiler depuis les sources : à jour, mais une chaîne Rust sur chaque machine et un binaire dont apt ignore tout
- deb.griffo.io: dernière version avec mises à jour automatiques
- ✅ La seule source apt : rumdl n'est ni dans les dépôts Debian ni dans ceux d'Ubuntu ; ce dépôt empaquette la release officielle upstream
- ✅ Pour tout le système, sans runtime : un seul
/usr/bin/rumdlpour tous les dépôts de la machine, sans npm install et sans virtualenv derrière - ✅ Mises à jour automatiques : les paquets sont mis à jour quelques heures après chaque version upstream, les nouvelles règles et corrections arrivent donc avec un simple
apt upgrade - ✅ Paquet complet : la compilation Linux officielle upstream installée dans
/usr/bin/rumdl, rien d'ajouté, rien de rustiné - ✅ Dépendances honnêtes : un binaire Rust lié statiquement qui n'a besoin de rien d'autre pour analyser, corriger, formater ou servir
- ✅ Deux architectures : amd64 et arm64, le même paquet couvre donc votre portable, vos serveurs et vos agents de construction arm64
- ✅ Multi-distribution : fonctionne sur Bookworm, Trixie, Forky et Sid
- ✅ Maintenance simple : des mises à jour avec les commandes apt habituelles
📦 Dépôt de construction du paquet
Les paquets Debian sont construits et maintenus automatiquement dans ce dépôt GitHub :
- 📐 rumdl-debian - Constructions des dernières versions
🔗 Paquets associés
Également disponibles sur deb.griffo.io :
- Ruff - La même idée pour les sources Python, un linter et un formateur Rust en un seul binaire
- uv - L'empaquetage Python à la vitesse de Rust, pour les projets dont vous analysez la documentation
- Neovim - Un éditeur qui saura parler à
rumdl serveret afficher les diagnostics à la frappe - ripgrep - Pour les recherches dans la même arborescence Markdown auxquelles un linter ne répond pas
--fix, et obtenir dans votre éditeur les mêmes avertissements que ceux que la construction vous donnera.