sentry-create-alert
This skill creates alerts in Sentry using the workflow engine API.
Identity proven by GitHub's verified organisation badge (getsentry)
- Agents
- Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
- License
- Apache-2.0 (permissive)
- Pin
- d8fd106pinned Oct 9, 2026
- Context cost
- about 1,800 tokenswhen the skill loads
- GitHub stars
- 268on getsentry/sentry-for-ai
- Scripts
- None found
What it does
“Create Sentry alerts using the workflow engine API. Use when asked to create alerts, set up notifications, configure issue priority alerts, or build workflow automations. Supports email, Slack, PagerDuty, Discord, and other notification actions.”
Generated summary from the skill's own text
This skill creates alerts in Sentry using the workflow engine API. It guides through gathering configuration details, resolving object IDs via API calls, building a trigger and action payload, and posting to the workflows endpoint. It supports email, Slack, PagerDuty, Discord, MS Teams, OpsGenie, Jira, and GitHub notification actions.
When to use it
- User wants to create Sentry alerts for issue events like regressions or new issues
- Setting up notifications to specific users, teams, or channels when issues match conditions
- Configuring de-escalation or priority-based alerts with conditional logic
- Building multi-action workflows with filters before sending notifications
When not to
- The workflow engine API is in beta and may change without notice
- Managing legacy Sentry Alerts UI that does not support the new workflow engine
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add getsentry/sentry-for-ai --skill sentry-create-alertInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install getsentry/sentry-for-ai sentry-create-alert@d8fd106782e609625704f5348b25c43b2f5dbeffInstalls the commit we checked (d8fd106).
Copy by hand
Download the folder at d8fd106 and put it in .claude/skills/sentry-create-alert for Claude Code and in .agents/skills/sentry-create-alert for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Claude Code plugin
/plugin install sentry@claude-plugins-officialThe publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.
Claude Code plugin
/plugin install sentry-cli@claude-plugins-officialThe publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "sentry-create-alert" by Sentry. Source, pinned to commit d8fd106782e609625704f5348b25c43b2f5dbeff: https://github.com/getsentry/sentry-for-ai/tree/d8fd106782e609625704f5348b25c43b2f5dbeff/src/skills/sentry-create-alert 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/sentry-create-alert/ for Claude Code and .agents/skills/sentry-create-alert/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/sentry/sentry-create-alert-sentry-for-ai
SKILL.md at the pin
---
name: sentry-create-alert
description: Create Sentry alerts using the workflow engine API. Use when asked to create alerts, set up notifications, configure issue priority alerts, or build workflow automations. Supports email, Slack, PagerDuty, Discord, and other notification actions.
license: Apache-2.0
---
# Create Sentry Alert
Create alerts via Sentry’s workflow engine API.
**Note:** This API is currently in **beta** and may be subject to change.
It is part of New Monitors and Alerts and may not be viewable in the legacy Alerts UI.
## Invoke This Skill When
- User asks to “create a Sentry alert” or “set up notifications”
- User wants to be emailed or notified when issues match certain conditions
- User mentions priority alerts, de-escalation alerts, or workflow automations
- User wants to configure Slack, PagerDuty, or email notifications for Sentry issues
## Prerequisites
- `curl` available in shell
- Sentry org auth token with `alerts:write` scope (also accepts `org:admin` or
`org:write`)
## Phase 1: Gather Configuration
Ask the user for any missing details:
| Detail | Required | Example |
| --- | --- | --- |
| Org slug | Yes | `sentry`, `my-org` |
| Auth token | Yes | `sntryu_...` (needs `alerts:write` scope) |
| Region | Yes (default: `us`) | `us` → `us.sentry.io`, `de` → `de.sentry.io` |
| Alert name | Yes | `"High Priority De-escalation Alert"` |
| Trigger events | Yes | Which issue events fire the workflow |
| Conditions | Optional | Filter conditions before actions execute |
| Action type | Yes | `email`, `slack`, or `pagerduty` |
| Action target | Yes | User email, team, channel, or service |
## Phase 2: Look Up IDs
Use these API calls to resolve names to IDs as needed.
```bash
API="https://{region}.sentry.io/api/0/organizations/{org}"
AUTH="Authorization: Bearer {token}"
# Find user ID by email
curl -s "$API/members/" -H "$AUTH" | python3 -c "
import json,sys
for m in json.load(sys.stdin):
if m.get('email')=='USER_EMAIL' or m.get('user',{}).get('email')=='USER_EMAIL':
print(m['user']['id']); break"
# List teams
curl -s "$API/teams/" -H "$AUTH" | python3 -c "
import json,sys
for t in json.load(sys.stdin):
print(t['id'], t['slug'])"
# List integrations (for Slack/PagerDuty)
curl -s "$API/integrations/" -H "$AUTH" | python3 -c "
import json,sys
for i in json.load(sys.stdin):
print(i['id'], i['provider']['key'], i['name'])"
```
## Phase 3: Build Payload
### Trigger Events
Pick which issue events fire the workflow.
Use `logicType: "any-short"` (triggers must always use this).
| Type | Fires when |
| --- | --- |
| `first_seen_event` | New issue created |
| `regression_event` | Resolved issue recurs |
| `reappeared_event` | Archived issue reappears |
| `issue_resolved_trigger` | Issue is resolved |
### Filter Conditions
Conditions that must pass before actions execute.
Use `logicType: "all"`, `"any-short"`, or `"none"`.
**The `comparison` field is polymorphic** — its shape depends on the condition `type`:
| Type | `comparison` format | Description |
| --- | --- | --- |
| `issue_priority_greater_or_equal` | `75` (bare integer) | Priority >= Low(25)/Medium(50)/High(75) |
| `issue_priority_deescalating` | `true` (bare boolean) | Priority dropped below peak |
| `event_frequency_count` | `{"value": 100, "interval": "1hr"}` | Event count in time window |
| `event_unique_user_frequency_count` | `{"value": 50, "interval": "1hr"}` | Affected users in time window |
| `tagged_event` | `{"key": "level", "match": "eq", "value": "error"}` | Event tag matches |
| `assigned_to` | `{"targetType": "Member", "targetIdentifier": 123}` | Issue assigned to target |
| `level` | `{"level": 40, "match": "gte"}` | Event level (fatal=50, error=40, warning=30) |
| `age_comparison` | `{"time": "hour", "value": 24, "comparisonType": "older"}` | Issue age |
| `issue_category` | `{"value": 1}` | Category (1=Error, 6=Feedback, 10=Outage: uptime and cron) |
| `issue_occurrences` | `{"value": 100}` | Total occurrence count |
**Interval options:** `"1min"`, `"5min"`, `"15min"`, `"1hr"`, `"1d"`, `"1w"`, `"30d"`
**Tag match types:** `"co"` (contains), `"nc"` (not contains), `"eq"`, `"ne"`, `"sw"`
(starts with), `"ew"` (ends with), `"is"` (set), `"ns"` (not set)
Set `conditionResult` to `false` to invert (fire when condition is NOT met).
### Actions
| Type | Key Config |
| --- | --- |
| `email` | `config.targetType`: `"user"` / `"team"` / `"issue_owners"`, `config.targetIdentifier`: `<id>` |
| `slack` | `integrationId`: `<id>`, `config.targetDisplay`: `"#channel-name"` |
| `pagerduty` | `integrationId`: `<id>`, `config.targetDisplay`: `<service_name>`, `data.priority`: `"critical"` |
| `discord` | `integrationId`: `<id>`, `data.tags`: tag list |
| `msteams` | `integrationId`: `<id>`, `config.targetDisplay`: `<channel>` |
| `opsgenie` | `integrationId`: `<id>`, `data.priority`: `"P1"`-`"P5"` |
| `jira` | `integrationId`: `<id>`, `data`: project/issue config |
| `github` | `integrationId`: `<id>`, `data`: repo/issue config |
### Full Payload Structure
```json
{
"name": "<Alert Name>",
"enabled": true,
"environment": null,
"config": { "frequency": 30 },
"triggers": {
"logicType": "any-short",
"conditions": [
{ "type": "first_seen_event", "comparison": true, "conditionResult": true }
],
"actions": []
},
"actionFilters": [{
"logicType": "all",
"conditions": [
{ "type": "issue_priority_greater_or_equal", "comparison": 75, "conditionResult": true },
{ "type": "event_frequency_count", "comparison": {"value": 50, "interval": "1hr"}, "conditionResult": true }
],
"actions": [{
"type": "email",
"integrationId": null,
"data": {},
"config": {
"targetType": "user",
"targetIdentifier": "<user_id>",
"targetDisplay": null
},
"status": "active"
}]
}]
}
```
`frequency`: minutes between repeated notifications.
Allowed values: `0`, `5`, `10`, `30`, `60`, `180`, `720`, `1440`.
**Structure note:** `triggers.actions` is always `[]` — actions live inside
`actionFilters[].actions`.
## Phase 4: Create the Alert
```bash
curl -s -w "\n%{http_code}" -X POST \
"https://{region}.sentry.io/api/0/organizations/{org}/workflows/" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{payload}'
```
Expect HTTP `201`. The response contains the workflow `id`.
## Phase 5: Verify
Confirm the alert was created and provide the UI link:
```
https://{org_slug}.sentry.io/monitors/alerts/{workflow_id}/
```
If the org lacks the `workflow-engine-ui` feature flag, the alert appears at:
```
https://{org_slug}.sentry.io/alerts/rules/
```
## Managing Alerts
```bash
# List all workflows
curl -s "$API/workflows/" -H "$AUTH"
# Get one workflow
curl -s "$API/workflows/{id}/" -H "$AUTH"
# Update a workflow
curl -s -X PUT "$API/workflows/{id}/" -H "$AUTH" -H "Content-Type: application/json" -d '{payload}'
# Delete a workflow
curl -s -X DELETE "$API/workflows/{id}/" -H "$AUTH"
# Expect 204
```
## Troubleshooting
| Issue | Solution |
| --- | --- |
| 401 Unauthorized | Token needs `alerts:write` scope |
| 403 Forbidden | Token must belong to the target org |
| 404 Not Found | Check org slug and region (`us` vs `de`) |
| 400 Bad Request | Validate payload JSON structure, check required fields |
| User ID not found | Verify email matches a member of the org |
From getsentry/sentry-for-ai at d8fd106, shown as plain text under its license: Apache-2.0 (permissive). The license text is in src/skills/sentry-create-alert/SKILL.md.
View SKILL.md on GitHub at d8fd106Files
- SKILL.md7.4 KB · e00b85ebc74e
1 file, 7.4 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at d8fd106More from Sentry
claude-settings-audit
This skill analyzes a repository to detect its tech stack, build tools, and service integrations, then generates recommended Claude Code settings.json…
Claude Code · about 2.9K tokens · pinned 6 days ago
commit
This skill enables the agent to create conventional commit messages following Sentry's style guide.
Claude Code, Codex, Cursor +4 · about 430 tokens · pinned 6 days ago
django-access-review
This skill guides agents through investigating Django and Django REST Framework code for IDOR and access control vulnerabilities.
Claude Code, Codex, Cursor +4 · about 2.5K tokens · pinned 6 days ago
django-perf-review
This skill audits Django codebases for performance problems by validating issues through code tracing before reporting.
Claude Code, Codex, Cursor +4 · about 2.8K tokens · pinned 6 days ago
iterate-pr
This skill automates PR iteration by fetching CI check statuses and review feedback, then fixing actionable failures and high/medium priority comments until…
Contains scripts
Claude Code · about 1.2K tokens · pinned 6 days ago
pr-writer
This skill helps agents write clear, reviewer-focused PR titles and descriptions by inspecting the branch, diff, and existing PR state, then crafting concise…
Claude Code, Codex, Cursor +4 · about 1.3K tokens · pinned 6 days ago
Related in Observability
axiom-sre
An expert SRE investigator skill that performs incident response, root cause analysis, and production debugging through hypothesis-driven methodology and…
by axiomhqCommunity
Contains scripts
Claude Code, Codex, Cursor +3 · about 7.1K tokens · pinned 6 days ago
triage-frontend-issues
This skill automatically archives non-actionable issues from the Sentry JavaScript project by classifying them against defined noise categories and applying…
by SentryOfficial publisher
Claude Code · about 1.9K tokens · pinned 6 days ago
sentry
This skill queries Sentry telemetry data, creates alerts and monitors when explicitly requested, and generates deep links to Sentry dashboards.
by SentryOfficial publisher
Claude Code, Codex, Cursor +4 · about 1.1K tokens · pinned 6 days ago
sentry-android-sdk
Guides you through installing and configuring the Sentry Android SDK for error monitoring, tracing, profiling, session replay, and logging in Kotlin and Java…
by SentryOfficial publisher
Claude Code · about 7.6K tokens · pinned 6 days ago
sentry-browser-sdk
Sets up the Sentry SDK for browser JavaScript projects using vanilla JS, jQuery, static sites, or WordPress without a framework-specific SDK.
by SentryOfficial publisher
Claude Code · about 6.4K tokens · pinned 6 days ago
sentry-cloudflare-sdk
Guides setup of Sentry error monitoring, tracing, logging, and crons monitoring for Cloudflare Workers, Pages, Durable Objects, and Hono applications.
by SentryOfficial publisher
Claude Code · about 5.2K tokens · pinned 6 days ago