Skip to content

Latest commit

 

History

History
103 lines (67 loc) · 4.47 KB

File metadata and controls

103 lines (67 loc) · 4.47 KB

Contributing

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.

Before You Submit a PR

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 :)

What We're Looking For

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.

Prerequisites for Running and Testing Code

This is a multi-language SDK repository. Install the tools for the SDK(s) you plan to work on:

All SDKs

  1. 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.

Node.js/TypeScript SDK

  1. Install Node.js (v18+)
  2. Install dependencies: cd nodejs && npm ci

Python SDK

  1. Install Python 3.8+
  2. Install uv
  3. Install dependencies: cd python && uv pip install -e ".[dev]"

Go SDK

  1. Install Go 1.24+
  2. Install golangci-lint
  3. Install dependencies: cd go && go mod download

.NET SDK

  1. Install .NET 8.0+
  2. Install .NET dependencies: cd dotnet && dotnet restore

Submitting a Pull Request

  1. Fork and clone the repository
  2. Install dependencies for the SDK(s) you're modifying (see above)
  3. Make sure the tests pass on your machine (see commands below)
  4. Make sure linter passes on your machine (see commands below)
  5. Create a new branch: git checkout -b my-branch-name
  6. Make your change, add tests, and make sure the tests and linter still pass
  7. Push to your fork and [submit a pull request][pr]
  8. Pat yourself on the back and wait for your pull request to be reviewed and merged.

Running Tests and Linters

# 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.csproj

Here 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.

Resources