GitHub Copilotは“どう使うべきか?” ─ Skills時代の設計思想を整理する
はじめに
GitHub Copilotを触っていると、ある疑問にぶつかる。
agents / instructions / prompts / skills
結局、どれをどう使えばいいのか?
全部それっぽい名前で、全部「AIに指示する仕組み」に見える。
そして気づく。
設計を間違えると、ただのカオスになる。
この記事では、最新のCopilotの機能整理をベースに、
「どういう思想で使い分けるべきか」を読み物としてまとめる。
Copilotは“知識”ではなく“構造”で強くなる
Copilotは単なるコード生成ツールではない。
むしろ最近はこういう性質に変わってきている。
「必要なときに、必要な知識と手順をロードするシステム」
この背景には、コンテキスト長の制約がある。
すべての知識を常に渡すことはできない。
そこで出てきたのが「分割統治」的な仕組みだ。
4つの要素の正体
まず全体像をシンプルに言い切る。
- Instructions:常時適用されるルール
- Prompts:単発の命令
- Agents:役割(人格)
- Skills:再利用可能な処理単位
この中で、現在の主役は明らかにSkills。
Instructions:ガードレール
Instructionsは「常に効く制約」。
例えば:
- コーディング規約
- 特定ファイルは編集禁止
- 言語ルール
Copilotは、対象ファイルに応じて自動的にこれを読み込む。
つまり「環境設定」に近い。
単純なルールはInstructionsでやれ
というのが公式の推奨でもある
Prompts:ただの命令
Promptsはシンプル。
「今これやって」
以上。
再利用はできるが、自動では使われない。
毎回呼び出す必要がある。
Agents:役割の定義(でも今は脇役)
Agentsはこういうもの:
- Terraform専門家
- セキュリティレビュー担当
- ドキュメント生成担当
つまり「人格」。
ただし重要なのはここ。
エージェントは“何をやるか”であって、“どうやるか”ではない
そして今は、
「どうやるか」はSkillsに移行している。
Skills:本質は“関数化された知能”
ここが今回の核心。
Skillsとは何か?
instructions + scripts + resources のまとまり
つまり:
- 手順
- 実装
- 補助情報
を全部セットにしたもの。
さらに重要なのはこれ。
Copilotが「必要だ」と判断したら自動でロードされる
例:Skillの構造
| パス | 内容 |
|---|---|
| skills/webapp-testing/SKILL.md | 使い方と条件 |
| skills/webapp-testing/run-tests.sh | 実行処理 |
| skills/webapp-testing/examples.md | 補足知識 |
これをCopilotが状況に応じて使う。
なぜSkillsが強いのか?
理由はシンプルで残酷。
コンテキストを節約できるから。
Skillは最初は「名前と説明」しか読まれない。
必要になった瞬間にだけ中身が展開される。
これはつまり:
「遅延ロードされる知識」

設計思想:Agentsはもう主役ではない
ここで結論に近づく。
従来:
- Agent中心(人格ベース)
現在:
- Skill中心(機能ベース)
つまり
人格で分ける → 処理で分ける
この転換が起きている。
実務でのベストプラクティス
かなりシンプルに言うとこうなる:
- Instructions:全体ルール
- Skills:重い処理
- Prompts:軽い呼び出し
Agentsは「必要なら使う」程度。
ただし、ここからが地獄
ここまで読むと簡単そうに見える。
でも現実は違う。
課題①:Skillの粒度設計
最大の問題。
- 小さすぎる → 管理不能
- 大きすぎる → 再利用不可
つまり
「ちょうどいい抽象化」が必要
これは普通のソフトウェア設計と同じ地獄。

課題②:自動選択の不確実性
CopilotはSkillを「勝手に選ぶ」。
これが便利でもあり、問題でもある。
- 選ばれないことがある
- 間違ったSkillを使うことがある
つまり
完全な制御はできない
課題③:セキュリティリスク
Skillはスクリプトを実行できる。
つまり最悪こうなる:
- 任意コマンド実行
- 悪意あるSkillの混入
実際、Copilotは脆弱なコードを生成するケースも確認されている。
約40%が脆弱性を含んでいたという研究もある

課題④:統合の難しさ
研究でも指摘されているが、
Copilotの最大の課題は「統合の難しさ」
これはそのままSkillsにも当てはまる。
- プロジェクトごとに違う
- チームで共有しにくい
- 暗黙知になりやすい
最後に
最初の問いに戻る。
Copilotはどう使うべきか?
答えはこうなる。
「知能を分割して設計する」
- ルールはInstructions
- 処理はSkills
- 呼び出しはPrompts
そして重要なのは、
「人間側が設計しないと、ただの雑なAIになる」
Copilotは賢い。
でも設計はしてくれない。
ここをサボると、
ただの“それっぽいコードを出す機械”に戻る。
逆に言えば、
設計できる人間にとっては、かなり強い武器になる。
Discussion