前回の記事では、GitHub Copilot Agentモードの基本的な使い方と.github/copilot-instructions.mdによるプロジェクト全体の指示方法を解説しました。
今回は、さらに細かい制御を可能にする仕組みを紹介します。特定のファイル種別にのみ適用されるInstruction filesと、繰り返し実行する複雑なタスクをコマンド化するPrompt filesです。これらを組み合わせることで、プロジェクト全体の基本方針から個別ファイルの詳細規約、定型作業の自動化まで、階層的なルール管理が実現できます。
GitHub Copilot Chatの3つのモード
GitHub Copilot Chatには、3つの動作モードが用意されています。作業内容に応じて適切なモードを選ぶことで、効率的な開発が可能になります。
| モード | 主な用途 | 利用シーン |
|---|---|---|
| Ask | コードや技術に関する質問応答 | ロジックの確認、設計相談 |
| Edit | ファイル内のコード編集 | 機能追加、バグ修正、リファクタリング |
| Agent | 自律的な複数ファイル編集 | 新機能実装、エラー自動修正 |
Editモードは選択中のファイル内でコードを生成・修正します。Agentモードはより広範囲な変更に対応し、複数ファイルの作成・編集を自動化できます。
Instruction filesとPrompt filesの全体像
GitHub Copilot Chatでは、3種類の設定ファイルを組み合わせて使います。
| ファイルタイプ | 適用モード | 適用タイミング | 主な用途 |
|---|---|---|---|
| copilot-instructions.md | Ask / Edit / Agent | 全モードで自動適用 | プロジェクト全体の基本方針・アーキテクチャ |
| Instruction files | Edit / Agent | 該当ファイル編集時に自動適用 | ファイル種別ごとのコーディング規約 |
| Prompt files | Ask / Edit / Agent | コマンド実行時に適用 | 繰り返し実行する複雑なタスク |
例えば、Reactコンポーネント作成時には、copilot-instructions.mdでプロジェクト全体の設計原則、tsx.instructions.mdでTypeScript規約、Prompt fileで定型作業を自動化するという階層的な適用が効果的です。
設定方法
Instruction files 及び Prompt files を利用するには VS Codeの下記設定が有効になっていることを確認してください。
- Instruction files:
github.copilot.chat.codeGeneration.useInstructionFilesを有効化 - Prompt files:
chat.promptFilesを有効化
Instruction filesの活用
Instruction filesは、ファイル種別やプロジェクトの特定部分に対して、Copilotの動作方針やコーディング規約を定義できる機能です。プロジェクト全体の基本方針をcopilot-instructions.mdで定義し、個別の詳細な指示を複数の.instructions.mdファイルで管理するという使い分けが可能です。
Instruction filesの種類
VS Codeでは下記のようなInstruction filesを扱うことができます。複数のファイルを同時に使用することも可能です。
| ファイル種別 | 配置パス | 役割 |
|---|---|---|
.github/copilot-instructions.md | .github/直下 | ワークスペース全体の基本ルール。全Chatリクエストに自動適用 |
.instructions.md | .github/instructions/ | 特定ファイル種別向けの詳細ルール。globパターンで自動適用または手動選択 |
AGENTS.md | ワークスペースルートまたはサブフォルダ | 複数AIエージェント利用時のルール(試験機能) |
Instruction: ファイルの保存先と適用範囲
Instruction filesは保存場所によって、どのプロジェクトで利用できるかが変わります。
| 保存先 | 利用可能範囲 | 使い分け |
|---|---|---|
| ワークスペース | そのプロジェクト内でのみ | プロジェクト固有のルール・チーム共有 |
| ユーザープロファイル | 複数プロジェクトで共通 | 個人的な設定・汎用的なルール |
プロジェクト固有のコーディング規約やアーキテクチャルールはワークスペースに配置してチーム全体で共有します。一方、個人の好みや複数プロジェクトで共通して使える汎用的なルールはユーザープロファイルに配置することで、効率的な管理ができます。
Instruction filesの構成
.instructions.mdはxxx-yyy.instructions.mdのようにsuffixとしてファイル名につけることで特定のタスクごとに複数ファイルを作成でき、以下の2つのセクションで構成されます。
Instruction filesの作成
Instruction filesは、VS CodeのChat viewから「Configure Chat」 > 「New instruction file」で作成できます。.github/instructions/ディレクトリに直接ファイルを作成することも可能です。
Instruction: メタデータ(Front Matter)
---
applyTo: "**/*.{tsx,ts}"
---
applyToフィールドで、指示を適用したいファイルの拡張子をglobパターンで指定できます。特に指定しない場合は**にします。
globパターンの例:
# 特定ディレクトリのMDXファイルのみ
applyTo: "src/app/blog/_posts/**/*.mdx"
# すべてのTypeScript/TSXファイル
applyTo: "**/*.{tsx,ts}"
# 特定ディレクトリのMarkdownファイル
applyTo: "docs/**/*.md"
globパターンを指定すれば該当ファイルの編集時に自動適用され、指定しない場合はChatのAdd Context > Instructionsから手動で選択できます。
Instruction: ボディ
指示の内容をMarkdownで記述します。他の.instructions.mdをMarkdownのリンク記法を使って参照することもできます。
---
applyTo: "**/*.tsx"
---
# Reactコンポーネントのコーディング規約
共通のコーディング規約は[共通規約](./common-rules.instructions.md)を参照してください。
## TypeScript規約
- 型定義は必ず明示する
- propsには適切なJSDocコメントを記述
- コンポーネント名はPascalCaseを使用
Prompt files の活用(試験機能)
Instruction filesがChatリクエストにルールや制約を追加するのに対し、Prompt filesは再利用可能なプロンプトテンプレートを定義できます。頻繁に実行する複雑なタスクをファイル化し、チーム全体で共有できます。
Prompt: ファイルの保存先と適用範囲
VS Codeでは2種類の保存先がサポートされています。
| 保存先 | 利用範囲 | 配置パス |
|---|---|---|
| ワークスペース | そのプロジェクト限定 | .github/prompts |
| ユーザープロファイル | 複数プロジェクトで共通 | VS Code profileフォルダ |
Prompt filesの構成
.prompt.mdはxxx-yyy.prompt.mdのようにsuffixとしてファイル名につけることで特定のタスクごとに作成できます。
Prompt filesの作成と使用
Chatの入力欄で/を入力すると候補が表示されるので、任意のPrompt filesを選択することで適用されます。
Prompt: メタデータ(Front matter)
---
mode: 'agent'
tools: ['codebase', 'file']
description: '新しいブログ記事の作成'
---
メタデータでは以下を指定できます。
| フィールド | デフォルト値 | 説明 |
|---|---|---|
| mode | agent | 実行時の動作モード。ask、edit、agentから選択 |
| tools | なし | codebase や githubRepo など、Agentモードで使用するツール名 |
| description | - | プロンプトの簡潔な説明 |
主要なツール一覧
Agentモードでは、以下のツールをtoolsフィールドで指定できます。
| ツール名 | 機能 |
|---|---|
codebase | ワークスペース内のコード検索・参照 |
githubRepo | GitHub上のリポジトリ参照 |
webSearch | Web検索によるリアルタイム情報取得 |
terminal | ターミナルコマンド実行 |
file | 特定ファイルの内容参照 |
selection | エディタで選択中のコード参照 |
editor | 現在開いているエディタのコンテキスト |
problems | ワークスペース内のエラー・警告確認 |
その他のツールはChatで#入力、またはAdd Context... > Tools...で確認できます。
Prompt: ボディ
指示の内容をMarkdownで記述します。他の.prompt.mdをMarkdownのリンク記法を使って参照することもできます。
---
mode: 'agent'
tools: ['codebase', 'file']
description: '新しいブログ記事の作成'
---
ブログ記事を作成します。以下の情報が不足している場合は質問してください。
- タイトル
- カテゴリ(ai, tools, directionから選択)
- タグ(3つ以上)
記事作成の要件:
- MDX形式で作成
- Front Matterに必要なメタデータを全て含める
- 見出しは階層構造を保つ(h2 → h3 → h4)
- コードブロックには適切な言語指定を行う
- 箇条書きの前にコロンを使用しない
- 「です・ます」調で統一
まとめ
GitHub Copilot Chatのモード選択、Instruction files、Prompt filesを組み合わせることで、プロジェクト固有のコーディング規約を自動適用しながら、効率的な開発が実現できます。
特に、copilot-instructions.mdで全体方針を定義し、Instruction filesで詳細ルールを適用、Prompt filesで定型作業を自動化するという階層的なアプローチが効果的です。AIによるコーディングツールは急速に進化していますが、公式機能をしっかり活用することで、長期的に安定した開発環境を構築できます。
プロジェクトの成長に合わせて学びながら、段階的にルールを追加していくことをおすすめします。
