ワンクリックで
status
Show a dashboard of all open PRs with review state, unresolved findings, and blockers.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Show a dashboard of all open PRs with review state, unresolved findings, and blockers.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Generate a PM handoff prompt for context-window turnover. Captures static config, live GitHub state, in-flight thread state, and memory summary into a self-contained prompt for a fresh PM thread. Bootstraps `.claude/pm-config.md` on first run. Triggers on "pm-handoff", "handoff", "context turnover", "new pm thread", "thread turnover".
Scan open issues for staleness and suggest closures. Detects issues solved by merged PRs, no-activity issues (30+ days), superseded issues, and potential duplicates of already-closed issues. Presents recommendations for user confirmation — never auto-closes. Triggers on "pm-clean", "stale issues", "clean backlog", "close stale".
Active PM orchestrator — manages issue pipeline, tracks coding threads, ranks the open backlog (OKR-aware) against a business goal, and suggests next work. Cold-starts from GitHub state or resumes from a /pm-handoff prompt. Triggers on "pm", "project manager", "orchestrate", "what should I work on", "rank issues".
Re-scan the current repo and update `.claude/pm-config.md` with fresh infrastructure and architecture detection while preserving user-edited sections (Role, OKRs, Team, Notes, Dependency Rules, Workflow Rules), then run a stale-cleanup pass to prune long-abandoned worktrees and branches. Use this after major milestones, new service integrations, or significant directory restructuring. Triggers on "pm update", "update pm config", "refresh pm config", "rescan repo".
Capture-only thread mode for drafting and opening well-structured GitHub issues. Puts the thread into issue-capture mode — the only job is creating, editing, and closing issues (no implementation, no worktrees, no /start-issue). Always reflects before writing (1–3 scope/clarifying questions), creates canonical 6-section bodies with functional-first tone, runs dedup search, suggests labels, supports batch + cross-references, and prints the issue URL as the closing line of every create/update. Supports /update <N> <statement>, natural-language edit-in-place, and retract. Invoke as `/issue-maker [rapid-fire] [--export-prompt]`.
Manage the OKRs section of `.claude/pm-config.md`. Show current objectives, set new ones, or get AI-suggested updates based on recent work. OKRs drive `/pm` ranking. Use this whenever you want to view, set, or update project OKRs, objectives, key results, or goals. Triggers on "pm okr", "set okrs", "show okrs", "suggest okrs", "project goals", "objectives".
| name | status |
| description | Show a dashboard of all open PRs with review state, unresolved findings, and blockers. |
| triggers | ["show PRs","PR dashboard","what's open","review status"] |
| model | sonnet |
| allowed-tools | ["Read","Glob","Grep","Bash","WebFetch","WebSearch"] |
Build a status dashboard of all open PRs in this repo.
gh pr list --state open --json number,title,headRefName,updatedAt,author,additions,deletions --limit 50
If no open PRs, say "No open PRs." and stop.
pr-state.sh first (NON-NEGOTIABLE): Before calling
gh api .../pulls/{N}/reviews,pulls/{N}/comments, orissues/{N}/commentsdirectly, callpr-state.sh --pr Nfirst and read the cached JSON bundle. All review-state queries in this skill read from the$STATEbundle — do not add inlinegh apicalls to these three endpoints.
For each open PR, run the shared PR-state helper once per PR. One invocation returns reviews, inline comments, issue comments, unresolved threads, check-runs, and bot status rollups — all derived from the same HEAD SHA:
STATE=$(.claude/scripts/pr-state.sh --pr "$N")
All subsequent queries read from $STATE:
# Last review from CR, BugBot, or Greptile (state: APPROVED / COMMENTED / CHANGES_REQUESTED)
jq '[.comments.reviews[]
| select(.user.login == "coderabbitai[bot]" or .user.login == "cursor[bot]" or .user.login == "greptile-apps[bot]")
| {user: .user.login, state, submitted: .submitted_at}]
| sort_by(.submitted) | if length == 0 then {} else last end' "$STATE"
# Unresolved thread count
jq '.threads.unresolved_count' "$STATE"
# CR/BugBot/Greptile issue-comment count (summaries, acks, PR-level findings)
jq '[.comments.conversation[]
| select(.user.login == "coderabbitai[bot]" or .user.login == "cursor[bot]" or .user.login == "greptile-apps[bot]")]
| length' "$STATE"
# CodeRabbit check-run status (also serves as rate-limit signal via title).
# Falls back to the commit-status rollup for repos that report CR via the legacy statuses API.
CR_CHECK=$(jq '.check_runs.all[] | select(.name == "CodeRabbit") | {status, conclusion, title}' "$STATE")
if [ -z "$CR_CHECK" ] || [ "$CR_CHECK" = "null" ]; then
jq '.bot_statuses.CodeRabbit' "$STATE" # legacy commit-status path
else
echo "$CR_CHECK"
fi
# BugBot (Cursor) check-run — included so PRs on the BugBot path show review status
jq '.check_runs.all[] | select(.name == "Cursor Bugbot") | {name, status, conclusion}' "$STATE"
For a structured merge-readiness call per PR, run the shared merge-gate verifier:
.claude/scripts/merge-gate.sh "$PR_NUM"
Exit 0 → Clean (merge-ready). Exit 1 → parse .missing[] to classify: entries about findings/threads = Has findings, entries about CI incomplete or review not yet posted = Review pending, entries about rate limits = Rate-limited. Exit 3 → PR not found. Exit 2/4 → script/gh error.
The JSON also surfaces .reviewer, .head_sha, .ci_status, .merge_state, and .mergeable — use these to populate the dashboard columns without re-querying.
Classifications to present in the table:
0.mergeStateStatus is UNKNOWN (GitHub still computing mergeability).merge_state == "BEHIND" or missing mentions BEHIND — show Rebase (invoke /fixpr); do not conflate with generic BLOCKED.missing.Always run .claude/scripts/cr-review-hourly.sh --check from the repo root (same HOME as the agent). Parse JSON on stdout and put CR quota: <reviews_used>/<budget> (or CR quota: exhausted) in the footer every time, even when ~/.claude/session-state.json does not exist yet (--check then reports 0 used).
If session-state.json exists, also cross-reference:
Output a table like:
PR | Title | Reviewer | State | Findings | HEAD SHA | Updated
------|--------------------------------|----------|----------------|----------|----------|--------
#40 | Add slash commands | CR | Review pending | 0 | 517690c | 2 min ago
#38 | Fix auth middleware | Greptile | Has findings | 3 | d0e4fef | 15 min ago
#35 | Add post-merge hook | CR | Clean | 0 | 7b2cfbf | 1 hr ago
Below the table, add:
cr-review-hourly.sh --check — CR quota: N/M or exhausted (deterministic; do not gate on session-state.json existing)