Triage Issues

SkillProductivity

Use when asked to triage, assess, or categorize GitHub issues or Linear tickets

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Triage Issues skill

What this skill tells your AI

The instructions your AI receives, as published by storyblok/monoblok in .agents/skills/triage/SKILL.md and read by ahel’s review.

Triage the following tickets: $ARGUMENTS

Context: Open issues

!gh issue list --repo storyblok/monoblok --state open --limit 30 --json number,title,labels 2>/dev/null || echo "Could not fetch open issues"

Instructions

Read the ticket thoroughly, but do not dig into code. The goal is to classify, prioritize, and decide the next action.

Step 1: Parse ticket references

  • Anything matching DX-\d+ or a linear.app URL → Linear
  • Anything matching #\d+, a bare number, or a github.com URL → GitHub
  • linear:triage → fetch all Linear issues in Triage state (DX team)

Step 2: Fetch tickets

GitHub issues:

gh issue view <number> --repo storyblok/monoblok --json title,body,labels,state,comments,author,createdAt

Linear:

bash .agents/skills/triage/scripts/linear-fetch.sh issue DX-123 DX-456
bash .agents/skills/triage/scripts/linear-fetch.sh triage

Step 3: Assess each ticket

3a. Type classification
TypeDescription
bugSomething is broken — wrong behavior, crash, regression
featureNew capability that doesn't exist today
improvementEnhancement to existing functionality (DX, performance, API ergonomics)
documentationMissing, incorrect, or outdated docs
questionUser asking for help, not reporting a problem

Verify the reporter's classification if present — reporters often mislabel improvements as bugs or features as improvements. State whether confirmed or corrected.

3b. Reproducibility

Rate as: reproducible · likely-reproducible · needs-reproduction · not-applicable

For needs-reproduction, list exactly what's missing (version, browser, minimal repro, error output, etc.).

3c. Priority assessment

Score each ticket on these dimensions, then derive an overall priority.

Impact:

  • blocker: Prevents core functionality, no workaround
  • critical: Major functionality broken, workaround exists
  • degraded: Works but with noticeable problems
  • minor: Cosmetic, edge case, or negligible effect

Breadth:

  • widespread: Affects most/all users of the package
  • common: Common scenario
  • uncommon: Specific configuration or setup
  • edge-case: Rare conditions or unusual usage

Urgency:

  • regression: Worked before, broke recently
  • new-defect: Never worked, newly discovered
  • longstanding: Has been this way for a while

Overall priority:

PriorityCriteria
P0 — CriticalBlocker + widespread/common
P1 — HighCritical + common, or blocker + uncommon
P2 — MediumDegraded + common, or critical + edge-case
P3 — LowMinor impact, edge-case, or longstanding with easy workaround
3d. Verdict
VerdictWhen to use
actionableEnough info to proceed
needs-infoCannot proceed without more information from the reporter
duplicateAlready tracked elsewhere — link to the original
not-a-bugWorking as intended, user error, or environment issue
wont-fixValid but out of scope or conflicts with design direction
3e. Duplicate search

Search for duplicates on every ticket:

  • GitHub: gh issue list --repo storyblok/monoblok --search "<keywords>" --state open --limit 10 --json number,title,labels
  • Linear: check relations field from the fetch response

If exact duplicate → mark as duplicate with link to original. If related but different → note the connection.

Step 4: Present results

Summary table
## Triage Summary

| Ticket | Title | Type        | Priority | Verdict    | Package |
| ------ | ----- | ----------- | -------- | ---------- | ------- |
| #368   | ...   | bug         | P1       | actionable | cli     |
| DX-123 | ...   | improvement | P2       | actionable | vue     |
Detailed assessment (one per ticket)
### <ticket-id>: <title>

**Source:** GitHub / Linear **Type:** <type> (correct reporter's classification if needed)
**Reproducibility:** <assessment> **Priority:** <P0-P3> — <label>

- Impact: <level> (<reason>)
- Breadth: <level> (<reason>)
- Urgency: <level> (<reason>)
- Related: <linked tickets if any> **Package:** <package> **Verdict:** <verdict>

**Summary:** <2-3 sentences>

**Suggested next step:** <what to do next>

For needs-info tickets, include a draft reply asking for the missing information.

Output

Write results to claude-output/triage-<identifier>.md (e.g. triage-424.md, triage-box-03-20.md) and present the summary table directly to the user.

Rules

  • Read-only. Never create, update, comment on, or close issues on GitHub or Linear.
  • Always write a report. Every triage run must produce a claude-output/triage-<identifier>.md file.
  • No code analysis. Use /investigate for deep dives.
  • When unsure, lean toward bug and higher priority — better to investigate than dismiss.
  • For Linear triage box: process all tickets, sort output by priority (P0 first).

Signals

GitHub stars
65
Forks
44
Last commit
Sep 2026
Hacker News mentions
20
Advanced
Catalog kind
skill
Gateway key
triage-storyblok
Source
github.com/storyblok/monoblok
Triage Issues by storyblok: Skill · ahel