PR Babysitter
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
Local PR watcher. An agent skill from SethGammon/Citadel.
$ npx skills add SethGammon/Citadel --skill pr-watch -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install SethGammon/Citadel pr-watch --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/SethGammon/Citadel.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/pr-watch .claude/skills/pr-watch && 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-watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/pr-watch into .claude/skills/pr-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-watch", 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/SethGammon/Citadel/tree/main/skills/pr-watchType 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 SethGammon/Citadel --skill pr-watch -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install SethGammon/Citadel pr-watch --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/pr-watch .agents/skills/pr-watch && 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-watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/pr-watch into .agents/skills/pr-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-watch", 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 SethGammon/Citadel --skill pr-watch -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install SethGammon/Citadel pr-watch --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/pr-watch .cursor/skills/pr-watch && 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-watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/pr-watch into .cursor/skills/pr-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-watch", 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/SethGammon/Citadel.git --path skills/pr-watch--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 SethGammon/Citadel --skill pr-watch -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install SethGammon/Citadel pr-watch --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/pr-watch .gemini/skills/pr-watch && 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-watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/pr-watch into .gemini/skills/pr-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-watch", 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 SethGammon/Citadel pr-watchInstalls 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 SethGammon/Citadel --skill pr-watch -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/pr-watch .github/skills/pr-watch && 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-watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/pr-watch into .github/skills/pr-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-watch", 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 SethGammon/Citadel --skill pr-watch -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install SethGammon/Citadel pr-watch --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SethGammon/Citadel.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/pr-watch .opencode/skills/pr-watch && 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-watch" agent skill from https://github.com/SethGammon/Citadel/tree/main/skills/pr-watch into .opencode/skills/pr-watch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-watch", 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-watchLocal PR watcher. An agent skill from SethGammon/Citadel.
PR Watch is an agent skill from SethGammon/Citadel. Local PR watcher. Monitors CI status, automatically fixes failing checks by reading failure logs and applying targeted fixes, then optionally merges when all checks pass. Local CLI analog to Claude Code's cloud auto-fix feature.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files (for example `__benchmarks__/ci-watch-and-fix.md`, `__benchmarks__/gh-not-available.md` and `__benchmarks__/no-gh-auth.md`).
It sits in Development. It works with GitHub. The repository describes itself as: The operating layer for Claude Code + OpenAI Codex: persistent project memory, intent routing, safety hooks, cost telemetry, and parallel agent fleets. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e41ff1d. 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:
gitnodeghbrewFrom 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 Watch loads about 2.3k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 949 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 SethGammon/Citadel at commit e41ff1d, republished under its MIT licence (© SethGammon). 949 words, ~2,281 tokens.
.claude/skills/pr-watch/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.You are the PR watcher. You monitor a pull request's CI status, fix failing checks by reading failure logs and applying targeted fixes, and optionally merge when green.
This is the local CLI analog to Claude Code's cloud auto-fix feature. Use it when you want CI watch/fix behavior from the terminal without switching to web or mobile.
Don't use when: monitoring local file changes (use /watch); reviewing code quality (use /review); triaging multiple issues at once (use /triage).
/pr-watch — watch the PR for the current branch/pr-watch 42 — watch PR #42 specifically/triage creates a fix PR and you want to stay in the terminalIf you have the Claude GitHub App installed, use cloud auto-fix in Claude Code web or mobile — it survives machine sleep. Toggle Auto fix ON in the PR view. Use /pr-watch for in-terminal sessions.
In Codex, prefer the native PR review and automation surfaces when they fit:
node scripts/codex-pr-review.js plan --repo <owner/repo> --pr <number> --risk medium --write
node scripts/codex-automation.js plan --type pr-watch --command "/pr-watch <number>" --cadence "every 15 minutes" --writeUse @codex review for GitHub-visible review findings, then keep Citadel responsible for local verification, CI log fixes, merge readiness, and .planning/pr-review/ state.
If .planning/ does not exist, create it before writing PR review or automation state.
When Codex has already reviewed the PR, ingest its review output before polling or merging:
node scripts/codex-review-fetch.js --repo <owner/repo> --pr <number> --writeUse --file <review-comments.json> with the same script when working from exported/offline review data.
| Input | Source | Required |
|---|---|---|
| PR number | Argument (e.g., /pr-watch 42) | No — auto-detects from current branch |
| Repo | Auto-detected from git remote | Yes (auto) |
| gh CLI | "/c/Program Files/GitHub CLI/gh.exe" on Windows, gh otherwise | Yes (auto) |
"/c/Program Files/GitHub CLI/gh.exe"gh$GHgit remote get-url origin. Extract owner/repo.$GH pr view --json number --jq '.number' (PR for current branch)$GH pr view <number> --repo <owner/repo> --json number,title,url,headRefName,baseRefName,state,mergeableWatching PR #<N>: <title>
Branch: <head> → <base>
URL: <url>fix_attempts = 0, max_fix_attempts = 3Repeat until convergence or circuit break:
$GH pr checks <number> --repo <owner/repo>Parse the output to identify check names, states (pass, fail, pending), and detail URLs.
| Condition | Action |
|---|---|
| All checks passing | → Phase 2 (offer merge) |
| Any checks pending | Print "Waiting for checks... (N pending)". Wait 60 seconds. Loop. |
| Any checks failed | → Step 1.3 (investigate and fix) |
| PR closed or merged | Exit. Print "PR #<N> is already closed/merged." |
For each failed check:
1. Get the run ID:
$GH run list --repo <owner/repo> --branch <headRefName> --limit 5 \
--json databaseId,status,conclusion,workflowName2. Read failure logs:
$GH run view <run-id> --repo <owner/repo> --log-failed3. Identify failure class and fix strategy:
| Failure class | Signal in logs | Fix strategy |
|---|---|---|
| TypeScript errors | error TS | Fix the specific TS errors in named files |
| Test failures | FAIL, assertion errors, Expected vs Received | Fix assertion or the code under test |
| Lint errors | rule names, @typescript-eslint/, eslint | Fix the specific violations |
| Build errors | Cannot find module, SyntaxError, missing exports | Resolve imports, configs |
| Missing env / secrets | undefined, auth failures in setup steps | Surface to user — not fixable from code |
| Infrastructure failure | Step itself failed (e.g., actions/checkout), network | Surface to user — not fixable from code |
4. Apply fix:
5. Commit and push:
git add <only changed files>
git commit -m "fix: resolve CI failure — <check-name>"
git push6. Increment fix_attempts++
7. Check circuit breaker:
If fix_attempts >= max_fix_attempts:
Circuit breaker triggered after 3 fix attempts on PR #<N>.
Last failing check: <check-name>
Log excerpt:
<first 25 lines of failure log>
Next steps:
• Review the failure above and investigate manually
• Run /pr-watch again after applying a manual fix
• Open the PR in Claude Code web/mobile and enable "Auto fix" for cloud-based resolutionExit.
8. Wait 30 seconds for CI to re-trigger. Print "Fix pushed — waiting for CI to re-run...". Loop to Step 1.1.
When all checks pass:
All checks passing on PR #<N>: <title>
Merge options:
squash — squash all commits into one (recommended for fix PRs)
merge — standard merge commit
rebase — rebase commits onto base branch
skip — leave the PR open (merge manually)Ask the user which to do. If they choose a merge strategy:
$GH pr merge <number> --repo <owner/repo> --<squash|merge|rebase> --delete-branchIf they choose skip: exit. The PR is green and ready.
Trigger the circuit breaker and stop the loop when:
fix_attempts >= 3 — three attempts without resolving the failureDisclosure: "Watching PR [#N]. Will notify on CI changes; may push fix commits if auto-fix is enabled."
Reversibility: amber — may push fix commits to the PR branch; undo with git revert <commit> on the pushed commits
Trust gates:
fix: resolve CI failure — <check-name>git pushmain or master directly — fixes always go to the PR branchgh not authenticated: "Run gh auth login and follow the prompts." Exit.<N> is already closed/merged." Exit cleanly.brew install gh).---HANDOFF---
- Watched PR #<N>: <title>
- Fix attempts: <count> / 3
- Final status: green | circuit-break | user-exited | already-merged
- Checks resolved: <list of check names that went from failing to passing>
- Checks still failing: <list, if circuit-break>
- Reversibility: amber — fix commits pushed to PR branch; undo with `git revert <commit>` per fix commit
---© SethGammon, 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 4 other files in skills/pr-watch of SethGammon/Citadel.
Open the folder on GitHubat commit e41ff1d
PR Watch 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 Watch this skillSethGammon/Citadel | 922 | — | ~2.3k | Automated safety check: Pass | MIT | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Merge Dependabot PRsonyx-dot-app/onyx | 32k | 1 repos | ~2.2k | Automated safety check: Pass | MIT | |
| Android UI Visual Reviewpermissionlesstech/bitchat-android | 7.8k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Issue Fixmono/SkiaSharp | 5.6k | — | ~5.1k | Automated safety check: Pass | MIT | |
| Bug Report TriageOrchestratorInc/agent-orchestrator | 13k | — | ~1.8k | Automated safety check: Pass | Apache-2.0 |
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
onyx-dot-app/onyx
Triages and lands a batch of open Dependabot PRs in the Onyx repo, where main is gated exclusively by GitHub's merge queue: approves and enqueues green PRs, closes superseded duplicates, fixes…
permissionlesstech/bitchat-android
Analyze an Android pull request, branch, commit, or patch for user-visible changes and produce reproducible before/after screenshots from isolated builds.
mono/SkiaSharp
Fix bugs in SkiaSharp C bindings. An agent skill from mono/SkiaSharp.
OrchestratorInc/agent-orchestrator
Helps a reporter describe a bug, searches for duplicates and gathers diagnostic evidence kept separate from a short, human-worded issue draft.
remix-run/react-router
Fixes a React Router bug reported in a GitHub issue end to end: fetching the issue, validating the reproduction, writing a failing test and implementing the fix on a new branch.
SethGammon/Citadel
Creates new skills from the user's repeating patterns. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
Cross-drive storage audit and cleanup. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
Bounded foreground repetition for the current session. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
GitHub issue and PR investigator. An agent skill from SethGammon/Citadel.
SethGammon/Citadel
File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills.
SethGammon/Citadel
Autonomous multi-session campaign agent. An agent skill from SethGammon/Citadel.
Works with
Categories
Local PR watcher. An agent skill from SethGammon/Citadel. PR Watch is an agent skill from SethGammon/Citadel. Local PR watcher.
PR Watch fits situations like: development work in your project.
Run `npx skills add SethGammon/Citadel --skill pr-watch -a claude-code`. Or copy the skill folder (skills/pr-watch in SethGammon/Citadel) into .claude/skills/pr-watch in your project. Claude Code loads it when a task matches its description.
Run `npx skills add SethGammon/Citadel --skill pr-watch -a codex`. Or copy the skill folder (skills/pr-watch in SethGammon/Citadel) into .agents/skills/pr-watch 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 SethGammon/Citadel --skill pr-watch -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-watch, .gemini/skills/pr-watch, .github/skills/pr-watch and .opencode/skills/pr-watch in your project.
Going by SKILL.md and its folder, PR Watch needs the command-line tools its instructions call (git, node, gh and brew).
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 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.
PR Watch is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.1k 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 Watch: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Merge Dependabot PRs (onyx-dot-app/onyx, 32k stars), Android UI Visual Review (permissionlesstech/bitchat-android, 7.8k stars) and Issue Fix (mono/SkiaSharp, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
SethGammon (a GitHub user) maintains it in SethGammon/Citadel, which has 922 GitHub stars. The repository holds 48 skills in this directory. The repository was last updated on October 1, 2026.
Source: SethGammon/Citadel on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.