Paul Jaffre 01b71b5d7e feat: Add sentry-otel-exporter-setup skill (#1)
* 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>
2026-02-28 10:08:32 +01:00

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

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:

  1. Follow the Agent Skills specification
  2. Have a valid name (lowercase letters, numbers, hyphens, 1-64 chars, no consecutive hyphens, must not start or end with hyphen)
  3. Include a clear description (1-1024 chars)
  4. Include an "Invoke This Skill When" section with trigger phrases
  5. 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

S
Description
Find and fix issues from Sentry using MCP. Use when asked to fix Sentry errors, debug production issues, investigate exceptions, or resolve bugs reported in…
Readme 729 KiB
Languages
Shell 100%