Thanks for your interest in contributing!
This repository contains the Copilot SDK, a set of multi-language SDKs (Node/TypeScript, Python, Go, .NET) for building applications with the GitHub Copilot agent, maintained by the GitHub Copilot team.
Contributions to this project are released to the public under the project's open source license.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Please discuss any feature work with us before writing code.
The team already has a committed product roadmap, and features must be maintained in sync across all supported languages. Pull requests that introduce features not previously aligned with the team are unlikely to be accepted, regardless of their quality or scope.
If you submit a PR, be sure to link to an associated issue describing the bug or agreed feature. No PRs without context :)
We welcome:
- Bug fixes with clear reproduction steps
- Improvements to documentation
- Making the SDKs more idiomatic and nice to use for each supported language
- Bug reports and feature suggestions on our issue tracker — especially for bugs with repro steps
We are generally not looking for:
- New features, capabilities, or UX changes that haven't been discussed and agreed with the team
- Refactors or architectural changes
- Integrations with external tools or services
- Additional documentation
- SDKs for other languages — if you want to create a Copilot SDK for another language, we'd love to hear from you and may offer to link to your SDK from our repo. However we do not plan to add further language-specific SDKs to this repo in the short term, since we need to retain our maintenance capacity for moving forwards quickly with the existing language set. For other languages, please consider running your own external project.
This is a multi-language SDK repository. Install the tools for the SDK(s) you plan to work on:
- The end-to-end tests across all languages use a shared test harness written in Node.js. Before running tests in any language,
cd test/harness && npm ci.
- Install Node.js (v18+)
- Install dependencies:
cd nodejs && npm ci
- Install Python 3.8+
- Install uv
- Install dependencies:
cd python && uv pip install -e ".[dev]"
- Install Go 1.24+
- Install golangci-lint
- Install dependencies:
cd go && go mod download
- Install .NET 8.0+
- Install .NET dependencies:
cd dotnet && dotnet restore
- Fork and clone the repository
- Install dependencies for the SDK(s) you're modifying (see above)
- Make sure the tests pass on your machine (see commands below)
- Make sure linter passes on your machine (see commands below)
- Create a new branch:
git checkout -b my-branch-name - Make your change, add tests, and make sure the tests and linter still pass
- Push to your fork and [submit a pull request][pr]
- Pat yourself on the back and wait for your pull request to be reviewed and merged.
# Node.js
cd nodejs && npm test && npm run lint
# Python
cd python && uv run pytest && uv run ruff check .
# Go
cd go && go test ./... && golangci-lint run ./...
# .NET
cd dotnet && dotnet test test/GitHub.Copilot.SDK.Test.csprojHere are a few things you can do that will increase the likelihood of your pull request being accepted:
- Write tests.
- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
- Write a good commit message.