Install any skill in seconds. Free to start, no credit card required.
Get Started Free →lifinance/check-open-prs
Personal PR inbox for LI.FI engineers — outgoing PRs (yours) and incoming review queue (others'). One dry-run dashboard sourced from a deterministic script, with Slack thread cross-referencing only where the ball-in-whose-court question is open.
Passed 8 of 16 test cases with the skill, and 7 of 16 without it.
and 4 more in the full report
7 fixed5 passed either way6 still failing5 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 7 test cases the skill fixed. Same model, same prompt, with and without the skill.
When checking re-review diff for PR #204, myReview.sha is null because the branch history was rebased. Which command should be used to retrieve the diff?
| Checked | Without skill | With skill |
|---|---|---|
| Falls back to running full gh pr diff without --commit-range. | Missed | Passed |
The instructions your model reads when the skill loads.
Usage:
/check-open-prs
All mechanical data collection lives in a deterministic script — never loop gh pr view / gh api / Slack calls per PR yourself. The model's job is only the judgment layer on top: Slack thread state for ambiguous PRs, what needs the user's attention, and suggested next actions.
The script is also directly usable from a terminal for zero tokens:
bunx tsx script/utils/check-open-prs.ts # human-readable dashboard
bunx tsx script/utils/check-open-prs.ts --json # compact JSON (what this skill consumes)
bunx tsx script/utils/check-open-prs.ts --quick # own PRs only, skips incoming queue
GitHub scope is env-overridable (LI.FI defaults baked in), so the script is org-agnostic without code edits:
PR_DASH_ORGS — comma list of owners to search for your own PRs (default lifinance,lifinance-tron).PR_DASH_INCOMING_REPOS — comma list of owner/repo whose PRs form your review queue (default lifinance/contracts,lifinance/contracts-tron).bunx tsx script/utils/check-open-prs.ts --json
(Add --quick for quick mode.) The script returns, per PR: repo/number/title/url, kind (own/incoming), bucket, draft, CI rollup + failing checks tagged review/audit vs restartable vs core-dev-gate, conflicts, reviewDecision, mergeStateStatus, last commit, last non-author human comment, my last review (myReview: {state, at, sha} — sha is the commit my review was submitted against, used by Phase 2D), and slackCheck: true where Slack thread state is needed to finish classification. Archived-repo PRs and stale incoming PRs are already excluded (listed under excluded).
Refresh mode ("refresh the dashboard"): just re-run the script — it's cheap. Never re-render from data fetched earlier in the conversation; a PR may have been replied to, merged, or re-pinged since. Stamp every dashboard with the script's asOf (convert to +07).
The script assigns each PR exactly one native bucket (the bucket field). Rows flagged slackCheck: true are provisional until Phase 1.5 resolves them into the display sections rendered in Phase 1.6; every other bucket maps 1:1 to its section with no enrichment. If Phase 1.5 is skipped, a slackCheck PR renders under its raw native bucket name.
| Script native bucket | Needs Phase 1.5 (Slack)? | Phase 1.6 display section |
|---|---|---|
WAITING-ON-TEAM | yes — 48h cooldown split | 🔔 REMIND-DUE (≥48h) / ⏳ REMIND-RECENTLY-PINGED (<48h) |
WAITING-ON-ME | yes — confirm ball-in-court | 👀 YOUR-ACTION |
CI-RED | no | 🔴 CI-RED |
CONFLICTS | no | ⚔️ CONFLICTS |
APPROVED-BLOCKED | no | 🚧 APPROVED-BLOCKED |
test cases passed, vs 7 / 16 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.