PR Stack
r0adkll/Campfire
Open, describe, and maintain pull requests in Campfire, especially stacks of dependent PRs (each branch built on the one before).
A skill your agent uses when the user runs /commit-pr, says "commit and push", "open a PR", "ship this", asks to update an existing PR with new changes, or asks to resolve PR review comments in the…
$ npx skills add samuelclay/NewsBlur --skill commit-pr -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install samuelclay/NewsBlur commit-pr --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/samuelclay/NewsBlur.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/commit-pr .claude/skills/commit-pr && 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 "commit-pr" agent skill from https://github.com/samuelclay/NewsBlur/tree/main/.agents/skills/commit-pr into .claude/skills/commit-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit-pr", 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/samuelclay/NewsBlur/tree/main/.agents/skills/commit-prType 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 samuelclay/NewsBlur --skill commit-pr -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install samuelclay/NewsBlur commit-pr --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/samuelclay/NewsBlur.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/commit-pr .agents/skills/commit-pr && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "commit-pr" agent skill from https://github.com/samuelclay/NewsBlur/tree/main/.agents/skills/commit-pr into .agents/skills/commit-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit-pr", 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 samuelclay/NewsBlur --skill commit-pr -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install samuelclay/NewsBlur commit-pr --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/samuelclay/NewsBlur.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/commit-pr .cursor/skills/commit-pr && 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 "commit-pr" agent skill from https://github.com/samuelclay/NewsBlur/tree/main/.agents/skills/commit-pr into .cursor/skills/commit-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit-pr", 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/samuelclay/NewsBlur.git --path .agents/skills/commit-pr--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 samuelclay/NewsBlur --skill commit-pr -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install samuelclay/NewsBlur commit-pr --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/samuelclay/NewsBlur.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/commit-pr .gemini/skills/commit-pr && 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 "commit-pr" agent skill from https://github.com/samuelclay/NewsBlur/tree/main/.agents/skills/commit-pr into .gemini/skills/commit-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit-pr", 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 samuelclay/NewsBlur commit-prInstalls 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 samuelclay/NewsBlur --skill commit-pr -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/samuelclay/NewsBlur.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/commit-pr .github/skills/commit-pr && 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 "commit-pr" agent skill from https://github.com/samuelclay/NewsBlur/tree/main/.agents/skills/commit-pr into .github/skills/commit-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit-pr", 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 samuelclay/NewsBlur --skill commit-pr -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install samuelclay/NewsBlur commit-pr --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/samuelclay/NewsBlur.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/commit-pr .opencode/skills/commit-pr && 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 "commit-pr" agent skill from https://github.com/samuelclay/NewsBlur/tree/main/.agents/skills/commit-pr into .opencode/skills/commit-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "commit-pr", 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.
commit-prA skill your agent uses when the user runs /commit-pr, says "commit and push", "open a PR", "ship this", asks to update an existing PR with new changes, or asks to resolve PR review comments in the…
Commit PR is an agent skill from samuelclay/NewsBlur. Use when the user runs /commit-pr, says "commit and push", "open a PR", "ship this", asks to update an existing PR with new changes, or asks to resolve PR review comments in the NewsBlur repo. Commits, opens or updates the PR, pre-flights what CI runs, then stays on the PR until it is verifiably clean: marked ready for review, green required checks, and zero unresolved Claude/Codex review threads on the current head. Other skills (investigate-forum) call this for the push-to-clean-PR loop instead of repeating it.
Its SKILL.md is about 4.1k 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, covering Pull requests. It works with Android and iOS. The repository describes itself as: NewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c51f6da. 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.
Shell commands in SKILL.md call:
ghgitmakedockerpythonclaudecodexFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
claude.comFrom 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.
Commit PR loads about 4.1k tokens when it runs. Until then it costs about 132 tokens; SKILL.md has 2,200 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); files beside SKILL.md are not scanned.
The full file from samuelclay/NewsBlur at commit c51f6da, republished under its MIT licence (© samuelclay). 2,200 words, ~4,115 tokens.
.claude/skills/commit-pr/SKILL.md (or your agent's skills folder).Commit pending changes and open or update a PR, then watch CI and the automated review bots through to green and resolved. Adapted for NewsBlur from the Tavus skillshare commit-pr skill; the CI and review-thread loop is the same, the repo specifics are NewsBlur's.
The goal is a verified-clean PR, not a pushed branch. Immediately before ending the turn, re-run the live checks and confirm all of the following on the current head SHA:
gh pr checks).Review-task state, not a fixed delay, decides when the review wait is over. Ending the turn while a review workflow is queued or running, or while an unresolved automated review thread exists, is a failure of this skill. If no review check is pending for the current head, run the final thread query immediately; do not wait out a timer. Every wait is on a known action: each pending check belongs to a workflow whose recent run durations are queryable (section 5), so size the wait from that record, never from a guessed interval.
If genuinely blocked (a review check is stuck, CI is broken by something outside this PR, a comment needs a decision only Sam can make), end the turn by stating exactly what is unresolved and why. Never imply the PR is clean when the final verification did not run or did not pass.
| Thing | Value |
|---|---|
| Repo | samuelclay/NewsBlur, default branch main |
| PR template | none; use the body the caller supplies, else the generic default at the bottom |
| CI on pull requests | tests.yml (Django Tests, job test), ios-actions.yml (iOS Tests), android-actions.yml (Android Tests) |
| Review bots on pull requests | claude-pr-review.yml (Claude PR Review) and codex-pr-review.yml (Codex PR Review); both run on open, reopen, ready_for_review, and every synchronize. Each posts its top-level summary once, on the PR's first review; later pushes add inline threads only, or nothing when clean |
| Commit subjects | Plain imperative sentence, no conventional prefix (Fix, Add, Never ration ...). Match git log --oneline -10. |
| Commit trailers | The attribution lines from the current session's system reminder (Co-Authored-By, Claude-Session) |
| PR footer | 🤖 Generated with [Claude Code](https://claude.com/claude-code) then the session URL, per the session reminder |
| Labels | Whatever the caller asks for (forum for forum-triage PRs) |
| Python style | Black line length 110, isort profile black, flake8 |
| Tests | Run inside Docker: docker exec -t newsblur_web[_<worktree>] python manage.py test <scope> --noinput -v 1. Never a local Python. |
| Worktrees | Feature work lives in .worktree/<branch> with containers newsblur_*_<branch>; see CLAUDE.md |
git rev-parse --show-toplevel
git branch --show-current
ls .github/workflows/Cache these for the run. If the branch is main, stop: propose a branch name and create it before committing (see Notes).
Visual evidence for UI changes. If the change is visible on screen, capture before/after screenshots and attach them with gh pr create --attach 'path.png#Alt text' (or gh pr edit --attach on an existing PR; gh 2.99+ uploads and rewrites the body). For a web change the headless helper .agents/skills/investigate-forum/screenshot.py captures a logged-in worktree stack without a browser; the claude-in-chrome tools work too when Sam has asked for browser use. Backend-only PRs show the failing-then-passing test output instead.
Django Tests runs python manage.py test apps (see tests.yml); locally run the modules the diff touches, from the worktree's own web container:
docker exec -t newsblur_web_<worktree> python manage.py test apps.<app>.<module>.<TestClass> --noinput -v 1
docker exec -t newsblur_web_<worktree> sh -c "black --check --line-length 110 <changed .py files>; isort --check-only --profile black <changed .py files>; flake8 --max-line-length 110 --select=E9,F63,F7,F82,F821 <changed .py files>"If the worktree stack is stopped, make worktree from the worktree brings it back. iOS and Android changes follow the build commands in CLAUDE.md and clients/ios/CLAUDE.md; at minimum the compile-only check must pass. Fix failures before committing.
Group modified files by logical change into separate commits. Stage specific files per commit, not git add -A, so stray files never ride along. Subject: one imperative sentence that says what changes for a user or reader, with the forum topic in parentheses when there is one, for example Never ration a forbidden feed shared by active readers by their proxy budget (forum #13832). Body: why, wrapped at 72 characters, then the attribution trailers. Make all commits first, then push once.
git push -u origin "$(git branch --show-current)" # first push
git push # after thatIf the branch is behind main, rebase (git pull --rebase origin main), never merge. Never force-push a PR branch unless Sam explicitly asks.
gh pr view --json number,title,url,isDraft 2>/dev/nullNo PR yet: create it as a draft with the caller's body (or the generic default below), title equal to the main commit subject, at most 70 characters, no trailing period, and any requested labels:
gh pr create --draft --label forum --title "<title>" --attach "screenshots/before.png#Before" --attach "screenshots/after.png#After" --body "$(cat <<'EOF'
<body>
EOF
)"Draft keeps early CI churn out of the review queue; section 5.5 promotes it in this same run.
PR exists: the push already updated it. Edit the body only if the scope changed (gh pr edit <n> --body ...).
Write the body for a reviewer walking in cold: what changed and why, what to check, exact test commands with before and after output, deploy notes (make deploy, make celery, or both; migrations; Celery restart). Cut author process notes.
gh pr checks --watchSize waits from the workflows' own history, not a guessed timer:
gh run list --workflow=tests.yml --status completed --limit 5 --json startedAt,updatedAt,conclusionRun the watch in the background or check back near the expected finish; check state ends the wait, never elapsed time. Never end the turn while a check is queued or running.
If a check fails:
gh run view <run-id> --log-failed | grep -E "FAIL:|ERROR:|Traceback|AssertionError|FAILED \(".main at the merge base (gh run list --branch main --limit 10 --json name,conclusion,headSha), which is fixed when small and self-contained, such as a test that depends on DNS or a missing mock, and otherwise reported; or a transient failure (network, runner), which gets gh run rerun <run-id> --failed.Known NewsBlur failure mode: test_*_records_no_error style tests in Test_ScrapingBeeProxy fail on the GitHub runner when a test feed's hostname cannot be resolved, because FetchFeed.fetch records a 401 before the path under test. The fix is @patch("utils.feed_fetcher.validate_public_url") on the test.
Local gate before every push that touches apps/rss_feeds/models.py, apps/reader/models.py, or utils/feed_fetcher.py: the full apps suite, not just the touched module, since those files reach every app. Run it in the foreground (a run started with run_in_background is killed under host memory pressure; a foreground run that outlives its window is moved to the background and survives). Never run two test invocations against the same worktree at once: they collide on the test database and the second stalls on DROP DATABASE. Stop the worktree stack (make worktree-stop) while waiting on CI and start it again for the next round.
The Django CI job aborts the test step at 7 minutes (timeout --signal=ABRT 420). The suite takes 3 to 4 minutes on a normal runner and the faulthandler dump shows where it was; if the abort hit the suite still progressing normally, the runner was slow: rerun once before looking for a cause.
The Claude review check (claude-review) currently fails on every PR before any model output (is_error:true, one turn, zero cost: its API call is rejected). The action also skips itself on any PR that changes its own workflow file, so a workflow fix only shows on the next PR after it merges. Report it, do not chase it, and do not treat it as a blocker when Sam says the rest is green.
As soon as every required check on the current head is green:
gh pr ready <number>Promotion is on this run's critical path. The review bots skip drafts, so marking ready is what starts their first run; the fix pushes that follow trigger them again through synchronize. Two exceptions: Sam asked for a draft this run, or CI cannot reach green because of a blocker outside this PR (report it, do not promote a red PR).
After every push that changes the head SHA, inspect the checks on that head:
gh pr checks --json name,workflow,bucket,state,linkClaude PR Review and Codex PR Review are the automated review tasks. While either has bucket: pending, wait for it the way section 5 waits (their recent durations come from gh run list --workflow=claude-pr-review.yml and codex-pr-review.yml; Codex normally takes 3 to 9 minutes). When neither is pending for the current head, the review wait is over: query the threads once more and handle what they posted.
Review threads, not flat PR comments, are the source of truth. New threads are appended, so query the tail (last: 100); with first: 100 a PR that reaches its hundred-and-first thread hides every new one, which happened on #2133 at exactly 100.
PR=$(gh pr view --json number -q .number)
gh api graphql -F owner=samuelclay -F repo=NewsBlur -F number="$PR" -f query='
query($owner: String!, $repo: String!, $number: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $number) {
reviewThreads(last: 100) {
totalCount
nodes {
id
isResolved
comments(first: 20) { nodes { databaseId author { login } body path line url } }
}
}
}
}
}'Unresolved threads whose author is a bot (github-actions[bot], claude[bot]) or whose body names Claude or Codex are the ones to clear. If Sam asked to resolve all comments, include human threads too.
For each actionable thread:
databaseId; gh api takes no -R flag:gh api repos/samuelclay/NewsBlur/pulls/$PR/comments -F in_reply_to="$COMMENT_DATABASE_ID" -f body="Fixed in <sha>. ..."
gh api graphql -f id="$THREAD_ID" -f query='
mutation($id: ID!) { resolveReviewThread(input: { threadId: $id }) { thread { id isResolved } } }'Resolve without a code change only when the comment is wrong, stale, or already addressed by the current diff, and say why in a short reply. A comment that needs a product decision goes to Sam through AskUserQuestion; do not guess.
After any follow-up push, repeat the review-task check for the new head, wait only while a review task is pending, then gh pr checks --watch again.
Round cap. Three review rounds per PR. If the fourth round opens new threads, stop and ask Sam with AskUserQuestion, with the size of the PR next to the size of its first commit, whether to continue, split the PR, or merge with the new findings as follow-up issues. Ask sooner when a round's findings are all second-order races in code this PR itself introduced (a bug fix that has grown locks, leases, queues, or a new store is a subsystem, which is a product decision, not a review thread). Codex at medium thinking (its setting since #2136) keeps finding a real but ever finer edge on a growing surface; #2133 ran seventeen rounds and 102 threads before Sam called it, and the loop was not converging. When Sam closes the loop, say so in the PR body's review section so the next reader knows further findings are follow-ups.
Final verification, mandatory, immediately before ending the turn: re-run the thread query and gh pr checks against the current head and confirm the Goal holds. If not, keep working or report the blocker explicitly.
Only when Sam says so in that session; the skill never merges on its own. The repo uses merge commits, not squashes.
gh pr view N --json state,mergedBy); a commit pushed to a branch after its PR merged is not on main and needs its own PR.gh pr merge N --merge. When GitHub answers that the merge commit cannot be created, bring the branch up to date in its worktree with git merge origin/main (a merge, not a rebase: the branch has been reviewed as it is), resolve, run the touched app's suite (the full apps suite when models or the fetcher changed), push, then merge.main's new top-level classes whole, and check the merged file's class set is the union of both parents and that a class edited on both sides ends up as main's superset.## Summary
<1 to 3 bullets: what changed and what behavior reviewers should expect>
## Context
<What was true before this PR, who it affected, and any forum topic, issue, or constraint a reviewer needs before reading the diff>
## Test plan
- [ ] <exact command and result>
- [ ] <before/after evidence>
## Deploy notes
<make deploy, make celery, or both; migrations; Celery restart>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<session url>main. If on main, create a branch (<short-description> or forum-<id>-<slug> for forum work) before committing.--no-verify and never force-push a PR branch unless Sam explicitly asks.© samuelclay, 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 .agents/skills/commit-pr of samuelclay/NewsBlur.
Open the folder on GitHubat commit c51f6da
Commit PR 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 |
|---|---|---|---|---|---|---|
| Commit PR this skillsamuelclay/NewsBlur | 7.6k | — | ~4.1k | Automated safety check: Pass | MIT | |
| PR Stackr0adkll/Campfire | 139 | — | ~1.7k | Automated safety check: Pass | GPL-3.0 | |
| Grix Code Reviewaskie/grix | 153 | — | ~799 | Automated safety check: Pass | Custom licence | |
| Tlon Workflowtloncorp/tlon-apps | 107 | — | ~8.9k | Automated safety check: Notes | MIT | |
| Open PRossappscollective/oss-weather | 456 | — | ~918 | Automated safety check: Pass | MIT | |
| PR Proofmrzmyr/pixy-mood-tracker-app | 153 | — | ~571 | Automated safety check: Pass | MIT |
r0adkll/Campfire
Open, describe, and maintain pull requests in Campfire, especially stacks of dependent PRs (each branch built on the one before).
askie/grix
Audit Grix diffs and pull requests for correctness, regressions, security, lifecycle safety, and cross-component contract consistency.
tloncorp/tlon-apps
A skill your agent uses when taking a Tlon Messenger task from a fresh worktree to a merged pull request: reproducing or fixing something in the iOS, Android or web app, validating it on a…
ossappscollective/oss-weather
MANDATORY skill for ALL pull requests. An agent skill from ossappscollective/oss-weather.
mrzmyr/pixy-mood-tracker-app
Upload screenshots or videos to a PR body. An agent skill from mrzmyr/pixy-mood-tracker-app.
hyochan/react-native-nitro-sound
A skill your agent uses for react-native-nitro-sound repository work that should follow the project workflows for PR review, code audit, knowledge compilation, full verification, iOS or Android…
samuelclay/NewsBlur
Design engineering principles for making interfaces feel polished.
samuelclay/NewsBlur
Manage your NewsBlur from the terminal. An agent skill from samuelclay/NewsBlur.
samuelclay/NewsBlur
Triage the NewsBlur support forum (forum.newsblur.com). An agent skill from samuelclay/NewsBlur.
samuelclay/NewsBlur
Write a blog post for a new feature based on the current branch changes
Categories
A skill your agent uses when the user runs /commit-pr, says "commit and push", "open a PR", "ship this", asks to update an existing PR with new changes, or asks to resolve PR review comments in the…. Commit PR is an agent skill from samuelclay/NewsBlur. Use when the user runs /commit-pr, says "commit and push", "open a PR", "ship this", asks to update an existing PR with new changes, or asks to resolve PR review comments in the NewsBlur repo.
Commit PR fits situations like: the user runs /commit-pr; says commit and push; asks to update an existing PR with new changes; asks to resolve PR review comments in the NewsBlur repo.
Run `npx skills add samuelclay/NewsBlur --skill commit-pr -a claude-code`. Or copy the skill folder (.agents/skills/commit-pr in samuelclay/NewsBlur) into .claude/skills/commit-pr in your project. Claude Code loads it when a task matches its description.
Run `npx skills add samuelclay/NewsBlur --skill commit-pr -a codex`. Or copy the skill folder (.agents/skills/commit-pr in samuelclay/NewsBlur) into .agents/skills/commit-pr 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 samuelclay/NewsBlur --skill commit-pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/commit-pr, .gemini/skills/commit-pr, .github/skills/commit-pr and .opencode/skills/commit-pr in your project.
Going by SKILL.md and its folder, Commit PR needs the command-line tools its instructions call (gh, git, make, docker, python and claude). Our summary lists: Python 3; Docker.
SKILL.md names 1 domain. In commands or code: claude.com; the agent is likely to contact it when it follows the instructions. 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. Review the folder before installing.
Commit PR 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 Commit PR: PR Stack (r0adkll/Campfire, 139 stars), Grix Code Review (askie/grix, 153 stars), Tlon Workflow (tloncorp/tlon-apps, 107 stars) and Open PR (ossappscollective/oss-weather, 456 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
samuelclay (a GitHub user) maintains it in samuelclay/NewsBlur, which has 7,643 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.
Source: samuelclay/NewsBlur on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.