2026-03-26

コーディングエージェントが生成したMarkdownをなるべく綺麗にする

コーディングエージェント(というかLLM)が生成したMarkdownに `**` などの強調表示がのこりがちであるのはよく知られていると思う。

背景事情としてはこちらのスライド: https://speakerdeck.com/kwahiro/nazeqiang-diao-biao-shi-dekizu-star-star-gabiao-shi-sarerunoka-perldeshi-matutamarkdownnoli-shi-tori-ben-yu-wen-shu-niokeruke-ti が大変に参考になる。

また、LLMにMermaidを含んだMarkdownを書かせることはよく行なわれていると思うが、これも結構invalidなMermaidを吐いてくることがある。モデル側の進歩でかなり失敗は減っているところではあるが、GPT-5.4とかOpus 4.6とかの最新モデルでも約物と強調の問題だとか、Mermaidだとかで失敗することはある。

ということで、ハーネスつけて制御すればいいのではないかと思っていくつかのツールをつくった。

  1. https://github.com/ssig33/mdmermaidchecker
    1. Markdownに含まれているmermaidが壊れている場合、それを指摘するCLI
  2. https://gist.github.com/ssig33/62bdcb313c92a12fbb01335e69f18b4c
    1. 強調表示が壊れる箇所がある場合、それを指摘するCLI

これをどう使うかというと、たとえばClaude Codeをつかっているならば、 CLAUDE.md に以下のようにでも書く

# Markdown について
## 全般的な注意事項
- 日本語を含むMarkdownを書いた場合 `cmark-cjk-lint pathtomarkdown.md` コマンドを実行して、Markdownの構文エラーがないか確認してください。エラーがあれば修正してください。

## Mermaid を含む場合
- `mdmermaidchecker pathtomarkdown.md` コマンドを実行することで、Markdown 内の Mermaid 図を検証することができますエラーがあれば修正してください。

こんなふうにしておけば、Claude Codeが勝手にvalidなMarkdownになるまで修正してくれる。

ただし、「Markdownに壊れている箇所がないか」を人間が目で読みながら確認して手で修正する作業絶対文書の質を上げると思うので、こういうものを使うのは結構トレードオフにはなる。でもあんま手間はかけられないけど壊れたMarkdownが出来ると困るとか、完全に自動化されたフローなかに組み込みたいとかだと、こういうターゲットを絞ったLinterのようなものを作っておくのは一つの手だと思う。

既存テキストLinterみたいなものにこういう機能を入れてもらうように頑張るみたいな方向性もありえるかもしれないが、車輪の再開発を一切恐れず自分必要ものを最小限だけ用意するというのも現代ではありえる考え方だと思う。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん