Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 0 additions & 102 deletions .agents/skills/code-review/SKILL.md

This file was deleted.

75 changes: 0 additions & 75 deletions .agents/skills/find-bugs/SKILL.md

This file was deleted.

28 changes: 28 additions & 0 deletions .agents/skills/sdk-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: sdk-review
description: "Review sentry-python changes for violations of Sentry SDK contracts: host-app safety, data-collection gates, supported versions, public API, and Python-specific rules."
allowed-tools: Read Grep Glob
---
Review only the changed code. Report a finding only if you can point to the exact line and show how it breaks a user's app, build or data. Most hunks break no SDK contract, so no findings is the normal result. Generic logic bugs belong to `code-review`; this skill only covers SDK contracts.

## Core SDK rules (same in every SDK repo)

1. **Never break the host app** (high). SDK code that can raise, block, or change the user's behavior: exceptions, return values, signatures, job or request flow.
2. **Data collected without its gate** (high). Bodies, headers, cookies, user info, `gen_ai` inputs/outputs or DB results recorded without their data-collection option. Header and cookie names match case-insensitively. Gate on the `data_collection` option keys; don't ask for `send_default_pii` or `should_send_default_pii()` as the gate. Automatically collected header, cookie, query or body values must go through the denylist filter in `sentry_sdk/data_collection.py`; a new path that sends them raw is a finding. Data the user set explicitly (scope, span, `before_send`) is never gated or scrubbed: don't flag reading it back from the scope, but do flag new code that gates or rewrites it.
3. **Supported versions** (high). Language, runtime, target or dependency APIs newer than the repo's declared minimum, used without a guard. Minimums come from `python_requires` and `_MIN_VERSIONS` in `sentry_sdk/integrations/__init__.py`.
4. **Public API** (medium). Breaking public changes without a deprecation path, or internals exposed as public API.

## Do not report (same in every SDK repo)

- Style, naming, refactors, or anything the repo's linters, type checkers or analyzers catch.
- Pre-existing code the diff does not change.
- Behavior that matches the spec, Relay or other SDKs, or a trade-off the PR or its threads explain.
- Follow-ups the PR says are handled in a stacked PR or the major branch.
- Tests, samples and examples, unless they can't fail or they teach wrong SDK usage.
- Edge cases that need misuse or very unlikely timing.

## Python rules

5. **Missing internal-exception guard** (high). New patch or hook code outside `capture_internal_exceptions()`, or code that reads framework objects that can be missing or `None` (for example an unmatched route). Never wrap the user's own call or provider iterator: its exceptions must still reach the caller.
6. **Brittle monkeypatch** (medium). A patch spells out arguments instead of `*args, **kwargs`, or swallows or re-raises the user's exception differently.
7. **Span or check-in not finished on every path** (medium). Exceptions, early returns, and streams closed early or never consumed.
22 changes: 0 additions & 22 deletions .agents/skills/security-review/LICENSE

This file was deleted.

Loading
Loading