Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Team-wide PR dashboard for the DevOps pod, scoped to PRs authored by pod-roster members. Shows open PRs touching DevOps-owned paths and authored by DevOps leads/members, grouped into needs-your-re-review / stale (>3d) / needs-review, with merge-conflict warnings and a separate Excluded section for non-roster authors. Use when checking DevOps pod PR status, asking about stale PRs, or invoking /qv-devops-pr-status.
.claude/skills/tetherto-qv-devops-pr-status/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-21 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 133% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 53% | 0% |
Thin wrapper over the shared pr-skills library, pinned to the DevOps pod and scoped to PRs authored by DevOps roster members (leads ∪ members in .github/teams/devops.json).
The dashboard spans the qvac monorepo (filtered by the pod's ownedPaths) plus every repo declared under extraRepos in .github/teams/devops.json. For extra repos the pod is treated as the sole owner — every open PR there is in-scope regardless of touched paths. The monorepo (tetherto/qvac) is the primary repo and stays path-filtered; it is intentionally NOT listed under extraRepos. Today's extraRepos are an explicit curated list:
tetherto/github-ops, tetherto/oss-actions, tetherto/qvac-actions, tetherto/qvac-devops, tetherto/qvac-testops, tetherto/release-ops, tetherto/data-github-opstetherto/qvac-workbench, tetherto/qvac-internal, tetherto/qvac-test-suite, tetherto/qvac-registry-vcpkg, tetherto/qvac-ext-lib-whisper.cpp, tetherto/qvac-ext-stable-diffusion.cpp, tetherto/qvac-fabric-llm.cpp, tetherto/qvac-ext-ggml, tetherto/qvac-ext-bergamot-translator, tetherto/qvac-ext-marian-devtetherto/qvac-research-tool-call, tetherto/qvac-research-medpsy, tetherto/qvac-research-translations-nmt, tetherto/qvac-research-evaluate, tetherto/qvac-research-synthetic-data-creation, tetherto/qvac-research-model-training, tetherto/qvac-model-tools, tetherto/qvac-rnd-fabric-llm-bitnet, tetherto/qvac-rnd-fabric-llm-finetuneextraRepos entries are plain owner/name strings used as-is. Glob entries (an owner/name whose name segment contains *, e.g. tetherto/qvac-*) are also supported and resolved dynamically per run via gh repo list <owner> --no-archived — add one to the list if you'd rather track every matching repo automatically instead of curating. Any repo the script cannot read is skipped with a one-line warning on stderr.
Use when:
/qv-devops-pr-statusgh CLI installed and authenticated (gh auth status)tetherto/qvac AND every repo declared under extraRepos (any repo the script cannot read is skipped with a one-line warning on stderr)extraRepos maintained at .github/teams/devops.jsonbashDATE="$(date -u +%Y-%m-%d)" node .cursor/skills/_lib/pr-skills/pr-status.mjs --pod devops --mode team --authors pod \ 2> /tmp/devops-pr-status-${DATE}.stderr \ | tee "/tmp/devops-pr-status-${DATE}.txt"
--authors pod restricts the main dashboard to PRs authored by DevOps roster members. PRs that touch DevOps-owned paths (in the monorepo) or live in any extra repo but are authored outside the roster are surfaced in a separate "Excluded" section at the bottom of the same dashboard, so the pod still has visibility into cross-pod work hitting its surfaces without those PRs polluting the queue. See .cursor/skills/_lib/pr-skills/README.md for the flag's full behavior.
extraRepos is honored only by --mode team. --mode review and --mode my continue to operate against the configured primary repo only (the monorepo); cross-repo personal review/my-PR dashboards are not in scope of this skill.
The first line of the dashboard is a Repos: summary listing the primary repo plus every extra repo that contributed to the run, so the user can see the full scope at a glance. PRs from extra repos render as owner/repo#<num> (e.g. tetherto/qvac-workbench#42); PRs from the primary monorepo render as bare #<num> exactly as before. The same prefix shows in the Excluded section.
For the personal review queue scoped to DevOps PRs, use --mode review (without --authors pod — review queue intentionally includes cross-pod authors whose review the user owes). That mode stays on the primary repo.
--pod devops --mode team --authors pod, teeing stdout to /tmp/devops-pr-status-<YYYY-MM-DD>.txt so the dashboard is available for paste afterwards. Redirect stderr to a sibling .stderr file (it contains progress / SLACK_VALIDATION_REQUIRED notices and any skipped-repo warnings, not dashboard content)./tmp/devops-pr-status-<DATE>.txt is plain text with two-space indent — when pasted into a Slack thread, Slack auto-renders the indented lines as nested bullets and turns #<num> into PR auto-links. No re-formatting is needed.bash pbcopy < /tmp/devops-pr-status-${DATE}.txt # macOS xclip -selection clipboard < /tmp/devops-pr-status-${DATE}.txt # Linux wl-copy < /tmp/devops-pr-status-${DATE}.txt # Wayland
/qv-devops-pr-review (or /qv-pr-review for the generic flow)."The in-chat rendering uses Markdown with hyperlinked PR numbers. This is distinct from the paste-ready Slack form (auto-linked plain text) saved to the temp file. Both must be produced on every run.
Required layout (in this exact order):
## DevOps Pod — PR Status (authors scoped to roster).N PRs need attention · X fully approved · Y need your re-review · Z stale). Append · <K> repos scanned when the script's Repos: line lists more than just the primary repo (i.e., extraRepos resolved to at least one repo), so the user can see the scope at a glance. Roster: Proletter (lead) + darkynt, GSServita, sidj-thr, tamer-hassan-tether, yauhenipankratovich-web. Refresh from .github/teams/devops.json on every run; do not hardcode if the file has drifted.
QVAC-18047 PRs all sit on team-lead approval only — fastest path to drain the queue."). Skip when the queue is empty.### :red_circle: Stale (>3d) — N — one bullet per stale PR.### :large_yellow_circle: Needs Review — N — one bullet per active PR.### :repeat: Needs your re-review — N — only if the section is non-empty.### Excluded (non-roster authors) — populated from the script's "EXCLUDED" section. One bullet per PR. Acts as a quick visibility list, not a review queue.### Paste-ready — the pbcopy / xclip / wl-copy block.Bullet format for the active sections (Stale / Needs Review / Re-review):
- [<ref>](<url>) — <title> · `<author-login>` · <age> · <approvals/notes> · **<blockers/labels>**<ref> is #<num> for PRs in the primary monorepo and owner/repo#<num> (e.g. tetherto/qvac-workbench#42) for PRs from any extraRepos entry. Mirror the script's prRef form 1:1 — the rendered link text must match what appears in the dashboard at /tmp/devops-pr-status-<DATE>.txt.[<ref>](<url>) — Markdown link, never bare <ref>.<title> is the PR title verbatim, no truncation.<author-login> is wrapped in backticks.<age> is the script's age string (e.g., 4d 13h).<approvals/notes> lists :white_check_mark: <login> / :x: <login> / :arrows_counterclockwise: <login> for any non-pending reviews on the PR (from the script's Reviews: / Other: lines).<blockers/notes> is bolded — "needs team-lead approval", "needs team-member approval", "needs team-member + team-lead approval", "needs fork-ci approval", or any :warning: merge conflicts flag. Include labels in plain backticks (e.g., safe-to-test ) when present.Bullet format for the Excluded section (compact — these are not the pod's review queue):
- [<ref>](<url>) `<author-login>`| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,725 | 5,878 | -63% | 1 | 1 | 0% | 2,917 | 3,152 | +8% | 0 | 0 | — |
case-22 | pass→pass | 14,721 | 5,250 | -64% | 1 | 1 | 0% | 2,482 | 3,560 | +43% | 0 | 0 | — |
case-15 | pass→pass | 8,711 | 2,446 | -72% | 1 | 1 | 0% | 1,563 | 3,075 | +97% | 0 | 0 | — |
case-02 | fail→fail | 21,177 | 6,205 | -71% | 1 | 1 | 0% | 3,970 | 3,080 | -22% | 0 | 0 | — |
case-03 | fail→fail | 15,713 | 6,464 | -59% | 1 | 1 | 0% | 2,818 | 2,992 | +6% | 0 | 0 | — |
case-04 | fail→fail | 8,207 | 6,311 | -23% | 1 | 1 | 0% | 1,496 | 3,040 | +103% | 0 | 0 | — |
case-05 | fail→fail | 20,675 | 7,048 | -66% | 1 | 1 | 0% | 3,467 | 2,942 | -15% | 0 | 0 | — |
case-21 | fail→pass | 13,418 | 3,511 | -74% | 1 | 1 | 0% | 2,185 | 3,221 | +47% | 0 | 0 | — |
case-06 | fail→fail | 10,175 | 4,407 | -57% | 1 | 1 | 0% | 1,840 | 2,784 | +51% | 0 | 0 | — |
case-07 | fail→pass | 8,858 | 7,305 | -18% | 1 | 1 | 0% | 1,371 | 3,192 | +133% | 0 | 0 | — |
case-08 | fail→pass | 13,048 | 5,942 | -54% | 1 | 1 | 0% | 1,828 | 3,661 | +100% | 0 | 0 | — |
case-09 | fail→pass | 12,366 | 3,441 | -72% | 1 | 1 | 0% | 2,074 | 3,302 | +59% | 0 | 0 | — |
case-10 | fail→pass | 12,565 | 4,351 | -65% | 1 | 1 | 0% | 2,161 | 3,314 | +53% | 0 | 0 | — |
case-11 | fail→pass | 9,792 | 3,239 | -67% | 1 | 1 | 0% | 1,732 | 3,277 | +89% | 0 | 0 | — |
case-12 | fail→pass | 12,273 | 3,948 | -68% | 1 | 1 | 0% | 1,794 | 3,312 | +85% | 0 | 0 | — |
case-13 | fail→pass | 14,936 | 3,301 | -78% | 1 | 1 | 0% | 2,279 | 3,190 | +40% | 0 | 0 | — |
case-14 | fail→pass | 8,878 | 3,294 | -63% | 1 | 1 | 0% | 1,306 | 3,194 | +145% | 0 | 0 | — |
case-16 | fail→pass | 8,066 | 1,909 | -76% | 1 | 1 | 0% | 1,185 | 2,927 | +147% | 0 | 0 | — |
case-17 | fail→pass | 8,395 | 2,064 | -75% | 1 | 1 | 0% | 1,389 | 2,959 | +113% | 0 | 0 | — |
case-18 | fail→pass | 9,814 | 2,562 | -74% | 1 | 1 | 0% | 1,362 | 3,043 | +123% | 0 | 0 | — |
case-19 | pass→pass | 10,403 | 1,907 | -82% | 1 | 1 | 0% | 1,622 | 2,924 | +80% | 0 | 0 | — |
case-20 | fail→fail | 6,979 | 2,202 | -68% | 1 | 1 | 0% | 1,065 | 2,936 | +176% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +55 percentage points is the difference between those two pass rates over the 16 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.