Triage Contributor PRs
prisma/orm
Triages open pull requests from external contributors to prisma/orm, producing a per-PR verdict with evidence, without closing, commenting on or approving anything.
Load when asked to triage, clean up, batch-process, or work through the open PR queue or backlog — covers the mechanical sweep (stale, conflicts, duplicates), fan-out verdict reviews, and approved…
$ npx skills add openchamber/openchamber --skill triage-prs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install openchamber/openchamber triage-prs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/openchamber/openchamber.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/triage-prs .claude/skills/triage-prs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "triage-prs" agent skill from https://github.com/openchamber/openchamber/tree/main/.agents/skills/triage-prs into .claude/skills/triage-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-prs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/openchamber/openchamber/tree/main/.agents/skills/triage-prsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add openchamber/openchamber --skill triage-prs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install openchamber/openchamber triage-prs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openchamber/openchamber.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/triage-prs .agents/skills/triage-prs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "triage-prs" agent skill from https://github.com/openchamber/openchamber/tree/main/.agents/skills/triage-prs into .agents/skills/triage-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-prs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openchamber/openchamber --skill triage-prs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install openchamber/openchamber triage-prs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openchamber/openchamber.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/triage-prs .cursor/skills/triage-prs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "triage-prs" agent skill from https://github.com/openchamber/openchamber/tree/main/.agents/skills/triage-prs into .cursor/skills/triage-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-prs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/openchamber/openchamber.git --path .agents/skills/triage-prs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add openchamber/openchamber --skill triage-prs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install openchamber/openchamber triage-prs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openchamber/openchamber.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/triage-prs .gemini/skills/triage-prs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "triage-prs" agent skill from https://github.com/openchamber/openchamber/tree/main/.agents/skills/triage-prs into .gemini/skills/triage-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-prs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install openchamber/openchamber triage-prsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add openchamber/openchamber --skill triage-prs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/openchamber/openchamber.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/triage-prs .github/skills/triage-prs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "triage-prs" agent skill from https://github.com/openchamber/openchamber/tree/main/.agents/skills/triage-prs into .github/skills/triage-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-prs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openchamber/openchamber --skill triage-prs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install openchamber/openchamber triage-prs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openchamber/openchamber.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/triage-prs .opencode/skills/triage-prs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "triage-prs" agent skill from https://github.com/openchamber/openchamber/tree/main/.agents/skills/triage-prs into .opencode/skills/triage-prs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "triage-prs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
triage-prsLoad when asked to triage, clean up, batch-process, or work through the open PR queue or backlog — covers the mechanical sweep (stale, conflicts, duplicates), fan-out verdict reviews, and approved…
Triage PRs is an agent skill from openchamber/openchamber. Load when asked to triage, clean up, batch-process, or work through the open PR queue or backlog — covers the mechanical sweep (stale, conflicts, duplicates), fan-out verdict reviews, and approved batch actions.
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/finish.sh` and `scripts/prep.sh`).
The repository describes itself as: Agentic Development Environment based on OpenCode AI agent. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ea1182c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
ghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Triage PRs loads about 4.4k tokens when it runs. Until then it costs about 56 tokens; SKILL.md has 2,701 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from openchamber/openchamber at commit ea1182c, republished under its MIT licence (© openchamber). 2,701 words, ~4,374 tokens.
.claude/skills/triage-prs/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Turn an unbounded PR queue into a short list of maintainer decisions. The pipeline has three phases; no GitHub write happens in any phase without the maintainer approving that specific batch — present verdicts and drafted messages first, act on their word.
Companion: each substantive review inside phase 3 applies the pr-review skill; this skill owns only the batch mechanics around it.
The timeline outranks the snapshot. Before any verdict or comment on a PR, read its full timeline — issue comments AND reviews (gh pr view --json comments,reviews or gh api repos/{owner}/{repo}/pulls/N/reviews; a maintainer's Changes requested is a review and never appears in the comments list) AND commits since the last human event: a prior maintainer verdict (a push-back list, a recorded product decision like a placement or scope call) is BINDING — a new sweep verifies whether it was addressed at the current HEAD and says so explicitly ("all three prior items resolved" / "item 2 still open"), never re-decides it or asks the maintainer the same product question again. And never post the generic rebase-request on a PR that already carries a substantive review comment — the author already has their instructions; a bare "please rebase" on top reads as the left hand not knowing the right.
Pickup mode. A PR with human activity beyond the bot — a maintainer comment, an author reply, a trusted-reviewer thread — is a conversation in progress, not a fresh review target. Such PRs go into their own report bucket ("Розмова триває"), and each entry opens with the thread state: what the maintainer asked, what the author answered, which points are resolved at the current HEAD and which remain. The ready action continues the thread (a reply, a verdict on the author's answer, a merge if everything asked for was delivered) — it never restarts review from scratch. The maintainer may not remember their own comment from days ago; the sweep remembers for them.
Fetch all open PRs with gh (the repo is openchamber/openchamber). Two measurement rules learned the hard way:
updatedAt — bots bump updatedAt with every comment and label. Fetch last-commit dates with batched GraphQL (commits(last: 1)), ~50 PRs per query.gh pr list silently defaults to 30 rows — always pass --limit above the real queue size and print the resulting count.Bucket every non-draft PR:
| Bucket | Condition | Action template |
|---|---|---|
| Dead | merge conflict AND no author commit in >30 days | close with stale-close |
| Conflicted-active | merge conflict, author committed within 30 days | phase 3 review pool; a PR worth taking we rebase and finish ourselves (see Landing a PR ourselves). rebase-request only when the author has something to decide, or maintainerCanModify is false |
| Waiting on author | the last substantive event is a request for changes — a maintainer review with CHANGES_REQUESTED, a maintainer push-back comment, or a bot review:blocked / review:needs-evidence — and the author has neither pushed nor replied since | one line in the report ("чекає автора: <what was asked>"); no re-review, no new comment — the ball is theirs |
| Clean | mergeable and not waiting on the author | phase 3 review pool |
| Draft | isDraft | untouched while the author committed within 14 days, and always for the team's own drafts (btriapitsyn, yulia-ivashko, deatheros, AlexKutas); otherwise close with stale-draft |
Then detect duplicate clusters across the survivors: pairs with high title-token overlap or high changed-file overlap. For each cluster recommend one keeper (prefer: mergeable over conflicted, references an issue, smaller diff, earlier author — a later near-identical body is likely a regenerated copy of the earlier PR, and the earlier author keeps the credit); the rest close with duplicate-close.
Deliver the sweep as one report (counts per bucket, per-bucket tables with number/title/author/size/last-commit-age/areas, clusters with keeper recommendations) and stop for approval.
Execute the approved closes/comments with retries and ~1–2s spacing between calls. Log every result; report exact ok/fail counts and re-verify the open-PR total afterwards. Branch protection may reject merges — --admin is available and accepted for maintainer-approved merges; a merge that becomes conflicted mid-batch (usually CHANGELOG collisions from the batch's own merges) can be resolved in a temporary worktree and pushed to the contributor's branch when maintainerCanModify is true.
Trusted community reviewers. yulia-ivashko is a core maintainer with merge rights — her review decisions carry maintainer weight (a PR she approved or merged needs no re-verdict; her open questions are the maintainer's questions). Comments and reviews from patrick-motard and mattv8 are strong human signals: during any sweep, collect the PRs/issues they weighed in on, read their assessment, and carry it into the verdict — an approval from them upgrades confidence like a passing verifier; a concern from them is a finding to verify, never to ignore. They write free-form; map their conclusion onto the verdict ladder rather than expecting the format.
The intake workflow (.github/workflows/pr-intake.yml) adds size:* (changed lines, tests/lockfiles/translations excluded) to every PR and parks size:XL/XXL PRs from non-collaborators with no Ideas discussion linked under needs-discussion. Parked PRs are waiting on author for the sweep: the report lists them in one line each and no verdict review is spent on them until a discussion link appears or the maintainer removes the label by hand (the workflow never re-adds it). Cutover: 2026-09-22. PRs opened before that date got the label from the first relabel run, with no comment and no rule in place when the author started: for them needs-discussion is size information, not a parking decision. Treat those as ordinary review pool entries (size and product fit judged by the pr-review skill as usual), and never send the author to Ideas for a PR that predates the rule. The parking applies as written only to PRs opened on or after 2026-09-22.
The review bot's review:* labels are a pre-sort, not a verdict: review:ready PRs go first (the bot found no code defects — likely MERGE/MERGE-THEN-FIX), review:blocked ones carry a bot comment whose findings the verdict review verifies rather than rediscovers. Bot labels never replace the pr-review pass — the bot cannot judge product fit or maintainability scope. The reverse holds too: when the bot's BLOCKED findings are the whole story and the author has not answered, the maintainer never re-posts them in their own voice — the PR is waiting on author and the report says so in one line.
Split the clean pool smallest-first (tiny diffs are fast wins and most likely mergeable). Fan out the review subagent (.opencode/agent/review.md, which loads the pr-review skill and carries the hard rules). It takes one PR or several per call — group related PRs together when one context can serve them, give a large or contentious PR its own call; fall back to a general subagent that receives the full pr-review skill text when review is unavailable. The subagent inherits the chat's model; never hand verdicts to a smaller model to save quota — a verdict from a small model is a pre-sort, not a decision. Each returns per-PR verdict blocks in the skill's output format.
Report format. The consolidated report is what the maintainer decides from — calibrate each entry so no follow-up question is needed, without ballooning:
[#3177](https://github.com/openchamber/openchamber/pull/3177) (issues: /issues/N) — never a bare number.Consolidate into a single report grouped by verdict — MERGE, MERGE-THEN-FIX, PUSH-BACK (with the drafted lists), DECLINE (with the drafted close comments), plus every "needs your hands" line — and stop for approval. Each entry carries the subagent's Ready action verbatim — the comment or follow-up list exactly as it will be posted or executed, in a quote block under the entry. The consolidation summarizes the reasoning, never the artifact: a paraphrased push-back item loses the file, the cause, and the "done means" the subagent already found, and the maintainer approves what they can read, not a description of it. After approval: post/merge per verdict, and queue MERGE-THEN-FIX follow-ups as in-house work.
If a batch subagent skips a PR, notice (count outputs against inputs) and re-dispatch the gap.
A PR whose verdict needs more than a review — deep investigation of a core path, a rework against code main has rewritten, or a live check — can go to its own session with the PR linked to it. Keep it the exception: most PRs, including fix-then-merge ones, are finished inside the triage session.
The default for a PR we want is fix-then-merge in the author's branch, with the author keeping the credit. scripts/prep.sh <N> puts the whole PR on current main as one staged change in a throwaway worktree (conflicts resolved once, not per commit); after fixing and validating there, scripts/finish.sh <N> "<subject>" "<comment>" ["Closes #M"] commits as the author, pushes to their branch, posts the comment and squash-merges.
main has moved under a PR, or the PR bundles extras, land the part that fixes the problem and leave the rest: the 6-line fix out of 250 lines of instrumentation, the concurrency cap without the profiler scenario, the bug fix without the limit bump. A PR that mixes a fix with a change to how the app looks lands the fix; the look goes to the maintainer as a decision. The comment to the author names what was left out and why.automation job failing means the bot did not run, and a test that fails on the PR but passes on current main is a stale run, not the PR.gh pr edit --body-file) and come back.When the batch holds more than a handful of verdicts, offer this alongside the consolidated report: "I can walk you through them as cards instead, a few at a time." Use it only if the maintainer says yes; a large report is otherwise read in one go.
A round is one call to the question tool with 4–6 cards. Each card is one decision:
#N plus two or three words naming the behavior (#3640 Cmd+Enter), within 30 characters.[#N](https://github.com/openchamber/openchamber/pull/N); the cards render markdown) with a plain title on the first line, then 3–4 sentences about what the user sees in the app today, what changes after the PR, and what it costs (risk, a new surface, a dependency, a support burden). Describe behavior, never file names; spell out jargon the maintainer would not use.(Recommended). Each option says its consequence ("Close: /btw stays a command"), not only a verb. When our own follow-up is part of the verdict, the option says so ("Merge, then we fix the 1px offset").Order the rounds by how much the maintainer is needed: product decisions first, then plain bug-fix merges, then fix-before-merge, then merge-then-fix, and last one card that confirms all mechanical closes (duplicates, superseded, stale) as a list. A group of trivial, uncontested merges (translations, one-line fixes) shares one card with a one-line description per PR.
Between rounds:
main yourself before replying; a reviewer's verdict is a lead, not proof, and these checks have overturned verdicts (a merge that would have mislabeled squash-merged branches, a "bug" that was a deliberate style). Report what you found in plain words, then re-ask.When every card is answered, show one summary grouped by outcome, list what will need the maintainer's own hands (a live check on a device or a packaged app), and get one explicit go before any GitHub write. Comments to people the maintainer works with closely (team members, regular volunteers) are shown as drafts before posting; the rest go out in the maintainer's voice without a separate review.
After a batch of merges:
main. main has no CI of its own, and PRs validated one by one were never validated together..opencode/plans/pr-triage-<date>-merged.md, so a later regression can be traced to its PR quickly..opencode/plans/pr-triage-<date>-what-changed.md, in Ukrainian: grouped by area of the app, each entry a linked PR (or commit) and two or three sentences on what the user sees change, marking single-platform changes and the parts we rewrote.Canonical texts — reuse verbatim, adjusting only bracketed parts. Tone rules: honest about the backlog, no "feel free to reopen", thanks proportional to real effort.
stale-close
Closing this as stale: the branch has merge conflicts with
mainand hasn't been updated in over a month. The codebase has moved on significantly since this was opened, so this change would need to be redone against the current state anyway.
rebase-request
Sorry for the review backlog — the queue is currently far beyond what a single maintainer can handle. This PR has merge conflicts with
main, and I can only review PRs that merge cleanly. If you're still interested in landing this, please rebase — conflicted PRs without activity will eventually be closed as stale.
stale-draft
Closing this as stale: it's been a draft with no new commits for a while, and
mainhas moved on a lot since, so it would need redoing against the current code anyway. Thanks for the work on it.
duplicate-close
Closing as a duplicate of #[N], which will be reviewed instead[: one-clause reason it was kept].
discussion-after-the-fact (the linked Ideas discussion is a summary of the finished PR, posted after the implementation)
Closing this one. The Ideas discussion linked here describes what you already built, so there was never a point where the shape of this could be discussed — by the time it was posted the decision was made. That's the one thing the discussions are for; see the pinned post in Ideas. If you still want this, open a discussion about the problem itself, before any code, and we'll work out from there whether and how it should exist.
oversized-split (single PR bundling several concerns)
Closing this one. It bundles several unrelated concerns — [list] — into a single [size] change across [n] files, which isn't reviewable in this form. If you'd like to pursue [the worthwhile part], please open an Ideas discussion first to agree on scope, and then a focused PR for that single concern.
russian-locale (any PR adding Russian localization — this is a standing decision, apply without re-asking)
We’re not accepting Russian localization for OpenChamber.
This is an intentional maintainership decision due to Russia’s ongoing war against Ukraine. We don’t want to ship or maintain Russian UI support.
Closing.
© openchamber, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in .agents/skills/triage-prs of openchamber/openchamber.
Open the folder on GitHubat commit ea1182c
Triage PRs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Triage PRs this skillopenchamber/openchamber | 11k | — | ~4.4k | Automated safety check: Pass | MIT | |
| Triage Contributor PRsprisma/orm | 48k | — | ~3.6k | Automated safety check: Pass | Apache-2.0 | |
| Pre-Release PR Triagejamiepine/voicebox | 57k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Batchasgeirtj/system_prompts_leaks | 69k | — | ~1.3k | Automated safety check: Pass | CC0-1.0 | |
| Triaging Issuespytorch/pytorch | 104k | — | ~4.2k | Automated safety check: Pass | Custom licence | |
| Issue Triagepaperclipai/paperclip | 99k | — | ~1k | Automated safety check: Pass | MIT |
prisma/orm
Triages open pull requests from external contributors to prisma/orm, producing a per-PR verdict with evidence, without closing, commenting on or approving anything.
jamiepine/voicebox
Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.
asgeirtj/system_prompts_leaks
Research and plan a large-scale change, then execute it in parallel across 5–30 isolated worktree agents that each open a PR.
pytorch/pytorch
Triages GitHub issues by routing to oncall teams, applying labels, and closing questions.
paperclipai/paperclip
Triage Paperclip inbox issues that are stale, blocked, in-review, or assigned-but-not-progressing, and decide a single next action per issue (resume, reassign, unblock, escalate, or close).
dyoshikawa/rulesync
Batch-triage open pull requests: list PRs with prs-awaiting-maintainer, review each with review-pr, then post-review-comments when there are merge-blocker findings, or create-scrap-issue for…
openchamber/openchamber
A skill your agent uses when creating or modifying OpenChamber UI components, styling, colors, buttons, visual states, themes, or icons.
openchamber/openchamber
A skill your agent uses when creating or modifying OpenChamber shared UI data access, OpenCode SDK calls, RuntimeAPIs, runtime fetch/auth/URLs, authenticated browser assets, bridges/proxies, runtime…
openchamber/openchamber
A skill your agent uses when implementing or modifying OpenChamber sortable or drag-to-reorder behavior, especially @dnd-kit, touch/mobile interactions, variable-width items, or wrapping layouts.
openchamber/openchamber
A skill your agent uses when creating or modifying OpenChamber UI text, labels, buttons, placeholders, aria labels, empty states, toasts, dialogs, settings copy, navigation labels, or any…
openchamber/openchamber
A skill your agent uses when implementing or reviewing code on interaction, render, event, polling, synchronization, list-processing, store-selector, cache, indexing, or high-volume data paths; when…
openchamber/openchamber
A skill your agent uses when working with the OpenChamber iOS Simulator app without opening Xcode - boot/install/launch the Capacitor iOS app, start a browser stream, tap/type/gesture/rotate…
Load when asked to triage, clean up, batch-process, or work through the open PR queue or backlog — covers the mechanical sweep (stale, conflicts, duplicates), fan-out verdict reviews, and approved…. Triage PRs is an agent skill from openchamber/openchamber. Load when asked to triage, clean up, batch-process, or work through the open PR queue or backlog — covers the mechanical sweep (stale, conflicts, duplicates), fan-out verdict reviews, and approved batch actions.
Run `npx skills add openchamber/openchamber --skill triage-prs -a claude-code`. Or copy the skill folder (.agents/skills/triage-prs in openchamber/openchamber) into .claude/skills/triage-prs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add openchamber/openchamber --skill triage-prs -a codex`. Or copy the skill folder (.agents/skills/triage-prs in openchamber/openchamber) into .agents/skills/triage-prs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openchamber/openchamber --skill triage-prs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/triage-prs, .gemini/skills/triage-prs, .github/skills/triage-prs and .opencode/skills/triage-prs in your project.
Going by SKILL.md and its folder, Triage PRs needs a shell for the scripts in its folder and the command-line tools its instructions call (gh). Our summary lists: A Bash shell.
SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Triage PRs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Triage PRs: Triage Contributor PRs (prisma/orm, 48k stars), Pre-Release PR Triage (jamiepine/voicebox, 57k stars), Batch (asgeirtj/system_prompts_leaks, 69k stars) and Triaging Issues (pytorch/pytorch, 104k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
openchamber (a GitHub organization) maintains it in openchamber/openchamber, which has 11,359 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 10, 2026.
Source: openchamber/openchamber on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.