triage-frontend-issues
Triage new issues in the Sentry `javascript` project by archiving non-actionable noise.
Skill by getsentryOfficial
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/getsentry-triage-frontend-issues
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, incident-response, project-management
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/triage-frontend-issues
Tools it pre-approves 4
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Readmcp__sentry__search_issuesmcp__sentry__get_sentry_resourcemcp__sentry__update_issue
What's inside
- Skill 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`.
- License
- Apache-2.0
- Allowed tools
- Read, mcp__sentry__search_issues, mcp__sentry__get_sentry_resource, mcp__sentry__update_issue
- Instructions
- 148 lines in SKILL.md · view on GitHub
Files (3)
- SKILL.md
- SPEC.md
- archive-criteria.md · references/
SKILL.md (first lines)
# 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: MFrom getsentry/skills, Apache-2.0.
More from getsentry/skills
- 0.827score
skill-scanner
getsentryOfficial
Scan agent skills for security issues.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
django-access-review
getsentryOfficial
Django access control and IDOR security review.
SkillAFreshness: A★ 1.1KClaude Code - 0.827score
gha-security-review
getsentryOfficial
GitHub Actions security review for workflow exploitation vulnerabilities.
SkillAFreshness: A★ 1.1KClaude Code - 0.827score
secret-serialization
getsentryOfficial
Finds secrets, tokens, passwords, and API keys that can leak through generated serialization: Python dataclass repr and asdict, attrs, pydantic model_dump…
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
security-review
getsentryOfficial
Security code review for vulnerabilities.
SkillAFreshness: A★ 1.1KClaude Code - 0.827score
security-model
getsentryOfficial
Define, review, or update SECURITY_MODEL.md files that tell security review tools a repository's threat model, trust boundaries, invariants, reportable…
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.821score
django-perf-review
getsentryOfficial
Django performance code review.
SkillAFreshness: A★ 1.1KClaude Code - 0.818score
pr-screenshots
getsentryOfficial
Capture screenshots of the Sentry UI in a web browser, lay them out in a pull request description as before/after tables, and upload them with `gh --attach`.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.817score
claude-settings-audit
getsentryOfficial
Analyze a repository to generate recommended Claude Code settings.json permissions.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.777score
iterate-pr
getsentryOfficial
Iterate on a PR until actionable CI passes and high/medium review feedback is addressed.
SkillBFreshness: B★ 1.1KClaude Code +9 - 0.724score
prompt-optimizer
getsentryOfficial
Creates, optimizes, and iteratively refines agent prompts, system prompts, developer prompts, and reusable prompt templates.
SkillCFreshness: C★ 1.1KClaude Code +9 - 0.724score
gh-review-requests
getsentryOfficial
Fetch unread GitHub notifications for open PRs where review is requested from a specified team or opened by a team member.
SkillCFreshness: C★ 1.1KClaude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 1,083
- Forks
- 60
- Open issues
- 7
- Last commit (this folder)
- Sep 28, 2026 (29 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/getsentry/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from getsentry
- 0.827score
gha-security-review
getsentryOfficial
GitHub Actions security review for workflow exploitation vulnerabilities.
SkillAFreshness: A★ 1.1KClaude Code - 0.827score
secret-serialization
getsentryOfficial
Finds secrets, tokens, passwords, and API keys that can leak through generated serialization: Python dataclass repr and asdict, attrs, pydantic model_dump…
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
security-model
getsentryOfficial
Define, review, or update SECURITY_MODEL.md files that tell security review tools a repository's threat model, trust boundaries, invariants, reportable…
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
security-review
getsentryOfficial
Security code review for vulnerabilities.
SkillAFreshness: A★ 1.1KClaude Code - 0.827score
skill-scanner
getsentryOfficial
Scan agent skills for security issues.
SkillAFreshness: A★ 1.1KClaude Code +9 - 0.827score
django-access-review
getsentryOfficial
Django access control and IDOR security review.
SkillAFreshness: A★ 1.1KClaude Code
Cite this page
triage-frontend-issues skill. Agent Mart. https://agentmart.dev/skills/getsentry-triage-frontend-issues (last updated 2026-10-24)