con un clic
pr-shepherd
Shepherd a PR through CI and review feedback until it's green and approved
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Shepherd a PR through CI and review feedback until it's green and approved
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Land a branch on the canonical forge using git.pikachat.org and ph. Use when the user asks to upstream, land, merge, submit, or finish a branch; when an agent should push a branch, wait for forge CI, inspect failures, and merge it; or when the user wants the old GitHub-PR landing workflow replaced with the forge-native one.
Orchestrate multi-step cleanup, migration, or refactor work across pika worktrees using one integration branch, bounded subagents, explicit write ownership, forge-native landing, and project-specific safety rules for staged Linux remote runs.
Write, review, or improve SwiftUI code using native semantic UI components, strong state management, performance-conscious composition, and deliberate iOS 26+ Liquid Glass adoption. Use when building new SwiftUI features, refactoring existing views, reviewing code quality, or adopting modern SwiftUI patterns.
Run E2E UI tests with screen recording and upload videos to blossom
Write, review, or improve Jetpack Compose UI using Material Design 3, adaptive layout/navigation patterns, and modern Compose state/performance practices. Use when building new Android Compose screens, refactoring existing Compose code, auditing M3 theming, adapting UI for tablets/foldables, or aligning implementation with official Android guidance and the Reply sample app.
| name | pr-shepherd |
| description | Shepherd a PR through CI and review feedback until it's green and approved |
| allowed-tools | Bash, Read, Grep, Glob, Edit, Write, Agent, WebFetch, Skill |
Shepherd a PR through CI checks and review feedback. Monitors CI, fixes build failures, addresses reviewer comments, and repeats until the PR is green with no unaddressed feedback.
Takes an optional PR number argument; defaults to the current branch's PR.
Pre-flight (once) → Main Loop (repeat) → Final Validation → Exit Report
Before entering the main loop, ensure the branch is up to date and builds cleanly.
git fetch origin
git rebase origin/master
If there are conflicts, fix them, git rebase --continue, commit, and push.
git diff --name-only origin/master...HEAD
Cargo.toml, Cargo.lock, crates/**, UniFFI/bindings generation, or anything else that changes shared Rust artifacts, run:
nix develop -c just qa
just ios-build-swift-sim
For UI behavior changes, also prefer just run-swift --sim and manual QA.just android-assemble
git push --force-with-lease
Only proceed to the main loop once the required validation lane(s) are green.
Repeat until done:
Exit when: all CI checks pass AND no unaddressed review comments remain.
Escalate to the user when:
PR=${1:-$(gh pr view --json number -q .number)}
gh pr view $PR --json number,title,body,headRefName,url,statusCheckRollup
Poll until all checks complete (no "pending" or "queued" statuses remain):
gh pr checks $PR --watch
If --watch isn't available, poll manually:
gh pr checks $PR
Repeat every 30 seconds until all checks show a final state.
If any check failed:
# List failed checks
gh pr checks $PR --json name,state,conclusion --jq '.[] | select(.conclusion == "FAILURE" or .conclusion == "failure")'
# Get the run ID and fetch logs
gh run list --branch $(gh pr view $PR --json headRefName -q .headRefName) --status failure --json databaseId,name -q '.[0].databaseId'
gh run view <run_id> --log-failed 2>/dev/null | tail -200
Classify the failure:
cargo fmt, fix clippy warnings.gh run rerun <run_id> --failed
After fixing, commit and push (Step 5), then go back to Step 2.
Limit: If you've attempted the same CI failure 2 times without progress, escalate to the user.
Delegate review handling to a subagent using the Agent tool so the main context stays clean:
Agent(subagent_type="general-purpose", prompt="Fetch all PR feedback for $PR: PR comments, inline review comments, and review verdicts. Prioritize human reviewers first, then Devin, then CodeRabbit. Skip resolved threads, status-only bot comments, and comments on code that no longer exists. Address actionable feedback, batch fixes when sensible, reply to addressed comments, and for disagreements reply with rationale signed 'claude'. Return a summary of what was fixed, what was skipped with rationale, and what needs the user's decision.")
Priority rules for the subagent:
devin-ai[bot] / devin-ai-integration[bot]): address unless it conflicts with human feedback.coderabbitai[bot]): address real bugs and clear improvements; skip churny nitpicks.# If Rust/shared code changed:
cargo fmt -p pikachat -p pika_core 2>/dev/null || true
git add <specific files>
git commit -m "fix: <description>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>"
git push
Then go back to Step 1.
If any code changes were made during the loop, re-run git diff --name-only origin/master...HEAD and execute every validation lane that now matches the touched surface before reporting success. Use nix develop -c just qa for Rust/shared scope, just ios-build-swift-sim for iOS/Swift changes, and just android-assemble for Android changes.
For visual verification of UI changes, record per-platform E2E test videos using the /e2e-video skill and upload them to blossom for the PR description.
Exit successfully when:
Exit without further action when:
Exit with escalation to user when:
Exit with failure report when:
On exit, always report:
https://github.com/sledtools/pika/pull/$PR) — always include this so the user can find it easilygh issue create if they say yes.