GitHub Copilotを使っていると、「Agentに任せるべきか」「Skillとして定義すべきか」で迷う場面があります。どちらもAIに作業を助けてもらう仕組みですが、役割はかなり違います。この記事では、AgentとSkillをどう使い分けると開発効率が上がるのかを、具体例つきで整理します。
Agentは「作業を進める担当者」
Agentは、ざっくり言えば「目的を渡すと、自律的に作業を進める担当者」です。GitHub Copilotのagent modeは、自然言語の指示をもとにコードベースを分析し、複数ステップの解決策を計画・実行し、コマンドやテストも実行できる同期的な協力者として説明されています。GitHub Blog
たとえば、次のような依頼はAgent向きです。
- 「このバグの原因を調べて修正して」
- 「既存のAPIにページネーションを追加して」
- 「テストが落ちているので原因を特定して直して」
- 「このPRの変更に合わせてドキュメントも更新して」
ポイントは、作業のゴールは明確だが、途中で何を読むか、どのファイルを直すか、どのテストを回すかはAIに判断させたいケースです。GitHub Copilot coding agentは、GitHub上でバックグラウンド実行され、ブランチ作成、コミット、Pull Request作成などを含めて作業できる仕組みとして説明されています。GitHub Docs
Agentに向いている指示例
悪い例は「いい感じに改善して」です。範囲が広すぎて、Agentがどこまでやれば完了なのか判断しにくくなります。
良い例は次のような形です。
ユーザー一覧APIにlimitとcursorを追加してください。
既存のレスポンス形式は壊さず、テストも追加してください。
変更後に関連するREADMEのAPI例も更新してください。
このように、完了条件、制約、確認方法を渡すと、Agentは動きやすくなります。
Skillは「再利用できる作業手順」
Skillは、Agentそのものではなく、Agentが必要なときに読み込める専門手順です。GitHub CopilotのAgent Skillsは、特定タスクの性能を上げるためにCopilotが読み込める「instructions、scripts、resourcesを含むフォルダ」と説明されています。GitHub Docs
Skillに向いているのは、毎回同じルールでやりたい作業です。
- 「このリポジトリのテスト追加方針」
- 「Hugo記事のフロントマター生成ルール」
- 「社内APIクライアントの実装パターン」
- 「GitHub Actions失敗時の調査手順」
- 「リリースノートの書き方」
たとえば、Hugoの記事を書くたびに「h1は使わない」「YAMLフロントマターを付ける」「タグとカテゴリを生成する」と毎回プロンプトに書くのは面倒です。これをSkillにしておけば、AgentやCopilotが該当タスクだと判断したときに、その手順を読み込んで作業できます。GitHubの説明でも、Skillが選ばれるとSKILL.mdがAgentのコンテキストに注入され、指示や同梱されたスクリプト・例を使えるとされています。GitHub Docs
使い分けの判断基準
一番シンプルな判断基準は、「今回だけの作業か、今後も繰り返す型か」です。
Agentを使うべきケース
Agentは、状況判断が必要な作業に向いています。
- 複数ファイルを横断して調査する
- 実装、テスト、修正をまとめて進める
- エラー出力を見ながら試行錯誤する
- Pull Requestとして成果物を残したい
- 途中の判断をAIに任せたい
たとえば「Neovimプラグインの設定読み込み順を調べて、起動時間を悪化させずに修正して」という依頼はAgent向きです。対象ファイルの探索、原因調査、実装修正、ベンチマーク確認が必要だからです。
Skillを使うべきケース
Skillは、作業の「やり方」を固定したい場合に向いています。
- チーム固有のコーディング規約がある
- 毎回同じフォーマットで記事やIssueを作る
- レビュー観点を統一したい
- 特定ツールの実行手順を覚えさせたい
- 失敗しやすい手順をチェックリスト化したい
たとえば「GoのAPIハンドラを追加するときは、handler、service、repository、migration、OpenAPI定義、テストを必ず更新する」というルールはSkill向きです。作業そのものはAgentに任せつつ、進め方はSkillで縛るイメージです。
組み合わせると強い
実践では、AgentとSkillは対立するものではありません。むしろ「Agentにタスクを任せ、Skillで作業品質を安定させる」と考えるのが自然です。GitHub Docsでも、簡単でほぼ全タスクに関係する指示はcustom instructionsに、関連時だけ読み込む詳細な指示はskillsに向いていると説明されています。GitHub Docs
具体的には、次のように組み合わせます。
Agentへの依頼:
認証APIにパスワードリセット機能を追加してください。
Skill側の定義:
- このプロジェクトのAPI実装パターン
- テスト作成ルール
- エラーレスポンス形式
- OpenAPI更新手順
- セキュリティレビュー観点
この形にすると、Agentは自律的に作業しつつ、プロジェクト固有のルールから外れにくくなります。
まとめ
Agentは「タスクを進める実行者」、Skillは「実行者に渡す専門マニュアル」です。迷ったら、まずはAgentに任せる単位を「完了条件のある作業」として切り出し、何度も繰り返す手順や品質基準をSkill化するとよいでしょう。
開発者にとって重要なのは、AIに丸投げすることではなく、AIが迷わず動ける環境を設計することです。Agentで作業を進め、Skillで再現性を高める。この組み合わせを意識すると、Copilotは単なる補完ツールから、かなり実用的な開発パートナーに近づきます。