イントロダクション
Copilot CLI は、ユーザーに代わって質問に回答し、作業を計画し、タスクを完了できるターミナル ベースの AI エージェントです。 高度な拡張性を備えて設計されており、動作をカスタマイズしてその機能を拡張するさまざまな方法があります。
この記事では、次の違いについて説明します。
-
**カスタム手順**これらは、Copilot に一般的にどのように動作するかを指示します。 たとえば、Copilot が書き込むコードがコーディング標準に準拠していることを確認します。 詳細については、以下をご覧ください。
-
**スキル**これらは Copilot に 特定の種類のタスクの処理方法を指示します。 たとえば、特定の種類のタスクで作業するときに特定のツールを使用する場合などです。 詳細については、以下をご覧ください。
-
**ツール**これらは 能力を提供します。 たとえば、ファイルを検索して変更したり、GitHub の一部と対話したりします。 詳細については、以下をご覧ください。
-
**MCP サーバー**これにより、Copilot が外部サービスと対話できるようにするツールのコレクションが追加されます。 詳細については、以下をご覧ください。
-
**フック**これにより、 特定のライフサイクルの瞬間に独自のロジックを実行できます。 たとえば、CLI セッションが開始または終了するたびに、特定のスクリプトを実行できます。 詳細については、以下をご覧ください。
-
**サブエージェント**これらは 委任されたエージェント プロセスであり、メイン エージェントに関連付けられ、メイン エージェント プロセスとは別に特定のタスクを実行するために使用されます。 独自のコンテキスト ウィンドウがあり、メイン エージェントのコンテキストに影響を与えずに設定できます。 詳細については、以下をご覧ください。
-
**カスタム エージェント**これらは、特定のタスクを実行するように設計 された特殊な能力の定義です。 メイン CLI エージェントは、カスタム エージェント プロファイルを使用してサブエージェントにタスクを委任し、専門知識と特定のアプローチをタスクに適用できます。 たとえば、カスタム エージェントは、React レビュー担当者、ドキュメント ライター、セキュリティ監査人、またはテスト ジェネレーターの役割を実行できます。 詳細については、以下をご覧ください。
-
**プラグイン**これらは、スキル、フック、カスタム エージェント、MCP サーバーなどの事前構成済みのカスタマイズを提供できる パッケージ です。 詳細については、以下をご覧ください。
カスタム手順
カスタム命令とは
**カスタム命令** は、Copilot CLI がセッションの開始時に命令ファイルから読み込む永続的なガイダンスです。
Copilot は、リポジトリ内のいくつかの既定の場所 ( AGENTS.md や .github/copilot-instructions.mdなど) から、または $HOME/.copilot/copilot-instructions.mdのホーム ディレクトリから命令ファイルを検索して読み込みます。
`--no-custom-instructions` フラグを使用して、これらの手順の読み込みを回避できます。
カスタム命令はどのような問題を解決しますか?
カスタム手順は、次の場合に役立ちます。
- Copilot を使用するコーディング規則と好みに合わせて調整します。
- チームまたは組織の標準を一貫して適用します。
- すべてのプロンプトに Copilot への繰り返しのリマインダーを含める必要は避けてください。
カスタム命令を使用する必要がある場合
カスタム手順を使用するには:
-
スタイルと品質の規則
例: "小規模な PR を優先し、テストを記述し、ディスカッションなしでパブリック API の変更を回避する"
-
リポジトリ規則
例: "
pnpmを使用し、変更ログ エントリをCHANGELOG.mdに保持し、コミットする前にpnpm testを実行します。" -
通信の基本設定
例: "トレードオフを簡単に説明し、推奨される選択肢を指定します。"
カスタム命令を使用すべきではないのはいつですか?
次のいずれかの場合は、それらを最小限に抑える。
- 1 つのワークフローでのみ動作が必要です (代わりに スキル を使用します)。
- 指示が過度に大量または具体的すぎるため、Copilot がタスクにすぐに取り掛かることができません (スキルまたはカスタム エージェントを優先することをお勧めします)。
カスタム手順の詳細を確認する
「GitHub Copilot CLI(コマンドラインインターフェース) のカスタム命令の追加」を参照してください。
Skills
スキルとは
スキルとは、Copilot が特定のコンテキストでタスクを実行するために使用できる指示を含む最小限の Markdown ファイルです。 スキルの名前と説明によって、Copilot は特定のタスクにスキルを使用するべきかを判断できます。 スキルを使用することを決定した場合は、指示を読み込み、それに従ってタスクを完了します。
スキルは、必要に応じて、スキル ディレクトリ内に格納されている他のファイルを参照できます。 これには、Copilot がスキルの使用時に実行できるスクリプトを含めることができます。
スキルはどのような問題を解決しますか?
スキルは次の場合に役立ちます。
- Copilot が特定のコンテキストでタスクを実行する方法を標準化します (コード レビューを実行する場合など)。
- Copilot の動作を恒久的に変更することなく、「タイムリーな」指示を提供します。
- 現在のタスクに関連しない命令を使用して、Copilotのコンテキスト ウィンドウをオーバーロードしないようにします。
スキルにアクセスする方法
スラッシュ コマンドを使用して、スキルを手動で呼び出すことができます。 たとえば、「 /Markdown-Checker check README.md 」のように入力します。
/skills listを使用して、使用可能なスキルを一覧表示します。
Copilot CLI は、現在のタスクに関連するスキルを検出した際に、自動的にそのスキルを呼び出します。
スキルを使用する必要がある場合
必要な場合は、スキルを使用します。
-
タスクの種類に対して使用できる反復可能な命令または機能のセット。
例: フロントエンド コードが変更されたときにユーザー向けのドキュメントが更新されることを確認するドキュメント スキル。
-
一貫性のある出力形式。
例: Copilot がテンプレートを使用してリリース ノートを作成することを保証する "リリース ノート ドラフト" スキル。
-
必要なワークフローですが、必ずしも必要なわけではありません。
例: 移行中にのみ有効にする "ディープ リファクター" スキル。
スキルを使用すべきではないのはいつですか?
以下の状況ではスキルを避けてください。
- ガイダンスは、実行 するすべての内容に適用する 必要があります (代わりに カスタム命令 を使用してください)。
- 新しい機能が必要です (ツールを追加するには MCP サーバー が必要な場合や、特殊化用の カスタム エージェント が必要な場合があります)。
エージェントのスキルの詳細を確認する
「エージェントのスキルについて」を参照してください。
Tools
ツールとは
**ツール**とは、Copilot がファイルの検索、ファイルの内容の表示、編集、タスクの実行、スキルの呼び出しなど、何かを行うために使用する機能です。 一部のツールは組み込まれており、他のツールは MCP サーバーを介して追加できます。
ツールはどのような問題を解決しますか?
ツールを使用すると、CLI で次の機能を使用できます。
- (読み取り/検索ツールを使用して) 正確なコンテキストを収集します。
- (編集ツールを使用して) 安全に変更を加えます。
- コマンドを実行し、結果を検証します (サブエージェントを使用している可能性があります)。
ツールを使用する必要がある場合
通常、ツールを直接呼び出すことはありません。Copilot は、必要に応じてツールを使用することを決定します。 特定のタスク、現在のセッション、またはすべての Copilot CLI セッションに対して、ツールの使用を許可または拒否できます。
次の場合に、Copilot がツールを使用していることが表示されます。
- Copilot に問い合わせ、リポジトリで何かを検索したり、ファイルを更新したり、テストを実行したりします。
-
`skill` ツールをトリガーするスキルを呼び出します。 - MCP サーバーから提供されたツールを使用する必要があるタスクを実行するように Copilot に求めた場合。
- Copilot に複雑なタスクを完了させるよう指示し、サブエージェントに委任することを決定した場合。これによって、
taskツールがトリガーされます。
ツールの許可または拒否の詳細を確認する
「GitHub Copilot CLI について」を参照してください。
MCP サーバー
MCP サーバーとは
**MCP サーバー**は、Copilot CLI などの AI アプリケーションが外部データ ソースとツールに接続できるようにするサービスです。
Copilot CLI に MCP サーバーを追加すると、その MCP サーバーによって提供されるツールを使用できることにより追加の機能が提供された場合。 たとえば、オンラインカレンダーアプリケーションやサポートチケットシステムを操作するためのツールを提供するMCPサーバーを追加できます。
MCP サーバーはどのような問題を解決しますか?
MCP サーバーは、組み込みのツールが十分でない場合に役立ちます。 次のことができます。
- Copilot CLI を外部システムに接続した場合。
- 専用のツール (API、データベース、イメージ生成を操作する場合など) を追加します。
- リポジトリ以外のリソースの安全なアクセス パターンを標準化します。
MCP サーバーを使用する必要がある場合
必要な場合は、MCP サーバーを使用します。
-
外部データまたはシステムとの統合。
例:
How many support tickets have been opened this month for Product X? -
CLI がユーザーに代わって実行するドメイン固有のアクション。
例:
Message the bug-watch channel: Only 2 support tickets raised this month for Product X.
MCP サーバーを使用すべきではないのはいつですか?
次の場合は、MCP サーバーを追加しないでください。
- 組み込みのツールは既にニーズに対応しています。
MCP サーバーの詳細を確認する
「モデル コンテキスト プロトコル (MCP) について」を参照してください。
フック
フックとは何ですか?
**フック** を使用すると、セッション ライフサイクルの特定の時点で、 Copilot CLI が定義したシェル コマンドを実行するように指定できます。
| フック | その後、 |
|---|---|
preToolUse / postToolUse | ツールの実行前/実行後。 |
userPromptSubmitted | ユーザーがプロンプトを送信したとき。 |
sessionStart / sessionEnd | セッションの開始時/終了時。 |
errorOccurred | エラーが発生した場合。 |
agentStop | メイン エージェントがエラーなしで停止したとき。 |
subagentStop | サブエージェントが終了したとき。 |
フックはどのような問題を解決しますか?
フックは、Copilot CLI の動作に関してプログラミング可能な制御や監視が必要な場合に役立ちます。次に例を示します。
-
**ガードレールを適用する** — 特定のツールを実行する前にブロックまたは警告します。 -
**ログ/テレメトリの追加** -
**回復可能なエラーに対する再試行/中止動作のカスタマイズ** - たとえば、保護されたパスへの編集を防ぐための "ポリシー" チェックを追加します。
- 結果が親エージェントに戻る前に、サブエージェントが終了した瞬間をインターセプトします。
フックは、スキルやカスタム命令が提供できるよりも多くの制御が必要な場合に便利です。 スキルと命令は、Copilot の動作をプロンプトを通じてガイドしますが、フックを使用すると、定義された操作を特定のタイミングで実行することができます。たとえば、ツールの実行をブロックしたり、セッション終了時にアクティビティをログに記録したりすることです。
フックを使用するのはどのような場合でしょうか?
必要な場合はフックを使用します。
-
**ツール ガードレール**- 例:
bash実行する前に、特定のコマンドが許可リストと一致することを要求します。 - 例:
edit実行する前に、チケット ID が存在しない限り、infra/の変更をブロックします。
- 例:
-
**セッション ライフサイクルの自動化**- 例: エージェントが停止したら、セッションのトランスクリプトをストレージの場所にアーカイブします。
-
**エラー処理ポリシー**- 例: レート制限エラーの場合は、制限された再試行回数で自動的に "再試行" を選択します。
-
**サブエージェント ワークフロー コントロール**- 例: サブエージェントが完了したら、メイン エージェントに結果を渡す前に、その出力を検証します。
フックを使用すべきではないのはいつですか?
次の場合はフックを使用しないでください。
- 一貫したプロンプトまたはワークフローの指示が必要です ( スキルを使用します)。
- 永続的な基本設定と標準が必要です ( カスタム命令を使用します)。
- 新しい外部機能が必要です ( MCP サーバー とツールを使用します)。
- すべてのセッションに影響を与える可能性のある構成を維持すると、問題が発生する可能性があります。
フックについて詳しく知る
「GitHub Copilot CLI(コマンドラインインターフェース) でフックを使用する」を参照してください。
サブエージェント
サブエージェントとは
サブエージェントとは、Copilot CLI セッションのメイン エージェントが特定の作業を行うために起動する個別の AI エージェントの実行です。
Copilot CLI は、メイン エージェントが、作業のチャンクを別のエージェントに委任することがユーザーの要求を完了する最善の方法であると判断した場合に、サブエージェントを使用します。
サブエージェントはどのような問題を解決しますか?
サブエージェントはCopilotを支援します。
- 作業のチャンクを別のエージェントにオフロードすることで、CLI セッションでメイン エージェントのコンテキスト ウィンドウをフォーカスしたままにします。
- バックグラウンドで特定のタスクを実行して、必要に応じて作業を並列化します。
- メイン エージェントとは別にカスタム エージェントを実行し、メイン エージェントによって実行される作業とは異なるアプローチで専門家の作業を実行します。
サブエージェントはいつ使用されますか?
Copilot は、次の目的でサブエージェントを使用することがよくあります。
-
コードベースの探索
たとえば、API 内のすべてのエンドポイントを一覧表示します。
-
複雑なタスクのコマンド実行
たとえば、テスト スイートを実行したり、大規模なプロジェクトをビルドして結果を分析したりします。
-
変更の確認
たとえば、段階的な変更を確認し、潜在的なセキュリティの問題を特定します。
-
複雑なマルチステップ作業
たとえば、いくつかの変更を加えた機能を実装します。
-
カスタム エージェントを使用する場合
カスタム エージェントを定義していて、それが推論の対象である場合 (
inferはfalseに設定されていません)、Copilot は、カスタム エージェントの構成でサブエージェントをスピンアップすることによって、そのカスタム エージェントに作業を委任することを選択できます。
カスタム エージェント
カスタム エージェントとは
**カスタム エージェント** は、Copilot に特定の主題に関する専門知識を提供し、Copilot がその領域で作業するときに使用する特定のアプローチを定義する方法です。 カスタム エージェントは、Copilot が特定のタスクに取り組むときに採用できる "ペルソナ" と考えることができます。
YAML frontmatter を使用して Markdown ファイルでカスタム エージェントを定義します。 ファイルには次のものが含まれます。
- エージェントの役割と専門知識の説明
- 許可されているツール (またはすべてのツール) の一覧
- オプションの MCP サーバー接続
- 任意の
infer設定。これを有効にすると、Copilot は、エージェントの専門と一致するタスクを検出したときに、このエージェントに自動的にタスクを委任します。
カスタム エージェントはどのような問題を解決しますか?
カスタム エージェントは、必要な場合に役立ちます。
- 特定のコンテキストで一貫して適用される専門知識。
- カスタム エージェント構成で定義されているように、作業ごとに異なるツールのアクセス許可。
- メイン エージェントのコンテキスト ウィンドウが主なタスクに集中し続けるように、カスタム エージェントの専用コンテキスト ウィンドウは、その専門的な作業を遂行するために使用されます。
カスタム エージェントを使用する必要がある場合
必要な場合は、カスタム エージェントを使用します。
-
専門の校閲者またはヘルパー
例: React パターンを含む作業に焦点を当てた "react-reviewer" カスタム エージェントを作成します。
-
より安全なアクセス許可
例: 監査用に
view/grep/glob(読み取り専用) のみを実行できるカスタム エージェント。 -
オプションのオートデリゲーション
例: Copilot が必要に応じてこのカスタム エージェントを自動的に使用できるように、カスタム エージェント構成で
infer: trueを設定します。
カスタム エージェントを使用すべきではないのはいつですか?
次の場合は、カスタム エージェントを回避します。
- ガイダンス テキストのみが必要です ( スキル は軽量なソリューションにすることができます)。
- 特殊化は必要なく、既定のエージェントはタスクを適切に実行します。
カスタム エージェントの詳細を確認する
「カスタム エージェントの構成」を参照してください。
Plugins
プラグインとは何ですか?
**プラグイン**は、Copilot に対して機能を拡張するインストール可能なパッケージです。 プラグインには、他のカスタマイズ機能の任意の組み合わせを含めることができます。 たとえば、スキル、カスタム エージェント、フック、MCP サーバー構成などです。
Copilot には、プラグイン管理コマンド (インストール、更新、一覧表示、アンインストール) が含まれており、マーケットプレースから、または GitHub リポジトリから直接インストールできます。
プラグインはどのような問題を解決しますか?
プラグインを使用すると、次のことができます。
- 機能のバンドルを Copilot に簡単に追加できます。各部分を手動で構成する必要はありません。
- カスタム構成 (スキル、カスタム エージェント、フック、MCP サーバーの組み合わせ) をパッケージ化して、チームまたは一般ユーザーに配布します。
- 手動でファイルをディレクトリにコピーすることなく、使用可能な機能を変更します。
プラグインを使用する必要がある場合
次の場合にプラグインを使用します。
-
チーム全体のバンドルが必要です
例: 以下を含む会社全体のエンジニアリング プラグイン:
- インシデント対応のスキル。
- コード レビュー用のカスタム エージェント。
- 内部サービス用の MCP サーバー。
-
インストールと更新を簡単にしたい
例: プラグインを最初にインストールしてから、
/plugin update PLUGIN-NAMEを使用して定期的に更新します。
プラグインを使用すべきではないのはいつですか?
次の場合はプラグインを使用しないでください。
- ローカルで実験を行っており、配布は必要ありません (ローカル スキル、カスタム命令、またはカスタム エージェントを使用します)。
- 必要なのは、1 回限りの小さなワークフローだけです。 1 つのスキル ファイルの方が簡単な場合があります。
まとめ: 適切なオプションの選択
| Requirement | 最適なオプション |
|---|---|
| Copilot が常にリポジトリ規則に従うようにしたい。 |
**カスタム手順** |
| オンデマンドで呼び出すことができる反復可能なワークフローが必要です。 | スキル | | Copilot が質問に答え、リポジトリで作業を行うようにしたい。 | Copilot は、適切なツールを使用する許可を要求します。 | | ツールの使用とセッション イベントに関するガードレール、ポリシー、または自動化が必要です。 | フック | | Copilot が外部サービスによって提供されるツールを使用できるようにしたい。 | MCP サーバー | | 特定のタスクに取り組む際に、Copilot が制約付きツールセットを使用してスペシャリストとして動作するようにしたい。 | カスタム エージェント | | 複雑なタスクを私に代わって Copilot に実行してもらいたい。 | Copilot は、適切な場合に サブエージェント を自動的に使用します。 | | 手動で構成せずに、 Copilot CLI に機能のパッケージを追加したいと考えています。 | プラグイン |