最近、AI Coding Agent のルール管理と配布を効率良く行うためのルールを開発した。
統一されたフォーマットから各 Agent に合わせたフォーマットに変換するしくみなども当然必要なのだが、これを実装するのに結構困ったので裏話的なことを書いていく。
frontmatter が標準的な yaml ではない
これは Cursor と Windsurf がそうなのだが、ルールファイルの frontmatter の形式が微妙に普通の yaml と違う。
ということは、普通に yaml.Marshal や yaml.Unmarshal すると意図した通りには認識されなくなってしまうということであり、泣く泣く文字列結合を使って実装している。
迫力のある文字列加工はこのあたりで見ることができる。
そもそも 1 ファイルにすべての rule を書くタイプの Agent もあって困る
Cursor のような「特定の Metadata を含む Markdown っぽいもの」をディレクトリに置くタイプのエージェントもあれば、 Cline や Claude Code, OpenAI Codex のような「1 つの Markdown に目次っぽいものを書いて、普通の Markdown へのリンクを張っておく」タイプのエージェントもある。
後者をサポートしようとすると、ポリシーとして掲げている「既にあるルールと干渉しない」というのが難しくなってしまうのでどうしたものかと思っている。
Cline は .mdc ルールを解釈できるようにする PR が作成されているがどうなるだろうか...
おわり
おわり