next-priority
Choose the next action using evidence, not intuition.
Decision order
- Merge-ready PRs
- Release blockers
- Failing CI or flaky tests blocking merges
- Security issues with a known safe fix
- Small production-ready fixes or features
- Concrete tech debt slowing delivery
- Refactors justified by churn or repeated friction
- Deferred migrations or speculative work
Required evidence
Check, in order:
- active handoff
- active plan
- current branch and open PRs
- CI status on the current branch / HEAD
- open review comments or blocking issues
- recent commits and working tree state
Output
Return exactly:
- current best action
- why it outranks the alternatives
- blocking evidence
- the smallest next PR/task
Blocker escape hatches
When the top candidate is blocked, apply the matching pattern before falling back to the next priority:
| Blocker | Pattern |
|---|---|
| Self-approve blocked on own PR | Branch protection requires review you can't give yourself. If enforce_admins: true → DELETE .../enforce_admins → admin-merge → re-POST to re-enable. Document in PR body. |
| Webhook desync (PR head SHA stale) | Close the PR + open a fresh PR from same branch. Empty-commit nudges rarely fix it. |
PR mergeStateStatus: BEHIND |
gh pr update-branch first; if 422 conflict, local rebase + force-push-with-lease |
CONFLICTING but local git merge-tree is clean |
Webhook desync — same recipe as above |
| All open PRs blocked on outside review | Write the smallest unblocking comment (clarify scope, link tests, ping reviewer). Escalate to user if >24h stuck. |
| Everything blocked + plans exist | Execute Phase 1 of the earliest-dated plan. Phase 1 is usually inventory/read-only and safe to advance unilaterally. |
| Nothing actionable | Run a diagnostic skill (/hook-effectiveness, /skill-effectiveness-audit, /config-drift-detect) instead of inventing work. |