Skip to main content

Copilot SDK でのカスタム スキルの使用

再利用可能なプロンプト モジュールを使用して Copilotの機能を拡張するには、スキルを使用します。

この機能を使用できるユーザーについて

GitHub Copilot SDK は、すべての Copilot プランで使用できます。

メモ

          Copilot SDK は現在 テクニカル プレビューです。 機能と可用性は変更される場合があります。

スキルは、 Copilotの機能を拡張する再利用可能なプロンプト モジュールです。 ディレクトリからスキルを読み込むことで、Copilot に特定のドメインやワークフローに特化した機能を提供します。

スキルは、 SKILL.md ファイルを含む名前付きディレクトリです。これは、 Copilotする手順を提供するマークダウン ドキュメントです。 読み込まれると、スキルのコンテンツがセッション コンテキストに挿入されます。

スキルを使用すると、次のことができるようになります。

  • 再利用可能なモジュールにドメインの専門知識をパッケージ化する
  • プロジェクト間で特殊な動作を共有する
  • 複雑なエージェント構成を整理する
  • セッションごとの機能の有効化/無効化

スキルの読み込み

セッションの作成時にスキルを含むディレクトリを指定します。

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-4.1",
    skillDirectories: [
        "./skills/code-review",
        "./skills/documentation",
    ],
    onPermissionRequest: async () => ({ kind: "approved" }),
});

// Copilot now has access to skills in those directories
await session.sendAndWait({ prompt: "Review this code for security issues" });

Python、Go、.NET の例については、 github/copilot-sdk リポジトリを参照してください。

スキルの無効化

他のユーザーをアクティブにしたまま、特定のスキルを無効にします。

const session = await client.createSession({
    skillDirectories: ["./skills"],
    disabledSkills: ["experimental-feature", "deprecated-tool"],
});

Python、Go、.NET の例については、 github/copilot-sdk リポジトリを参照してください。

スキル ディレクトリ構造

各スキルは、 SKILL.md ファイルを含む名前付きサブディレクトリです。

skills/
├── code-review/
│   └── SKILL.md
└── documentation/
    └── SKILL.md
          `skillDirectories` オプションは、親ディレクトリ (たとえば、`./skills`) を指します。 CLI は、即時サブディレクトリ内のすべての `SKILL.md` ファイルを検出します。

SKILL.md 形式

          `SKILL.md` ファイルは、オプションの YAML frontmatter を含むマークダウン ドキュメントです。
---
name: code-review
description: Specialized code review capabilities
---

# Code Review Guidelines

When reviewing code, always check for:

1. **Security vulnerabilities**—SQL injection, XSS, etc.
2. **Performance issues**—N+1 queries, memory leaks
3. **Code style**—Consistent formatting, naming conventions
4. **Test coverage**—Are critical paths tested?

Provide specific line-number references and suggested fixes.

フロントマターのフィールド: * ** name **—スキルの識別子 (選択的に無効にするために disabledSkills と共に使用されます)。 省略すると、ディレクトリ名が使用されます。 * ** description **—スキルの機能の簡単な説明。

マークダウン本文には、スキルの読み込み時にセッション コンテキストに挿入される命令が含まれます。

構成オプション

SessionConfig スキル フィールド

          `createSession()`を呼び出すときは、セッション構成オブジェクトで次のスキル関連フィールドを渡します。
Languageフィールドタイプ説明
Node.jsskillDirectoriesstring[]スキルを読み込むためのディレクトリ
Node.jsdisabledSkillsstring[]無効にするスキル
Pythonskill_directorieslist[str]スキルを読み込むためのディレクトリ
Pythondisabled_skillslist[str]無効にするスキル
GoSkillDirectories[]stringスキルを読み込むためのディレクトリ
GoDisabledSkills[]string無効にするスキル
.NETSkillDirectoriesList<string>スキルを読み込むためのディレクトリ
.NETDisabledSkillsList<string>無効にするスキル

ベスト プラクティス

  •         **ドメイン別に整理**する - 関連するスキルをグループ化する ( `skills/security/`、 `skills/testing/`など)
    
  •         **frontmatter の使用** - 明確にするために YAML フロントマッターに `name` と `description` を含める
    
  •         **ドキュメントの依存関係** - スキルに必要なツールまたは MCP サーバーに注意してください
    
  •         **分離してスキルをテスト**する - 組み合わせる前にスキルの動作を確認する
    
  •         **相対パスを使用**する - 環境間でスキルを移植可能にする
    

他の機能との組み合わせ

カスタムエージェントとのスキル

スキルは専用エージェントと共に機能します。

const session = await client.createSession({
    skillDirectories: ["./skills/security"],
    customAgents: [{
        name: "security-auditor",
        description: "Security-focused code reviewer",
        prompt: "Focus on OWASP Top 10 vulnerabilities",
    }],
    onPermissionRequest: async () => ({ kind: "approved" }),
});

MCP サーバーでのスキル

スキルは MCP サーバーの機能を補完できます。

const session = await client.createSession({
    skillDirectories: ["./skills/database"],
    mcpServers: {
        postgres: {
            type: "local",
            command: "npx",
            args: ["-y", "@modelcontextprotocol/server-postgres"],
            tools: ["*"],
        },
    },
    onPermissionRequest: async () => ({ kind: "approved" }),
});

Troubleshooting

スキルが読み込まれていない

  1.        **[パスの確認**] - スキル ディレクトリのパスが正しく、 `SKILL.md` ファイルを含むサブディレクトリが含まれていることを確認します。
    
  2.        **アクセス許可の確認** - SDK がディレクトリを読み取ることができることを確認します。
    
  3.        **SKILL.md のフォーマットを確認**する- マークダウンが正しく整えられ、YAMLフロントマターが有効な構文を使用していることを確認します。
    
  4.        **デバッグ ログを有効にする** - スキルの読み込みログを表示するには、 `logLevel: "debug"` を設定します。
    

スキルの競合

複数のスキルが競合する手順を提供する場合: * disabledSkillsを使用して競合するスキルを除外する

  • スキル ディレクトリを再構成して重複を回避する