copilot-spaces について
Copilot Spacesは、共有されたプロジェクトのリポジトリ、ファイル、ドキュメント、指示を検索・読み込み、チームの情報をCopilotの応答に反映するスキルです。`gh api`によるSpace管理も説明します。
主な機能
- 01アクセス可能なCopilot Spacesの一覧表示
- 02オーナーと名前を指定したSpaceの読み込み
- 03`gh api`によるSpaceとコラボレーターの管理
- 04ワークフローで添付資料や指示を活用
活用シーン
- 01質問に関連するプロジェクト文書の検索
- 02コード生成時にチーム規約を読み込み
- 03Spaceの構造化ワークフローを実行
- 04Spaceのプログラムによる作成・更新
MCP 対応
このスキルはGitHub MCPの読み取り専用ツールでCopilot Spacesを一覧表示し、内容を読み込みます。作成、更新、削除、コラボレーター管理には`gh api`経由でREST APIを使います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill copilot-spacesインストール後、Claude Code で/copilot-spacesを入力して読み込まれたか確認します。
詳細
Copilot Spaces
Copilot Spaces を使用すると、厳選されたプロジェクト固有のコンテキストを会話に取り込めます。Space は、リポジトリ、ファイル、ドキュメント、指示を共有するコレクションです。これにより、Copilot の応答をチームが実際に使用しているコードやナレッジに基づいたものにできます。
利用可能なツール
MCP ツール(読み取り専用)
| ツール | 目的 |
|---|---|
mcp__github__list_copilot_spaces | 現在のユーザーがアクセスできるすべてのスペースを一覧表示します |
mcp__github__get_copilot_space | オーナーと名前を指定してスペースの完全なコンテキストを読み込みます |
gh api 経由の REST API(完全な CRUD)
Spaces REST API は、スペースの作成、更新、削除、およびコラボレーターの管理に対応しています。MCP サーバーが公開するのは読み取り操作のみのため、書き込みには gh api を使用してください。
ユーザースペース:
| メソッド | エンドポイント | 目的 |
|---|---|---|
POST | /users/{username}/copilot-spaces | スペースを作成します |
GET | /users/{username}/copilot-spaces | スペースを一覧表示します |
GET | /users/{username}/copilot-spaces/{number} | スペースを取得します |
PUT | /users/{username}/copilot-spaces/{number} | スペースを更新します |
DELETE | /users/{username}/copilot-spaces/{number} | スペースを削除します |
組織スペース: /orgs/{org}/copilot-spaces/... でも同じ形式です。
コラボレーター: .../collaborators でコラボレーターの追加、一覧表示、更新、削除を行えます。
スコープの要件: 読み取りには PAT の read:user が、書き込みには user が必要です。gh auth refresh -h github.com -s user で追加してください。
注: この API は機能しますが、まだ公開 REST API のドキュメントには掲載されていません。copilot_spaces_api の機能フラグが必要な場合があります。
Spaces を使用する場合
- ユーザーが「Copilot space」に言及したり、「スペースを読み込んで」と依頼したりした場合
- 特定のプロジェクトのドキュメント、コード、標準に基づいた回答を求めている場合
- 「利用できるスペースは?」や「X に合うスペースを探して」と尋ねている場合
- オンボーディングのコンテキスト、アーキテクチャドキュメント、またはチーム固有のガイダンスが必要な場合
- Space で定義された構造化ワークフロー(テンプレート、チェックリスト、複数ステップのプロセス)に従いたい場合
ワークフロー
1. スペースを見つける
ユーザーが利用可能なスペースを尋ねた場合や、適切なスペースを見つける必要がある場合:
Call mcp__github__list_copilot_spaces
これにより、ユーザーがアクセスできるすべてのスペースが返されます。それぞれに name と owner_login が含まれます。関連する候補をユーザーに提示してください。
特定のユーザーのスペースに絞り込むには、owner_login をユーザー名と照合します(例:「自分のスペースを表示して」)。
2. スペースを読み込む
ユーザーが特定のスペースを指定した場合、または適切なスペースを特定した場合:
Call mcp__github__get_copilot_space with:
owner: "org-or-user" (the owner_login from the list)
name: "Space Name" (exact space name, case-sensitive)
これにより、添付ドキュメント、コードのコンテキスト、カスタム指示、その他の厳選された資料など、スペースの全コンテンツが返されます。このコンテキストを回答に活用してください。
3. 参照先をたどる
Space のコンテンツには、GitHub の issue、ダッシュボード、リポジトリ、ディスカッション、その他のツールなど、外部リソースへの参照が含まれていることがよくあります。完全なコンテキストを集めるため、他の MCP ツールを使ってこれらを積極的に取得してください。例:
- Space がイニシアチブの追跡用 issue を参照している場合は、
issue_readを使って最新のコメントを取得します。 - Space がプロジェクトボードにリンクしている場合は、プロジェクト用ツールを使って現在のステータスを確認します。
- Space がリポジトリのマスタープランに言及している場合は、
get_file_contentsを使って読み込みます。
4. 回答または実行する
読み込みが完了したら、内容に応じて Space のコンテンツを活用します。
Space に参考資料(ドキュメント、コード、標準)が含まれている場合:
- プロジェクトのアーキテクチャ、パターン、標準に関する質問に回答します
- チームの規約に沿ったコードを生成します
- プロジェクト固有のナレッジを使って問題をデバッグします
Space にワークフローの指示(テンプレート、段階的な手順)が含まれている場合:
- 定義されたワークフローに沿って、順を追って進めます
- ワークフローで指定されたソースからデータを収集します
- ワークフローで定義された形式で出力を作成します
- ユーザーが進め方を調整できるよう、各ステップの後に進捗を示します
5. スペースを管理する(gh api を使用)
ユーザーがスペースの作成、更新、削除を希望する場合は、gh api を使用します。まず、一覧エンドポイントからスペース番号を確認します。
スペースの指示を更新する:
gh api users/{username}/copilot-spaces/{number} \
-X PUT \
-f general_instructions="New instructions here"
名前、説明、指示をまとめて更新する:
gh api users/{username}/copilot-spaces/{number} \
-X PUT \
-f name="Updated Name" \
-f description="Updated description" \
-f general_instructions="Updated instructions"
新しいスペースを作成する:
gh api users/{username}/copilot-spaces \
-X POST \
-f name="My New Space" \
-f general_instructions="Help me with..." \
-f visibility="private"
リソースを添付する(リソース一覧全体を置き換えます):
{
"resources_attributes": [
{ "resource_type": "free_text", "metadata": { "name": "Notes", "text": "Content here" } },
{ "resource_type": "github_issue", "metadata": { "repository_id": 12345, "number": 42 } },
{ "resource_type": "github_file", "metadata": { "repository_id": 12345, "file_path": "docs/guide.md" } }
]
}
スペースを削除する:
gh api users/{username}/copilot-spaces/{number} -X DELETE
更新可能なフィールド: name、description、general_instructions、icon_type、icon_color、visibility("private"/"public")、base_role("no_access"/"reader")、resources_attributes
例
例 1:ユーザーがスペースについて尋ねる
ユーザー:「Accessibility copilot スペースを読み込んで」
アクション:
- owner
"github"、name"Accessibility"を指定してmcp__github__get_copilot_spaceを呼び出します - 返されたコンテキストを使って、アクセシビリティ標準、MAS グレード、コンプライアンスプロセスなどに関する質問に回答します
例 2:ユーザーがスペースを探したい
ユーザー:「チームで利用できる copilot スペースを教えて」
アクション:
mcp__github__list_copilot_spacesを呼び出します- ユーザーの組織や関心に関連するスペースを絞り込んで提示します
- 関心のあるスペースを読み込むことを提案します
例 3:コンテキストに基づく質問
ユーザー:「security スペースを使って、シークレットスキャンに関するポリシーを教えて」
アクション:
- 該当する owner と name を指定して
mcp__github__get_copilot_spaceを呼び出します - スペースのコンテンツから該当するポリシーを探します
- 実際の内部ドキュメントに基づいて回答します
例 4:ワークフローエンジンとしてのスペース
ユーザー:「PM Weekly Updates スペースを使って、週次アップデートを書いて」
アクション:
mcp__github__get_copilot_spaceを呼び出してスペースを読み込みます。スペースにはテンプレート形式と段階的な手順が含まれています。- スペースのワークフローに従って、添付されたイニシアチブの issue からデータを取得し、指標を集め、各セクションの下書きを作成します。
- 他の MCP ツールを使って、スペースで参照されている外部リソース(追跡 issue、ダッシュボード)を取得します。
- ユーザーが確認し、不足箇所を補えるように、各セクションの下書きを提示します。
- スペースで定義されている形式で最終出力を作成します。
例 5:プログラムでスペースの指示を更新する
ユーザー:「PM Weekly Updates スペースに、新しい執筆ガイドラインを追加して」
アクション:
mcp__github__list_copilot_spacesを呼び出し、スペース番号(例:19)を確認します。mcp__github__get_copilot_spaceを呼び出して、現在の指示を読み込みます。- 依頼に応じて指示文を変更します。
- 更新を反映します:
gh api users/labudis/copilot-spaces/19 -X PUT -f general_instructions="updated instructions..."
ヒント
- スペース名では大文字と小文字が区別されます。
list_copilot_spacesに表示された名前を正確に使用してください。 - スペースの所有者はユーザーまたは組織です。必ず
ownerとnameの両方を指定してください。 - スペースのコンテンツは大きい場合があります(20KB 以上)。一時ファイルとして返された場合は、一度にすべてを読むのではなく、grep または view_range を使って該当するセクションを探してください。
- スペースが見つからない場合は、利用可能なスペースを一覧表示して適切な名前を探すよう提案してください。
- スペースは基盤となるリポジトリの変更に合わせて自動更新されるため、コンテキストは常に最新です。
- 一部のスペースには、動作の指針となるカスタム指示(コーディング標準、推奨パターン、ワークフロー)が含まれています。これらは提案ではなく指示として扱ってください。
- 書き込み操作(作成/更新/削除のための
gh api)にはuserPAT スコープが必要です。書き込み操作で 404 が返された場合は、gh auth refresh -h github.com -s userを実行してください。 - リソースの更新では配列全体が置き換えられます。リソースを追加するには、既存のすべてのリソースと新しいリソースを含めてください。削除するには、配列に
{ "id": 123, "_destroy": true }を含めてください。