🐥

issueの議論をCopilotにドキュメントにしてもらう。[作業メモ]

に公開

やりたかったこと

GitHubのissueで仕様や設計について議論を行うことは多いですが、その内容をドキュメント化するには以下の課題があります:

  • ドキュメント作成・メンテナンスの工数が大きい
  • ドキュメント更新が漏れることがある
  • 議論内容とドキュメントの整合性を保つのが難しい

これらの課題を解決するため、GitHub Copilotを活用して議論内容を効率的にドキュメント化する方法を模索しました。

やったこと

  • GitHubのMCPサーバーをVSCode Copilotから呼び出す
  • フォーマットなどを指定してドキュメントにしてもらう

手順

GitHubのMCPサーバーの導入

GitHubのMCPサーバーを導入します。
これにより、Copilotがissueやdiscussionの内容にアクセスできるようになります。

作業するworkspaceの.vscode/settings.jsonに以下の設定を追加します。

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "github_token",
        "description": "GitHub Personal Access Token",
        "password": true
      }
    ],
    "servers": {
      "github": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "GITHUB_PERSONAL_ACCESS_TOKEN",
          "ghcr.io/github/github-mcp-server"
        ],
        "env": {
          "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
        }
      }
    }
  }
}

GitHubのPATを作成する

  • GitHubのPATを作成する
  • 当該repositoryについて、issueのread権限を与える必要がある
  • 作成したPATをsettings.json${input:github_token}と置き換える

テスト

  • copilotのagent modeで、issueにアクセスできるか試してみる
  • Dockerを起動する(MCPサーバーはdocker上で動く)
  • toolbarでMCPサーバーの一覧表示を行い、githubが実行中になっているかを確認する
  • prompt
    • owner/repository_nameのissueはいくつある?
  • list_issuesの実行許可を求めてくる
  • 許可を出して、issueの数を返答してくれればOK

documentationのプロンプト

実際のプロンプトするときのtipsは次の通りです。

  • repsitoryは明示する必要がある
  • issueの指定はurlより番号のほうがいい
    • urlだとwebやapiからアクセスしようとしがち
  • 「issueの内容から」などと書くとコメントを無視することがあるので、「issueで議論した内容」や「issueの内容とコメント」などの書き方のほうがいい

うまくいった例はこちらです。

owner/repository-nameにおいて
issue #hoge
で議論した結果をドキュメントにしたい。
議論と決定については`{formatのpath}`に指定されたフォーマットに従い、同じディレクトリにadrとして記載する。
手順については`{documentのpath}`に記載する
NCDCエンジニアブログ

Discussion