Skip to content
Productivity
Command

/triage-issues

Fetch recent GitHub issues from nimbalyst/nimbalyst and triage them by importance, duplicates, and already-fixed status — then optionally spawn /investigate sessions for the critical ones

From plugin
nimbalyst
2.1k54 skills3 agents54 commands3 MCP
> /plugin marketplace add nimbalyst/nimbalyst
> /plugin install nimbalyst-wiki@nimbalyst

Command definition

triage-issues.md
name: triage-issues
description: Fetch recent GitHub issues from nimbalyst/nimbalyst and triage them by importance, duplicates, and already-fixed status — then optionally spawn /investigate sessions for the critical ones

Triage Recent GitHub Issues

Pull the most recent GitHub issues from `nimbalyst/nimbalyst` and help me decide: 1. Is it a **bug** or a **feature**, and does it have the right **type** (not label — GitHub issue type)? 2. Is it a **duplicate** of an existing issue or tracker bug? 3. Has it **already been fixed** (recent PR / recent session)? 4. How urgent is it — **fix-now / fix-soon / fix-later / needs-info / not-a-bug**? 5. For the critical ones, let me pick a subset and spawn isolated Nimbalyst sessions that run `/investigate` against each.

**I do not care about labels.** Do not propose `area:*`, `status:needs-triage`, `status:accepted`, or any other label edits. If a label is obviously wrong and blocking triage clarity, mention it once — but don't make label management part of the action plan.

Usage

Arguments: `<time-period>` (optional, default `1d`)

  • `1d` = last 24 hours
  • `2d`, `3d`, `1w`, etc.

Steps

1. Fetch recent issues

Convert the time period to an ISO date and query GitHub. Open issues only.

SINCE=$(date -v-1d -u +"%Y-%m-%dT%H:%M:%SZ")   # adjust -1d per argument

gh issue list \
  --repo nimbalyst/nimbalyst \
  --state open \
  --limit 100 \
  --search "created:>=${SINCE}" \
  --json number,title,url,author,createdAt,labels,body,comments,issueType

Sort newest-first. If zero results, say so and stop.

2. Gather context for dedupe and already-fixed detection

Pull three sources in parallel:

**(a) Local bug backlog** — for internal awareness only:

tracker_list({ type: "bug", limit: 200 })

The tracker is **private**. Use it to recognize that an issue is already known internally (and to inform severity/bucket), but **never** mark a public GitHub issue as a duplicate of a `NIM-#` tracker item — the reporter can't see it. A tracker match means the bucket is `fix-soon`/`fix-now` with a note that it's tracked internally, not `duplicate`. Only another **open public GitHub issue** is a valid duplicate target.

**(b) Recent AI sessions** — for already-investigated work:

mcp__nimbalyst-session-context__list_recent_sessions({ limit: 100 })

Scan session names/tags/summaries for `#NNN` references, matching titles, or matching symptoms. If a session covers it, note that and don't propose new investigation. If a session looks plausibly related but it's not obvious, call `get_session_summary({ sessionId })` for a closer look.

**(c) Open + recently-merged PRs** — for already-fixed / in-flight work:

# Pull recent merged PRs once (last ~2 weeks) and grep locally:
gh pr list --repo nimbalyst/nimbalyst --state merged --limit 50 \
  --json number,title,url,body,mergedAt,headRefName

# And open PRs:
gh pr list --repo nimbalyst/nimbalyst --state open --limit 50 \
  --json number,title,url,body,isDraft,author,headRefName

For each candidate issue, match by `#NNN`, by title keywords, by referenced files in the PR body, and by symptom. If a PR is open/draft, the issue is **in-flight** — don't propose investigation. If a PR is merged, the issue is likely **already-fixed** — propose closing with a pointer to the PR.

3. Classify each issue

For every issue, decide:

  • **Type correction** — what does GitHub's `issueType` currently say, and is it right? A bug filed as a Feature (or vice versa) gets flagged for type correction. The intake template gets this wrong constantly.
  • **Bucket** — one of:
  • `fix-now` — crash, data loss, regression, blocks core flow, broken on common platforms, or trivial-and-cheap
  • `fix-soon` — meaningful bug or papercut, not blocking, fits current focus
  • `fix-later` — nice-to-have, edge case, low-traffic surface
  • `already-fixed` — a merged PR fixes this; just needs closing
  • `in-flight` — an open/draft PR is fixing this; just needs review/landing
  • `needs-info` — repro unclear, missing version/platform, or contradictory
  • `duplicate` — matches **another open public GitHub issue** (never a private `NIM-#` tracker item)
  • `feature-request` — not a bug; route to roadmap
  • `not-a-bug` — out of scope, by-design, or contradicts a prior decision
  • **Severity** — critical / high / medium / low. Use judgment — a low-severity bug can still be `fix-now` if it's a one-line change. A high-severity bug can still be `fix-later` if the area is frozen.
  • **Why** — one short sentence on why this bucket. This is the line I'll read when deciding what to work on.
  • **Linked PR** — if found in step 2, surface it: `PR #MMM (open/draft/merged) "<title>"`.
  • **Linked session** — if found in step 2, surface it: `session "<name>" (sessionId)`.
  • **Duplicate target** — if `duplicate`, name the canonical **public** issue: `duplicates #MMM`. Never close a public issue against a private `NIM-#` tracker item. If the only match is a private tracker item, the issue is **not** a duplicate — bucket it normally and add a `(tracked internally as NIM-XYZ)` note for your own reference only.

4. Output report

Print a single triage report. Group by bucket, newest first within each bucket. Lead each line with the issue number, title, current type, and severity:

## fix-now (N)
- #376 "ScheduleWakeup payload rendered as user message" [type: Bug] — high
    Why: visible transcript corruption, affects every Claude Code session.
    PR: #410 (open) "fix: render ScheduleWakeup as tool call" — review, don't reinvestigate.
    Session: none.

## already-fixed (N)
- #371 "Sync hangs on large tracker bodies" [type: Bug] — high
    Fixed by PR #408 (merged 2026-05-29). Close with pointer.

## in-flight (N)
- #374 "Respect CLAUDE_CODE_AUTO_COMPACT_WINDOW" [type: Feature → should be Bug]
    PR: #412 (draft) — wait for landing. Also: type is wrong, propose correction.

## fix-soon (N)
- #380 "..." [type: Bug
Read more
@nimbalyst
Ships withnimbalyst

Nimbalyst - The open-source visual workspace for Claude Code, Codex, and OpenCode. Run multiple coding agents in parallel, edit their work visually in markdown, mockups, and diagrams, and track tasks. Free, MIT-licensed desktop app for macOS, Windows, Linux, with mobile companion for iOS and Android.

2.1k16 skills3 agents3 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
2.1k
Star history of nimbalyst/nimbalyst on GitHub, a chart by star-history.com

Other commands on nimbalyst.

analyze-sessions

analyze-sessions

Command

Audit recent AI coding sessions to find repeated mistakes, speed losses, and missed Nimbalyst tool usage — then propose harness…

@nimbalyst@nimbalystInstall Command
audit-updates

audit-updates

Command

Triage pnpm audit findings and produce a prioritized, supply-chain-cautious package-update plan, then apply approved batches

@nimbalyst@nimbalystInstall Command
autofix-issues

autofix-issues

Command

Survey recently triaged GitHub issues, propose the ones safe to fix without a product decision, and fan the selected ones out to…

@nimbalyst@nimbalystInstall Command

More commands from other plugins.

analyze-cohorts

analyze-cohorts

Command

Perform cohort analysis on user data — retention curves, feature adoption, and engagement trends

@phuryn@phurynInstall Command
again

again

Command

PUA Again — 用于再试试、换个方法、别放弃、为什么还不行、同一路径失败多次;要求停止微调同一思路,改用本质不同方案。

pua2mo20k
@tanweai@tanweaiInstall Command