📘

GitHub Copilot の設定ファイルをテンプレ管理するツールを作った話

に公開

Cursor や GitHub Copilot などの AI コーディング アシスタント、便利ですよね。でも、こんな経験ありませんか?

  • 新しいプロジェクトを始めるたびに、毎回同じような .github/copilot-instructions.md を書いている
  • AGENTS.md の内容、前のプロジェクトとほぼ同じだな
  • 過去プロジェクトから設定ファイルをコピペしてくる自分がいる

今日は、そんな悩みを少し解決してくれるツールの紹介です。

https://github.com/openjny/dotgh

背景

私は普段 GitHub Copilot + VS Code で、プロジェクトごとにディレクトリを切って作業しています。

コーディング、検証環境構築、ブログ執筆… みたいな感じで用途ごとにプロジェクト ディレクトリを切ってあげると、コンテキスト スイッチして集中できるので精神的に良いです。そして、ファイルシステムをうまく使うことがコンテキスト エンジニアリングで重要なのも大きな理由です。

ただ、この運用だと毎回似たような指示ファイルを書くハメになります。

もちろん、グローバルに一意な設定をするのが解の一つですが、やっぱりプロジェクトごとに分けなきゃいけない場面も多いのが現実です。

dotgh とは

そこで作ったのが dotgh です。dotgh を使うと、AI 指示ファイルや設定ファイルをテンプレート化して、プロジェクト間で簡単に使いまわせるようになります。

名前の由来は、.github/** のファイルをよく書いているのでそれを単純に省略しただけですが、特に GitHub Copilot 専用ではありません。

使い方は、今あるプロジェクトで dotgh push <テンプレート名> を実行してテンプレートを保存し、新しいプロジェクトで dotgh pull <テンプレート名> を実行してテンプレートを適用するだけです。

dotgh demo

コマンドの使い方

基本的には以下の3つを使いまわします。

# 今のプロジェクトの設定をテンプレートとして保存
dotgh push my-template

# 新しいプロジェクトでテンプレートを適用
dotgh pull my-template

# テンプレート一覧
dotgh list

管理対象のファイル

デフォルトで管理するファイルは、以下の通りです:

  • AGENTS.md
  • .github/agents/*.agent.md
  • .github/copilot-chat-modes/*.chatmode.md
  • .github/copilot-instructions.md
  • .github/instructions/*.instructions.md
  • .github/prompts/*.prompt.md
  • .vscode/mcp.json

GitHub Copilot / VS Code ユーザーに寄せていますが、設定ファイルで glob 指定が可能なのでどのエディタでも使えます。なんなら完全に別の用途でも使えます。

インストール方法

# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/openjny/dotgh/main/install.sh | bash

# Windows (PowerShell)
irm https://raw.githubusercontent.com/openjny/dotgh/main/install.ps1 | iex

最後に

cookiecutter でも似たようなことはできそうでしたが、最近は特にツールを作るのにも労力が要らないので、自分のニーズにピッタリ合うツールをサクッと作ってしまいました。

今回は、クロスプラットフォーム対応、CI/CD、セルフ アップグレード、ワンライナーでのインストールなど、別になくてもいいけどあると嬉しい機能を盛り込んだものの、数時間くらいで作れたので、「必要なツールを自分で作る」という選択肢もアリだなと改めて感じました。

今後は、

  • GitHub Gist 連携でテンプレート同期
  • LLM でテンプレをいい感じに抽出(プロジェクト固有値を除去)

みたいな機能を実装していこうかなと思います。

「毎回同じプロンプト書いてるな…」と思ったらぜひ試してみてください。

https://github.com/openjny/dotgh

それではまた。

Discussion