Submit PR
FutureTense/keymaster
Procedure for preparing and submitting pull requests in keymaster, enforcing the required PR template (.github/PULLREQUESTTEMPLATE.md), checklist validation, and quality gates.
Take a change from working tree to a merge-ready pull request, then keep iterating until the CI checks and AI reviewers (CodeRabbit, cubic) all pass.
$ npx skills add noh-rs/nohrs --skill pull-request -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install noh-rs/nohrs pull-request --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/noh-rs/nohrs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/pull-request .claude/skills/pull-request && 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 "pull-request" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.claude/skills/pull-request into .claude/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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/noh-rs/nohrs/tree/develop/.claude/skills/pull-requestType 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 noh-rs/nohrs --skill pull-request -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install noh-rs/nohrs pull-request --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/pull-request .agents/skills/pull-request && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pull-request" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.claude/skills/pull-request into .agents/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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 noh-rs/nohrs --skill pull-request -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install noh-rs/nohrs pull-request --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/pull-request .cursor/skills/pull-request && 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 "pull-request" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.claude/skills/pull-request into .cursor/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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/noh-rs/nohrs.git --path .claude/skills/pull-request--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 noh-rs/nohrs --skill pull-request -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install noh-rs/nohrs pull-request --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/pull-request .gemini/skills/pull-request && 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 "pull-request" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.claude/skills/pull-request into .gemini/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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 noh-rs/nohrs pull-requestInstalls 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 noh-rs/nohrs --skill pull-request -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/pull-request .github/skills/pull-request && 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 "pull-request" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.claude/skills/pull-request into .github/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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 noh-rs/nohrs --skill pull-request -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install noh-rs/nohrs pull-request --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noh-rs/nohrs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/pull-request .opencode/skills/pull-request && 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 "pull-request" agent skill from https://github.com/noh-rs/nohrs/tree/develop/.claude/skills/pull-request into .opencode/skills/pull-request/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pull-request", 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.
pull-requestTake a change from working tree to a merge-ready pull request, then keep iterating until the CI checks and AI reviewers (CodeRabbit, cubic) all pass.
Pull Request is an agent skill from noh-rs/nohrs. Take a change from working tree to a merge-ready pull request, then keep iterating until the CI checks and AI reviewers (CodeRabbit, cubic) all pass. Runs the local quality gate, opens or updates the PR following this repo's PR hygiene rules, and — for UI changes — verifies the GUI headlessly and attaches screenshots. Use when asked to "open a PR", "ship this", "get this through review", or "fix the review comments". Invoke with /pull-request.
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/attach-screenshots.sh` and `scripts/review-status.sh`).
It sits in Development, covering Pull requests and Quality gates. It works with GitHub. The repository describes itself as: Launcher × Explorer - a fast, keyboard-driven Finder alternative, extensible with sandboxed WASM plugins. Built in Rust. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 42b90ff. 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:
ghcargogitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh and git, 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.
Pull Request loads about 4.1k tokens when it runs. Until then it costs about 115 tokens; SKILL.md has 1,872 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 noh-rs/nohrs at commit 42b90ff, republished under its MIT licence (© noh-rs). 1,872 words, ~4,090 tokens.
.claude/skills/pull-request/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.End-to-end flow for turning the current change into a pull request that passes this repo's automated quality gate, fixing review feedback in a loop until green. When green, it also flags changes worth a blog post and offers to file a blog issue (Phase 6).
The quality gate has three layers:
cargo fmt, cargo clippy, cargo build, cargo test.ci.yml (fmt, typos, config schema, clippy,
test, build, msrv, cargo-deny, coverage with --fail-under
thresholds), and web.yml for web/** changes. The two are mirror images:
ci.yml ignores web/**, docs/** and **.md, web.yml runs only for
web/**, so a docs-only PR legitimately shows very few checks.
machete.yml is not part of the gate — it is advisory and runs weekly
on a schedule, never on a pull request.CodeRabbit (coderabbitai[bot])cubic · AI code reviewer (cubic-dev-ai[bot])"Green" = every check passes and no unresolved review threads from those bots. The loop below drives toward that state.
gh CLI or GitHub MCP toolsThis skill runs in two environments that reach GitHub in incompatible ways. Determine which one you are in before Phase 3, because roughly half the commands below do not exist in the other:
command -v gh # no output => remote environment, gh is unavailablegh is installed. Use the gh commands as
written; review-status.sh works and is the fastest way to read the gate.gh is not installed and
there is no direct GitHub API access. Use the mcp__github__* tools instead.
review-status.sh shells out to gh, so it cannot run there; reproduce it
with the MCP calls below (Phase 4 step 1 spells out the sequence).| Need | gh | MCP tool |
|---|---|---|
| Find the PR for a branch | gh pr view | list_pull_requests (head: "<owner>:<branch>") |
| Read a PR | gh pr view --json … | pull_request_read (method: "get") |
| PR diff | gh pr diff | pull_request_read (method: "get_diff") |
| Check status | gh pr checks | pull_request_read (method: "get_check_runs") |
| Failing job logs | gh run view --log-failed | get_job_logs (run_id + failed_only: true, return_content: true) |
| Review threads | gh api graphql … | pull_request_read (method: "get_review_comments") |
| Open a PR | gh pr create | create_pull_request |
| Edit PR title/body | gh pr edit | update_pull_request |
| Comment on a PR | gh pr comment | add_issue_comment |
| Reply in a review thread | gh api …/replies | add_reply_to_pull_request_comment |
| Resolve a thread | (graphql) | resolve_review_thread |
| File an issue | gh issue create | issue_write (method: "create") |
There is no MCP equivalent of gh pr checks --watch: poll
pull_request_read (method: "get_check_runs") instead, leaving ~30s between
polls. Do not sleep in a loop to wait — if PR events are subscribed, they wake
the session on their own.
git itself behaves identically in both environments, so the commit and push
steps never change.
gh auth status is logged in. If not, stop and ask the user to
gh auth login. In the remote environment there is nothing to check — the MCP
tools carry their own auth, and a failure there means the repository is out of
scope, not that a login is missing.git status, git diff).script/ui-run.sh setup has been run once and xdotool
is installed (see docs/agent-ui-verification.md). If they're missing and the
change is UI-facing, ask the user to install them rather than skipping evidence.The two helper scripts live next to this file:
scripts/review-status.sh [PR#] — prints checks + unresolved AI threads, exits
0 green / 1 blocked / 2 error. Requires gh; exits 2 with a pointer
to the MCP path when it is missing.scripts/attach-screenshots.sh <slug> <png...> — publishes images to the
pr-assets branch and prints Markdown embeds. Pure git, so it works in both
environments.develop or main. Check git rev-parse --abbrev-ref HEAD.
If on a protected branch, create a topic branch first (descriptive, e.g.
git switch -c fix-project-panel-crash).cargo fmt --all
cargo clippy --all-targets -- -D warnings
cargo build
cargo testui-run.sh setup:
RUSTFLAGS="-L $HOME/.local/devlibs" cargo build --features gui --bin nohrs.)unwrap()/panics, no silent
let _ = on fallible calls, propagate errors with ?. The AI reviewers flag
these, so getting them right now saves a loop iteration.If the diff touches layout, panels, navigation, previews, or anything rendered,
verify it for real and capture evidence. Full workflow: docs/agent-ui-verification.md.
# Build, launch, screenshot the relevant states.
RUSTFLAGS="-L $HOME/.local/devlibs" cargo build --features gui --bin nohrs
./script/ui-run.sh launch # prints WINDOW / DISPLAY / PID
./script/ui-run.sh shot /tmp/before.png # then Read the PNG to confirm state
# Drive the UI with xdotool, re-shoot after each step (coordinates are absolute):
DISP=$(./script/ui-run.sh display); WIN=$(./script/ui-run.sh win)
DISPLAY=$DISP xdotool windowactivate "$WIN" mousemove X Y sleep 0.4 click 1 sleep 1.2
./script/ui-run.sh shot /tmp/after.png # Read it; verify the expected change
./script/ui-run.sh stopRead each PNG back yourself and confirm the change actually happened — a clean
build is not evidence. Keep the PNGs that best show before/after for the PR. Mind
the gotchas in the doc (pkill -x nohrs, find window by PID, black-first-frame).
Commit with a clear message and push the branch:
git add -A && git commit -m "<imperative summary>"
git push -u origin HEADEnd commit messages with the trailer:
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
If a PR for this branch already exists, update it instead of opening a new
one — gh pr view, or list_pull_requests with
head: "<owner>:<branch>" and state: "open".
Attach screenshots (UI changes only) before writing the body, so you have the embed URLs:
.claude/skills/pull-request/scripts/attach-screenshots.sh ui-change /tmp/before.png /tmp/after.pngPaste the printed  lines into the PR body under the ## Testing
heading. (Images go to the pr-assets branch, so they never appear in the code
diff the AI reviewers read.)
Open the PR honoring PR hygiene (CLAUDE.md):
fix:/feat:), no trailing punctuation. Optionally prefix with the crate
name when one crate is the clear scope (e.g. git_ui: Add history view).Release Notes: section — blank line after the heading,
one bullet: - Added ... / - Fixed ... / - Improved ..., or - N/A for
docs-only / non-user-facing changes.The base branch is develop, not main.
gh pr create --base develop --title "<title>" --body "$(cat <<'EOF'
## Summary
<what changed and why>
## Changes
- <notable change>
## Testing
- [x] `cargo fmt --all --check`
- [x] `cargo clippy --all-targets -- -D warnings`
- [x] `cargo test`
<screenshot embeds, or "N/A" for non-UI changes>
Release Notes:
- <Added/Fixed/Improved ... or N/A>
EOF
)"Without gh, the same PR via create_pull_request:
{
"owner": "noh-rs", "repo": "nohrs",
"base": "develop", "head": "<branch>",
"title": "<title>",
"body": "## Summary\n\n…\n\n## Changes\n\n- …\n\n## Testing\n\n- [x] …\n\nRelease Notes:\n\n- <…>"
}.github/PULL_REQUEST_TEMPLATE.md is only auto-filled for PRs opened through
the web UI — both paths above bypass it, so reproduce its sections yourself:
## Summary, ## Changes, ## Testing (tick the three gate checkboxes you
actually ran), then ## Release Notes. Put screenshot embeds under
## Testing.
Repeat until review-status.sh exits 0, capped at 3 fix iterations (see
Phase 5 for what to do if still blocked).
Wait for the gate to settle, then read it.
With gh:
gh pr checks --watch --interval 30 # blocks until checks finish (or fail)
.claude/skills/pull-request/scripts/review-status.sh0 → green. Go to "Done".1 → blocked. The output lists failing checks and every unresolved
AI review thread ([bot] path:line: comment). Continue.2 → query error (no PR / auth / gh missing). Resolve and retry.Without gh, do the same two reads by hand and apply the same verdict
(green = both clean):
pull_request_read (method: "get_check_runs") — any conclusion that is
not success/neutral/skipped is a failure; a status still
queued/in_progress means poll again rather than declaring green.
For a failed Actions check, get_job_logs (failed_only: true,
return_content: true) returns the actual error.pull_request_read (method: "get_review_comments") — a thread counts
against the gate when it is unresolved and its first comment's author is
coderabbitai[bot] or cubic-dev-ai[bot] (the GraphQL form of these logins
drops the [bot] suffix, so match both spellings).Address every unresolved thread on its merits. For each:
gh pr comment <PR#> --body "..." # general reply
# or reply inline to a specific review comment via the API if needed.gh: add_reply_to_pull_request_comment (pass the thread's first
comment id) for an inline reply, add_issue_comment for a general one.If a UI behavior changed during fixes, re-run Phase 2 and refresh the
screenshots (run attach-screenshots.sh again; update the body embeds).
Commit and push the fixes (this re-triggers the AI reviewers):
git add -A && git commit -m "Address review feedback" && git pushGo back to step 1.
gh pr view --web URL, or
the html_url from pull_request_read), a one-line summary of what changed,
and what was verified (with the screenshot links for UI work). Do not merge
unless the user explicitly asks.Once the PR is green and reported (Phase 5 "Green"), judge whether the change holds a lesson worth a blog post — then propose it. Don't write the article and don't file anything without the user's go-ahead. Skip this entirely on the escalate path (a still-blocked PR isn't ready to write up).
The bar (propose only if it clears it). This repo's blog is for design stories and instructive findings (see #154, #157), not changelog entries. Propose when the PR contains one of:
Do not propose for routine feature adds, mechanical refactors, dependency bumps, docs-only changes, or trivial fixes. One proposal max — if the user declines, drop it (don't nag on later pushes).
If it clears the bar: give the user a 1–2 line pitch (the angle/thesis, not "added X") and ask if they want a blog issue filed. The blog engine (#99) isn't built yet, so blog topics live as GitHub issues following the #154/#157 convention.
On approval, file the issue while the diff is fresh — the path:line
references are the most valuable part to capture now:
gh issue create \
--title "Blog: <topic>" \
--label "type:docs,area:docs,area:web" \
--body "$(cat <<'EOF'
関連: PR #<this-pr> / #99 (blog エンジン) / <related issues>
## 目標
<the design story / lesson — what other developers learn, not "got faster">
## 記事の角度(draft)
- <thesis / angle>
## アウトライン(draft)
- [ ] <section>
- [ ] <section>
## 引用したい実コード(PR #<this-pr>)
- `crates/.../foo.rs:NN` — <why this line matters>
## 完了条件
- <topic> の記事が blog で公開される
## 参照
- <docs/ADR links>
EOF
)"Without gh, the same issue via issue_write (method: "create"), passing
labels: ["type:docs", "area:docs", "area:web"] as an array rather than the
comma-joined string the CLI takes. issue_write is deliberately not in
.claude/settings.json, so it prompts — filing a blog issue already requires
the user's explicit go-ahead, and the prompt is a second check on that.
Match the existing issues' Japanese section headings. Title may be Japanese.
Works in both environments:
| Need | Command |
|---|---|
| Which environment am I in | command -v gh (empty ⇒ MCP path) |
| Current branch | git rev-parse --abbrev-ref HEAD |
| Local gate | cargo fmt --all && cargo clippy --all-targets -- -D warnings && cargo build && cargo test |
| GUI build | RUSTFLAGS="-L $HOME/.local/devlibs" cargo build --features gui --bin nohrs |
| Launch / shot / stop GUI | ./script/ui-run.sh {launch,shot <png>,stop} |
| Publish screenshots | .claude/skills/pull-request/scripts/attach-screenshots.sh <slug> <png...> |
gh-only (see the Environment table above for the MCP equivalents):
| Need | Command |
|---|---|
| Watch checks | gh pr checks --watch --interval 30 |
| Gate report | .claude/skills/pull-request/scripts/review-status.sh [PR#] |
| PR review threads (raw) | gh api repos/{owner}/{repo}/pulls/{n}/comments |
| Blog issue convention | gh issue list --label type:docs (template: #154, #157) |
AI reviewer bots treated as the gate: coderabbitai[bot], cubic-dev-ai[bot].
Override with the PR_REVIEW_BOTS env var (space-separated) if the set changes.
© noh-rs, 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 .claude/skills/pull-request of noh-rs/nohrs.
Open the folder on GitHubat commit 42b90ff
Pull Request 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 |
|---|---|---|---|---|---|---|
| Pull Request this skillnoh-rs/nohrs | 156 | — | ~4.1k | Automated safety check: Pass | MIT | |
| Submit PRFutureTense/keymaster | 349 | — | ~830 | Automated safety check: Pass | MIT | |
| PR Deep VerificationQwenLM/qwen-code | 28k | — | ~18k | Automated safety check: Pass | Apache-2.0 | |
| GitHub Swarm Code Reviewruvnet/agentic-flow | 816 | 6 repos | ~6.5k | Automated safety check: Pass | None | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Docs AuthoringTracecatHQ/tracecat | 3.8k | — | ~3.1k | Automated safety check: Notes | AGPL-3.0 |
FutureTense/keymaster
Procedure for preparing and submitting pull requests in keymaster, enforcing the required PR template (.github/PULLREQUESTTEMPLATE.md), checklist validation, and quality gates.
QwenLM/qwen-code
Runs a sandboxed, evidence-based check of one qwen-code pull request, proving its main change against the base build and writing a report with a machine-readable verdict.
ruvnet/agentic-flow
Reviews GitHub pull requests with a swarm of specialized agents covering security, performance, architecture, style and accessibility, driven by the gh CLI and ruv-swarm.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
TracecatHQ/tracecat
A skill your agent uses when adding or updating documentation pages in an existing docs site.
dotnet/maui
Interprets pinned managed benchmark evidence for a dotnet/maui pull request and writes a narrative for the performance review workflow, without running or publishing anything.
noh-rs/nohrs
Comprehensive Rust coding guidelines with 179 rules across 14 categories.
Works with
Categories
Take a change from working tree to a merge-ready pull request, then keep iterating until the CI checks and AI reviewers (CodeRabbit, cubic) all pass. Pull Request is an agent skill from noh-rs/nohrs. Take a change from working tree to a merge-ready pull request, then keep iterating until the CI checks and AI reviewers (CodeRabbit, cubic) all pass.
Pull Request fits situations like: asked to open a PR; get this through review; fix the review comments.
Run `npx skills add noh-rs/nohrs --skill pull-request -a claude-code`. Or copy the skill folder (.claude/skills/pull-request in noh-rs/nohrs) into .claude/skills/pull-request in your project. Claude Code loads it when a task matches its description.
Run `npx skills add noh-rs/nohrs --skill pull-request -a codex`. Or copy the skill folder (.claude/skills/pull-request in noh-rs/nohrs) into .agents/skills/pull-request 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 noh-rs/nohrs --skill pull-request -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pull-request, .gemini/skills/pull-request, .github/skills/pull-request and .opencode/skills/pull-request in your project.
Going by SKILL.md and its folder, Pull Request needs a shell for the scripts in its folder and the command-line tools its instructions call (gh, cargo and git). Our summary lists: A Bash shell.
SKILL.md contains no URLs. Its commands use gh and git, 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.
Pull Request 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.1k tokens (SKILL.md is roughly 16k 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 Pull Request: Submit PR (FutureTense/keymaster, 349 stars), PR Deep Verification (QwenLM/qwen-code, 28k stars), GitHub Swarm Code Review (ruvnet/agentic-flow, 816 stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
noh-rs (a GitHub organization) maintains it in noh-rs/nohrs, which has 156 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 2, 2026.
Source: noh-rs/nohrs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.