Sentry logo

Sentry

CommunityPopular
mitsuhiko
sentry

Fetch and analyze Sentry issues, events, transactions, and logs. Helps agents debug errors, find root causes, and understand what happened at specific times.

Overview

Publishermitsuhiko
Repositoryagent-stuff
Skill namesentry
Stars
3.1K
Forks
224
Bundled files
6
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 6 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by mitsuhiko on GitHub. Read the source before you install it.

Installation

Install the Sentry AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/mitsuhiko/agent-stuff.git /tmp/agent-stuff
mkdir -p .claude/skills
cp -r /tmp/agent-stuff/skills/sentry .claude/skills/sentry
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Sentry in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Sentry on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Sentry is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Sentry Skill

Access Sentry data via the API for debugging and investigation. Uses auth token from ~/.sentryclirc.

Quick Reference

TaskCommand
Find errors on a datesearch-events.js --org X --start 2025-12-23T15:00:00 --level error
List open issueslist-issues.js --org X --status unresolved
Get issue detailsfetch-issue.js <issue-id-or-url> --latest
Get event detailsfetch-event.js <event-id> --org X --project Y
Search logssearch-logs.js --org X --project Y "level:error"

Common Debugging Workflows

"What went wrong at this time?"

Find events around a specific timestamp:

bash
# Find all events in a 2-hour window
./scripts/search-events.js --org myorg --project backend \
  --start 2025-12-23T15:00:00 --end 2025-12-23T17:00:00

# Filter to just errors
./scripts/search-events.js --org myorg --start 2025-12-23T15:00:00 \
  --level error

# Find a specific transaction type
./scripts/search-events.js --org myorg --start 2025-12-23T15:00:00 \
  --transaction process-incoming-email

"What errors have occurred recently?"

bash
# List unresolved errors from last 24 hours
./scripts/list-issues.js --org myorg --status unresolved --level error --period 24h

# Find high-frequency issues
./scripts/list-issues.js --org myorg --query "times_seen:>50" --sort freq

# Issues affecting users
./scripts/list-issues.js --org myorg --query "is:unresolved has:user" --sort user

"Get details about a specific issue/event"

bash
# Get issue with latest stack trace
./scripts/fetch-issue.js 5765604106 --latest
./scripts/fetch-issue.js https://sentry.io/organizations/myorg/issues/123/ --latest
./scripts/fetch-issue.js MYPROJ-123 --org myorg --latest

# Get specific event with all breadcrumbs
./scripts/fetch-event.js abc123def456 --org myorg --project backend --breadcrumbs

"Find events with a specific tag"

bash
# Find by custom tag (e.g., thread_id, user_id)
./scripts/search-events.js --org myorg --tag thread_id:th_abc123

# Find by user email
./scripts/search-events.js --org myorg --query "user.email:*@example.com"

Fetch Issue

bash
./scripts/fetch-issue.js <issue-id-or-url> [options]

Get details about a specific issue (grouped error).

Accepts:

  • Issue ID: 5765604106
  • Issue URL: https://sentry.io/organizations/sentry/issues/5765604106/
  • New URL format: https://myorg.sentry.io/issues/5765604106/
  • Short ID: JAVASCRIPT-ABC (requires --org flag)

Options:

  • --latest - Include the latest event with full stack trace
  • --org <org> - Organization slug (for short IDs)
  • --json - Output raw JSON

Output includes:

  • Title, culprit, status, level
  • First/last seen timestamps
  • Event count and user impact
  • Tags and environment info
  • With --latest: stack trace, request details, breadcrumbs, runtime context

Fetch Event

bash
./scripts/fetch-event.js <event-id> --org <org> --project <project> [options]

Get full details of a specific event by its ID.

Options:

  • --org, -o <org> - Organization slug (required)
  • --project, -p <project> - Project slug (required)
  • --breadcrumbs, -b - Show all breadcrumbs (default: last 30)
  • --spans - Show span tree for transactions
  • --json - Output raw JSON

Output includes:

  • Timestamp, project, title, message
  • All tags
  • Context (runtime, browser, OS, trace info)
  • Request details
  • Exception with stack trace
  • Breadcrumbs
  • Spans (with --spans)

Search Events

bash
./scripts/search-events.js [options]

Search for events (transactions, errors) using Sentry Discover.

Time Range Options:

  • --period, -t <period> - Relative time (24h, 7d, 14d)
  • --start <datetime> - Start time (ISO 8601: 2025-12-23T15:00:00)
  • --end <datetime> - End time (ISO 8601)

Filter Options:

  • --org, -o <org> - Organization slug (required)
  • --project, -p <project> - Project slug or ID
  • --query, -q <query> - Discover search query
  • --transaction <name> - Transaction name filter
  • --tag <key:value> - Tag filter (repeatable)
  • --level <level> - Level filter (error, warning, info)
  • --limit, -n <n> - Max results (default: 25, max: 100)
  • --fields <fields> - Comma-separated fields to include

Query Syntax:

transaction:process-*     Wildcard transaction match
level:error               Filter by level
user.email:foo@bar.com    Filter by user
environment:production    Filter by environment
has:stack.filename        Has stack trace

List Issues

bash
./scripts/list-issues.js [options]

List and search issues (grouped errors) in a project.

Options:

  • --org, -o <org> - Organization slug (required)
  • --project, -p <project> - Project slug (repeatable)
  • --query, -q <query> - Issue search query
  • --status <status> - unresolved, resolved, ignored
  • --level <level> - error, warning, info, fatal
  • --period, -t <period> - Time period (default: 14d)
  • --limit, -n <n> - Max results (default: 25)
  • --sort <sort> - date, new, priority, freq, user
  • --json - Output raw JSON

Query Syntax:

is:unresolved             Status filter
is:assigned               Has assignee
assigned:me               Assigned to current user
level:error               Level filter
firstSeen:+7d             First seen > 7 days ago
lastSeen:-24h             Last seen within 24h
times_seen:>100           Event count filter
has:user                  Has user context
error.handled:0           Unhandled errors only

Search Logs

bash
./scripts/search-logs.js [query|url] [options]

Search for logs in Sentry's Logs Explorer.

Options:

  • --org, -o <org> - Organization slug (required unless URL provided)
  • --project, -p <project> - Filter by project slug or ID
  • --period, -t <period> - Time period (default: 24h)
  • --limit, -n <n> - Max results (default: 100, max: 1000)
  • --json - Output raw JSON

Query Syntax:

level:error              Filter by level (trace, debug, info, warn, error, fatal)
message:*timeout*        Search message text with wildcards
trace:abc123             Filter by trace ID
project:my-project       Filter by project slug

Accepts Sentry URLs:

bash
./scripts/search-logs.js "https://myorg.sentry.io/explore/logs/?project=123&statsPeriod=7d"

Tips for Debugging

  1. Start broad, then narrow down: Use search-events.js with a time range first, then drill into specific events

  2. Use breadcrumbs: The --breadcrumbs flag on fetch-event.js shows the full history of what happened before an error

  3. Look for patterns: Use list-issues.js --sort freq to find frequently occurring problems

  4. Check related events: If you find one event, look for others with the same transaction name or trace ID

  5. Tags are your friend: Custom tags like thread_id, user_id, request_id help correlate events

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Sentry AI skill do?

Fetch and analyze Sentry issues, events, transactions, and logs. Helps agents debug errors, find root causes, and understand what happened at specific times.

Why use Sentry on TypingMind?

Because you install it once and use it with any model. Sentry is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Sentry in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/mitsuhiko/agent-stuff/tree/main/skills/sentry. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Sentry?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Sentry?

As many as you like. As long as a model supports skills, you can use Sentry with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Sentry AI skill free?

Yes. It is published on GitHub by mitsuhiko under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇