Was ist rumdl?
rumdl ist ein Markdown-Linter und -Formatierer, geschrieben in Rust. Es setzt genau das Regelwerk um, das alle schon von markdownlint kennen, die Prüfungen MD001 bis MD059 für Überschriftenebenen, Listeneinrückung, Zeilenlänge, den Stil von Codeblöcken, Linksyntax und Leerzeichen am Zeilenende, und es lässt sie in Millisekunden statt in Sekunden über einen ganzen Dokumentationsbaum laufen. Zu den meisten dieser Regeln gehört eine Korrektur, rumdl check --fix repariert also, was es meldet, statt dir nur eine Liste zu hinterlassen, und rumdl fmt formatiert eine Datei komplett neu. Konfiguriert wird über eine rumdl.toml oder eine [tool.rumdl]-Tabelle in der pyproject.toml, eine vorhandene .markdownlint.json wandelt rumdl import um, und rumdl server spricht das Language Server Protocol, dieselbe Binärdatei unterstreicht Probleme also auch in deinem Editor. Denk an das, was Ruff für Python ist, angewandt auf Markdown.
rumdl.toml, die gegen die heutige Dokumentation geschrieben ist, nennt womöglich Optionen, die ein älterer Build stillschweigend ignoriert. Weder Debian noch Ubuntu paketieren rumdl überhaupt, ein aktueller Build ist hier also kein Luxus, sondern der einzige Weg, es über apt zu bekommen.
⚡ Hauptfunktionen von rumdl
🏎️ markdownlint-Regeln in Rust-Geschwindigkeit
Die vertrauten Prüfungen MD001 bis MD059, ausgeführt von einer kompilierten Binärdatei, hinter der kein Interpreter erst starten muss. Ein Dokumentationsbaum, der in der CI einen eigenen Lint-Schritt brauchte, ist schnell genug für jedes Speichern.
🔧 Korrekturen statt bloßer Beschwerden
rumdl check --fix repariert die Verstöße, für die es eine sichere Korrektur gibt: Satzzeichen in Überschriften, Listenzeichen und Einrückung, Leerzeilen um Blöcke, Leerzeichen am Zeilenende, den Stil von Codeblöcken, an Ort und Stelle im ganzen Baum.
🖊️ Auch ein Formatierer
rumdl fmt formatiert Markdown so um, wie es ein Code-Formatierer tut, die Form einer Datei ist damit kein Review-Kommentar mehr. Mit --check wird daraus ein CI-Gate, das selbst nichts verändert.
🔌 Editor-Anbindung eingebaut
rumdl server ist ein Language Server, VS Code, Neovim, Helix und Zed bekommen also dieselben Diagnosen und dieselben Korrekturen wie die Kommandozeile, aus der einen Binärdatei, die du installiert hast.
♻️ Deine markdownlint-Konfiguration bleibt
rumdl import liest eine vorhandene .markdownlint.json oder .markdownlintrc und schreibt die passende rumdl.toml, ein Repository umzustellen ist damit ein Befehl und keine Regelinventur.
📖 Regeln, die sich selbst erklären
rumdl rule listet jede Prüfung auf und rumdl explain MD013 beschreibt eine davon, mitsamt dem, was sie korrigiert, und dem, wie man sie einstellt, niemand muss also raten, was ein Code im CI-Log bedeutet hat.
apt upgrade hält dich auf der neuesten Version.
📦 Installation aus deb.griffo.io
Schritt 1: Repository hinzufügen
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🆓 Es gibt einen für immer kostenlosen Spiegel. deb-free.griffo.io liefert Pakete für immer kostenlos — ohne Konto, ohne Abo, höchstens 2 Monate hinter Upstream, Sicherheitsfixes sofort. Derzeit enthält er cliamp, Ghostty, lazydocker, Oh My Posh und Zed; rumdl ist nicht dabei, deshalb führt heute nur das Repository oben dorthin — auf Anfrage kann es aufgenommen werden.
🧩 Zur extrepo-Option. extrepo ist Debians eigenes Werkzeug für externe Repositories: Es legt die Sources-Datei an und installiert den Signaturschlüssel für dich, nachdem es ihn gegen signierte Metadaten geprüft hat. Dieses Repository ist dort als griffo registriert, der für immer kostenlose Spiegel als griffo-free. Unter Debian (bookworm, trixie, forky und sid) sind die Befehle oben damit die gesamte Einrichtung.
extrepo richtet nur die Sources-Datei und den Schlüssel ein; die Zugangsdaten eines Abos gehören weiterhin in /etc/apt/auth.conf.d/deb.griffo.io.conf. Ubuntu wird nicht abgedeckt, denn extrepo veröffentlicht Metadaten nur für Debian-Suites: dort nimmst du die Befehle mit sudo oder als root.
Schritt 2: rumdl installieren
# Neuestes rumdl installieren
sudo apt install rumdl
# Installation prüfen
rumdl --version# Neuestes rumdl installieren
apt install rumdl
# Installation prüfen
rumdl --versionSchritt 3: Der erste Start
# Jede Markdown-Datei unterhalb des aktuellen Verzeichnisses prüfen
rumdl check .
# Alles korrigieren, wofür es eine sichere Korrektur gibt
rumdl check --fix .
# Eine Startkonfiguration rumdl.toml schreiben, die du danach
# nach deinem Geschmack anpassen kannst
rumdl init
# Nachsehen, was ein Regelcode bedeutet
rumdl explain MD013
# Alle Unterbefehle und Optionen
rumdl --help🎯 Grundlegende Verwendungsbeispiele
Prüfen und korrigieren:
# Eine Datei, ein Verzeichnis oder ein Glob-Muster
rumdl check README.md
rumdl check docs/
rumdl check "**/*.md"
# An Ort und Stelle korrigieren und dann zeigen, was übrig bleibt
rumdl check --fix .
# Eine zu laute Regel für diesen Lauf abschalten
rumdl check --disable MD013 .
# Nur die Regeln laufen lassen, die dich gerade interessieren
rumdl check --enable MD001,MD009,MD047 .
# Maschinenlesbare Ausgabe für einen Schritt in der CI, der
# daraus Annotationen macht
rumdl check --output-format json .Formatieren:
# Die Dateien an Ort und Stelle neu formatieren
rumdl fmt docs/
# Fehlschlagen, ohne etwas zu schreiben, die Form für die CI
rumdl fmt --check docs/
# Die Änderungen ansehen, bevor du sie übernimmst
rumdl fmt --diff docs/Konfiguration und Regeln:
# Eine rumdl.toml in diesem Repository anlegen
rumdl init
# Eine markdownlint-Konfiguration umwandeln, die es im
# Repository schon gibt
rumdl import .markdownlint.json
# Welche Konfiguration tatsächlich gilt und woher sie stammt
rumdl config
# Alle Regeln auflisten und dann eine davon ganz lesen
rumdl rule
rumdl explain MD024
# Shell-Vervollständigungen dorthin schreiben, wo deine
# Shell sie liest
rumdl completions bash | sudo tee /etc/bash_completion.d/rumdl > /dev/null# Eine rumdl.toml in diesem Repository anlegen
rumdl init
# Eine markdownlint-Konfiguration umwandeln, die es im
# Repository schon gibt
rumdl import .markdownlint.json
# Welche Konfiguration tatsächlich gilt und woher sie stammt
rumdl config
# Alle Regeln auflisten und dann eine davon ganz lesen
rumdl rule
rumdl explain MD024
# Shell-Vervollständigungen dorthin schreiben, wo deine
# Shell sie liest
rumdl completions bash | tee /etc/bash_completion.d/rumdl > /dev/null🔧 Werkzeug-Integrationen
rumdl ist dafür gebaut, sich genau dort einzufügen, wo markdownlint schon sitzt:
- Dein Editor:
rumdl serverist ein Language Server, Neovim, Helix, VS Code und Zed zeigen die Diagnosen also direkt im Text und wenden die Korrekturen als Code-Aktionen an - markdownlint-Konfigurationen:
rumdl importmacht aus.markdownlint.jsonoder.markdownlintrceinerumdl.toml, und die Regelcodes sind dieselben, über die dein Team ohnehin schon streitet - pyproject.toml: eine
[tool.rumdl]-Tabelle hält die Einstellungen neben deiner Ruff- und pytest-Konfiguration, statt noch eine Punktdatei hinzuzufügen - CI und pre-commit:
rumdl check .endet bei Verstößen mit einem Fehlercode undrumdl fmt --checksichert die Formatierung ab, ohne dass auf dem Agenten erst eine Node- oder Python-Laufzeit installiert werden müsste - Statische Website-Generatoren: die Doku-Quellen von MkDocs, Hugo, Docusaurus und mdBook sind gewöhnliches Markdown, dieselbe Prüfung läuft also darüber, bevor der Build es tut
🚀 Warum deb.griffo.io?
- Offizielles Debian: paketiert rumdl nicht,
apt install rumdlschlägt auf einem Standardsystem fehl - npm oder pip: funktioniert, bindet eine Markdown-Prüfung aber an eine Node- oder Python-Umgebung und installiert sie in jedem Projekt und jedem CI-Image neu
- Selbst aus dem Quelltext bauen: aktuell, aber eine Rust-Toolchain auf jeder Maschine und eine Binärdatei, von der apt nichts weiß
- deb.griffo.io: neueste Version mit automatischen Updates
- ✅ Die einzige apt-Quelle: rumdl ist weder in den Debian- noch in den Ubuntu-Archiven; dieses Repository paketiert das offizielle Upstream-Release
- ✅ Systemweit, ohne Laufzeitumgebung: ein
/usr/bin/rumdlfür jedes Repository auf der Maschine, ohne npm install und ohne virtualenv dahinter - ✅ Automatische Updates: Pakete werden innerhalb von Stunden nach dem Upstream-Release aktualisiert, neue Regeln und Korrekturen kommen also mit einem schlichten
apt upgrade - ✅ Vollständiges Paket: der offizielle Upstream-Linux-Build als
/usr/bin/rumdl, nichts hinzugefügt, nichts gepatcht - ✅ Ehrliche Abhängigkeiten: eine statisch gelinkte Rust-Binärdatei, die nichts weiter braucht, um zu prüfen, zu korrigieren, zu formatieren oder als Server zu laufen
- ✅ Zwei Architekturen: amd64 und arm64, dasselbe Paket deckt damit deinen Laptop, deine Server und deine arm64-Build-Agenten ab
- ✅ Multi-Distribution: läuft auf Bookworm, Trixie, Forky und Sid
- ✅ Einfache Wartung: Updates mit den üblichen apt-Befehlen
📦 Paket-Build-Repository
Die Debian-Pakete werden in diesem GitHub-Repository automatisch gebaut und gepflegt:
- 📐 rumdl-debian - Builds der neuesten Releases
🔗 Verwandte Pakete
Ebenfalls verfügbar über deb.griffo.io:
- Ruff - Dieselbe Idee für Python-Quelltext, ein Linter und ein Formatierer in einer Rust-Binärdatei
- uv - Rust-schnelles Python-Packaging, für die Projekte, deren Doku du gerade prüfst
- Neovim - Ein Editor, der mit
rumdl serverspricht und die Diagnosen schon beim Tippen zeigt - ripgrep - Für die Suchen über denselben Markdown-Baum, die ein Linter nicht beantworten kann
--fix-Lauf beseitigen, und im Editor dieselben Warnungen bekommen, die dir der Build geben wird.