{"id":"69d8fef3-286b-4423-86a0-db21a83f100c","shortId":"WEzw5d","kind":"skill","title":"copilot-sdk","tagline":"Build applications that programmatically interact with GitHub Copilot. The SDK wraps the Copilot CLI via JSON-RPC, providing session management, custom tools, hooks, MCP server integration, and streaming across Node.js, Python, Go, and .NET.","description":"# GitHub Copilot SDK\n\nBuild applications that programmatically interact with GitHub Copilot. The SDK wraps the Copilot CLI via JSON-RPC, providing session management, custom tools, hooks, MCP server integration, and streaming across Node.js, Python, Go, and .NET.\n\n## Prerequisites\n\n- **GitHub Copilot CLI** installed and authenticated (`copilot --version` to verify)\n- **GitHub Copilot subscription** (Individual, Business, or Enterprise) — not required for BYOK\n- **Runtime:** Node.js 18+ / Python 3.8+ / Go 1.21+ / .NET 8.0+\n\n## Installation\n\n| Language | Package | Install |\n|----------|---------|---------|\n| Node.js | `@github/copilot-sdk` | `npm install @github/copilot-sdk` |\n| Python | `github-copilot-sdk` | `pip install github-copilot-sdk` |\n| Go | `github.com/github/copilot-sdk/go` | `go get github.com/github/copilot-sdk/go` |\n| .NET | `GitHub.Copilot.SDK` | `dotnet add package GitHub.Copilot.SDK` |\n\n---\n\n## Core Pattern: Client → Session → Message\n\nAll SDK usage follows this pattern: create a client, create a session, send messages.\n\n### Node.js / TypeScript\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\nconst client = new CopilotClient();\nconst session = await client.createSession({ model: \"gpt-4.1\" });\n\nconst response = await session.sendAndWait({ prompt: \"What is 2 + 2?\" });\nconsole.log(response?.data.content);\n\nawait client.stop();\n```\n\n### Python\n\n```python\nimport asyncio\nfrom copilot import CopilotClient\n\nasync def main():\n    client = CopilotClient()\n    await client.start()\n    session = await client.create_session({\"model\": \"gpt-4.1\"})\n    response = await session.send_and_wait({\"prompt\": \"What is 2 + 2?\"})\n    print(response.data.content)\n    await client.stop()\n\nasyncio.run(main())\n```\n\n### Go\n\n```go\nclient := copilot.NewClient(nil)\nif err := client.Start(ctx); err != nil { log.Fatal(err) }\ndefer client.Stop()\n\nsession, _ := client.CreateSession(ctx, &copilot.SessionConfig{Model: \"gpt-4.1\"})\nresponse, _ := session.SendAndWait(ctx, copilot.MessageOptions{Prompt: \"What is 2 + 2?\"})\nfmt.Println(*response.Data.Content)\n```\n\n### .NET\n\n```csharp\nawait using var client = new CopilotClient();\nawait using var session = await client.CreateSessionAsync(new SessionConfig { Model = \"gpt-4.1\" });\nvar response = await session.SendAndWaitAsync(new MessageOptions { Prompt = \"What is 2 + 2?\" });\nConsole.WriteLine(response?.Data.Content);\n```\n\n---\n\n## Streaming Responses\n\nEnable real-time output by setting `streaming: true` and subscribing to delta events.\n\n```typescript\nconst session = await client.createSession({ model: \"gpt-4.1\", streaming: true });\n\nsession.on(\"assistant.message_delta\", (event) => {\n    process.stdout.write(event.data.deltaContent);\n});\nsession.on(\"session.idle\", () => console.log());\n\nawait session.sendAndWait({ prompt: \"Tell me a joke\" });\n```\n\n**Python equivalent:**\n\n```python\nfrom copilot.generated.session_events import SessionEventType\n\nsession = await client.create_session({\"model\": \"gpt-4.1\", \"streaming\": True})\n\ndef handle_event(event):\n    if event.type == SessionEventType.ASSISTANT_MESSAGE_DELTA:\n        sys.stdout.write(event.data.delta_content)\n        sys.stdout.flush()\n\nsession.on(handle_event)\nawait session.send_and_wait({\"prompt\": \"Tell me a joke\"})\n```\n\n### Event Subscription\n\n| Method | Description |\n|--------|-------------|\n| `on(handler)` | Subscribe to all events; returns unsubscribe function |\n| `on(eventType, handler)` | Subscribe to specific event type (Node.js only) |\n\n---\n\n## Custom Tools\n\nDefine tools that Copilot can call to extend its capabilities.\n\n### Node.js\n\n```typescript\nimport { CopilotClient, defineTool } from \"@github/copilot-sdk\";\n\nconst getWeather = defineTool(\"get_weather\", {\n    description: \"Get the current weather for a city\",\n    parameters: {\n        type: \"object\",\n        properties: { city: { type: \"string\", description: \"The city name\" } },\n        required: [\"city\"],\n    },\n    handler: async ({ city }) => ({ city, temperature: \"72°F\", condition: \"sunny\" }),\n});\n\nconst session = await client.createSession({\n    model: \"gpt-4.1\",\n    tools: [getWeather],\n});\n```\n\n### Python\n\n```python\nfrom copilot.tools import define_tool\nfrom pydantic import BaseModel, Field\n\nclass GetWeatherParams(BaseModel):\n    city: str = Field(description=\"The city name\")\n\n@define_tool(description=\"Get the current weather for a city\")\nasync def get_weather(params: GetWeatherParams) -> dict:\n    return {\"city\": params.city, \"temperature\": \"72°F\", \"condition\": \"sunny\"}\n\nsession = await client.create_session({\"model\": \"gpt-4.1\", \"tools\": [get_weather]})\n```\n\n### Go\n\n```go\ntype WeatherParams struct {\n    City string `json:\"city\" jsonschema:\"The city name\"`\n}\n\ngetWeather := copilot.DefineTool(\"get_weather\", \"Get weather for a city\",\n    func(params WeatherParams, inv copilot.ToolInvocation) (WeatherResult, error) {\n        return WeatherResult{City: params.City, Temperature: \"72°F\"}, nil\n    },\n)\n\nsession, _ := client.CreateSession(ctx, &copilot.SessionConfig{\n    Model: \"gpt-4.1\",\n    Tools: []copilot.Tool{getWeather},\n})\n```\n\n### .NET\n\n```csharp\nvar getWeather = AIFunctionFactory.Create(\n    ([Description(\"The city name\")] string city) => new { city, temperature = \"72°F\" },\n    \"get_weather\", \"Get the current weather for a city\");\n\nawait using var session = await client.CreateSessionAsync(new SessionConfig {\n    Model = \"gpt-4.1\", Tools = [getWeather],\n});\n```\n\n---\n\n## Hooks\n\nIntercept and customize session behavior at key lifecycle points.\n\n| Hook | Trigger | Use Case |\n|------|---------|----------|\n| `onPreToolUse` | Before tool executes | Permission control, argument modification |\n| `onPostToolUse` | After tool executes | Result transformation, logging |\n| `onUserPromptSubmitted` | User sends message | Prompt modification, filtering |\n| `onSessionStart` | Session begins | Add context, configure session |\n| `onSessionEnd` | Session ends | Cleanup, analytics |\n| `onErrorOccurred` | Error happens | Custom error handling, retry logic |\n\n### Example: Tool Permission Control\n\n```typescript\nconst session = await client.createSession({\n    hooks: {\n        onPreToolUse: async (input) => {\n            if ([\"shell\", \"bash\"].includes(input.toolName)) {\n                return { permissionDecision: \"deny\", permissionDecisionReason: \"Shell access not permitted\" };\n            }\n            return { permissionDecision: \"allow\" };\n        },\n    },\n});\n```\n\n### Pre-Tool Use Output\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `permissionDecision` | `\"allow\"` \\| `\"deny\"` \\| `\"ask\"` | Whether to allow the tool call |\n| `permissionDecisionReason` | string | Explanation for deny/ask |\n| `modifiedArgs` | object | Modified arguments to pass |\n| `additionalContext` | string | Extra context for conversation |\n| `suppressOutput` | boolean | Hide tool output from conversation |\n\n---\n\n## MCP Server Integration\n\nConnect to MCP servers for pre-built tool capabilities.\n\n### Remote HTTP Server\n\n```typescript\nconst session = await client.createSession({\n    mcpServers: {\n        github: { type: \"http\", url: \"https://api.githubcopilot.com/mcp/\" },\n    },\n});\n```\n\n### Local Stdio Server\n\n```typescript\nconst session = await client.createSession({\n    mcpServers: {\n        filesystem: {\n            type: \"local\",\n            command: \"npx\",\n            args: [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/allowed/path\"],\n            tools: [\"*\"],\n        },\n    },\n});\n```\n\n### MCP Config Fields\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `type` | `\"local\"` \\| `\"http\"` | Server transport type |\n| `command` | string | Executable path (local) |\n| `args` | string[] | Command arguments (local) |\n| `url` | string | Server URL (http) |\n| `tools` | string[] | `[\"*\"]` or specific tool names |\n| `env` | object | Environment variables |\n| `cwd` | string | Working directory (local) |\n| `timeout` | number | Timeout in milliseconds |\n\n---\n\n## Authentication\n\n### Methods (Priority Order)\n\n1. **Explicit token** — `githubToken` in constructor\n2. **Environment variables** — `COPILOT_GITHUB_TOKEN` → `GH_TOKEN` → `GITHUB_TOKEN`\n3. **Stored OAuth** — From `copilot auth login`\n4. **GitHub CLI** — `gh auth` credentials\n\n### Programmatic Token\n\n```typescript\nconst client = new CopilotClient({ githubToken: process.env.GITHUB_TOKEN });\n```\n\n### BYOK (Bring Your Own Key)\n\nUse your own API keys — no Copilot subscription required.\n\n```typescript\nconst session = await client.createSession({\n    model: \"gpt-5.2-codex\",\n    provider: {\n        type: \"openai\",\n        baseUrl: \"https://your-resource.openai.azure.com/openai/v1/\",\n        wireApi: \"responses\",\n        apiKey: process.env.FOUNDRY_API_KEY,\n    },\n});\n```\n\n| Provider | Type | Notes |\n|----------|------|-------|\n| OpenAI | `\"openai\"` | OpenAI API and compatible endpoints |\n| Azure OpenAI | `\"azure\"` | Native Azure endpoints (don't include `/openai/v1`) |\n| Azure AI Foundry | `\"openai\"` | OpenAI-compatible Foundry endpoints |\n| Anthropic | `\"anthropic\"` | Claude models |\n| Ollama | `\"openai\"` | Local models, no API key needed |\n\n**Wire API:** Use `\"responses\"` for GPT-5 series, `\"completions\"` (default) for others.\n\n---\n\n## Session Persistence\n\nResume sessions across restarts by providing your own session ID.\n\n```typescript\n// Create with explicit ID\nconst session = await client.createSession({\n    sessionId: \"user-123-task-456\",\n    model: \"gpt-4.1\",\n});\n\n// Resume later\nconst resumed = await client.resumeSession(\"user-123-task-456\");\nawait resumed.sendAndWait({ prompt: \"What did we discuss?\" });\n```\n\n**Session management:**\n\n```typescript\nconst sessions = await client.listSessions();          // List all\nawait client.deleteSession(\"user-123-task-456\");       // Delete\nawait session.destroy();                                // Destroy active\n```\n\n**BYOK sessions:** Must re-provide `provider` config on resume (keys are not persisted).\n\n### Infinite Sessions\n\nFor long-running workflows that may exceed context limits:\n\n```typescript\nconst session = await client.createSession({\n    infiniteSessions: {\n        enabled: true,\n        backgroundCompactionThreshold: 0.80,\n        bufferExhaustionThreshold: 0.95,\n    },\n});\n```\n\n---\n\n## Custom Agents\n\nDefine specialized AI personas:\n\n```typescript\nconst session = await client.createSession({\n    customAgents: [{\n        name: \"pr-reviewer\",\n        displayName: \"PR Reviewer\",\n        description: \"Reviews pull requests for best practices\",\n        prompt: \"You are an expert code reviewer. Focus on security, performance, and maintainability.\",\n    }],\n});\n```\n\n---\n\n## System Message\n\nControl AI behavior and personality:\n\n```typescript\nconst session = await client.createSession({\n    systemMessage: { content: \"You are a helpful assistant. Always be concise.\" },\n});\n```\n\n---\n\n## Skills Integration\n\nLoad skill directories to extend Copilot's capabilities:\n\n```typescript\nconst session = await client.createSession({\n    skillDirectories: [\"./skills/code-review\", \"./skills/documentation\"],\n    disabledSkills: [\"experimental-feature\"],\n});\n```\n\n---\n\n## Permission & Input Handlers\n\nHandle tool permissions and user input requests programmatically:\n\n```typescript\nconst session = await client.createSession({\n    onPermissionRequest: async (request) => {\n        // Auto-approve git commands only\n        if (request.kind === \"shell\") {\n            return { approved: request.command.startsWith(\"git\") };\n        }\n        return { approved: true };\n    },\n    onUserInputRequest: async (request) => {\n        // Handle ask_user tool calls\n        return { response: \"yes\" };\n    },\n});\n```\n\n---\n\n## External CLI Server\n\nConnect to a separately running CLI instead of auto-managing the process:\n\n```bash\ncopilot --headless --port 4321\n```\n\n```typescript\nconst client = new CopilotClient({ cliUrl: \"localhost:4321\" });\n```\n\n---\n\n## Client Configuration\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `cliPath` | string | Path to Copilot CLI executable |\n| `cliUrl` | string | URL of external CLI server |\n| `githubToken` | string | GitHub token for auth |\n| `useLoggedInUser` | boolean | Use stored CLI credentials (default: true) |\n| `logLevel` | string | `\"none\"` \\| `\"error\"` \\| `\"warning\"` \\| `\"info\"` \\| `\"debug\"` |\n| `autoRestart` | boolean | Auto-restart CLI on crash (default: true) |\n| `useStdio` | boolean | Use stdio transport (default: true) |\n\n## Session Configuration\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `model` | string | Model to use (e.g., `\"gpt-4.1\"`) |\n| `sessionId` | string | Custom ID for resumable sessions |\n| `streaming` | boolean | Enable streaming responses |\n| `tools` | Tool[] | Custom tools |\n| `mcpServers` | object | MCP server configurations |\n| `hooks` | object | Session hooks |\n| `provider` | object | BYOK provider config |\n| `customAgents` | object[] | Custom agent definitions |\n| `systemMessage` | object | System message override |\n| `skillDirectories` | string[] | Directories to load skills from |\n| `disabledSkills` | string[] | Skills to disable |\n| `reasoningEffort` | string | Reasoning effort level |\n| `availableTools` | string[] | Restrict available tools |\n| `excludedTools` | string[] | Exclude specific tools |\n| `infiniteSessions` | object | Auto-compaction config |\n| `workingDirectory` | string | Working directory |\n\n---\n\n## Debugging\n\nEnable debug logging to troubleshoot issues:\n\n```typescript\nconst client = new CopilotClient({ logLevel: \"debug\" });\n```\n\n**Common issues:**\n- `CLI not found` → Install CLI or set `cliPath`\n- `Not authenticated` → Run `copilot auth login` or provide `githubToken`\n- `Session not found` → Don't use session after `destroy()`\n- `Connection refused` → Check CLI process, enable `autoRestart`\n\n---\n\n## Key API Summary\n\n| Language | Client | Session Create | Send | Stop |\n|----------|--------|---------------|------|------|\n| Node.js | `new CopilotClient()` | `client.createSession()` | `session.sendAndWait()` | `client.stop()` |\n| Python | `CopilotClient()` | `client.create_session()` | `session.send_and_wait()` | `client.stop()` |\n| Go | `copilot.NewClient(nil)` | `client.CreateSession()` | `session.SendAndWait()` | `client.Stop()` |\n| .NET | `new CopilotClient()` | `client.CreateSessionAsync()` | `session.SendAndWaitAsync()` | `client.DisposeAsync()` |\n\n## References\n\n- [GitHub Copilot SDK](https://github.com/github/copilot-sdk)\n- [Copilot CLI Installation](https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli)\n- [MCP Protocol Specification](https://modelcontextprotocol.io)\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["copilot","sdk","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-copilot-sdk","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/copilot-sdk","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34831 github stars · SKILL.md body (15,005 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T06:50:58.387Z","embedding":null,"createdAt":"2026-04-18T21:35:15.486Z","updatedAt":"2026-04-24T06:50:58.387Z","lastSeenAt":"2026-04-24T06:50:58.387Z","tsv":"'-123':987,1000,1022 '-4.1':179,215,253,283,321,354,465,521,568,607,992,1295 '-456':989,1002,1024 '-5':958 '-5.2':896 '/allowed/path':783 '/en/copilot/how-tos/set-up/install-copilot-cli)':1469 '/github/copilot-sdk)':1463 '/github/copilot-sdk/go':131,136 '/mcp/':765 '/openai/v1':930 '/openai/v1/':904 '/skills/code-review':1145 '/skills/documentation':1146 '0.80':1065 '0.95':1067 '1':836 '1.21':105 '18':101 '2':187,188,224,225,261,262,293,294,842 '3':852 '3.8':103 '4':859 '4321':1217,1225 '72':455,511,559,586 '8.0':107 'access':689 'across':33,71,968 'action':1486 'activ':1029 'add':140,649 'additionalcontext':724 'agent':1069,1329 'ai':932,1072,1110 'aifunctionfactory.create':576 'allow':694,704,709 'alway':1126 'analyt':657 'anthrop':940,941 'api':883,909,917,949,953,1423 'api.githubcopilot.com':764 'api.githubcopilot.com/mcp/':763 'apikey':907 'applic':5,43,1480 'approv':1172,1180,1184 'arg':780,802 'argument':630,721,805 'ask':706,1190,1524 'assist':1125 'assistant.message':325 'async':202,451,500,677,1168,1187 'asyncio':197 'asyncio.run':230 'auth':857,863,1250,1401 'authent':83,832,1398 'auto':1171,1209,1269,1366 'auto-approv':1170 'auto-compact':1365 'auto-manag':1208 'auto-restart':1268 'autorestart':1266,1421 'avail':1356 'availabletool':1353 'await':175,182,192,207,210,217,228,267,273,277,286,317,333,349,373,461,516,597,601,673,756,772,892,983,997,1003,1015,1019,1026,1059,1077,1117,1142,1165 'azur':921,923,925,931 'backgroundcompactionthreshold':1064 'basemodel':478,482 'baseurl':901 'bash':681,1213 'begin':648 'behavior':615,1111 'best':1092 'boolean':731,1252,1267,1277,1304 'boundari':1532 'bring':876 'bufferexhaustionthreshold':1066 'build':4,42 'built':747 'busi':92 'byok':98,875,1030,1323 'call':412,712,1193 'capabl':416,749,1138 'case':623 'check':1417 'citi':436,441,446,449,452,453,483,488,499,508,530,533,536,546,556,579,582,584,596 'clarif':1526 'class':480 'claud':942 'cleanup':656 'clear':1499 'cli':17,55,80,861,1198,1205,1236,1243,1255,1271,1389,1393,1418,1465 'client':145,156,170,205,234,270,869,1220,1226,1382,1426 'client.create':211,350,517,1439 'client.createsession':176,248,318,462,563,674,757,773,893,984,1060,1078,1118,1143,1166,1434,1448 'client.createsessionasync':278,602,1454 'client.deletesession':1020 'client.disposeasync':1456 'client.listsessions':1016 'client.resumesession':998 'client.start':208,239 'client.stop':193,229,246,1436,1444,1450 'clipath':1231,1396 'cliurl':1223,1238 'code':1099 'codex':897 'command':778,797,804,1174 'common':1387 'compact':1367 'compat':919,937 'complet':960 'concis':1128 'condit':457,513 'config':786,1037,1325,1368 'configur':651,1227,1284,1316 'connect':740,1200,1415 'console.log':189,332 'console.writeline':295 'const':169,173,180,315,424,459,671,754,770,868,890,981,995,1013,1057,1075,1115,1140,1163,1219,1381 'constructor':841 'content':368,1120 'context':650,727,1054 'control':629,669,1109 'convers':729,736 'copilot':2,11,16,40,49,54,79,84,89,120,126,199,410,845,856,886,1136,1214,1235,1400,1459,1464 'copilot-sdk':1 'copilot.definetool':539 'copilot.generated.session':344 'copilot.messageoptions':257 'copilot.newclient':235,1446 'copilot.sessionconfig':250,565 'copilot.tool':570 'copilot.toolinvocation':551 'copilot.tools':471 'copilotcli':166,172,201,206,272,420,871,1222,1384,1433,1438,1453 'core':143 'crash':1273 'creat':154,157,977,1428 'credenti':864,1256 'criteria':1535 'csharp':266,573 'ctx':240,249,256,564 'current':432,495,592 'custom':25,63,405,613,661,1068,1298,1310,1328 'customag':1079,1326 'cwd':822 'data.content':191,297 'debug':1265,1373,1375,1386 'def':203,357,501 'default':961,1257,1274,1281 'defer':245 'defin':407,473,490,1070 'definetool':421,426 'definit':1330 'delet':1025 'delta':312,326,365 'deni':686,705 'deny/ask':717 'describ':1487,1503 'descript':385,429,444,486,492,577,702,790,1087,1230,1287 'destroy':1028,1414 'dict':506 'directori':825,1133,1338,1372 'disabl':1347 'disabledskil':1147,1343 'discuss':1009 'displaynam':1084 'docs.github.com':1468 'docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli)':1467 'dotnet':139 'e.g':1293 'effort':1351 'enabl':300,1062,1305,1374,1420 'end':655 'endpoint':920,926,939 'enterpris':94 'env':818 'environ':820,843,1515 'environment-specif':1514 'equival':341 'err':238,241,244 'error':553,659,662,1262 'event':313,327,345,359,360,372,382,391,401 'event.data.delta':367 'event.data.deltacontent':329 'event.type':362 'eventtyp':396 'exampl':666 'exceed':1053 'exclud':1360 'excludedtool':1358 'execut':627,635,799,1237,1482 'experiment':1149 'experimental-featur':1148 'expert':1098,1520 'explan':715 'explicit':837,979 'extend':414,1135 'extern':1197,1242 'extra':726 'f':456,512,560,587 'featur':1150 'field':479,485,700,787,788 'filesystem':775 'filter':645 'fmt.println':263 'focus':1101 'follow':151 'found':1391,1408 'foundri':933,938 'func':547 'function':394 'get':133,427,430,493,502,523,540,542,588,590 'getweath':425,467,538,571,575,609 'getweatherparam':481,505 'gh':848,862 'git':1173,1182 'github':10,39,48,78,88,119,125,759,846,850,860,1247,1458 'github-copilot-sdk':118,124 'github.com':130,135,1462 'github.com/github/copilot-sdk)':1461 'github.com/github/copilot-sdk/go':129,134 'github.copilot.sdk':138,142 'github/copilot-sdk':113,116,168,423 'githubtoken':839,872,1245,1405 'go':36,74,104,128,132,232,233,525,526,1445 'gpt':178,214,252,282,320,353,464,520,567,606,895,957,991,1294 'handl':358,371,663,1154,1189 'handler':387,397,450,1153 'happen':660 'headless':1215 'help':1124 'hide':732 'hook':27,65,610,620,675,1317,1320 'http':751,761,793,811 'id':975,980,1299 'import':165,196,200,346,419,472,477 'includ':682,929 'individu':91 'infinit':1044 'infinitesess':1061,1363 'info':1264 'input':678,1152,1159,1529 'input.toolname':683 'instal':81,108,111,115,123,1392,1466 'instead':1206 'integr':30,68,739,1130 'interact':8,46 'intercept':611 'inv':550 'issu':1379,1388 'joke':339,381 'json':20,58,532 'json-rpc':19,57 'jsonschema':534 'key':617,879,884,910,950,1040,1422 'languag':109,1425 'later':994 'level':1352 'lifecycl':618 'limit':1055,1491 'list':1017 'load':1131,1340 'local':766,777,792,801,806,826,946 'localhost':1224 'log':638,1376 'log.fatal':243 'logic':665 'login':858,1402 'loglevel':1259,1385 'long':1048 'long-run':1047 'main':204,231 'maintain':1106 'manag':24,62,1011,1210 'match':1500 'may':1052 'mcp':28,66,737,742,785,1314,1470 'mcpserver':758,774,1312 'messag':147,161,364,642,1108,1334 'messageopt':289 'method':384,833 'millisecond':831 'miss':1537 'model':177,213,251,281,319,352,463,519,566,605,894,943,947,990,1288,1290 'modelcontextprotocol.io':1473 'modelcontextprotocol/server-filesystem':782 'modif':631,644 'modifi':720 'modifiedarg':718 'must':1032 'name':447,489,537,580,817,1080 'nativ':924 'need':951 'net':38,76,106,137,265,572,1451 'new':171,271,279,288,583,603,870,1221,1383,1432,1452 'nil':236,242,561,1447 'node.js':34,72,100,112,162,403,417,1431 'none':1261 'note':913 'npm':114 'npx':779 'number':828 'oauth':854 'object':439,719,819,1313,1318,1322,1327,1332,1364 'ollama':944 'onerroroccur':658 'onpermissionrequest':1167 'onposttoolus':632 'onpretoolus':624,676 'onsessionend':653 'onsessionstart':646 'onuserinputrequest':1186 'onuserpromptsubmit':639 'openai':900,914,915,916,922,934,936,945 'openai-compat':935 'option':1228,1285 'order':835 'other':963 'output':304,699,734,1509 'overrid':1335 'overview':1490 'packag':110,141 'param':504,548 'paramet':437 'params.city':509,557 'pass':723 'path':800,1233 'pattern':144,153 'perform':1104 'permiss':628,668,1151,1156,1530 'permissiondecis':685,693,703 'permissiondecisionreason':687,713 'permit':691 'persist':965,1043 'person':1113 'persona':1073 'pip':122 'point':619 'port':1216 'pr':1082,1085 'pr-review':1081 'practic':1093 'pre':696,746 'pre-built':745 'pre-tool':695 'prerequisit':77 'print':226 'prioriti':834 'process':1212,1419 'process.env.foundry':908 'process.env.github':873 'process.stdout.write':328 'programmat':7,45,865,1161 'prompt':184,221,258,290,335,377,643,1005,1094 'properti':440 'protocol':1471 'provid':22,60,898,911,971,1035,1036,1321,1324,1404 'pull':1089 'pydant':476 'python':35,73,102,117,194,195,340,342,468,469,1437 're':1034 're-provid':1033 'real':302 'real-tim':301 'reason':1350 'reasoningeffort':1348 'refer':1457 'refus':1416 'remot':750 'request':1090,1160,1169,1188 'request.command.startswith':1181 'request.kind':1177 'requir':96,448,888,1528 'respons':181,190,216,254,285,296,299,906,955,1195,1307 'response.data.content':227,264 'restart':969,1270 'restrict':1355 'result':636 'resum':966,993,996,1039,1301 'resumed.sendandwait':1004 'retri':664 'return':392,507,554,684,692,1179,1183,1194 'review':1083,1086,1088,1100,1521 'rpc':21,59 'run':1049,1204,1399 'runtim':99 'safeti':1531 'scope':1502 'sdk':3,13,41,51,121,127,149,1460 'secur':1103 'send':160,641,1429 'separ':1203 'seri':959 'server':29,67,738,743,752,768,794,809,1199,1244,1315 'session':23,61,146,159,174,209,212,247,276,316,348,351,460,515,518,562,600,614,647,652,654,672,755,771,891,964,967,974,982,1010,1014,1031,1045,1058,1076,1116,1141,1164,1283,1302,1319,1406,1412,1427,1440 'session.destroy':1027 'session.idle':331 'session.on':324,330,370 'session.send':218,374,1441 'session.sendandwait':183,255,334,1435,1449 'session.sendandwaitasync':287,1455 'sessionconfig':280,604 'sessioneventtyp':347 'sessioneventtype.assistant':363 'sessionid':985,1296 'set':306,1395 'shell':680,688,1178 'skill':1129,1132,1341,1345,1478,1494 'skill-copilot-sdk' 'skilldirectori':1144,1336 'source-sickn33' 'special':1071 'specif':400,815,1361,1472,1516 'stdio':767,1279 'stop':1430,1522 'store':853,1254 'str':484 'stream':32,70,298,307,322,355,1303,1306 'string':443,531,581,714,725,798,803,808,813,823,1232,1239,1246,1260,1289,1297,1337,1344,1349,1354,1359,1370 'struct':529 'subscrib':310,388,398 'subscript':90,383,887 'substitut':1512 'success':1534 'summari':1424 'sunni':458,514 'suppressoutput':730 'sys.stdout.flush':369 'sys.stdout.write':366 'system':1107,1333 'systemmessag':1119,1331 'task':988,1001,1023,1498 'tell':336,378 'temperatur':454,510,558,585 'test':1518 'time':303 'timeout':827,829 'token':838,847,849,851,866,874,1248 'tool':26,64,406,408,466,474,491,522,569,608,626,634,667,697,711,733,748,784,812,816,1155,1192,1308,1309,1311,1357,1362 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'transform':637 'transport':795,1280 'treat':1507 'trigger':621 'troubleshoot':1378 'true':308,323,356,1063,1185,1258,1275,1282 'type':402,438,442,527,701,760,776,789,791,796,899,912,1229,1286 'typescript':163,164,314,418,670,753,769,867,889,976,1012,1056,1074,1114,1139,1162,1218,1380 'unsubscrib':393 'url':762,807,810,1240 'usag':150 'use':268,274,598,622,698,880,954,1253,1278,1292,1411,1476,1492 'useloggedinus':1251 'user':640,986,999,1021,1158,1191 'usestdio':1276 'valid':1517 'var':269,275,284,574,599 'variabl':821,844 'verifi':87 'version':85 'via':18,56 'wait':220,376,1443 'warn':1263 'weather':428,433,496,503,524,541,543,589,593 'weatherparam':528,549 'weatherresult':552,555 'whether':707 'wire':952 'wireapi':905 'work':824,1371 'workflow':1050,1484 'workingdirectori':1369 'wrap':14,52 'y':781 'yes':1196 'your-resource.openai.azure.com':903 'your-resource.openai.azure.com/openai/v1/':902","prices":[{"id":"2cee237f-e42f-47a3-85c3-2243c05c05f5","listingId":"69d8fef3-286b-4423-86a0-db21a83f100c","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:35:15.486Z"}],"sources":[{"listingId":"69d8fef3-286b-4423-86a0-db21a83f100c","source":"github","sourceId":"sickn33/antigravity-awesome-skills/copilot-sdk","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/copilot-sdk","isPrimary":false,"firstSeenAt":"2026-04-18T21:35:15.486Z","lastSeenAt":"2026-04-24T06:50:58.387Z"}],"details":{"listingId":"69d8fef3-286b-4423-86a0-db21a83f100c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"copilot-sdk","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34831,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"598c585fa0e73dba3125601050ada7d058e0d189","skill_md_path":"skills/copilot-sdk/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/copilot-sdk"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"copilot-sdk","description":"Build applications that programmatically interact with GitHub Copilot. The SDK wraps the Copilot CLI via JSON-RPC, providing session management, custom tools, hooks, MCP server integration, and streaming across Node.js, Python, Go, and .NET."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/copilot-sdk"},"updatedAt":"2026-04-24T06:50:58.387Z"}}