5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Copilot CLI の公式ハンズオンざっくり和訳 (第5章/7章) skills 編

5
Posted at

公式チュートリアル「GitHub Copilot CLI for Beginners」ハンズオンリポジトリを進めていきます!

このチュートリアルは (2026 年 4 月現在) 7 章までありますが、
今回は、第 5 章(skills の作成)をざっくり和訳しながら進めていこうと思います。

この第 5 章では、skills を学びます。

機能 役割
🤖 Agents 思考スタイル(専門家)
📝 Skills 作業手順・チェックリスト
🔌 MCP 外部データ接続

(この 3 つは組み合わせて使います)

訳註) 私のざっくりとした理解では、プログラミングに例えるとこんな感じだと思います:

  • Agent = クラス(振る舞い)
  • Skill = 関数(処理ロジック)

前回までの記事

第 0 章 環境構築編

第 1 章 操作モードの説明

第 2 章 基本用語やコンテキストについてなどの説明

第 3 章 開発ワークフローへの組み込み方

第 4 章 エージェントについて

🗺️ ハンズオンの全体像

2026/04/09 現在、第 0 章から第 7 章まであります。
今回はこの第 5 章を進めていきましょう。

タイトル 学べる内容
0 🚀 クイックスタート インストールと動作確認
1 👋 最初の一歩 ライブデモ + 3 つの操作モード
2 🔍 コンテキストと会話 複数ファイルのプロジェクト分析
3 開発ワークフロー コードレビュー、デバッグ、テスト生成
4 🤖 特化型 (Specialized) AI アシスタントの作成 ワークフロー用のカスタム AI エージェント
5 [ 今ここ!→ ] 🛠️ 繰り返し作業の自動化 自動で読み込まれるスキルの作成
6 🔌 GitHub・データベース・API との接続 MCP サーバとの連携
7 🎯 すべてを組み合わせる すべてを組み合わせた実践的ワークフロー

🎯 学習ゴール

  • Skill を自作できる
  • 適切に自動発動させられる
  • Agent / Skill / MCP を使い分けられる

現実世界の例え:電動工具

汎用的なドリルも便利ですが、専用のアタッチメントを付けることで、より強力になります。

image.png
(↑ それぞれのアタッチメントが skills 相当)

スキルも同じようなものです。
用途ごとにドリルのビットを交換するように、Copilotにもタスクごとにスキルを追加できます。

スキル(アタッチメント) 目的
commit 一貫性のあるコミットメッセージを生成する
security-audit OWASP 脆弱性のチェックを行う
generate-tests 包括的な pytest テストを生成する
code-checklist チームのコード品質基準を適用する

1. スキルの仕組み(How Skills Work)

スキルとは何か、なぜ重要なのか、そしてエージェントや MCP との違いを学びましょう。

1-1. 利用可能なスキルを確認する

copilot
> /skills list

これにより、Copilotが認識しているすべてのスキルが表示されます。

  • CLI に最初から含まれている 組み込みスキル
  • プロジェクト内のスキル
  • 個人フォルダのスキル

1-1-1. 実行例

image.png

image.png

このプロジェクトで定義されているスキルが 4 つ、
組み込みが 1 つ、
の合計 5 つのスキルが見つかりました。

💡 組み込みスキルについて
Copilot CLIには、最初からいくつかのスキルがインストールされています。

例えば:

customizing-copilot-cloud-agents-environment
→ Copilotクラウドエージェントの環境をカスタマイズするためのガイド

  • これらは自分で作成・インストールする必要はありません
  • /skills list で確認できます

1-2. 実際のスキルファイルを見てみる

このサンプルプロジェクトに定義されている、code-checklist スキル (チームのコード品質チェックリストのスキル) の SKILL.md を確認してみてください

(SKILL.md の中身の和訳)

.github/skills/code-checklist/SKILL.md
---
name: code-checklist
description: チームのコード品質チェックリスト - Pythonコードの品質、バグ、セキュリティ、ベストプラクティスの確認に使用
---

# コードチェックリストスキル

Pythonコードをチェックする際に、このチェックリストを適用してください。

## コード品質チェックリスト

- [ ]  すべての関数に型ヒントが付いている
- [ ]  裸の except(例外指定なしのexcept)が使われていない
- [ ]  可変デフォルト引数が使われていない
- [ ]  ファイル操作にコンテキストマネージャが使われている
- [ ]  関数の長さが50行以内である
- [ ]  変数名・関数名がPEP 8(snake_case)に従っている

## 入力バリデーションチェックリスト

(中略)

## 出力フォーマット

結果は以下の形式で提示してください:
\```
## コードチェックリスト: [ファイル名]

### コード品質
- [PASS/FAIL] 判定内容の説明

### 入力バリデーション
- [PASS/FAIL] 判定内容の説明

### テスト
- [PASS/FAIL] 判定内容の説明

### サマリー
[X] 件の修正が必要(マージ前に対応)
\```

構造はシンプルですね:

  1. YAML(メタ情報)
  2. Markdown(指示内容)

1-2-1. 他のサンプル

プロジェクトの .github/skills/ の中に色々入っています

1-3. コアコンセプトを理解する

スキルとは、 プロンプトに応じて自動で読み込まれるタスク特化の指示 のことです。
(Skills are task-specific instructions that Copilot loads automatically when your prompt matches the skill's description. )

つまり:

  • 明示的に起動しなくていい
  • 普通に質問するだけで発動する

2. スキルの理解(Understanding Skills)

Agent Skills とは、
指示・スクリプト・リソースを含むフォルダ
で、
Copilot はそこから(ユーザのプロンプトから組み立てたタスクに)該当するスキルを探し、自動で適用してくれます。

copilot

> books.py をチームの品質チェックリストで確認して
# → "code-checklist" スキルが自動発動

> BookCollectionクラスのテストを生成して
# → "pytest-gen" スキルが自動発動

> このファイルのコード品質の問題は?
# → "code-checklist" スキルが適用される

💡 重要ポイント (Key Insight):

スキルは「説明にマッチすると自動発動する」ことです。

普通に聞くだけで OK で、裏側で自動適用されます。

また、手動で呼び出すことも可能です。(次で説明)

2-1. スラッシュコマンドで直接呼び出す

自動発動が基本ですが、
明示的にスキルを使うこともできます:

> /generate-tests ユーザー認証モジュールのテストを作成

> /code-checklist books.py の品質チェック

> /security-audit APIの脆弱性をチェック

これは「このスキルを絶対に使いたい」場合に有効です。

2-2. スキル vs エージェント

混同しやすいので注意:

スキル

  • /skill-name プロンプト
  • 例:/code-checklist このファイルをチェックして

エージェント

  • /agent で選択
    または
    copilot --agent 名前

スキル名とエージェント名で同じ名前がある場合、
スキルが優先されます(エージェントではない)

2-3. スキルが使われたか確認する方法

Copilot に直接聞けます:

> どのスキルを使いましたか?

> セキュリティレビュー用のスキルは何がありますか?

2-3. Skills vs Agents vs MCP

image.png

スキルは、GitHub Copilot の拡張機能の一部にすぎません。
ここでは、エージェントや MCP サーバーとの違いを比較します。

MCP については今は深く理解しなくて大丈夫です。第6章で詳しく扱います。ここでは、スキルが全体の中でどの位置にあるのかを理解するために紹介しています。

2-3-1. 比較表

機能 役割 使うタイミング
Agents(エージェント) AI の思考方法を変える 幅広いタスクで専門的な知識が必要なとき
Skills(スキル) タスクごとの具体的な手順を提供する 繰り返し発生する具体的な作業
MCP 外部サービスと接続する API などのリアルタイムデータが必要なとき

2-3-2. エージェントは、会話中に複数のスキルを使う

エージェントは、会話中に複数のスキルを使うことができます。

例)

コードレビューを依頼すると:

  • security-audit スキル(セキュリティチェック)
  • code-checklist スキル(品質チェック)

の両方が自動的に適用されることがあります。

詳細はこちら(公式ドキュメント):

3. 手動プロンプトから自動化された専門知識へ

スキルの作り方に入る前に、なぜスキルが重要なのか を見てみましょう

3-1. スキル導入前:一貫性のないレビュー

コードレビューでは、こんな問題が起きがちです:

ケース1:シンプルすぎるプロンプト

copilot

> このコードをレビューして

問題:

  • 一般的すぎる
  • チーム固有の観点が抜ける

ケース2:毎回長文プロンプトを書く

> このコードをレビューしてください:
> - 裸のexceptがないか
> - 型ヒントがあるか
> - 可変デフォルト引数がないか
> - ファイル操作にcontext managerがあるか
> - 関数が50行以内か
> - 本番コードにprintが残っていないか

問題点;

  • 入力時間:30秒以上
  • 一貫性:人の記憶に依存

3-2. スキル導入後:ベストプラクティスの自動適用

code-checklist スキルがインストールされていれば、自然に質問するだけで OK です:

copilot

> 書籍コレクションのコードに品質上の問題がないかチェックして


出力例)

## コードチェックリスト: books.py

### コード品質
- [PASS] すべての関数に型ヒントがある
- [PASS] 裸のexceptが使われていない
- [PASS] 可変デフォルト引数がない
- [PASS] ファイル操作にコンテキストマネージャが使用されている
- [PASS] 関数が50行以内
- [PASS] 変数名・関数名がPEP 8に従っている

### 入力バリデーション
- [FAIL] ユーザー入力が検証されていない - add_book() が任意の年を受け付けている
- [FAIL] エッジケースが不十分 - タイトルや著者に空文字が許可されている
- [PASS] エラーメッセージは明確で分かりやすい

### テスト
- [FAIL] 対応するpytestテストが存在しない

### サマリー
マージ前に対応が必要な項目 : 3件

3-2-1. 裏側で起きていること

Copilot が適切なスキルを自動で選んでくれます。

  1. Copilotがプロンプト内の「コード品質」「問題」といったキーワードを検出
  2. スキルの説明を確認し、code-checklist スキルが一致すると判断
  3. チームの品質チェックリストを自動で読み込み
  4. すべてのチェック項目を自動で適用

image.png

3-3. Before / After の違い

項目 Before After
プロンプト 毎回書く 一言でOK
チェック漏れ ある ない
一貫性 人依存 完全に一定
スピード 遅い

4. スケールする一貫性:チームの PR レビュースキル

あなたのチームに、10 項目の PR (pull request) チェックリストがあると想像してください。

スキルがない場合:

  • 各開発者が 10 項目すべてを覚えておく必要がある
  • 誰かが必ずどれかを見落とす

pr-review スキルがあれば:

チーム全体で一貫したレビューが実現できます。

copilot

> このPRをレビューしてもらえますか?

出力例
PRレビュー: feature/user-auth

## セキュリティ ✅
- ハードコードされたシークレットなし
- 入力バリデーションあり
- 裸のexceptなし

## コード品質 ⚠️
- [WARN] 45行目にprint文あり → マージ前に削除
- [WARN] 78行目のTODOにissue参照がない
- [WARN] 公開関数に型ヒントが不足

## テスト ✅
- 新規テスト追加済み
- エッジケース対応済み

## ドキュメント ❌
- [FAIL] 破壊的変更がCHANGELOGに記載されていない
- [FAIL] API変更に対するOpenAPI仕様の更新が必要

裏側で起きていること

Copilotが自動的に pr-review スキルを読み込む
チームの10項目チェックをすべて適用

何がすごいのか

すべてのメンバーが同じ基準でレビューできる。

スキル導入の before / after :

項目 Before After
チェック項目 人が覚える 自動適用
抜け漏れ ある ない
新人対応 教育が必要 スキルが補完
品質 バラつく 完全に統一

5. カスタムスキルの作成(Creating Custom Skills)

SKILL.md ファイルを使って、自分専用のスキルを作成しましょう。

5-1. スキルの保存場所(Skill Locations)

スキルは以下の場所に保存されます:

  • .github/skills/ → プロジェクト単位(チーム共有)
  • ~/.copilot/skills/ → ユーザー単位(個人用)

5-2. Copilot がスキルを見つける仕組み

Copilotは、以下の場所を自動的にスキャンします:

場所 スコープ
.github/skills/ プロジェクト固有(gitでチーム共有)
~/.copilot/skills/ 個人固有(自分専用)

5-3. スキルの構造(Skill Structure)

各スキルは専用フォルダに配置され、
必ず SKILL.md を持ちます。

さらに、任意で補助ファイルも追加できます:

.github/skills/
└── my-skill/
    ├── SKILL.md         # 必須:スキル定義と指示
    ├── examples/        # 任意:参照用サンプルコード
    │   └── sample.py
    └── scripts/         # 任意:スキルで使用するスクリプト
        └── validate.sh

💡 ポイント

フォルダ名は、SKILL.md 内の name (スキル名) と一致させること
(小文字 + ハイフン区切り)

5-4. SKILL.md のフォーマット

スキルは、YAML フロントマター付きのシンプルな Markdown 形式で記述します:

SKILL.md
---
name: code-checklist
description: セキュリティ・パフォーマンス・保守性を含む包括的なコード品質チェックリスト
license: MIT
---

# コードチェックリスト

コードを確認する際は、以下の観点をチェックしてください:

## セキュリティ
- SQLインジェクションの脆弱性
- XSS(クロスサイトスクリプティング)の脆弱性
- 認証・認可の問題
- 機密データの露出

## パフォーマンス
- N+1クエリ問題  
  (全件まとめて取得すべきところで、1件ずつクエリを実行している)
- 不要なループや計算
- メモリリーク
- ブロッキング処理

## 保守性
- 関数の長さ(50行以上は警告)
- コードの重複
- エラーハンドリング不足
- 分かりにくい命名

## 出力フォーマット
問題は以下のように重要度付きの番号リストで提示してください:
- [CRITICAL] - マージ前に必ず修正
- [HIGH] - マージ前に修正すべき
- [MEDIUM] - 早めに対応すべき
- [LOW] - できれば改善

5-5. YAML プロパティ

プロパティ 必須 説明
name 必須 一意の識別子(小文字+ハイフン区切り)
description 必須 スキルの役割と、いつ使用されるか
license 任意 このスキルに適用されるライセンス

📖 公式ドキュメント : About Agent Skills

5-6. 最初のスキルを作る(Creating Your First Skill)

ここでは、OWASP Top 10 の脆弱性をチェックするセキュリティ監査スキル を作成してみましょう。

# スキル用ディレクトリを作成
mkdir -p .github/skills/security-audit

# SKILL.md ファイルを作成
cat > .github/skills/security-audit/SKILL.md << 'EOF'
---
name: security-audit
description: OWASP(Open Web Application Security Project)Top 10の脆弱性をチェックするセキュリティ重視のコードレビュー
---

# セキュリティ監査

以下の観点でセキュリティチェックを実施してください:

## インジェクション脆弱性
- SQLインジェクション(クエリ内の文字列結合)
- コマンドインジェクション(サニタイズされていないシェルコマンド)
- LDAPインジェクション
- XPathインジェクション

## 認証の問題
- ハードコードされた認証情報
- 弱いパスワード要件
- レート制限の欠如
- セッション管理の不備

## 機密データ
- 平文のパスワード
- コード内のAPIキー
- 機密情報のログ出力
- 暗号化の欠如

## アクセス制御
- 認可チェックの不足
- 安全でない直接オブジェクト参照
- パストラバーサル脆弱性

## 出力形式
各問題について以下を提示してください:
1. ファイル名と行番号
2. 脆弱性の種類
3. 深刻度(CRITICAL / HIGH / MEDIUM / LOW)
4. 推奨される修正方法
EOF

# スキルをテスト(スキルはプロンプトに応じて自動で読み込まれる)
copilot

> @samples/book-app-project/ このコードにセキュリティ脆弱性がないかチェックして
# Copilotが「security vulnerabilities」に一致するスキルを検出
# OWASPチェックリストを自動適用

5-6-1. 期待される出力例

セキュリティ監査: book-app-project

[HIGH] ファイルパスがハードコードされている(book_app.py, 行12)
  ファイルパスが固定されており、設定可能になっていない
  修正: 環境変数または設定ファイルを使用する

[MEDIUM] 入力バリデーションがない(book_app.py, 行34)
  ユーザー入力がサニタイズされずに関数へ渡されている
  修正: 処理前に入力バリデーションを追加する

✅ SQLインジェクションは検出されませんでした
✅ ハードコードされた認証情報は見つかりませんでした

5-7. 良いスキル説明を書く(Writing Good Skill Descriptions)

SKILL.mddescription フィールドは非常に重要です!
Copilot がそのスキルを使うかどうかを判断する基準になります。

例)

---
name: security-audit
description: セキュリティレビュー、脆弱性スキャン、
  SQLインジェクション、XSS、認証問題、
  OWASP Top 10脆弱性やセキュリティベストプラクティスのチェックに使用
---

5-8. エージェントとスキルの組み合わせ (Combining Skills with Agents)

スキルとエージェントは一緒に使えます。

エージェントは専門性 (expertise) を、
スキルは具体的な手順 (specific instructions) を提供してくれます。

# code-reviewer エージェントで開始
copilot --agent code-reviewer

> 書籍アプリの品質問題をチェックして

code-reviewer エージェントの専門知識と
code-checklist スキルのチェックリストが
組み合わされてアウトプットされます。

6. スキルの管理と共有(Managing and Sharing Skills)

インストール済みスキルの確認、コミュニティスキルの取得、自作スキルの共有方法を学びましょう。

6-1. /skills コマンドによるスキル管理

/skills コマンドを使うことで、スキルを管理できます:

コマンド 役割
/skills list インストール済みスキル一覧を表示
/skills info <name> 指定したスキルの詳細を表示
/skills add <name> スキルを有効化(リポジトリやマーケットプレイスから)
/skills remove <name> スキルを無効化/アンインストール
/skills reload SKILL.md を編集後に再読み込み

💡 重要ポイント (Remember:)

スキルは「毎回有効化するものではありません」。

一度インストールすれば、プロンプトに応じて自動で発動されます。

/skills コマンドは、
(スキルを利用するものではなく)「利用可能なスキルを管理するためのもの」です。

6-2. 例:スキルの確認

copilot

> /skills list

利用可能なスキル:
- security-audit: OWASP Top 10に基づくセキュリティレビュー
- generate-tests: エッジケースを含むテスト生成
- code-checklist: チームのコード品質チェックリスト
...

> /skills info security-audit

スキル名: security-audit
ソース: プロジェクト
場所: .github/skills/security-audit/SKILL.md
説明: OWASP Top 10の脆弱性をチェックするセキュリティレビュー

6-3. /skills reload を使うタイミング

スキルの SKILL.md を作成・編集した後、
/skills reload を叩けば Copilot を再起動せずに変更を反映できます:

# スキルファイルを編集した後
# Copilot内で:
> /skills reload
スキルが正常に再読み込みされました

7. コミュニティスキルの探し方と使い方

7-1. プラグインを使ってスキルをインストールする

💡 プラグインとは?

スキル・エージェント・MCPサーバー設定などをまとめて提供するインストール可能なパッケージです。

Copilot CLI における「アプリストア拡張」のようなものと考えてください。

/plugin コマンドを使うことで、これらのパッケージを閲覧・インストールできます:

copilot

> /plugin list
# インストール済みプラグイン一覧を表示

> /plugin marketplace list
# 利用可能なマーケットプレイス一覧を表示

> /plugin marketplace browse awesome-copilot
# Awesome-copilot マーケットプレイスで利用可能なプラグインを閲覧
# めちゃくちゃたくさんある

> /plugin install <plugin名>
# マーケットプレイスからプラグインをインストール

image.png

image.png

プラグインの特徴

1つのプラグインには複数の機能をまとめられます:

  • スキル
  • エージェント
  • MCP サーバー設定

つまり、関連する機能を一括で導入できます。

7-2. コミュニティ製のプラグイン

awesome-copilot リポジトリの plugins ディレクトリをご参照ください:

⚠️ インストール前の注意

インストール前に、必ずその SKILL.md の中身を確認してください。

理由:

  • スキルは Copilot の動作を制御する
  • 悪意のあるスキルの場合:
    • 危険なコマンドを実行させる
    • 意図しないコード変更を引き起こす

8. まとめ(Summary)

  1. スキルは自動で発動する
    → プロンプトがスキルの説明に一致すると、Copilot が自動的に読み込む
  2. 直接呼び出しも可能
    → /スキル名 というスラッシュコマンドで明示的に実行できる
  3. SKILL.md の構成
    → YAMLフロントマター(namedescription、任意で license)+ Markdown の指示
  4. 保存場所が重要
    .github/skills/:プロジェクト・チーム共有用
    ~/.copilot/skills/:個人用
  5. description が最重要
    → 自分が自然に使う言葉に合わせて書くこと

📋 Quick Reference: すべてのコマンドやショートカットは公式ドキュメント参照 : GitHub Copilot CLI command reference

9. 次に学ぶこと(What's Next)

スキルは、Copilot に、
「何ができるか」 を拡張する仕組みでした。

では、外部サービスと連携したい場合は?

それを実現するのが:
MCP(Model Context Protocol)
です!

9-1. 第 6 章で学ぶ内容

「Chapter 06: MCP Servers」では以下を扱います:

  • MCP とは何か
  • GitHub・ファイルシステム・ドキュメントサービスとの接続
  • MCP サーバーの設定方法
  • 複数サーバーを組み合わせたワークフロー

次も和訳していきます!

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?