Contributor-First PR Merge
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
给单个 PR 做代码感知 triage —— 分类 / 跑测试 / 扫依赖 / 产出审查笔记. An agent skill from ChanningLua/prax-agent.
$ npx skills add ChanningLua/prax-agent --skill pr-triage -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ChanningLua/prax-agent pr-triage --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/ChanningLua/prax-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/prax/skills/pr-triage .claude/skills/pr-triage && 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 "pr-triage" agent skill from https://github.com/ChanningLua/prax-agent/tree/main/src/prax/skills/pr-triage into .claude/skills/pr-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-triage", 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/ChanningLua/prax-agent/tree/main/src/prax/skills/pr-triageType 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 ChanningLua/prax-agent --skill pr-triage -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ChanningLua/prax-agent pr-triage --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ChanningLua/prax-agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/prax/skills/pr-triage .agents/skills/pr-triage && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pr-triage" agent skill from https://github.com/ChanningLua/prax-agent/tree/main/src/prax/skills/pr-triage into .agents/skills/pr-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-triage", 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 ChanningLua/prax-agent --skill pr-triage -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ChanningLua/prax-agent pr-triage --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ChanningLua/prax-agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/prax/skills/pr-triage .cursor/skills/pr-triage && 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 "pr-triage" agent skill from https://github.com/ChanningLua/prax-agent/tree/main/src/prax/skills/pr-triage into .cursor/skills/pr-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-triage", 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/ChanningLua/prax-agent.git --path src/prax/skills/pr-triage--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 ChanningLua/prax-agent --skill pr-triage -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ChanningLua/prax-agent pr-triage --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ChanningLua/prax-agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/prax/skills/pr-triage .gemini/skills/pr-triage && 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 "pr-triage" agent skill from https://github.com/ChanningLua/prax-agent/tree/main/src/prax/skills/pr-triage into .gemini/skills/pr-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-triage", 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 ChanningLua/prax-agent pr-triageInstalls 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 ChanningLua/prax-agent --skill pr-triage -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ChanningLua/prax-agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/prax/skills/pr-triage .github/skills/pr-triage && 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 "pr-triage" agent skill from https://github.com/ChanningLua/prax-agent/tree/main/src/prax/skills/pr-triage into .github/skills/pr-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-triage", 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 ChanningLua/prax-agent --skill pr-triage -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ChanningLua/prax-agent pr-triage --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ChanningLua/prax-agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/prax/skills/pr-triage .opencode/skills/pr-triage && 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 "pr-triage" agent skill from https://github.com/ChanningLua/prax-agent/tree/main/src/prax/skills/pr-triage into .opencode/skills/pr-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-triage", 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.
pr-triage给单个 PR 做代码感知 triage —— 分类 / 跑测试 / 扫依赖 / 产出审查笔记. An agent skill from ChanningLua/prax-agent.
PR Triage is an agent skill from ChanningLua/prax-agent. 给单个 PR 做代码感知 triage —— 分类 / 跑测试 / 扫依赖 / 产出审查笔记
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development. It works with Git and GitHub. The repository describes itself as: Self-improving agent runtime that learns from experience — test-verify-fix loops, correction detection, cross-project memory, multi-model orchestration. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 19d016b. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteGrepGlobVerifyCommandNotifyFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitjqghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and 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.
PR Triage loads about 1.4k tokens when it runs. Until then it costs about 14 tokens; SKILL.md has 305 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Write, Grep, Glob, VerifyCommand, NotifyAutomated 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); files beside SKILL.md are not scanned.
The full file from ChanningLua/prax-agent at commit 19d016b, republished under its MIT licence (© ChanningLua). 305 words, ~1,396 tokens.
.claude/skills/pr-triage/SKILL.md (or your agent's skills folder).Prax 的杀手锏在这:不只"让 LLM 看 diff 给点评",而是真的 checkout 出来、真的跑测试、真的看新增依赖有没有 CVE。结果比纯 LLM 评论可信一个量级。
#NNN(本仓库的话)或 PR 分支名# 1. 在 git 仓库里
git rev-parse --show-toplevel
# 2. 有 gh CLI 吗?
command -v gh && gh auth status 2>/dev/null没 gh 时走 降级路径(见 Step 2b)。没 git 仓库直接报错。
一份 markdown 审查笔记:
.prax/pr-triage/pr-<NNN>-<YYYYMMDD-HHMMSS>.md不自动 approve / merge / close / comment 到 GitHub。所有外部动作都必须用户明确再触发一次。
# 完整路径
gh pr view <url> --json number,title,body,files,author,baseRefName,headRefName,additions,deletions,commits
# 提炼
NUM=$(echo $JSON | jq -r '.number')
TITLE=$(echo $JSON | jq -r '.title')
BASE=$(echo $JSON | jq -r '.baseRefName')
HEAD=$(echo $JSON | jq -r '.headRefName')
STATS="+$(echo $JSON | jq -r '.additions'),-$(echo $JSON | jq -r '.deletions')"
FILES=$(echo $JSON | jq -r '.files | length')gh pr diff <url> > /tmp/pr-<NUM>.diff
wc -l /tmp/pr-<NUM>.diff没 gh CLI 时:
# 本仓库的 PR:如果本地 remotes 里有 pull/<num>/head refspec
git fetch origin pull/<NUM>/head:pr-<NUM> 2>/dev/null
git diff origin/<base>...pr-<NUM> > /tmp/pr-<NUM>.diff如果连 fetch 也不行(外网受限)→ 退化成只读远端分支名模式,不跑测试,只产出分类 + 手动审查清单。
用 PR title + 首个 commit message + files-changed 启发式:
| 分类 | 证据 |
|---|---|
feature | title 含 feat(...) / 新文件多 / +100 以上 |
bug | title 含 fix(...) / 行数均衡增删 |
refactor | title 含 refactor / 纯结构调整 |
chore | title 含 chore / 仅 config/yaml |
docs | 仅 *.md 变更 |
hotfix | 含 hotfix 或 urgent |
一个 PR 可以多标签,取最强一个作为主分类。
硬规则,每触发一条加一分:
| 规则 | 分数 |
|---|---|
| patch > 500 行 | +2 |
| patch > 1000 行 | +3(累加) |
| 触达 >10 个文件 | +2 |
改 package.json/requirements.txt/Cargo.toml/go.mod 且有新增依赖 | +2 |
改 auth/security/permission/middleware 相关文件 | +2 |
改 CI / .github/workflows/ | +2 |
| 改数据库迁移文件 | +3 |
| PR body 空 | +1 |
| 没测试伴随(仅 src 没 test) | +2 |
0-2 分:低;3-5:中;6+:高。
git fetch origin pull/<NUM>/head:prax-triage-<NUM>
git checkout prax-triage-<NUM>
# 用 VerifyCommand 跑,限时 5 分钟
VerifyCommand(command="pytest -q", timeout=300)
# 或 npm test / cargo test / go test — 从 Step 2 的 files 推断失败不代表 PR 坏——可能是仓库本身坏的。拿 base 做对照:
git checkout <BASE>
VerifyCommand(command="pytest -q", timeout=300)跑完必须 checkout 回原分支,避免污染用户工作区:
git checkout -
git branch -D prax-triage-<NUM># 对 diff 找新增 import / require
grep -E '^\+[[:space:]]*(import|from|require|use )' /tmp/pr-<NUM>.diff | head -30
# package.json / requirements.txt / Cargo.toml 新增条目
git diff origin/<base>...<head> -- package.json requirements.txt Cargo.toml go.mod列出来不代表有漏洞——只列给 reviewer,让 reviewer 决定要不要查 CVE。
---
pr: 42
title: feat(notify): add NotifyTool
author: @foo
generated_at: 2026-04-22T10:05:00+08:00
stats: "+320, -15, 4 files"
---
# PR #42 Triage
## 分类
- 主:**feature**
- 副:docs
## 风险评分:3(中)
触发规则:
- patch = 305 行 (+1)
- 新增依赖:httpx (+2)
## 测试结果
- PR 分支 pytest -q:✅ 1929 passed
- 基线 base `main` pytest -q:✅ 1922 passed
- **结论**:PR 引入 7 个新通过的测试,无回归
## 新增依赖
- Python: `httpx` (已有 dep)
- 无 package.json 变更
## 审查要点
1. `tools/notify.py:38` Provider 基类 — 检查是否预留扩展点
2. `tools/notify.py:105` SMTP 密码从 env 读 — 确认无 YAML 硬编码
3. `tests/unit/test_notify.py` 23 个测试 — 覆盖所有 provider 分支
## 推荐动作
- [ ] 人工审 `tools/notify.py:__init__` 的接口稳定性
- [ ] 确认 `notify.yaml` schema 文档已更新
(Prax pr-triage 不自动 approve/merge/close — 所有 GitHub 动作由人触发)若 .prax/notify.yaml 有 eng-leads channel:
Notify(
channel = "eng-leads",
title = "PR #<NUM> triage: <level>",
body = <笔记的分类 + 风险评分 + 测试结果段>,
level = "error" if tests_failed else ("warn" if risk >= 6 else "info"),
)-D 临时分支level=warn,笔记里写"PR 过大,建议拆分,本工具不对此类 PR 跑完整测试",跳过 Step 5.prax/pr-triage/pr-<N>-<ts>.md 每次都是新文件:用 Write(自动建目录)。gh pr view / gh pr diff / git fetch / git checkout / VerifyCommand:都要 Bash,默认权限模式不够,需要 --permission-mode danger-full-access。HashlineEdit / Edit 对不存在路径会 File not found——新笔记必须走 Write。docs-audit:PR 改 src/ 没改 docs/ 时,triage 笔记里引用 docs-audit 的输出release-notes:triage 过的 PR 在发版时能直接落入 release-notes 的 commit 分类用户:triage #42
→ skill 跑 gh pr view + gh pr diff
→ 分类 = feature,risk = 3 (patch 320 行 + 新增 httpx 依赖)
→ git fetch pull/42/head → pytest -q → 1929 pass
→ git checkout main → pytest -q → 1922 pass
→ 结论:PR 无回归,引入 7 个新测试
→ 写 .prax/pr-triage/pr-42-20260422-100500.md
→ Notify eng-leads channel (info)
→ 回用户:分类 feature,风险中,测试通过,笔记在 .prax/pr-triage/pr-42-...md© ChanningLua, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in src/prax/skills/pr-triage of ChanningLua/prax-agent.
Open the folder on GitHubat commit 19d016b
PR Triage 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 |
|---|---|---|---|---|---|---|
| PR Triage this skillChanningLua/prax-agent | 273 | — | ~1.4k | Automated safety check: Notes | MIT | |
| Contributor-First PR MergeHKUDS/OpenHarness | 16k | 1 repos | ~847 | Automated safety check: Pass | MIT | |
| Create Pull Requestcline/cline | 70k | 1 repos | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Pull Request Title and Body Writeropeninterpreter/openinterpreter | 69k | 2 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Draft Release Notesjamiepine/voicebox | 57k | — | ~941 | Automated safety check: Pass | MIT | |
| PR Review State Fetchprisma/orm | 48k | — | ~767 | Automated safety check: Pass | Apache-2.0 |
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
cline/cline
Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.
openinterpreter/openinterpreter
Rewrites the title and body of one or more pull requests with gh, leading with why the change was made, then what changed, and describing only the net result.
jamiepine/voicebox
Writes or refreshes the Unreleased section of CHANGELOG.md as a themed narrative built from the commits, PRs and diff since the last version tag.
prisma/orm
Fetches a pull request's canonical review state as JSON, validates it, and renders markdown, a text summary and triage target files from it using bundled scripts.
tw93/Mole
Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.
ChanningLua/prax-agent
Hand coding work or explicitly authorized one-shot verification to Prax Shift, inspect a shift, or schedule supported coding work with Claude as the worker.
ChanningLua/prax-agent
Hand coding work or explicitly authorized one-shot verification to Prax Shift, inspect a shift, or schedule supported coding work with Codex as the worker.
ChanningLua/prax-agent
端到端 pipeline —— 抓 X/知乎/Bilibili AI 相关热门 → 整理成 wiki → 推送飞书日报. An agent skill from ChanningLua/prax-agent.
ChanningLua/prax-agent
用 AutoCLI 二进制驱动用户已登录的 Chrome 抓取 Twitter/X、知乎、Bilibili、Reddit 等 55+ 站点
ChanningLua/prax-agent
从近期大事件、真实需求和常青决策中选题,完成多源研究、业务落地、实测、事实核验和精选文章. An agent skill from ChanningLua/prax-agent.
ChanningLua/prax-agent
把一堆 raw markdown(抓取/笔记/文章)压成 Obsidian 风格 wiki —— 有 TOC、有按主题聚合、有日简报
Categories
给单个 PR 做代码感知 triage —— 分类 / 跑测试 / 扫依赖 / 产出审查笔记. An agent skill from ChanningLua/prax-agent. PR Triage is an agent skill from ChanningLua/prax-agent.
PR Triage fits situations like: development work in your project.
Run `npx skills add ChanningLua/prax-agent --skill pr-triage -a claude-code`. Or copy the skill folder (src/prax/skills/pr-triage in ChanningLua/prax-agent) into .claude/skills/pr-triage in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ChanningLua/prax-agent --skill pr-triage -a codex`. Or copy the skill folder (src/prax/skills/pr-triage in ChanningLua/prax-agent) into .agents/skills/pr-triage 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 ChanningLua/prax-agent --skill pr-triage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pr-triage, .gemini/skills/pr-triage, .github/skills/pr-triage and .opencode/skills/pr-triage in your project.
Going by SKILL.md and its folder, PR Triage needs the command-line tools its instructions call (git, jq and gh). Its frontmatter pre-approves these tools: Bash, Read, Write, Grep, Glob, VerifyCommand, Notify.
SKILL.md contains no URLs. Its commands use git and 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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
PR Triage is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.6k 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 PR Triage: Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars), Create Pull Request (cline/cline, 70k stars), Pull Request Title and Body Writer (openinterpreter/openinterpreter, 69k stars) and Draft Release Notes (jamiepine/voicebox, 57k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ChanningLua (a GitHub user) maintains it in ChanningLua/prax-agent, which has 273 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on September 11, 2026.
Source: ChanningLua/prax-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.