ops-backlog-health/SKILL.md
Use when the user wants a periodic health pass over the backlog — close stale blockers, surface drifted-priority items, flag long-running in-progress issues, and unblock issues whose blockers were closed. Designed to run on a schedule (e.g. weekly) alongside /ops-triage. Trigger phrases - "/ops-backlog-health", "backlog health pass", "scrub the backlog".
npx skillsauth add paulund/skills ops-backlog-healthInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Periodic, non-interactive scrub of the backlog. Surfaces drift, closes resolved blockers, and reports a one-screen summary. Does NOT triage individual issues — that's /ops-triage.
For every open issue with the blocked label:
## Blocked by #N references.gh issue view <N> --json state for each blocker.blocked label and post a comment:gh issue comment <N> --body "$(cat <<'EOF'
> *Backlog health pass: blockers resolved.*
All referenced blockers are closed. Removing `blocked` label.
EOF
)"
gh issue edit <N> --remove-label blocked
If only some are closed, leave the label and surface the partial-progress in the report.
gh issue list --label "in-progress" --state open --json number,title,updatedAt,assignees
For each: if updatedAt is older than 14 days and there's no associated open PR (gh pr list --search "in:body #<N>" returns empty), flag it as a drift candidate. Don't auto-action — surface in the report.
gh issue list --label "planned" --state open --json number,title,createdAt,labels
For each: if createdAt is older than 60 days and the issue is afk, surface it. The reporter or backlog-owner needs to decide if it still makes sense.
For issues with p1 older than 7 days, surface them — p1 items should not linger.
Post a single GitHub Discussion or pinned issue comment summarising the pass:
## Backlog Health — <ISO date>
**Closed-blockers unblocked:** <count> (#N1, #N2, …)
**Drift candidates (in-progress >14d, no PR):**
- #<N>: <title> — last updated <date>
**Stale planned (>60d, afk):**
- #<N>: <title>
**p1 lingering (>7d):**
- #<N>: <title>
If no items in any bucket, post a one-line "Backlog clean — no findings" message.
blocked removal in Pass 1.> *This was generated by AI during a backlog health pass.*) on any GitHub-visible output./ops-triage.development
Use when implementing any logic, fixing any bug, or changing any behaviour. Use when you need to prove code works, when a bug report arrives, or when modifying existing functionality. Do NOT use for config changes, data migrations, or dependency updates.
development
Use when starting a new feature, when requirements are unclear, when asked to write code without a clear spec, or before any non-trivial implementation. Do NOT use for trivial bug fixes or one-line changes.
development
Use when you want authoritative, source-cited code free from outdated patterns. Use when building with any framework or library where correctness matters. Detects the stack from dependency files, fetches official documentation, implements following documented patterns, and cites sources for every framework-specific decision.
development
Use when preparing to ship a feature, release, or deployment. Use before merging to main, creating a release, or deploying to production. Do NOT use for CI-only changes or internal refactors that don't reach production.