---
title: "CONTRIBUTING.md"
description: "Boilerplate CONTRIBUTING.md template for Sentry SDK repositories. Tells contributors how to set up, develop, test, and submit changes."
url: https://develop.sentry.dev/sdk/getting-started/templates/contributing-md/
---

# CONTRIBUTING.md

`CONTRIBUTING.md` is a Markdown file at the root of your repository that orients both external contributors and Sentry engineers before they open their first PR. GitHub surfaces it automatically on the Issues and Pull Requests tabs.

**Keep it short.** Detailed process lives on [develop.sentry.dev](https://develop.sentry.dev/sdk.md) — link there, don't duplicate it. Target 100–200 lines.

## [What Belongs in CONTRIBUTING.md](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#what-belongs-in-contributingmd)

* **Welcome + issue-first policy** — ask contributors to open an issue before a non-trivial PR. If the issue is already assigned to someone, contributors should ask in the issue whether help is needed before opening a PR. Link to the [handling external contributor PRs playbook](https://develop.sentry.dev/sdk/getting-started/playbooks/development/handling-external-contributor-pr.md).
* **Getting started** — environment setup steps specific to this repo. Refer readers to the README for general project overview; CONTRIBUTING.md covers what's extra.
* **Development workflow** — commit format, branch naming, and changelog requirement. Link to the [code submission standard](https://develop.sentry.dev/sdk/getting-started/standards/code-submission.md) rather than restating it.
* **Testing** — exact commands to run the test suite, a subset, and lint. Include platform-specific notes (tox environments, Gradle tasks, Xcode schemes, etc.).
* **Submitting a PR** — open as draft until ready; fill out the PR template. Link to the [opening a PR playbook](https://develop.sentry.dev/sdk/getting-started/playbooks/development/opening-a-pr.md).
* **Code review** — LOGAF scale (`h:`/`m:`/`l:`), expected SLAs (1 business day internal / 2 business days external). Link to the [reviewing a PR playbook](https://develop.sentry.dev/sdk/getting-started/playbooks/development/reviewing-a-pr.md).
* **AI-assisted contributions** — `Co-Authored-By` attribution required per the [AI attribution standard](https://develop.sentry.dev/sdk/getting-started/standards/code-submission.md#ai-attribution). Point maintainers to the [reviewing AI-generated code playbook](https://develop.sentry.dev/sdk/getting-started/playbooks/development/reviewing-ai-generated-code.md).
* **Getting help** — Discord server link, `#sdk-[language]` support channel.
* **Code of conduct** — link to [Sentry's Code of Conduct](https://open.sentry.io/code-of-conduct/).

**Do NOT include:**

* Full environment setup (belongs in README)
* Release / publish process (internal; link to sdk-lifecycle playbooks instead)
* Architecture or API design decisions (belongs in AGENTS.md)
* Verbatim copies of content already on develop.sentry.dev

## [Good Examples in SDK Repositories](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#good-examples-in-sdk-repositories)

Check if the repository already has one before starting from scratch. The following repos have well-structured examples worth referencing:

* [`getsentry/sentry-python`](https://github.com/getsentry/sentry-python/blob/master/CONTRIBUTING.md) — clear integration development principles; good separation between user and contributor setup
* [`getsentry/sentry-javascript`](https://github.com/getsentry/sentry-javascript/blob/master/CONTRIBUTING.md) — Volta pin for Node/yarn, concise monorepo workflow, explicit PR draft rule
* [`getsentry/sentry-go`](https://github.com/getsentry/sentry-go/blob/master/CONTRIBUTING.md) — explicit LOGAF scale usage, craft release-notes requirement called out
* [`getsentry/sentry-cocoa`](https://github.com/getsentry/sentry-cocoa/blob/main/CONTRIBUTING.md) — LOGAF examples with descriptions, copyright header rule
* [`getsentry/sentry-java`](https://github.com/getsentry/sentry-java/blob/main/CONTRIBUTING.md) — API compatibility validation workflow, clear step-by-step setup

## [Template](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#template)

Use the [`sentry-sdk-skills:contributing-md`](https://github.com/getsentry/sdk-skills/tree/main/plugins/sentry-sdk-skills/skills/contributing-md) skill to create or update your `CONTRIBUTING.md` — it detects commands, CI config, and ecosystem from the repo, fills in the placeholders below, and preserves any SDK-specific sections already present.

Remove sections that don't apply and replace all `[placeholder]` values with real content.

### CONTRIBUTING.md

# [Contributing to \[SDK name\]](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#contributing-to-sdk-name)

We welcome contributions! Before submitting a non-trivial change, please open an issue so we can align on scope and approach. If the issue is already assigned to someone, leave a comment asking if you can help before opening a PR. Want to understand how we work? Our [SDK development docs](https://develop.sentry.dev/sdk.md) cover our engineering process in detail.

## [Getting Started](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#getting-started)

1. Fork the repository and clone your fork.
2. \[SDK-specific setup steps — e.g. install language runtime, create virtualenv, etc.]
3. Install dependencies: `[install command]`

## [Development Workflow](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#development-workflow)

See our [principles](https://develop.sentry.dev/sdk/getting-started/principles.md) and [standards](https://develop.sentry.dev/sdk/getting-started/standards.md) for SDK development.

## [Testing](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#testing)

Run the full test suite: `[full test command]`

Run a single test / test file: `[single test command]`

Lint and format: `[lint command]` / `[format command]`

\[Optional: platform-specific notes, e.g. tox environments, Gradle tasks, Xcode schemes, required env vars, or native dependency setup for React Native (sentry-cocoa, sentry-java).]

## [Submitting a Pull Request](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#submitting-a-pull-request)

Open as a **draft**, fill in the PR description, and ensure CI passes before marking ready.

## [Code Review](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#code-review)

We use the **LOGAF scale** to signal comment weight:

* `h:` (high) — must fix: bugs, security, breakage
* `m:` (medium) — should fix: design, missing tests, clarity
* `l:` (low) — optional nit: style, minor suggestions

## [AI-Assisted Contributions](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#ai-assisted-contributions)

AI-generated code is welcome — include a `Co-Authored-By` trailer per the [AI attribution standard](https://develop.sentry.dev/sdk/getting-started/standards/code-submission.md#ai-attribution).

## [Getting Help](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#getting-help)

Have a question? Join the [Sentry Discord](https://discord.com/invite/sentry) in **#sdk-\[language]** or open a GitHub issue.

## [Code of Conduct](https://develop.sentry.dev/sdk/getting-started/templates/contributing-md.md#code-of-conduct)

This project follows the [Sentry Code of Conduct](https://open.sentry.io/code-of-conduct/).
