Agent Native

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 publisherNot reviewed

Identity proven by GitHub's verified organisation badge (getsentry)

Agents
Claude Code
License
Apache-2.0 (permissive)
Pin
d18b7aapinned Oct 9, 2026
Context cost
about 1,900 tokenswhen the skill loads
GitHub stars
1,041on getsentry/skills
Scripts
None found

What it does

“Triage new issues in the Sentry `javascript` project by archiving non-actionable noise. Use when asked to "triage issues", "triage the javascript project", "archive non-actionable issues", "triage new frontend issues", or "clean up the sentry/javascript queue". Operates only on the sentry/javascript project, only archives (never resolves), and always archives with `untilEscalating`.”
The author's description, from SKILL.md

Generated summary from the skill's own text

This skill automatically archives non-actionable issues from the Sentry JavaScript project by classifying them against defined noise categories and applying the ignored status with untilEscalating mode. It operates only on the sentry/javascript project, never resolves or mutates other fields, and requires explicit user approval before archiving any issues.

When to use it

  • Cleaning up high-volume third-party or browser API noise from frontend issue queue
  • Triaging unresolved frontend issues to focus on actionable bugs in your code
  • Removing customer-environment or test-related noise from Sentry JavaScript project
  • Processing issues older than 30 days with no recurrence

When not to

  • Archiving issues with non-escalating modes like forever or forDuration
  • Working with Sentry projects other than sentry/javascript
  • Handling issues that might be real bugs in your own application code

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add getsentry/skills --skill triage-frontend-issues

Installs 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/skills triage-frontend-issues@d18b7aa8ba878354e5c348310230e652f7690f9c

Installs the commit we checked (d18b7aa).

Copy by hand

Download the folder at d18b7aa and put it in .claude/skills/triage-frontend-issues for Claude Code and in .agents/skills/triage-frontend-issues for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at d18b7aa

Claude Code plugin

/plugin install sentry@claude-plugins-official

The 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-official

The 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 "triage-frontend-issues" by Sentry.

Source, pinned to commit d18b7aa8ba878354e5c348310230e652f7690f9c:
https://github.com/getsentry/skills/tree/d18b7aa8ba878354e5c348310230e652f7690f9c/skills/triage-frontend-issues

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/triage-frontend-issues/ for Claude Code and .agents/skills/triage-frontend-issues/ 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/triage-frontend-issues

SKILL.md at the pin

---
name: triage-frontend-issues
description: Triage new issues in the Sentry `javascript` project by archiving non-actionable noise. Use when asked to "triage issues", "triage the javascript project", "archive non-actionable issues", "triage new frontend issues", or "clean up the sentry/javascript queue". Operates only on the sentry/javascript project, only archives (never resolves), and always archives with `untilEscalating`.
allowed-tools: Read mcp__sentry__search_issues mcp__sentry__get_sentry_resource mcp__sentry__update_issue
---

# Triage Frontend Issues

Archive non-actionable noise from the `sentry/javascript` issue queue: only archive, always `untilEscalating`, always with a stated reason. Issues that look actionable in our code, or that you cannot confidently classify, must be skipped.

## Hard Rules

These rules override anything else. Do not relax them.

1. **Project scope.** Only operate on `organizationSlug=sentry`, project slug `javascript`. If asked to triage a different project, stop and ask the user to confirm.
2. **Archive only.** The only status mutation permitted is `status=ignored`. Never resolve, never unresolve, never assign, never delete, never bulk-update fields other than status.
3. **Always `untilEscalating`.** Use `ignoreMode=untilEscalating`. Never use `forever`, `forDuration`, `untilOccurrenceCount`, or `untilUserCount`. If the user asks for a different mode, stop and have them archive that issue manually — this skill does not perform non-escalating archives.
4. **Always include a `reason`.** The `reason` must be a short, factual sentence naming the category from `references/archive-criteria.md` (e.g., "Third-party library noise — echarts internals; not actionable in our code").
5. **Never touch issues outside the unresolved queue.** Skip anything with `status` of `resolved`, `ignored`, or `reprocessing`.
6. **Never archive without confirmation.** Build a full plan, show it to the user, wait for explicit approval before calling `update_issue`. A single approval covers the displayed plan only; new batches need new approval.
7. **When in doubt, skip.** If an issue could plausibly be a real bug in our code, do not archive it. Surface it as `needs-human` in the plan with a one-line note.

## Prerequisites

- Sentry MCP authenticated via `mcp.sentry.dev`. Required tools: `search_issues`, `get_sentry_resource`, `update_issue`.
- If `update_issue` is not available, stop and ask the user to authenticate the Sentry MCP server.

## Inputs

`$ARGUMENTS` is one of:

| Input shape | Meaning |
|-------------|---------|
| Sentry issue URL (`https://sentry.sentry.io/issues/JAVASCRIPT-…`) | Triage that single issue. |
| Issue short ID (`JAVASCRIPT-…`) | Triage that single issue. |
| Sentry issue query (contains a colon, e.g. `is:unresolved firstSeen:-24h`) | Use as the search query. |
| Empty | Use the default triage queue: `is:unresolved is:unassigned firstSeen:-7d`, sort `new`, limit `50`. |

If `$ARGUMENTS` is ambiguous, ask the user to clarify before searching.

## Workflow

### 1. Load the queue

For single-issue input:
- Call `get_sentry_resource(url=<issue-url>)` or `get_sentry_resource(resourceType='issue', organizationSlug='sentry', resourceId=<shortId>)`.
- Confirm `Project` is the javascript frontend project. If not, stop.

For query/default input:
- Call `search_issues(organizationSlug='sentry', projectSlugOrId='javascript', query=<query>, sort='new', limit=50)`.
- Then call `get_sentry_resource` for each result in parallel to get culprit, substatus, assignee, and stack-frame hints (the search response omits some fields).

Skip immediately if any of these are true on an issue:

- `status` is not `unresolved` (already archived, resolved, or in reprocessing).
- `assignedTo` is set to a human (someone is already owning it).
- `assignedTo` is set to a team other than `frontend`/`issues` and the issue looks team-specific (let the owning team triage).

### 2. Classify each issue

Read `references/archive-criteria.md` for the category taxonomy with recognition heuristics and examples. For each candidate issue, produce one of:

| Decision | Meaning |
|----------|---------|
| `archive` | Matches a documented category; include the category name in the reason. |
| `skip` | Could be a real bug in our code, or insufficient evidence; do not archive. |
| `needs-human` | Looks like noise but doesn't cleanly fit a category, or volume is unusually high; flag for user review. |

When evaluating, weight these signals (in this order):

1. **Top non-Sentry-SDK frame.** If the top in-app frame is in `node_modules/`, `chrome-extension://`, a third-party host, or `<unknown>`, this is a strong archive signal.
2. **Title pattern.** Many archives are recognizable from the title alone (see criteria reference).
3. **Volume is not a veto.** Some high-volume issues (10k+ events, thousands of users) are still archive-worthy if the top frame is third-party. Volume alone never forces archive either.
4. **Recency.** Single-event issues older than 30 days with no recurrence are usually noise.
5. **Customer org spread.** If events come from one customer subdomain only (check `customerDomain.subdomain` tag), it is likely customer-environment noise.

### 3. Build the plan

Output one Markdown table to the user, in this exact shape:

```
## Triage plan — sentry/javascript (<N> candidates)

| # | Issue | Title | Volume | Decision | Category | Reason |
|---|-------|-------|--------|----------|----------|--------|
| 1 | [JAVASCRIPT-XXXX](url) | TypeError: ... | 12e/3u | archive | browser-api-noise | Browser clipboard permission denied; not actionable. |
| 2 | [JAVASCRIPT-YYYY](url) | <unknown> | 4945e/123u | needs-human | — | High volume, no title — please review before archiving. |
| 3 | [JAVASCRIPT-ZZZZ](url) | ZodError: ... | 360e/132u | skip | — | Schema validation failure in our code; looks actionable. |
```

Then summarize counts: `N archive / M skip / K needs-human`. End with:

```
Reply `apply` to archive the N issues marked `archive`, `apply N,M,...` to archive a subset, or `cancel` to take no action.
```

### 4. Apply on approval

When the user replies `apply` (or `apply <subset>`):

For each issue in the approved set, call:

```
update_issue(
  organizationSlug='sentry',
  issueId=<shortId>,
  status='ignored',
  ignoreMode='untilEscalating',
  reason=<category-tagged reason from the plan>,
)
```

Run these sequentially (not in parallel). If a call fails, log the failure, continue with the remaining issues, and report the failed IDs in step 5.

If the user replies `cancel` or asks to modify the plan, do NOT call `update_issue`. If they reply with edits ("change row 2 to skip"), rebuild the plan and re-confirm.

### 5. Report

After applying, output:

```
## Triage report

- Archived: N
- Skipped: M
- Needs human review: K
- Failures: F (with issue IDs)

<details><summary>Archived issues</summary>

- JAVASCRIPT-XXXX — <reason>
- ...

</details>
```

## Recovery

- If `update_issue` fails on one item, log the failure and continue with the rest. Report failed IDs at the end.
- If the user notices a wrong archive, the user can unarchive it themselves in Sentry. The skill never reverses its own actions automatically.
- If the user asks "redo the plan with these tweaks" mid-flow, regenerate the plan from scratch — do not assume the previous plan still applies.

## Example reasons (use this voice)

- `Third-party library noise — echarts tooltip; not actionable in our code.`
- `Browser API permission noise — Clipboard writeText denied by user agent.`
- `Customer-environment proxy interference — 200 response treated as error (HTML body from corporate proxy).`
- `Transient backend 5xx — InternalServerError on /api/0/organizations/.../events-meta/; backend transient.`
- `Test/synthetic event — smoke test or security probe, not production traffic.`
- `Wrong project — Prisma/Python error mis-routed to frontend project.`
- `Single-event fluke — 1 event, 1 user, no recurrence in 30+ days.`
- `Browser extension noise — ReferenceError for extension-injected global (DarkReader/WeixinJSBridge).`

From getsentry/skills at d18b7aa, shown as plain text under its license: Apache-2.0 (permissive). The license text is in LICENSE.

View SKILL.md on GitHub at d18b7aa

Files

3 files, 22 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at d18b7aa
All 50 skills from Sentry

More 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

All Observability skills
  • 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

  • sentry-cocoa-sdk

    Sets up comprehensive monitoring for iOS, macOS, tvOS, watchOS, and visionOS apps using the Sentry Cocoa SDK.

    by SentryOfficial publisher

    Claude Code · about 5.3K tokens · pinned 6 days ago

  • sentry-create-alert

    This skill creates alerts in Sentry using the workflow engine API.

    by SentryOfficial publisher

    Claude Code, Codex, Cursor +4 · about 1.8K tokens · pinned 6 days ago

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use