rumdl とは
rumdl は Rust で書かれた Markdown のリンター兼フォーマッターです。markdownlint で誰もが知っているルールセット、つまり見出しレベル、リストのインデント、行の長さ、コードフェンスの書き方、リンク記法、行末の空白を見る MD001 から MD059 までのチェックをそのまま実装し、それをドキュメントツリー全体に対して秒ではなくミリ秒で走らせます。ほとんどのルールには修正が付いているので、rumdl check --fix は一覧を残す代わりに報告した箇所を直しますし、rumdl fmt はファイルをまるごと整形し直します。設定は rumdl.toml か pyproject.toml の [tool.rumdl] テーブル、すでにある .markdownlint.json は rumdl import で変換でき、rumdl server は Language Server Protocol を話すので、同じバイナリがエディタの中でも問題に下線を引きます。Ruff が Python にしていることを、そのまま Markdown でやるもの、と考えてください。
rumdl.toml は、古いビルドが黙って無視する項目を並べているかもしれません。Debian も Ubuntu も rumdl をまったくパッケージ化していないので、最新ビルドはここでは贅沢ではなく、apt で手に入れる唯一の方法です。
⚡ rumdl の主な機能
🏎️ markdownlint のルールを Rust の速度で
おなじみの MD001 から MD059 までのチェックを、起動するインタプリタを持たないコンパイル済みバイナリが走らせます。CI で専用のリンステップを構えていたドキュメントツリーが、保存のたびに回せる速さで終わります。
🔧 文句を言うだけでなく、直す
rumdl check --fix は安全な修正のある違反を直します。見出しの句読点、リストの記号とインデント、ブロック前後の空行、行末の空白、フェンスの書き方を、ツリー全体でその場で。
🖊️ フォーマッターでもある
rumdl fmt はコードフォーマッターと同じように Markdown を整形し直すので、ファイルの見た目がレビューコメントになることはなくなります。--check を付ければ、何も書き換えない CI のゲートです。
🔌 エディタ連携は最初から
rumdl server は Language Server なので、VS Code、Neovim、Helix、Zed が、いま入れた 1 つのバイナリからコマンドラインとまったく同じ診断と修正を受け取ります。
♻️ markdownlint の設定はそのまま
rumdl import はすでにある .markdownlint.json や .markdownlintrc を読んで、対応する rumdl.toml を書き出します。リポジトリの乗り換えはルールの棚卸しではなく、コマンド 1 つです。
📖 自分を説明できるルール
rumdl rule がすべてのチェックを並べ、rumdl explain MD013 がひとつを、何を直すのか、どう設定するのかまで説明します。CI のログに出たコードの意味を誰かが推測する必要はありません。
apt upgrade を実行するだけで、常に最新版を使い続けられます。
📦 deb.griffo.io からインストールする
ステップ 1: リポジトリを追加する
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🆓 ずっと無料のミラーがあります。 deb-free.griffo.io は、アカウントもサブスクリプションもなしでパッケージをずっと無料で配布しています。上流より最大2か月遅れ、セキュリティ修正は即座に公開されます。現在収録しているのは cliamp、Ghostty、lazydocker、Oh My Posh と Zed です。rumdl は含まれていないため、今日入手する方法は上のリポジトリだけですが、ご要望があれば追加できます。
🧩 extrepo オプションについて。 extrepo は外部リポジトリを扱う Debian 標準のツールです。署名済みメタデータと照合して鍵を検証したうえで、sources ファイルの作成と署名鍵のインストールを代わりに行います。このリポジトリは griffo、ずっと無料のミラーは griffo-free という名前で登録されているので、Debian(bookworm、trixie、forky、sid)では上のコマンドだけで設定は完了です。
extrepo が用意するのは sources ファイルと鍵だけなので、サブスクリプションの認証情報は引き続き /etc/apt/auth.conf.d/deb.griffo.io.conf に書きます。extrepo は Debian のスイート向けメタデータしか公開していないため Ubuntu は対象外です。Ubuntu では sudo または root のコマンドを使ってください。
ステップ 2: rumdl をインストールする
# 最新の rumdl をインストール。単一の静的バイナリなので、
# Node も Python も要りません
sudo apt install rumdl
# インストールを確認。コマンドラインもエディタも、
# この 1 つのバイナリを使います
rumdl --version# 最新の rumdl をインストール。単一の静的バイナリなので、
# Node も Python も要りません
apt install rumdl
# インストールを確認。コマンドラインもエディタも、
# この 1 つのバイナリを使います
rumdl --versionステップ 3: 最初の実行
# カレントディレクトリ以下の Markdown をすべてリントする
rumdl check .
# 安全な修正があるものは、まとめて直す
rumdl check --fix .
# 編集の出発点になる rumdl.toml を書き出す
rumdl init
# ルールコードが何を意味するのかを読む
rumdl explain MD013
# サブコマンドとフラグの一覧
rumdl --help🎯 基本的な使用例
チェックと修正:
# ファイル 1 つ、ディレクトリ、グロブのいずれでも
rumdl check README.md
rumdl check docs/
rumdl check "**/*.md"
# その場で直してから、残ったものを見る
rumdl check --fix .
# うるさいルールを 1 つ、この実行の間だけ止める
rumdl check --disable MD013 .
# いま気にしているルールだけを走らせる
rumdl check --enable MD001,MD009,MD047 .
# CI の注釈ステップにそのまま渡せる、
# 機械可読な出力
rumdl check --output-format json .整形する:
# ファイルをその場で整形し直す
rumdl fmt docs/
# 何も書き込まないまま違反で終了する、
# CI で使うのはこちら
rumdl fmt --check docs/
# 受け入れる前に、変わる中身を確かめる
rumdl fmt --diff docs/設定とルール:
# このリポジトリに rumdl.toml を作る
rumdl init
# すでにある markdownlint の設定を変換する
rumdl import .markdownlint.json
# いま実際に効いている設定と、その出どころ
rumdl config
# ルールを全部並べてから、ひとつを詳しく読む
rumdl rule
rumdl explain MD024
# シェル補完を、シェルが読む場所へ書き出す
rumdl completions bash | sudo tee /etc/bash_completion.d/rumdl > /dev/null# このリポジトリに rumdl.toml を作る
rumdl init
# すでにある markdownlint の設定を変換する
rumdl import .markdownlint.json
# いま実際に効いている設定と、その出どころ
rumdl config
# ルールを全部並べてから、ひとつを詳しく読む
rumdl rule
rumdl explain MD024
# シェル補完を、シェルが読む場所へ書き出す
rumdl completions bash | tee /etc/bash_completion.d/rumdl > /dev/null🔧 ツール連携
rumdl は、markdownlint がすでに座っている場所にそのまま収まるよう作られています:
- あなたのエディタ:
rumdl serverは Language Server なので、Neovim、Helix、VS Code、Zed が診断をその場に表示し、修正をコードアクションとして適用します - markdownlint の設定:
rumdl importが.markdownlint.jsonや.markdownlintrcをrumdl.tomlに変え、ルールコードはチームがいつも議論しているものと同じです - pyproject.toml:
[tool.rumdl]テーブルなら、ドットファイルを増やさずに Ruff や pytest の設定の隣に置いておけます - CI と pre-commit:
rumdl check .は違反があれば非ゼロで終了し、rumdl fmt --checkが整形を止めます。エージェントに Node や Python のランタイムを先に入れる必要はありません - 静的サイトジェネレーター: MkDocs、Hugo、Docusaurus、mdBook のドキュメント原稿はただの Markdown なので、ビルドの前に同じチェックがそのまま走ります
🚀 deb.griffo.io を選ぶ理由
- 公式 Debian: rumdl をパッケージ化していないので、素のシステムでは
apt install rumdlが失敗します - npm や pip: 動きはしますが、Markdown のチェックを Node や Python の環境に縛りつけ、プロジェクトごと、CI イメージごとに入れ直すことになります
- ソースからビルド: 最新にはなりますが、マシンごとに Rust のツールチェーンが要り、apt が知らないバイナリが残ります
- deb.griffo.io: 最新版を自動更新でお届け
- ✅ apt で入る唯一の場所: rumdl は Debian にも Ubuntu にも収録されていません。このリポジトリが上流公式のリリースをパッケージ化しています
- ✅ システム全体に、ランタイム不要: マシン上のどのリポジトリからも同じ
/usr/bin/rumdlを使えます。裏に npm install も仮想環境もありません - ✅ 自動更新: 上流のリリースから数時間以内にパッケージを更新するので、新しいルールと修正がただの
apt upgradeで届きます - ✅ 完全なパッケージ: 上流公式の Linux ビルドを
/usr/bin/rumdlとして導入。足しても当ててもいません - ✅ 正直な依存関係: 静的リンクの Rust バイナリなので、チェックも修正も整形もサーバーも、ほかに何も入れずに動きます
- ✅ 2 つのアーキテクチャ: amd64 と arm64。同じパッケージがノート PC もサーバーも arm64 のビルドエージェントも面倒を見ます
- ✅ マルチディストリビューション: Bookworm、Trixie、Forky、Sid で動作
- ✅ 手間のかからない運用: 更新は通常の apt コマンドだけ
📦 パッケージのビルドリポジトリ
Debian パッケージは、この GitHub リポジトリで自動的にビルド・管理されています:
- 📐 rumdl-debian - 最新リリースのビルド
🔗 関連パッケージ
deb.griffo.io では、こちらも配布しています:
- Ruff - 同じ考え方を Python のソースに。Rust 製のリンターとフォーマッターが 1 つのバイナリに
- uv - Rust 並みに速い Python のパッケージ管理。ドキュメントをリントしているそのプロジェクトのために
- Neovim -
rumdl serverと話し、打ちながら診断を見せてくれるエディタ - ripgrep - 同じ Markdown ツリーに対する、リンターでは答えられない検索に
--fix の一度で直したいとき、そしてビルドが出すのと同じ警告をエディタでも受け取りたいときに。