| title | Code Submission | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| spec_id | sdk/getting-started/standards/code-submission | ||||||||||||||
| spec_version | 1.1.0 | ||||||||||||||
| spec_status | candidate | ||||||||||||||
| spec_platforms |
|
||||||||||||||
| spec_changelog |
|
||||||||||||||
| sidebar_order | 2 |
<type>(<scope>): <subject>
<body>
<footer>
Header (max 100 chars total):
- Type: one of:
feat– New user-facing functionalityfix– Broken behavior now worksref– Same behavior, different structureperf– Same behavior, fasterstyle– CSS, formatting, visual-onlydocs– Documentation onlytest– Tests onlyci– CI/CD configbuild– Build systemchore– Deps, config, version bumps, updating existing tooling — no new logicmeta– Repo metadata changeslicense– License changes
- Subject: imperative mood, capitalize first letter, no trailing period, max 70 chars
Body: explain what and why, not how.
Footer (one or more of):
- Issue references:
Fixes SENTRY-1234,Fixes GH-1234,Refs LINEAR-ABC-123 - Breaking change notices:
BREAKING CHANGE: - AI attribution (see AI attribution)
For additional context on commit message best practices, see Commit Messages.
- commitlint in CI
Scope values are SDK-specific.
<username>/<type>/<short-description> (e.g., theo/feat/add-client-reports, alice/fix/rate-limit-parsing).
- username: GitHub username (e.g., from
gh api user --jq .login) - type: same types as commit messages
- short-description: overview of the change, in kebab-case
- CI advisory (non-blocking)
Every PR MUST include a description with:
- What the PR does
- Why these changes are being made
- Links to relevant issues or tickets (REQUIRED except for typo fixes and one-line doc changes)
- Alternative approaches considered (if any)
- Additional context reviewers need
Test plan sections, checkbox lists, and boilerplate are not allowed. The tests in the diff serve as the test plan. Blank descriptions, template-only descriptions, and AI-generated filler are not acceptable. PR descriptions MUST NOT include any customer data or sensitive information.
- PR template
- CI bot check: non-empty, issue reference present, override via
triviallabel
Template wording can vary. Linked-issue and non-empty requirements are universal.
PRs MUST be created as drafts. Mark ready when CI passes and description is complete.
- Convention
- AGENTS.md
User-facing changes (feat, fix, perf, breaking) REQUIRE a changelog entry. Internal changes exempt. Override with skip-changelog label.
- CI check
Format and location vary. Requirement is universal.
A PR SHOULD do one thing — and do it well. Avoid mixing functional changes with unrelated refactors, cleanup, or reorganizations. If the work falls into distinct categories, split it into multiple PRs. Smaller, focused PRs are easier to review, reason about, and revert.
- Human review + AGENTS.md
- CI advisory for size
Size thresholds are SDK-specific.
AI-generated changes get Co-Authored-By in commit footer (e.g., Co-Authored-By: Claude <noreply@anthropic.com>). This is the only AI involvement indicator. "Generated by AI" or similar markers MUST NOT appear anywhere.
- AGENTS.md instruction
sentry-skills:commit- adds attribution automatically.sentry-skills:agents-md- ensures AGENTS.md includes the convention.