{"slug":"sentry-issue","title":"sentry-issue","summary":"Fetches and digests Sentry issue data (summary, tags, stack trace, breadcrumbs, latest event) by short ID, numeric issue ID, or sentry.io URL, for any Sentry org the local token can access. Use when the user mentions a Sentry issue or short ID (e.g. MY-PROJECT-4X2), pastes a sent","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-25T17:59:59.420922Z","repo":{"url":"https://github.com/domengabrovsek/agent-config","stars":17,"forks":4,"license":null,"updatedAt":"2026-09-23T19:36:06Z"},"bodyHtml":"<hr>\n<h2>name: sentry-issue\ndescription: \"Fetches and digests Sentry issue data (summary, tags, stack trace, breadcrumbs, latest event) by short ID, numeric issue ID, or sentry.io URL, for any Sentry org the local token can access. Use when the user mentions a Sentry issue or short ID (e.g. MY-PROJECT-4X2), pastes a sentry.io issue URL, or asks to investigate a Sentry error.\"</h2>\n<h1>Sentry Issue Investigation</h1>\n<p>Pull everything needed to debug a Sentry issue, starting from just a short ID.</p>\n<h2>Quick start</h2>\n<pre><code># from this skill's own directory\nscripts/sentry-issue.sh MY-PROJECT-4X2\n</code></pre>\n<p>Accepts a short ID (<code>PROJECT-ABC</code>), a numeric issue ID, or a full issue URL\n(<code>https://&lt;org&gt;.sentry.io/issues/123456/</code>). Prints a compact digest:\nissue summary, tags, exception chain with in-app stack frames, request info,\nlast 10 breadcrumbs. Full JSON payloads are saved to\n<code>/tmp/sentry-issue-&lt;id&gt;.json</code> and <code>/tmp/sentry-event-&lt;id&gt;.json</code> for follow-up\n<code>jq</code> queries.</p>\n<h2>How auth and org resolution work</h2>\n<ul>\n<li><strong>Token</strong>: <code>SENTRY_AUTH_TOKEN</code> env -&gt; <code>./.sentryclirc</code> -&gt; repo-root\n<code>.sentryclirc</code> -&gt; <code>~/.sentryclirc</code>. The token is never printed.</li>\n<li><strong>Org</strong>: <code>--org &lt;slug&gt;</code> flag -&gt; <code>SENTRY_ORG</code> env -&gt; <code>.sentryclirc</code>\n<code>org</code> key -&gt; auto-discovery via <code>GET /api/0/organizations/</code>. With a single\naccessible org it is used directly; with multiple orgs, short IDs are probed\nagainst each, while numeric IDs require <code>--org</code>.</li>\n<li><strong>Server</strong>: <code>SENTRY_URL</code> env or <code>.sentryclirc</code> <code>url</code> key for self-hosted;\ndefaults to <code>https://sentry.io</code> (which proxies org-scoped routes to the\ncorrect region, including EU orgs).</li>\n</ul>\n<p>Required token scopes: <code>org:read</code>, <code>project:read</code>, <code>event:read</code>.</p>\n<h2>Investigation workflow</h2>\n<ol>\n<li><p>Run the script with the identifier the user gave.</p>\n</li>\n<li><p>Read the digest: in-app frames (<code>[app]</code> prefix) point at the failing code;\ntags like <code>functionName</code>, <code>transaction</code>, <code>url</code>, <code>environment</code> locate the\nruntime context.</p>\n</li>\n<li><p>Open the implicated source files in the matching repo and trace the failure\npath. The Sentry project slug usually maps to a repo - check the slug\nagainst the repos you have locally.</p>\n</li>\n<li><p>For deeper context, query the saved JSON, e.g.:</p>\n<pre><code>jq '.entries[] | select(.type==\"exception\") | .data.values[0].stacktrace.frames[] | select(.inApp) | {filename, lineNo, context}' /tmp/sentry-event-&lt;id&gt;.json\njq '{stats: .stats, firstRelease: .firstRelease.version, lastRelease: .lastRelease.version}' /tmp/sentry-issue-&lt;id&gt;.json\njq '.contexts' /tmp/sentry-event-&lt;id&gt;.json\n</code></pre>\n</li>\n<li><p>For a structured root-cause investigation, continue with the <code>/debug</code>\nworkflow using the gathered evidence.</p>\n</li>\n</ol>\n<h2>Going deeper</h2>\n<p>See <a href=\"REFERENCE.md\">REFERENCE.md</a> for the full endpoint map and payload\nanatomy: other events (oldest, by ID, walking <code>previousEventID</code>/<code>nextEventID</code>),\ntag value distributions, attachments, issue search, source-context jq recipes,\nand what is NOT available (frame-local variables, session replay). Use it\nwhenever the latest-event digest is not enough evidence.</p>\n<ul>\n<li>For ad-hoc API calls beyond the script, resolve the token the same way the\nscript does (inside command substitution) so it never appears in output\n<code>(review-time: secret handling depends on how the command is composed - not pattern-matchable by a hook)</code></li>\n</ul>\n<h2>Troubleshooting</h2>\n<ul>\n<li><strong>HTTP 403</strong>: wrong org slug or token lacks scopes - run <code>sentry-cli info</code>\nto inspect scopes (never print the token itself).</li>\n<li><strong>HTTP 404 on short ID</strong>: short ID belongs to a different org - pass\n<code>--org</code>, or the issue was deleted.</li>\n<li><strong><code>sentry-cli organizations list</code> JSON parse error</strong>: known CLI 3.5.0 bug;\nthe script's API-based discovery avoids it.</li>\n</ul>\n","files":[{"path":"REFERENCE.md","sizeBytes":4273,"isText":true},{"path":"scripts/sentry-issue.sh","sizeBytes":4880,"isText":true},{"path":"SKILL.md","sizeBytes":3644,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-25T18:00:48.716554Z","sha256":"495EA6511C9396238E952972A39221B58CDC3789C45DFAAB129A5E084A9B61A4","sizeBytes":6150},"review":null,"source":{"repositoryUrl":"https://github.com/domengabrovsek/agent-config","path":"skills/sentry-issue","license":null,"commit":"48da5d0d32862b807bb1a6ad9e34824b61036e89","subtreeSha":"4354F6397930E03BF86A1E3BA44AED463638CDA485F5549CF8CDC4B75DA6C9B7","lastSyncedAt":"2026-09-25T17:59:56.400643Z"},"reviewedAt":"2026-09-25T18:20:04.230864Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/domengabrovsek/agent-config/tree/main/skills/sentry-issue"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install domengabrovsek-claude@llmmart"},{"target":"git","command":"git clone https://github.com/domengabrovsek/agent-config.git"}]}