Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
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.
We'd love your help with:
- Fixing any bugs in the existing feature set
- Making the SDKs more idiomatic and nice to use for each supported language
- Improving documentation
If you have ideas for entirely new features, please post an issue or start a discussion. We're very open to new features but need to make sure they align with the direction of the underlying Copilot CLI and can be maintained in sync across all our supported languages.
Currently we are not looking to add SDKs for other languages. If you want to create a Copilot SDK for another language, we'd love to hear from you, and we 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. So, for any 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:
- (Optional) Install just command runner for convenience
- 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 Node.js (v18+) (the .NET tests depend on a TypeScript-based test harness)
- Install npm dependencies (from the repository root):
cd nodejs && npm ci cd test/harness && npm ci
- 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
- Pat yourself on the back and wait for your pull request to be reviewed and merged.
If you installed just, you can use it to run tests and linters across all SDKs or for specific languages:
# All SDKs
just test # Run all tests
just lint # Run all linters
just format # Format all code
# Individual SDKs
just test-nodejs # Node.js tests
just test-python # Python tests
just test-go # Go tests
just test-dotnet # .NET tests
just lint-nodejs # Node.js linting
just lint-python # Python linting
just lint-go # Go linting
just lint-dotnet # .NET lintingOr run commands directly in each SDK directory:
# 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.