* feat: Add sentry-otel-exporter skill for OTel Collector setup Add skill for configuring OpenTelemetry Collector with the Sentry Exporter. Covers multi-project routing, auto-provisioning, and self-hosted setups. Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com> * ref: Rename to sentry-otel-exporter-setup and update README Follow naming convention matching sentry-python-setup pattern. Add skill to README tables. Co-Authored-By: Claude <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com> * docs(otel-exporter): Align skill with exporter spec and improve language support - Remove Team:Read permission requirement (team info comes from project API) - Add missing config options: http, sending_queue - Add "Using with Sentry SDKs" section for trace connectedness - Lead with environment variables (works for all languages) - Add link to OpenTelemetry docs for any language - Add cache guardrails to limitations (max 1000 projects/queue) - Update troubleshooting to remove Team:Read references - Add 403 cache eviction behavior to troubleshooting Co-Authored-By: Claude <noreply@anthropic.com> * fix(otel-exporter): Search for existing .env files before creating new one Prevents creating a duplicate .env at root when the project already has one elsewhere (e.g., in /api). Now prompts user to choose which .env file to add credentials to. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs(otel-exporter): Check for existing config and fetch docs from repo - Add Step 1 to search for existing collector configs before creating - Prefer editing existing config to avoid duplicates - Replace hardcoded YAML with links to upstream docs: - example-config.yaml for scaffolding template - spec.md for advanced options - Update step numbering and cross-references Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Clarify that Step 5 adds placeholders, not credentials Rename "Set Up Credentials" to "Add Environment Variable Placeholders" to avoid language that sounds like we're handling real secrets. The agent now clearly adds placeholder values that users fill in manually. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Add explicit DO/DON'T language constraints for env vars Add concrete examples of what to say and what not to say when adding placeholder environment variables. Constraints placed directly in Step 5 where the action happens. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Correct org slug location instructions Point to Settings → Organization Settings → Organization Slug and note it matches the subdomain. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor(otel-exporter): Improve skill per skill-creator standards - Simplify Step 1 to imperative voice, remove bash code block - Make Step 2 Binary section more concise - Add Step 7: Verify Setup with success criteria - Add Troubleshooting table for common errors Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(otel-exporter): Add version check and use latest release - Check for existing collector before downloading - Skip download if version >= 0.145.0 (compatible) - Fetch latest release from GitHub API instead of hardcoding 0.145.0 - Prevents downgrading users who have newer versions Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Validate config only after credentials are set - Add confirmation prompt before validation - Wait for user to confirm .env has real credentials - Run validation after confirmation, before starting collector - Update troubleshooting for env var errors Prevents confusing validation failures when placeholders aren't replaced. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor(otel-exporter): Apply synthesis improvements to skill Based on research of Agent Skills spec and Anthropic's official skills: - Add master progress checklist for tracking 7-step workflow - Simplify question formats from structured to natural language bullets - Improve validation loop with explicit "validate → fix → repeat" pattern - Use concrete example paths instead of placeholder syntax - Remove unnecessary terminology note (Claude knows capitalization) These changes align the skill with Anthropic patterns while maintaining the sophisticated credential handling and validation gates that make this skill effective. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Restore terminology note for Sentry Exporter The terminology instruction was removed during synthesis improvements, but testing showed Claude doesn't consistently capitalize "Sentry Exporter" during interactive skill execution without this explicit guidance. Real-world testing trumps theoretical best practices - keeping this instruction to ensure consistent capitalization. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Add explicit flow control to prevent skipping steps User reported that Claude was jumping between steps without waiting for answers to questions - asking about auto-create (Step 3) before getting an answer about modify vs create config (Step 1), then proceeding to create a new config without the user's decision. Changes: - Step 1: Add "Wait for the user's answer and record their choice" - Step 3: Add "Wait for the user's answer before proceeding to Step 4" - Step 4: Add "Use the decision from Step 1" reminder at the top - Step 5: Add "Wait for the user's answer" for .env file selection - Convert Step 1 options to bullet format for consistency This enforces proper sequential flow and prevents Claude from making assumptions about unanswered questions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Add user confirmation gate before running collector After validation passes, Claude was automatically proceeding to run the collector without explicit user consent. This could be unexpected if the user wants to review the config or prepare their environment first. Changes: - Add confirmation question after validation passes - Explicit "Wait for the user's confirmation before proceeding to Step 6" - Clarify that Step 6 should PROVIDE the command, not execute it - Tell user to run the command themselves when ready This gives users full control over when the collector starts. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Address review bot feedback on paths and versions - Fix version placeholders: GitHub tag_name includes 'v' prefix but OTel downloads and Docker tags use numeric versions without prefix - Add Docker validation command: Users who chose Docker installation now get a validation command that runs inside the container - Use dynamic paths throughout: Validation and run commands now reference the config file, env file, and collector path chosen in earlier steps instead of hardcoding collector-config.yaml, .env, and ./otelcol-contrib - Record chosen paths: Steps now explicitly note to record paths (collector path, config file, env file) for use in later steps Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Clarify version prefix usage in download URLs The URL path requires the v prefix (e.g., /download/v0.145.0/) while only the filename portion uses the numeric version without prefix. Previous wording incorrectly said to strip the prefix from URLs entirely. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Add env var loading for binary installation path Binary users need to load the .env file into their shell before running the collector, since there's no --env-file flag like Docker has. Added export command to both validation and run steps for the binary path. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Handle absolute paths in Docker volume mounts Docker volume mounts require absolute paths. Added note clarifying that relative paths should be prefixed with $(pwd)/ while absolute paths should be used directly. Changed placeholder from $(pwd)/<config_file> to <absolute_config_path> to make this explicit. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Add license and fix env loading security issue - Add missing license: Apache-2.0 field for consistency with other skills - Replace `export $(grep ... | xargs)` with `set -a && source ... && set +a` to prevent command injection via malicious .env file content Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Add instructions for handling existing Docker container Running docker run with --name otel-collector fails if a container with that name already exists. Added cleanup command before the run command and added the error to the troubleshooting table. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Clarify Sentry references in instructions - Change "automatic project creation" to "automatic Sentry project creation" - Change "Org slug" to "Sentry org slug" - Add "In Sentry," prefix to navigation instructions - Makes it clearer that Settings paths refer to the Sentry UI Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Prompt user before deleting downloaded tarball Instead of silently deleting or leaving the tarball, ask the user if they want to clean it up to save ~50MB disk space. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Quote file path placeholders in shell commands Shell commands using placeholders like <env_file> and <config_file> will fail if paths contain spaces. Add double quotes around all path placeholders to ensure proper handling. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(otel-exporter): Require explicit user selection for env file and tarball cleanup - Env file: Explicitly state not to infer from context or guess based on open files - Tarball: Add explicit wait for user response before deleting Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Daniel Griesser <daniel.griesser.86@gmail.com>
Sentry Agent Skills
Official agent skills for integrating Sentry into your projects. These skills provide AI coding assistants with the knowledge to set up Sentry, debug production issues, and leverage Sentry's full observability platform.
Available Skills
SDK Skills (Full Platform Bundles)
| Skill | Description | Platforms | Docs |
|---|---|---|---|
sentry-go-sdk |
Full Sentry setup wizard for Go — error monitoring, tracing, logging, metrics, crons | Go (net/http, Gin, Echo, Fiber) | Go Guide |
sentry-python-sdk |
Full Sentry setup wizard for Python — error monitoring, tracing, profiling, logging, metrics, crons, AI monitoring | Python (Django, Flask, FastAPI, Celery, Starlette, AIOHTTP) | Python Guide |
sentry-svelte-sdk |
Full Sentry setup wizard for Svelte/SvelteKit — error monitoring, tracing, session replay, logging | Svelte, SvelteKit | SvelteKit Guide |
sentry-ruby-sdk |
Full Sentry setup wizard for Ruby — error monitoring, tracing, logging, Sidekiq metrics + dashboard, migration from AppSignal/Honeybadger | Ruby, Rails, Sinatra, Rack, Sidekiq | Ruby Guide |
sentry-cocoa-sdk |
Full Sentry setup wizard for Apple platforms — error monitoring, tracing, profiling, session replay, logging | iOS, macOS, tvOS, watchOS, visionOS (Swift, UIKit, SwiftUI) | Apple Guide |
sentry-react-native-sdk |
Full Sentry setup wizard for React Native and Expo — error monitoring, tracing, profiling, session replay, logging, native crash symbolication | React Native, Expo managed/bare | React Native Guide |
sentry-react-sdk |
Full Sentry setup wizard for React — error monitoring, tracing, session replay, profiling, logging | React 16+, React Router v5-v7, TanStack Router, Redux, Vite, webpack | React Guide |
sentry-nextjs-sdk |
Full Sentry setup wizard for Next.js — error monitoring, tracing, profiling, logging, session replay, AI monitoring, crons | Next.js App Router + Pages Router, Vercel, @sentry/nextjs |
Next.js Guide |
sentry-dotnet-sdk |
Full Sentry setup wizard for .NET — error monitoring, tracing, profiling, logging, crons | ASP.NET Core, MAUI, WPF, WinForms, Azure Functions, Blazor, gRPC | .NET Guide |
Setup Skills
| Skill | Description | Platforms | Docs |
|---|---|---|---|
sentry-react-setup |
Setup Sentry in React apps | React | React Guide |
sentry-react-native-setup |
Setup Sentry in React Native using the wizard CLI | React Native, Expo | React Native Guide |
sentry-python-setup |
Setup Sentry in Python apps | Python (Django, Flask, FastAPI) | Python Guide |
sentry-ruby-setup |
Setup Sentry in Ruby apps | Ruby (Rails) | Ruby Guide |
sentry-ios-swift-setup |
Setup Sentry in iOS/Swift apps | iOS (Swift, UIKit, SwiftUI) | Apple Guide |
sentry-setup-tracing |
Setup Sentry Tracing (Performance Monitoring) | JS, Python, Ruby | Tracing |
sentry-setup-logging |
Setup Sentry Logging | JS, Python, Ruby | Logs |
sentry-setup-metrics |
Setup Sentry Metrics | JS, Python | Metrics |
sentry-setup-ai-monitoring |
Setup Sentry AI Agent Monitoring | JS, Python | AI Agents |
sentry-otel-exporter-setup |
Setup OTel Collector with Sentry Exporter | OTel Collector | Exporter Guide |
Workflow Skills
| Skill | Description | Requirements | Docs |
|---|---|---|---|
sentry-fix-issues |
Find and fix issues from Sentry using MCP | Sentry MCP | Issues |
sentry-pr-code-review |
Review a project's PRs to check for issues detected in code review by Seer Bug Prediction | GitHub CLI | Seer |
sentry-create-alert |
Create Sentry alerts using the workflow engine API | curl, auth token |
Alerts |
Authoring Skills
| Skill | Description | Requirements |
|---|---|---|
sentry-sdk-skill-creator |
Create a complete SDK skill bundle for any new platform — research, write, verify, and register | Web search, claude tool |
Installation
Quick Install (Recommended)
Install all skills using the skills CLI:
npx skills add https://github.com/getsentry/sentry-agent-skills
Or install a specific skill:
npx skills add https://github.com/getsentry/sentry-agent-skills --skill sentry-fix-issues
Browse available skills at skills.sh/getsentry/sentry-agent-skills.
Manual Installation
Choose your AI coding assistant below and run the appropriate command.
Claude Code
User-level (applies to all projects):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p ~/.claude/skills && \
cp -r /tmp/sentry-skills/skills/* ~/.claude/skills/ && \
rm -rf /tmp/sentry-skills
Project-level (single repository):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p .claude/skills && \
cp -r /tmp/sentry-skills/skills/* .claude/skills/ && \
rm -rf /tmp/sentry-skills
Directory structure
~/.claude/skills/ # User-level
.claude/skills/ # Project-level
# Each skill:
sentry-fix-issues/
SKILL.md
OpenAI Codex
User-level (applies to all projects):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p ~/.codex/skills && \
cp -r /tmp/sentry-skills/skills/* ~/.codex/skills/ && \
rm -rf /tmp/sentry-skills
Project-level (single repository):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p .codex/skills && \
cp -r /tmp/sentry-skills/skills/* .codex/skills/ && \
rm -rf /tmp/sentry-skills
Directory structure
~/.codex/skills/ # User-level
.codex/skills/ # Project-level
# Each skill:
sentry-fix-issues/
SKILL.md
GitHub Copilot
User-level (applies to all projects):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p ~/.copilot/skills && \
cp -r /tmp/sentry-skills/skills/* ~/.copilot/skills/ && \
rm -rf /tmp/sentry-skills
Project-level (single repository):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p .github/skills && \
cp -r /tmp/sentry-skills/skills/* .github/skills/ && \
rm -rf /tmp/sentry-skills
Directory structure
~/.copilot/skills/ # User-level
.github/skills/ # Project-level
# Each skill:
sentry-fix-issues/
SKILL.md
Cursor
Note: Agent skills require Cursor Nightly. Enable via:
Cursor Settings > Rules > Import Settings > Agent Skills
User-level (applies to all projects):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p ~/.cursor/skills && \
cp -r /tmp/sentry-skills/skills/* ~/.cursor/skills/ && \
rm -rf /tmp/sentry-skills
Project-level (single repository):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p .cursor/skills && \
cp -r /tmp/sentry-skills/skills/* .cursor/skills/ && \
rm -rf /tmp/sentry-skills
Directory structure
~/.cursor/skills/ # User-level
.cursor/skills/ # Project-level
# Each skill:
sentry-fix-issues/
SKILL.md
OpenCode
User-level (applies to all projects):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p ~/.config/opencode/skill && \
cp -r /tmp/sentry-skills/skills/* ~/.config/opencode/skill/ && \
rm -rf /tmp/sentry-skills
Project-level (single repository):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p .opencode/skill && \
cp -r /tmp/sentry-skills/skills/* .opencode/skill/ && \
rm -rf /tmp/sentry-skills
Directory structure
~/.config/opencode/skill/ # User-level
.opencode/skill/ # Project-level
# Also supports Claude-compatible paths:
~/.claude/skills/ # User-level (alternative)
.claude/skills/ # Project-level (alternative)
# Each skill:
sentry-fix-issues/
SKILL.md
AmpCode (Sourcegraph Amp)
User-level (applies to all projects):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p ~/.config/agents/skills && \
cp -r /tmp/sentry-skills/skills/* ~/.config/agents/skills/ && \
rm -rf /tmp/sentry-skills
Project-level (single repository):
git clone https://github.com/getsentry/sentry-agent-skills.git /tmp/sentry-skills && \
mkdir -p .agents/skills && \
cp -r /tmp/sentry-skills/skills/* .agents/skills/ && \
rm -rf /tmp/sentry-skills
Directory structure
~/.config/agents/skills/ # User-level
.agents/skills/ # Project-level
# Also supports Claude-compatible paths:
~/.claude/skills/ # User-level (alternative)
.claude/skills/ # Project-level (alternative)
# Each skill:
sentry-fix-issues/
SKILL.md
Quick Reference
| Client | User-Level Path | Project-Level Path |
|---|---|---|
| Claude Code | ~/.claude/skills/ |
.claude/skills/ |
| Codex | ~/.codex/skills/ |
.codex/skills/ |
| Copilot | ~/.copilot/skills/ |
.github/skills/ |
| Cursor | ~/.cursor/skills/ |
.cursor/skills/ |
| OpenCode | ~/.config/opencode/skill/ |
.opencode/skill/ |
| AmpCode | ~/.config/agents/skills/ |
.agents/skills/ |
Usage
Once installed, your AI assistant will automatically discover the skills. Simply ask:
SDK Skills (Full Platform Bundles)
| What to Say | Skill Used |
|---|---|
| "Add Sentry to my Go app" | sentry-go-sdk |
| "Set up Sentry in my Gin/Echo/Fiber project" | sentry-go-sdk |
| "Add Sentry to my Python app" | sentry-python-sdk |
| "Set up Sentry in my Django/Flask/FastAPI project" | sentry-python-sdk |
| "Monitor my OpenAI/LangChain calls in Python" | sentry-python-sdk |
| "Add Sentry to my SvelteKit app" | sentry-svelte-sdk |
| "Set up Sentry in Svelte" | sentry-svelte-sdk |
| "Add Sentry to my Ruby/Rails app" | sentry-ruby-sdk |
| "Set up Sentry metrics for Puma/Sidekiq" | sentry-ruby-sdk |
| "Migrate from AppSignal to Sentry" | sentry-ruby-sdk |
| "Replace Honeybadger with Sentry" | sentry-ruby-sdk |
| "Add Sentry to my iOS app" | sentry-cocoa-sdk |
| "Set up Sentry in my Swift/SwiftUI project" | sentry-cocoa-sdk |
| "Add Sentry to my macOS app" | sentry-cocoa-sdk |
| "Add Sentry to my React Native app" | sentry-react-native-sdk |
| "Set up Sentry in Expo" | sentry-react-native-sdk |
| "Configure session replay for React Native" | sentry-react-native-sdk |
| "Add Sentry to my React app" | sentry-react-sdk |
| "Set up error boundaries in React" | sentry-react-sdk |
| "Configure session replay for React" | sentry-react-sdk |
| "Add Sentry to my Next.js app" | sentry-nextjs-sdk |
| "Set up Sentry in Next.js App Router" | sentry-nextjs-sdk |
| "Monitor AI/OpenAI calls in Next.js" | sentry-nextjs-sdk |
| "Add Sentry to my .NET app" | sentry-dotnet-sdk |
| "Set up Sentry in my ASP.NET Core project" | sentry-dotnet-sdk |
| "Add Sentry to my MAUI/WPF/WinForms app" | sentry-dotnet-sdk |
| "Monitor Azure Functions with Sentry" | sentry-dotnet-sdk |
Setup
| What to Say | Skill Used |
|---|---|
| "Add Sentry to my React app" | sentry-react-setup |
| "Set up Sentry in React Native" | sentry-react-native-setup |
| "Add Sentry to my Python/Django/Flask app" | sentry-python-setup |
| "Set up Sentry in my Ruby/Rails app" | sentry-ruby-setup |
| "Add performance monitoring to my app" | sentry-setup-tracing |
| "Enable Sentry logging" | sentry-setup-logging |
| "Track custom metrics with Sentry" | sentry-setup-metrics |
| "Monitor my OpenAI/LangChain calls" | sentry-setup-ai-monitoring |
| "Set up OTel Collector with Sentry" | sentry-otel-exporter-setup |
Debugging & Workflow
| What to Say | Skill Used |
|---|---|
| "Fix the recent Sentry errors" | sentry-fix-issues |
| "Debug the production TypeError" | sentry-fix-issues |
| "Work through my Sentry backlog" | sentry-fix-issues |
| "Review Sentry comments on PR #123" | sentry-pr-code-review |
| "Fix the issues Sentry found in my PR" | sentry-pr-code-review |
| "Create an alert that emails me when a high priority issue de-escalates" | sentry-create-alert |
| "Set up a Slack notification for new Sentry issues" | sentry-create-alert |
/sentry-create-alert |
sentry-create-alert |
The assistant will load the appropriate skill and guide you through the process.
Skill Format
These skills follow the Agent Skills specification. Each skill contains:
skill-name/
SKILL.md # Required: YAML frontmatter + markdown instructions
SKILL.md structure:
---
name: skill-name
description: Description of what this skill does and when to use it
---
# Skill Title
Instructions for the AI assistant...
SDK skill bundles use a references/ directory for feature-specific deep dives:
sentry-go-sdk/
SKILL.md # Main wizard
references/
error-monitoring.md
tracing.md
...
Contributing
Contributions are welcome! Please ensure any new skills:
- Follow the Agent Skills specification
- Have a valid
name(lowercase letters, numbers, hyphens, 1-64 chars, no consecutive hyphens, must not start or end with hyphen) - Include a clear
description(1-1024 chars) - Include an "Invoke This Skill When" section with trigger phrases
- Verify technical details against Sentry docs
For full-platform SDK skills (covering all Sentry features for one language/framework), see docs/sdk-skill-philosophy.md for the bundle architecture pattern.
Style Guidelines
- Prefer tables over paragraphs for reference information
- Use phases/steps for multi-stage workflows
- Include version requirements where applicable
- Add troubleshooting tables for common issues
- SDK skill bundles should be comprehensive — use
references/directories for deep-dive content loaded on demand
License
Apache-2.0