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.testing
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
development
TypeScript project conventions. Auto-load when editing *.ts or *.tsx files.
development
Use when writing or fixing PHP code, implementing classes, traits, or interfaces, applying PSR standards, or working with PHP 8.3+ patterns like readonly properties, enums, named arguments, match expressions, and union types.
tools
Next.js 15 App Router project conventions. Auto-load when working in app/, src/app/, components/, server actions, or route handlers.