Skip to main content

feature-flags

Gate a Sentry feature behind a FlagPole feature flag. Use when adding a feature flag, registering a flag in temporary.py, checking a flag from Python or the frontend, enabling a flag in tests, or asking where FlagPole rollout config lives. Trigger on "add a feature flag", "gate this behind a flag", "register a flag", "features.has", "api_expose", "OrganizationFeature", "ProjectFeature", "FlagPole".

Source facts

Repository
getsentry/sentry
Last source activity
August 26, 2026 at 13:21
Detected SKILL.md language
English
Stars
44,880
Forks
4,869

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
feature-flags
description
Gate a Sentry feature behind a FlagPole feature flag. Use when adding a feature flag, registering a flag in temporary.py, checking a flag from Python or the frontend, enabling a flag in tests, or asking where FlagPole rollout config lives. Trigger on "add a feature flag", "gate this behind a flag", "register a flag", "features.has", "api_expose", "OrganizationFeature", "ProjectFeature", "FlagPole".
# Feature Flags (FlagPole) New features should be gated behind a feature flag. 1. **Register** the flag in `src/sentry/features/temporary.py`: ```python manager.add("organizations:my-feature", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True) ``` Use `api_expose=True` if the frontend needs to check the flag. Use `ProjectFeature` and a `projects:` prefix for project-scoped flags. 2. **Python check**: ```python if features.has("organizations:my-feature", organization, actor=user): ``` 3. **Frontend check** (requires `api_expose=True`): ```typescript organization.features.includes('my-feature'); ``` 4. **Tests**: ```python with self.feature("organizations:my-feature"): ... ``` 5. **Rollout**: FlagPole YAML config lives in the `sentry-options-automator` repo, not here. 6. **Removal**: once the rollout is finished, the flag comes out in a fixed three-PR order — see the `remove-option-or-flag` skill. See https://develop.sentry.dev/feature-flags/ for full docs.
View on GitHub