Back to Skills

oh-my-issues

Cluster a GitHub issue backlog by root cause into a small set of plan-master issues, redirect children with a standardized comment, and bundle architectural-fix PRs that close clusters atomically. Use when an issue tracker has accumulated dozens of reports that share underlying defects, when asked to triage / consolidate / cluster / dedupe issues, when asked to build a plan series or roadmap from open issues, or when routing a new incoming bug into an existing plan.

86,386stars7,474forksUpdated 7/8/2026

Security Assessment

Safe(100/100)
Security Score100/100

About oh-my-issues

A workflow for turning a sprawling GitHub issue backlog into a compact roadmap by clustering issues around their root causes. Its governing idea is that issues are symptom data, not units of work; the real unit of work is the architectural defect that produces them, and the target end state is a 1:1 relationship where open issues equal open plans. Instead of closing issues one at a time, it groups symptoms that share a single architectural fix into a cluster, gives each cluster one canonical home (a plan-master issue plus a plans/0X-*.md design doc), closes each child with a standardized redirect comment, and ships one PR per cluster that closes all children atomically.

It defines three modes. The cluster pass is the initial reduction: read every open issue's body and full comment thread, cluster by root cause rather than surface, name each cluster as an architectural problem whose title implies a fix, open one master per cluster with a defect description, child list, fix sequence, and a regression-preventing test matrix, mirror each master as a design doc, close every child as not planned, and verify only masters remain. Triage handles a new incoming bug in steady state by pattern-matching it against existing masters and appending a Round N comment rather than opening a new tracked issue. Bundle ships a cluster with one PR that lists every child as Closes #N and adds the plan's test matrix to CI.

Use it when a tracker has accumulated dozens of overlapping reports, or when asked to triage, consolidate, cluster, dedupe, or build a plan series from open issues; it advises against use for fewer than roughly 15 issues or genuinely independent issues. It includes gh CLI primitives for resolving the repo, getting an accurate issue-only open count (since GitHub counts PRs as issues), listing bodies without silent --limit truncation, and fetching per-issue comment threads, plus the exact standardized redirect wording and naming guidance that separates surface titles from architectural ones.

FAQ

What is the core principle behind oh-my-issues?

Issues are symptoms, not units of work; the unit of work is the architectural defect that produces them, so the goal is to reach open issues == open plans, 1:1.

What are the three modes?

Cluster pass (initial backlog reduction into plan-masters), triage (routing a new incoming bug into an existing plan as a Round N comment), and bundle (shipping one PR that closes a cluster's children atomically).

When should I not use this skill?

When there are fewer than about 15 open issues, when issues are genuinely independent with no shared root causes, or when the repo lacks plans/ discipline and the user does not want to introduce it.

How are child issues closed?

With an exact standardized redirect comment pointing to the master issue and plan, and closed as not planned rather than completed, since a child is a symptom, not a unit of work.

Why does the skill warn about gh issue list --limit and comments?

gh issue list --json comments returns only a count, so comments must be fetched per issue; and any explicit --limit silently truncates, so you must confirm the true issue-only count first via the search API.

Install oh-my-issues

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill