Copilot の拡張機能とマーケットプレイス
GitHub Copilot は次のように設計されています。 拡張可能な。を通じて コパイロット拡張機能、AIアシスタントの機能を拡張することが可能 サードパーティの統合、カスタム ツール、専門エージェントを使用します。拡張機能 Copilot をデータベース、クラウド サービス、テスト プラットフォーム、ツールに接続できるようにします。 モニタリングなどを行うことで、ワークフロー全体の一元化されたハブに変換します。 開発の。
この記事では、拡張機能のエコシステム、利用可能なタイプ、 それらをワークフローに統合する方法とカスタム拡張機能を構築する方法 チームの特定のニーズに合わせて。
シリーズ全体の概要
| # | アイテム | 集中 |
|---|---|---|
| 1 | 基礎と考え方 | セットアップとメンタリティ |
| 2 | コンセプトと要件 | アイデアから MVP まで |
| 3 | バックエンド/フロントエンドのアーキテクチャ | APIとデータベース |
| 4 | コードの構造 | 組織と命名 |
| 5 | 迅速なエンジニアリング | MCP プロンプトとエージェント |
| 6 | テストと品質」 | ユニット、統合、E2E |
| 7 | ドキュメント | README、API ドキュメント、ADR |
| 8 | デプロイとDevOps | ドッカー、CI/CD |
| 9 | 進化 | スケーラビリティとメンテナンス |
| 10 | コーディングエージェント | GitHub自律エージェント |
| 11 | コードレビュー | 自動レビュー |
| 12 | 副操縦士の編集 | 複数ファイルの編集 |
| 13 | GitHub スパーク | コード不要のマイクロアプリ |
| 14 | 副操縦士スペース | 共有コンテキスト |
| 15 | AIモデル | マルチモデルと選択 |
| 16 | カスタマイズ | 手順とセットアップ |
| 17 | エンタープライズとビジネス | 計画、分析、ポリシー |
| 18 | 現在位置 → 拡張機能とマーケットプレイス | 拡張機能と統合 |
| 19 | 安全性と責任ある使用 | セキュリティとコンプライアンス |
Copilot 拡張機能の概要
Copilot Extensions は、GitHub Copilot の機能を拡張するアプリケーションです。 それらは以下で入手可能です GitHub マーケットプレイス そしてインストールすることができます 個人レベルでも組織レベルでも。拡張機能は直接統合されます Copilot Chat を使用すると、開発者が外部ツールと対話できるようになります IDE やブラウザを離れることなく、
拡張機能のアーキテクチャ
Copilot 拡張機能は次のように構築されます GitHub アプリを保証します クロスプラットフォーム互換性と堅牢な認証および認可モデル。 ユーザーが Copilot Chat 経由で拡張機能を呼び出すと、リクエストはルーティングされます。 GitHub インフラストラクチャを介して拡張エンドポイントに送信され、リクエストが処理されます。 そして応答を返します。
コパイロット拡張機能の流れ
| ステップ | 俳優 | アクション | 詳細 |
|---|---|---|---|
| 1 | ユーザー | チャットで拡張機能を呼び出す | @extension-name come posso...? |
| 2 | GitHub | リクエストを認証する | ユーザーとアプリの権限を確認する |
| 3 | GitHub | エンドポイントに転送 | 拡張サーバーへの HTTP POST |
| 4 | 拡大 | リクエストを処理する | 外部APIを呼び出してデータを分析する |
| 5 | 拡大 | 応答の生成 | テキスト、コード、リンク、アクション |
| 6 | GitHub | 応答を返します | Copilot チャットでフォーマット済み |
拡張機能の種類
GitHub は主に 2 種類の拡張機能を区別しており、それぞれに特徴があります。 実装の複雑さも異なります。
完全な内線番号 (エージェント)
- サーバー側ロジックを使用してアプリケーションを完成させる
- 外部 API を呼び出すことができます
- 状態とセッションを管理します
- 複雑な複数ステップのフローをサポートします
- 独自のホスティング インフラストラクチャが必要です
- 優れた柔軟性とパワー
- 開発時間: 数週間/数か月
スキルセット (軽量)
- 軽量でタスク固有の拡張機能
- 構成によって定義され、小さなコードが必要
- 単一の機能に焦点を当てる
- 迅速な構築と展開
- 複雑なインフラストラクチャは必要ありません
- 単純な自動化に最適
- 開発時間: 時間/日
スキルセット: ライト拡張機能
スキルセットは、カスタム機能で Copilot を拡張する最も簡単な方法です。 これらは、複雑なロジックを必要としない、特定の繰り返しタスクに最適です。スキルセット それは本質的に次の定義です ツール コパイロットが使用できるもの 特定のリクエストに応えます。
スキルセットの構造
{
"name": "db-query-helper",
"description": "Helps developers write and optimize SQL queries for PostgreSQL",
"version": "1.0.0",
"skills": [
{
"name": "explain-query",
"description": "Analyze and explain a SQL query step by step",
"parameters": {
"query": {
"type": "string",
"description": "The SQL query to analyze"
},
"database": {
"type": "string",
"description": "Target database type",
"enum": ["postgresql", "mysql", "sqlite"],
"default": "postgresql"
}
}
},
{
"name": "optimize-query",
"description": "Suggest optimizations for a SQL query including index recommendations",
"parameters": {
"query": {
"type": "string",
"description": "The SQL query to optimize"
},
"table_info": {
"type": "string",
"description": "Table schemas and current indexes"
},
"expected_rows": {
"type": "number",
"description": "Expected number of rows in result"
}
}
},
{
"name": "generate-migration",
"description": "Generate a database migration script from a description",
"parameters": {
"description": {
"type": "string",
"description": "Description of schema changes"
},
"format": {
"type": "string",
"description": "Migration format",
"enum": ["flyway", "liquibase", "prisma", "raw-sql"],
"default": "flyway"
}
}
}
]
}
スキルセットの使用例
開発チームの共通スキルセット
| スキルセット | 関数 | トリガー | 出力 |
|---|---|---|---|
| コードフォーマッタ | 会社の標準に従ってコードをフォーマットする | @formatter format this code | フォーマットされたコード + 差分 |
| 正規表現ビルダー | 自然な記述から正規表現を生成する | @regex validate Italian fiscal code | 正規表現パターン + テストケース |
| APIモックジェネレーター | OpenAPIスキーマからモックデータを生成する | @mock generate 10 users | 現実的なデータを含む JSON |
| 変更ログライター | コミット履歴から変更ログを生成する | @changelog since v2.1.0 | マークダウン変更ログ形式 |
| 依存関係チェッカー | 古い依存関係や脆弱な依存関係を確認する | @deps check this project | バージョンと CVE を含むレポート |
| i18n ヘルパー | 不足しているキーの翻訳を生成する | @i18n translate to Italian | 翻訳付きの JSON/YAML ファイル |
GitHub アプリの統合
完全な Copilot Extensions は GitHub アプリとして構築されます。これはつまり、 これらは GitHub アプリのセキュリティ、認証、認可モデル全体を継承します。 安全で制御可能な統合を保証します。
認証と認可
拡張機能のセキュリティ モデル
| レベル | 機構 | 説明 |
|---|---|---|
| アプリレベル | JWT (JSON ウェブトークン) | GitHub でアプリ自体を特定する |
| インストールレベル | インストールアクセストークン | 組織にインストールするための特定のトークン |
| ユーザーレベル | OAuth ユーザーアクセストークン | 特定のユーザーに代わってアクションを実行する |
| 権限 | きめ細かな権限 | 必要なリソース (リポジトリ、問題、PR) のみにアクセスします |
| Webhook | HMAC-SHA256 署名 | 受信したイベントの信頼性を検証する |
必要な権限
各拡張機能は、必要なアクセス許可を宣言します。ユーザーまたは組織の管理者 インストール前に明示的に承認する必要があります。最小特権の原則 許可の選択をガイドする必要があります。
{
"name": "Copilot DB Assistant",
"description": "Database query helper for Copilot Chat",
"url": "https://db-assistant.example.com",
"hook_attributes": {
"url": "https://db-assistant.example.com/webhooks"
},
"redirect_url": "https://db-assistant.example.com/auth/callback",
"public": true,
"default_events": [
"issues",
"pull_request"
],
"default_permissions": {
"contents": "read",
"issues": "write",
"pull_requests": "read",
"metadata": "read"
},
"copilot_agent": {
"url": "https://db-assistant.example.com/copilot/agent",
"description": "Helps with database queries and migrations"
}
}
拡張機能コンテキストでの MCP の統合
Il モデルコンテキストプロトコル (MCP) それは補完的な代替手段です 外部ツールを Copilot に接続するための Copilot 拡張機能。拡張機能がある間、 GitHub Apps モデルに従い、MCP は接続用の標準化されたプロトコルを提供します ツールとデータソースの。
GitHub MCP レジストリ
GitHub MCP Registry は、MCP サーバー用に厳選された検出サービスです。それは次のように機能します 検証済みの MCP サーバーをすばやく検索してインストールできるカタログ。 安全でない統合のリスクを軽減します。
比較: 拡張機能と MCP サーバー
| 待ってます | コパイロット拡張機能 | MCPサーバー |
|---|---|---|
| プラットフォーム | GitHub マーケットプレイス | MCP レジストリ + ローカル構成 |
| 認証 | GitHub OAuth / アプリトークン | さまざま (API キー、OAuth、なし) |
| ホスティング | 外部サーバー(クラウド) | ローカル (stdio) またはリモート (HTTP/SSE) |
| セットアップの複雑さ | メディア (GitHub アプリ) | 低 (構成ファイル) |
| クロスプラットフォーム | すべての Copilot 環境 | 主にIDE(VS Code) |
| ガバナンス | GitHub マーケットプレイスのレビュー | ユーザー/組織の責任 |
| 使用事例 | SaaS 統合、複雑なワークフロー | ローカルツール、データベース、ファイルシステム |
| 分布 | 発行(マーケットプレイス) | プライベートまたはパブリック (レジストリ) |
ツールセット: グループ MCP ツール
I ツールセット 関連する MCP ツールをグループ化するためのメカニズムです。 単一の名前空間。これにより、多数の MCP サーバーがある場合の管理が簡素化されます。 同時にアクティブになり、ツールのグループを有効/無効にすることができます 単一の操作で。
{
"servers": {
"development-tools": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@dev-tools/mcp-server"],
"toolsets": {
"database": {
"description": "Database management tools",
"tools": ["query", "migrate", "seed", "backup"]
},
"testing": {
"description": "Testing utilities",
"tools": ["generate-test", "run-test", "coverage-report"]
},
"documentation": {
"description": "Documentation generation",
"tools": ["generate-docs", "update-readme", "create-adr"]
}
}
},
"cloud-services": {
"type": "remote",
"url": "https://cloud-mcp.example.com/sse",
"toolsets": {
"aws": {
"description": "AWS service management",
"tools": ["s3-upload", "lambda-deploy", "cloudwatch-logs"]
},
"monitoring": {
"description": "Monitoring and alerting",
"tools": ["check-health", "get-metrics", "create-alert"]
}
}
}
}
}
サードパーティエージェント
Copilot エコシステムの最も重要な進化の 1 つは、 サードパーティエージェント プラットフォーム上で直接。これらのエージェント 代替 AI モデルの機能を Copilot エクスペリエンスに導入します。
対応可能なエージェント
Copilot のサードパーティ エージェント
| エージェント | プロバイダー | 専門分野 | 可用性' | モデル |
|---|---|---|---|---|
| クロード | 人間的 | 詳細なコード分析、リファクタリング、ドキュメント化 | プロ+ / エンタープライズ | クロード・ソネット 4 |
| コーデックス | OpenAI | コード生成、高度な補完 | プロ+ / エンタープライズ | コーデックス/o3-mini |
| ジェミニ | グーグル | 多峰性の理解、長い文脈 | プロ+ / エンタープライズ | ジェミニ 2.5 プロ |
各エージェントをいつ使用するか
| シナリオ | 推奨エージェント | モチベーション |
|---|---|---|
| レガシーコードベースをリファクタリングする | クロード | 複雑なコードを分析し、段階的な再構築を提案することに優れています。 |
| 定型文の高速生成 | ネイティブ副操縦士 (GPT-4) | 迅速な完了と足場を実現するために最適化されています |
| UIスクリーンショット分析 | ジェミニ | インターフェイス画像を分析するためのマルチモーダルな理解 |
| 複雑なアルゴリズムのデバッグ | コーデックス/o3-mini | 論理的な推論とアルゴリズムの問題解決に強い |
| 詳細な技術文書 | クロード | 長い文脈を含む高品質の技術文書を作成します |
| フレームワーク間の移行 | クロードまたはネイティブの副操縦士 | さまざまなフレームワークのパターンを深く理解する |
可用性に関する注意
サードパーティエージェントは現在、 パブリック プレビュー そして利用可能 床のみ プロ+ e 企業。可用性 新しいプロバイダーが登場すると、特定のモデルが時間の経過とともに変更される可能性があります プラットフォームに統合されています。
サードパーティ エージェントを使用すると、毎月の予算からプレミアム リクエストが消費されます。 高度なモデルへのリクエストは、リクエストよりも多くのプレミアム リクエストを消費する可能性があります 基本的なCopilotモデルに。
独自の Copilot 拡張機能を構築する
マーケットプレイスで入手可能な拡張機能が特定のニーズをカバーしていない場合 チームは、独自の Copilot Extension を構築できます。このプロセスでは、 Copilot リクエストを処理するサーバー エンドポイントを備えた GitHub アプリ。
前提条件
拡張機能を構築するために必要なもの
- GitHub アカウント: GitHub アプリを構築するためのアクセス権付き
- ウェブサーバー: 拡張エンドポイント (Node.js、Python、Go など) をホストするには
- HTTPS ドメイン: エンドポイントは HTTPS 経由でアクセスできる必要があります
- GitHub Apps API に関する知識: 認証と Webhook を管理するには
- コパイロット拡張 SDK: 開発を簡素化する公式SDK
拡張機能のアーキテクチャ
# Architettura di una Copilot Extension
GitHub Infrastructure
+-------------------+
| |
User in IDE ---> | Copilot Chat |
"@my-ext help" | (message router) |
| |
+--------+----------+
|
HTTP POST (authenticated)
|
+--------v----------+
| |
| Your Extension |
| Server |
| |
| +---------------+ |
| | Request | |
| | Handler | |
| +-------+-------+ |
| | |
| +-------v-------+ |
| | Business | |
| | Logic | |
| +-------+-------+ |
| | |
| +-------v-------+ |
| | External | |
| | Services | |
| | (DB, API, | |
| | tools) | |
| +---------------+ |
| |
+--------+----------+
|
HTTP Response (streaming)
|
+--------v----------+
| |
| Copilot Chat |
| (rendered to |
| user) |
| |
+-------------------+
Node.jsによる基本的な実装
import express from 'express';
import { Octokit } from '@octokit/rest';
import { createNodeMiddleware } from '@octokit/webhooks';
import { verifyRequestByKeyId } from '@copilot-extensions/preview-sdk';
const app = express();
app.use(express.json());
// Endpoint principale per Copilot Chat
app.post('/copilot/agent', async (req, res) => {
try {
// 1. Verifica autenticita' della richiesta
const signature = req.headers['github-public-key-signature'] as string;
const keyId = req.headers['github-public-key-identifier'] as string;
const body = JSON.stringify(req.body);
const isValid = await verifyRequestByKeyId(body, signature, keyId, {
token: process.env.GITHUB_TOKEN!
});
if (!isValid) {
return res.status(401).json({ error: 'Invalid signature' });
}
// 2. Estrai il messaggio dell'utente
const messages = req.body.messages;
const lastMessage = messages[messages.length - 1];
const userQuery = lastMessage.content;
// 3. Elabora la richiesta in base al contenuto
const response = await processQuery(userQuery, req.body);
// 4. Restituisci risposta in streaming (SSE format)
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Connection', 'keep-alive');
// Invia la risposta come stream di eventi
res.write(`data: ${JSON.stringify({
choices: [{
index: 0,
delta: {
role: 'assistant',
content: response
}
}]
})}\n\n`);
res.write('data: [DONE]\n\n');
res.end();
} catch (error) {
console.error('Extension error:', error);
res.status(500).json({ error: 'Internal server error' });
}
});
async function processQuery(
query: string,
context: any
): Promise<string> {
// Logica personalizzata dell'extension
// Qui puoi chiamare database, API esterne, ecc.
if (query.includes('status')) {
return await getSystemStatus();
}
if (query.includes('deploy')) {
return await getDeploymentInfo();
}
if (query.includes('metrics')) {
return await getProjectMetrics();
}
return `Ciao! Sono l'extension personalizzata del team.
Posso aiutarti con:
- **status**: Stato attuale dei servizi
- **deploy**: Informazioni sull'ultimo deployment
- **metrics**: Metriche del progetto
Come posso aiutarti?`;
}
async function getSystemStatus(): Promise<string> {
// Esempio: chiama un health check endpoint
const services = ['api', 'database', 'cache', 'queue'];
const results = await Promise.all(
services.map(async (service) => {
try {
const response = await fetch(
`https://monitoring.example.com/health/${service}`
);
const data = await response.json();
return `- **${service}**: ${data.status} (uptime: ${data.uptime})`;
} catch {
return `- **${service}**: UNREACHABLE`;
}
})
);
return `## System Status\n\n${results.join('\n')}`;
}
async function getDeploymentInfo(): Promise<string> {
// Esempio: informazioni dall'ultimo deploy
return `## Last Deployment
- **Version**: v2.4.1
- **Environment**: production
- **Time**: 2 hours ago
- **Status**: Successful
- **Deployed by**: CI/CD Pipeline
- **Commit**: abc1234`;
}
async function getProjectMetrics(): Promise<string> {
// Esempio: metriche dal sistema di monitoring
return `## Project Metrics (Last 24h)
- **Requests**: 125,430
- **Error Rate**: 0.12%
- **p95 Latency**: 245ms
- **Active Users**: 3,421
- **CPU Usage**: 45%
- **Memory**: 62%`;
}
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Extension server running on port ${PORT}`);
});
拡張テスト
import request from 'supertest';
import { app } from '../server';
describe('Copilot Extension', () => {
describe('POST /copilot/agent', () => {
it('should respond to status query', async () => {
const response = await request(app)
.post('/copilot/agent')
.set('Content-Type', 'application/json')
.send({
messages: [
{
role: 'user',
content: 'What is the current status?'
}
]
});
expect(response.status).toBe(200);
expect(response.headers['content-type']).toContain('text/event-stream');
});
it('should handle unknown queries gracefully', async () => {
const response = await request(app)
.post('/copilot/agent')
.send({
messages: [
{
role: 'user',
content: 'random question'
}
]
});
expect(response.status).toBe(200);
// Should return help message
});
it('should reject unauthenticated requests', async () => {
// Test without proper GitHub signature headers
const response = await request(app)
.post('/copilot/agent')
.set('github-public-key-signature', 'invalid')
.set('github-public-key-identifier', 'invalid')
.send({
messages: [{ role: 'user', content: 'test' }]
});
expect(response.status).toBe(401);
});
});
});
マーケットプレイスでの公開
公開プロセス
| ステップ | アクション | 要件 | 推定所要時間 |
|---|---|---|---|
| 1 | GitHub アプリの作成 | GitHub アカウント、HTTPS ドメイン | 1時間 |
| 2 | エンドポイントの実装 | Copilot Extensions SDKを備えたサーバー | 1~4週間 |
| 3 | ローカルテスト | プライベートアプリのインストール | 1~2日 |
| 4 | ドキュメント | README、例、API ドキュメント | 2~3日 |
| 5 | レビューのために送信する | マーケットプレイスへの完全なリスト | 1日 |
| 6 | GitHub レビュー | ガイドラインの遵守 | 3~10日 |
| 7 | 出版物 | 承認取得 | すぐに |
拡張機能の人気カテゴリ
GitHub Marketplace では、カテゴリ別に分類された拡張機能が提供されています。カテゴリは次のとおりです 最も人気のある、利用可能な拡張機能の種類。
マーケットプレイスの主なカテゴリ
| カテゴリ | Esempi | 付加価値 |
|---|---|---|
| コード分析 | リンター、セキュリティ スキャナー、複雑さアナライザー | コード内の品質とセキュリティの問題を特定する |
| データベース | クエリビルダー、スキーマビジュアライザー、移行ヘルパー | チャットに統合されたデータベース管理 |
| クラウドとDevOps | AWS ヘルパー、Kubernetes マネージャー、CI/CD ステータス | IDE を離れることなくクラウド操作が可能 |
| テスト | テストジェネレーター、カバレッジレポーター、E2Eランナー | テストの作成と実行を高速化する |
| ドキュメント | API ドキュメント ジェネレーター、ダイアグラム作成ツール、README ビルダー | 自動更新されたドキュメント |
| プロジェクト管理 | Jira 統合、スプリント プランナー、見積もりヘルパー | コードとプロジェクト管理の関係 |
| 監視 | Sentry、DataDog、PagerDuty の統合 | チャットでのエラーとパフォーマンスの可視化 |
| デザイン | Figma の統合、カラー パレット ヘルパー、アイコン ファインダー | 設計と実装の間の橋渡し |
拡張機能開発のベスト プラクティス
やるべきこと
- 高速応答 (タイムアウト < 30 秒)
- 適切なエラー処理
- 明確で完全なドキュメント
- 最低限必要な許可
- デバッグ用の構造化ログ
- 内部レート制限
- 包括的な自動テスト
- セマンティック バージョニング
- マークダウン形式の応答
- ユーザーに次のステップを提案する
避けるべきもの
- 応答が長すぎます (4000 文字を超える)
- 確認のない破壊的な操作
- 応答内の機密データを公開する
- 不要な権限を要求する
- 署名検証を無視する
- コンテキストや構造のない応答
- 維持されていない依存関係
- 明確なエラーメッセージの欠如
- 同期 API 呼び出しのブロック
- ヘルスチェックエンドポイントの欠如
推奨される応答パターン
拡張機能の応答は一貫したパターンに従って配信する必要があります 均一なユーザーエクスペリエンス。推奨される形式は次のとおりです。
- タイトル: 結果を説明する明確な見出し
- 結果: 読みやすい形式の必須データ
- コンテクスト: 解釈に役立つ追加情報
- 次のステップ: 考えられる次のアクションについての提案
拡張機能のセキュリティ
拡張機能を使用または構築する場合は、安全性が最優先されます。 各拡張機能は機密データにアクセスする可能性があるため、処理する必要があります サードパーティの統合にも同様の注意が払われます。
拡張機能のセキュリティチェックリスト
| エリア | 確認する | 無視した場合のリスク |
|---|---|---|
| 認証 | リクエストの GitHub 署名を常に検証する | 不正なリクエストの処理 |
| 認可 | アクションを実行する前にユーザーの権限を確認してください | 権限昇格 |
| 入力の検証 | すべての入力パラメータを検証する | 注射攻撃 |
| 秘密 | 返信内でトークン/キーを決して公開しないでください | 資格情報の漏洩 |
| レート制限 | ユーザーごとおよびIPごとの制限を実装する | サービス拒否 |
| ロギング | 機密データを含まないログ (PII やトークンなし) | ログによるデータ侵害 |
| HTTPS | 暗号化通信のみ | 中間者攻撃 |
| 依存関係 | 依存関係の定期的な監査 | サプライチェーン攻撃 |
結論
Copilot Extensions エコシステムは GitHub Copilot をアシスタントから変革します に分離されたコーディング 集中ハブ ワークフロー全体に 開発の。データベース、クラウド サービス、監視ツールの接続など またはサードパーティの AI エージェントの拡張機能を使用すると、すべてのコンテキストを取り込むことができます 副操縦士との会話で直接必要になります。
チームにとって、拡張機能は次の機会を意味します。 自動化する 反復的なワークフロー e 情報を一元化する。のために 個々の開発者が Copilot エクスペリエンスをカスタマイズする方法 ドメイン固有のツールを使用して。
シリーズの次の最終記事では、次の重要なトピックについて取り上げます。 安全性と責任ある使用 Copilot の保護機能の検討 統合されたデータプライバシーガイドラインと使用上のベストプラクティス ソフトウェア開発における倫理的で安全な AI。
シリーズの進行状況
| # | アイテム | Stato |
|---|---|---|
| 1 | 基礎と考え方 | ✅ |
| 2 | コンセプトと要件 | ✅ |
| 3 | バックエンド/フロントエンドのアーキテクチャ | ✅ |
| 4 | コードの構造 | ✅ |
| 5 | 迅速なエンジニアリング | ✅ |
| 6 | テストと品質」 | ✅ |
| 7 | ドキュメント | ✅ |
| 8 | デプロイとDevOps | ✅ |
| 9 | 進化 | ✅ |
| 10 | コーディングエージェント | ✅ |
| 11 | コードレビュー | ✅ |
| 12 | 副操縦士の編集 | ✅ |
| 13 | GitHub スパーク | ✅ |
| 14 | 副操縦士スペース | ✅ |
| 15 | AIモデル | ✅ |
| 16 | 高度なカスタマイズ | ✅ |
| 17 | エンタープライズとビジネス | ✅ |
| 18 | 拡張機能とマーケットプレイス | 📍 |
| 19 | 安全性と責任ある使用 | ◻ |







