shepherd-pull-requests
Run one merge-shepherd tick from the hub over this repository's open pull requests: fast-forward main, arm auto-merge, merge main into behind branches, judge…
Skill by EJRyan89
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ejryan89-shepherd-pull-requests-7ff8cd
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
shepherd-pull-requests- Description
- Run one merge-shepherd tick from the hub over this repository's open pull requests: fast-forward main, arm auto-merge, merge main into behind branches, judge each red Validation check as a rerun or a defect, and name each merged worktree to retire.
- License
- MIT
- Instructions
- 35 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- allowed-tools: must be a space-separated string
Files (3)
- SKILL.md
- shepherd_pull_requests.py · scripts/
- test_shepherd_pull_requests.py · scripts/
SKILL.md (first lines)
# Shepherd pull requests One tick keeps the open pull requests merging. `.claude/skills/shepherd-pull-requests/scripts/shepherd_pull_requests.py` does every deterministic step, and its docstring lists every line. Your part is the messages, the judgment it leaves you, and the hand-off to `repo-cleanup`. ## 1. Run the tick From the hub on `main`, in the hub's own session: ```bash python -B .claude/skills/shepherd-pull-requests/scripts/shepherd_pull_requests.py python -B .claude/skills/shepherd-pull-requests/scripts/shepherd_pull_requests.py --dry-run ``` The second form lists and judges and writes nothing. From anywhere else, such as a worktree, run only that one; its `HUB` line says the hub is left to the hub's own session. Never rebase or force-push a pull request's branch, and never update a behind pull request the tick left `next-tick`: it updates one at a time, since an update cancels the run in flight on the branch it updates. The tick admits only pull requests whose head branch is in this repository. One from any other repository, such as a fork, is never armed, judged, updated, or rerun, and holds no other pull request's update; merging it stays the maintainer's call. Never arm one by hand either. ## 2. Act on the lines - `NOT_ADMITTED #<number> <branch> head <commit> from another repository`: a pull request the tick does not admit. Tell the user once per head, naming the pull request; never message a session about it or act on it. - `DEFECT #<number> <branch> leg "<leg>" check "<check>"`: a failure of the change. Message the session whose worktree holds `<branch>`, naming the pull request, the leg, and the check, once per head; it fixes the cause. When no session holds the branch, tell the user. Never fix it here. - `OUT_OF_STEP #<number> <branch>`: GitHub missed a push to `<branch>`, so the pull request records an older head and can be neither judged nor updated. Message the session whose worktree holds `<branch>` to merge `origin/main` and push, once per head; when no session holds it, tell the user, since closing and reopening the pull request is the maintainer's call. - `CONFLICT #<number> <branch>`: the pull request conflicts with `main`, which only its owner can resolve. Message the session whose worktree holds `<branch>` to merge `origin/main`, resolve the conflict, and push, once per head; when no session holds it, tell the user. - `RERUN_SPENT`: a rerun case on a head already rerun once. Read the run's failed log, `gh run view <run> --log-failed`, and decide: when the failure is plainly the runner's or a service's, not the change's, rerun it with `gh run rerun <run> --failed`; otherwise treat it as a defect. A `DEFECT` whose log shows such a failure is the same call. - `HOLD #<number> changes <path>`: every other pull request's update waits until that one merges. Say so when you report. - `HELD #<number> <branch> "<reason>"`: a `Shepherd-hold: <reason>` line in the pull request's body keeps it unarmed. Say so when you report; deleting the line releases it, as "An orchestrator and a shepherd" in `docs/parallel-sessions.md` says. - `HUB "<path>" not fast-forwarded: <reason>` from a tick in the hub: the hub is off `main`, has a tracked change, diverged, or could not fetch. Tell the user the reason; the next tick tries again. - `PR_FAILED`, `MERGED_FAILED`, or a last line `FAILED <reason>`: report the reason; the next tick tries again. - `REMAINING 0`: no pull request is open. Stop whatever repeats the tick, such as a scheduled prompt. `JUDGED`, `RERUN`, `PR`, and any other `HUB` lines, such as one from a linked worktree, need nothing from you, nor do `REPOSITORY <owner>/<name>`, the repository the tick reads, and `DRY_RUN`, which opens a `--dry-run` tick. ## 3. Review each head The pre-merge review is report-only: it never holds, disarms, or delays a pull request. The tick reads this machine's code-review archive and names each admitted head in step, not in conflict, and with a check neither red nor missing: - `REVIEW_DUE #<number> ...`: no `review-repository` review covers the head yet. The tick also prints one `REVIEW_ARGUMENTS <arguments>` line covering every due head. From the hub's own session only, invoke `review-prs` through the `Skill` tool once with exactly those arguments. The record it writes covers each head from the next tick on, so a tick without that line starts no review. - `REVIEWED #<number> <branch> head <commit> <version> <verdict> report "<report>"`, `report none` when a legacy review's report is gone, and `carried from <commit>` when only merges followed the reviewed head: a review covers the head. The first time a head's record appears, tell the orchestrating session and the session whose worktree holds the branch its verdict and report path, and that each SHOULD FIX needs its disposition. Never post a report or a finding on the pull request: a public text passes a scan this skill cannot run, so the orchestrating session relays the findings and posts any summary itself. - A pull request `review-prs` fails stays due. Try it again on the next tick, at most once per head, then tell the user. - `REVIEW_UNREAD <reason>`: tell the user once. The review needs the configuration entry "Configure" in the `review-repository` repository skill gives. ## 4. Hand off each merge Each `MERGED #<number> worktree "<path>" branch <branch>` names a worktree whose pull request merged, matched by the commit it has checked out and never by its branch's name, and each local branch to delete: one `branch <branch>` for the worktree's own, and another for the pull request's when one of that name holds a commit it carried. First confirm that no live session still works in `<path>` or on a named branch, and archive the owning session once it is idle. Then invoke the `repo-cleanup` skill on the hub, from a session that is not inside `<path>`; it proves the merge again before it removes the worktree and deletes each branch, and offers one it cannot prove, such as an unpushed worktree branch.
From EJRyan89/coding-agent-skills, MIT.
More from EJRyan89/coding-agent-skills
- 0.599score
audit-ai-config
EJRyan89
Read-only assessment of a repository's AI agent configuration for Claude Code, Codex, and Copilot that reports findings and never writes files.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
dotnet-dependencies
EJRyan89
Answer why a package or assembly is in a legacy or SDK-style C# solution, which projects reference an assembly, and where versions and binding redirects…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
curate-agent-memory
EJRyan89
Audit and clean up Claude Code auto-memory for a project: find stale, duplicated, or misplaced memories, move durable rules to their proper home, and apply…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
dotnet-format
EJRyan89
Run dotnet format (whitespace + style + analyzers) and region layout checks on C# files changed on the current branch and optionally auto-fix violations.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
audit-skill
EJRyan89
Audit an agent skill's contract, grants, and cost: whether its Markdown names the lines and exit codes its scripts print, its allowed-tools grants and…
SkillAFreshness: A★ 2Claude Code +9 - 0.592score
ejryan89-code-review-core
EJRyan89
Internal support for the code-review operations bundle.
SkillAFreshness: A★ 2Claude Code +9 - 0.589score
evaluate-skill
EJRyan89
Run a skill's fixed scenarios on each model from throwaway homes, once or several times, and judge each record by script: a review's, or whether a request…
SkillAFreshness: A★ 2Claude Code +9 - 0.589score
implement-change
EJRyan89
Procedure for making a change in a repository that publishes an implementation profile (docs/implementing-changes.md), from the worktree and the plan to the…
SkillAFreshness: A★ 2Claude Code +9 - 0.589score
change-skill
EJRyan89
Procedure for adding or changing a skill in this repository, shipped under skills/ or repository-only under .claude/skills: its SKILL.md, scripts, metadata…
SkillAFreshness: A★ 2Claude Code +9 - 0.586score
shepherd-pull-requests
EJRyan89
Run one merge-shepherd tick from the hub over this repository's open pull requests: fast-forward main, arm auto-merge, merge main into behind branches, judge…
SkillAFreshness: A★ 2Claude Code +9 - 0.586score
review-repository
EJRyan89
This repository's own pull request reviewer: a specialists manifest that routes the deployer, the skills, the validation policies, the trust-boundary files…
SkillAFreshness: A★ 2Claude Code +9 - 0.586score
runtime-canary
EJRyan89
Check that Claude Code, Codex, and Copilot CLI find and run deployed skills, by deploying this checkout into a throwaway home and starting each runtime there.
SkillAFreshness: A★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 4
- Open issues
- 93
- Last commit (this folder)
- Oct 24, 2026 (5 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/EJRyan89/coding-agent-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from EJRyan89
- 0.599score
curate-agent-memory
EJRyan89
Audit and clean up Claude Code auto-memory for a project: find stale, duplicated, or misplaced memories, move durable rules to their proper home, and apply…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
dotnet-dependencies
EJRyan89
Answer why a package or assembly is in a legacy or SDK-style C# solution, which projects reference an assembly, and where versions and binding redirects…
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
audit-ai-config
EJRyan89
Read-only assessment of a repository's AI agent configuration for Claude Code, Codex, and Copilot that reports findings and never writes files.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
dotnet-format
EJRyan89
Run dotnet format (whitespace + style + analyzers) and region layout checks on C# files changed on the current branch and optionally auto-fix violations.
SkillAFreshness: A★ 2Claude Code +9 - 0.599score
audit-skill
EJRyan89
Audit an agent skill's contract, grants, and cost: whether its Markdown names the lines and exit codes its scripts print, its allowed-tools grants and…
SkillAFreshness: A★ 2Claude Code +9 - 0.592score
ejryan89-code-review-core
EJRyan89
Internal support for the code-review operations bundle.
SkillAFreshness: A★ 2Claude Code +9
Cite this page
shepherd-pull-requests skill. Agent Mart. https://agentmart.dev/skills/ejryan89-shepherd-pull-requests-7ff8cd (last updated 2026-10-24)