💫

ベストプラクティスのドキュメントからGitHub Copilot のカスタムチャットモードを生成してみる

に公開

はじめに

いわゆるやってみた系の記事です。
そのため、いろいろと考慮が足りていないかもしれませんが、
非常に流れが速い業界なので、自身へのメモがてら残しておきます。

世の中にはベストプラクティスを謳ったドキュメントが数多にあります。
しかし、実際にそれを実践するというのは少ないかもしれません。

今回はそんなベストプラクティスのドキュメントから、GitHub Copilot のカスタム チャットモード (*.chatmode.md ファイル) の生成を試してみます。

GitHub Copilot のカスタムチャットモードとは

通常、GitHub Copilot は、Ask / Edit / Agent のチャットモードがありますが、カスタムチャットモード を使うことで、カスタマイズしたチャットモードが利用できるようになります。

利用は簡単で既定では .github/chatmodes ディレクトリに、xxx.chatmode.md というファイルを配置するだけです。このファイルの構造は以下のようになっています。GitHub Copilot のカスタムインストラクションよりもう一段カスタマイズが行える感じです。

---
description: <チャットモードの説明>
tools: [<このチャットモードで使用するツールのリスト>]
model: <このチャットモードで使用するモデル。指定せずに選択させてもよい>
---

<カスタム指示>

カスタムチャットモードどう書けばよいか問題

イメージは湧くものの、実際にはどのような内容を記載したら良いか悩みます。
参考になるものとしては英語にはなりますが、awesome-copilot というプロンプトやチャットモードを集めたリポジトリがあります。こちらが参考になりそうです。

awesome-copilot/chatmodes

ここでは、これを生成してみるというもので、以下のドキュメントを元にチャットモードを生成してみます。

🔨 GitHub カスタム チャットモードの解説記事をもとに生成

例として、"Azure Policy as Code ベストプラクティス" の内容を元に、カスタムチャットモードを生成してみます。
これで作れれば、Azure Policy のベストプラクティスに関する質問を効率的に行えるようになるはずです。

GitHub Copilot の Agent モード (GPT-5 モデル) を使い、以下のプロンプトから生成してみます。
(なお、MCPサーバーはすべて off にして、組み込みの機能は有効化した状態です。 )

https://code.visualstudio.com/docs/copilot/customization/custom-chat-modes に従って、https://learn.microsoft.com/ja-jp/azure/governance/policy/concepts/policy-as-code の内容から、Azure Policy の作成、レビューを行う、GitHub Custom Chat Mode の Markdown ファイル (ファイル名は.github/chatmodes/ azure-policy.chatmode.md としてください) を生成してください。

すると、指定した URL から Web ページの内容を取得し、
格納先のディレクトリが存在することを確認して、カスタム チャットモードの Markdown ファイルを生成してくれました。

生成されたファイルの内容は以下の通りです。
フロントマターと呼ばれる、冒頭のメタデータもカスタム チャットモードの定義に沿って作ってくれていました
(カスタムチャットモードのお作法が書かれているドキュメント URL を与えない場合、このあたりがうまく生成されないことがありました)。

🧪 Azure Policy 定義の生成

早速使ってみます。GitHub Copilot のチャットモードで、
作ったカスタム チャットモードを選択します (登録方法は、Create a chat mode を参照してください)。

alt text

カスタムチャットモードの定義に沿って、Claude Sonnet 4 モデルが選択されています。

alt text

先ほど作ったカスタムチャットモードに沿ったプロセスやファイルの命名規約に準拠した形で、
応答が生成されていることがわかりました。

alt text

また、edit など tools を指定することで、カスタム チャットモードの内容に沿ったディレクトリ構造や JSON ファイルを生成することも可能です。下記は東日本リージョンのみにリソースの展開を限定するポリシーの生成を行って、ディレクトリ構造などカスタム チャットモードの指示通り生成されています。

alt text

まとめ

実プロジェクトに適用する際には、さらにチューニングが必要かと思いますが、
とりあえずベストプラクティスがドキュメント化されていて、それに沿った応答を得たいけど、
どのようにカスタム チャットモードを作ったら良いかわからないという場合には、きっかけになるかと思いました。

GitHubで編集を提案

Discussion