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.
Runs a gated finish-line checklist before committing a PlotJuggler PJ4 change: build proof, red-test triage, hooks, docs freshness and a diff self-review.
$ npx skills add PlotJuggler/PlotJuggler --skill ship-check -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install PlotJuggler/PlotJuggler ship-check --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/PlotJuggler/PlotJuggler.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/ship-check .claude/skills/ship-check && 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 "ship-check" agent skill from https://github.com/PlotJuggler/PlotJuggler/tree/main-4.x/.claude/skills/ship-check into .claude/skills/ship-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship-check", 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/PlotJuggler/PlotJuggler/tree/main-4.x/.claude/skills/ship-checkType 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 PlotJuggler/PlotJuggler --skill ship-check -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install PlotJuggler/PlotJuggler ship-check --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PlotJuggler/PlotJuggler.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/ship-check .agents/skills/ship-check && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ship-check" agent skill from https://github.com/PlotJuggler/PlotJuggler/tree/main-4.x/.claude/skills/ship-check into .agents/skills/ship-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship-check", 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 PlotJuggler/PlotJuggler --skill ship-check -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install PlotJuggler/PlotJuggler ship-check --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PlotJuggler/PlotJuggler.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/ship-check .cursor/skills/ship-check && 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 "ship-check" agent skill from https://github.com/PlotJuggler/PlotJuggler/tree/main-4.x/.claude/skills/ship-check into .cursor/skills/ship-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship-check", 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/PlotJuggler/PlotJuggler.git --path .claude/skills/ship-check--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 PlotJuggler/PlotJuggler --skill ship-check -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install PlotJuggler/PlotJuggler ship-check --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PlotJuggler/PlotJuggler.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/ship-check .gemini/skills/ship-check && 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 "ship-check" agent skill from https://github.com/PlotJuggler/PlotJuggler/tree/main-4.x/.claude/skills/ship-check into .gemini/skills/ship-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship-check", 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 PlotJuggler/PlotJuggler ship-checkInstalls 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 PlotJuggler/PlotJuggler --skill ship-check -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/PlotJuggler/PlotJuggler.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/ship-check .github/skills/ship-check && 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 "ship-check" agent skill from https://github.com/PlotJuggler/PlotJuggler/tree/main-4.x/.claude/skills/ship-check into .github/skills/ship-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship-check", 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 PlotJuggler/PlotJuggler --skill ship-check -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install PlotJuggler/PlotJuggler ship-check --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PlotJuggler/PlotJuggler.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/ship-check .opencode/skills/ship-check && 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 "ship-check" agent skill from https://github.com/PlotJuggler/PlotJuggler/tree/main-4.x/.claude/skills/ship-check into .opencode/skills/ship-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ship-check", 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.
ship-checkRuns a gated finish-line checklist before committing a PlotJuggler PJ4 change: build proof, red-test triage, hooks, docs freshness and a diff self-review.
The gates run in order, each added because skipping it has cost time before. Gate 0 says approval is not the agent's to give: it never commits, pushes or opens a PR on its own, and ends with the diff and a question. Gate 1 requires build proof through `./build.sh` and the full `ctest` run. Gate 2 triages red tests: a known deterministic failure outside `pj_marketplace` is noted, a failure that also appears on clean `origin/main` is reported but not fixed unless asked, and a failure only your diff causes must be fixed before claiming done.
Tests are never deleted, weakened or skipped to get green, and real-GL tests that fail only on Windows CI usually come from the driver GL version. Gate 3 runs `pre-commit run --all-files`, mandatory after a rebase with manual conflicts. Gate 4 checks that module docs still match changed behavior, and Gate 5 is a diff self-review for dependency rules, SPDX headers, renamed UI object names and history comments.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 346dee6. 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:
ghgitFrom 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.
PlotJuggler Ship Check loads about 1.3k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 632 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 PlotJuggler/PlotJuggler at commit 346dee6, republished under its MPL-2.0 licence (© PlotJuggler). 632 words, ~1,343 tokens.
.claude/skills/ship-check/SKILL.md (or your agent's skills folder).Recorded failure modes at the finish line: shipping with a stalled recompile, misreading a pre-existing red as a regression (or vice versa), hook-dirty commits after rebases, stale docs, and committing without approval. Run the gates in order; each exists because skipping it has cost real time.
Gate 0 — approval is not yours to grant. Never commit, push, or open a PR autonomously. The end state of this skill is a surfaced diff and a question, not a commit.
./build.sh 2>&1 | tee /tmp/build.log # then grep Building …cpp.o for your files
ctest --test-dir build --output-on-failureextension_manager_test.ConstructionReflectsStagedUpdateInOnePass fails deterministically on clean checkouts (/tmp backup-rename). If your diff is outside pj_marketplace: note it, not a blocker.origin/main (primary checkout or fresh worktree). Red there too → pre-existing: report it, don't fix it unless asked, don't let it block.GTEST_SKIP, or comment-out a failing test to get green. Surfacing a real failure is success; hiding it is the failure.GL-test caveat: real-GL tests must self-skip below driver-reported GL 4.5 (glGetString(GL_VERSION), not the requested format) — a Windows-CI-only shader failure is usually this, not your change.
pre-commit run --all-filesMandatory after any rebase with manual conflict resolution (rebase skips hooks); fold fixes into the originating commit (--fixup + --autosquash).
Behavior, public API, ABI structs, module ownership, or user-facing semantics changed? Then the owning module's CLAUDE.md / docs/ must still be true — update in this same change or ask. Do not commit known-stale docs.
Read the full diff once, checking exactly:
CMakeLists.txt / #include change.ui objectName renamedpj_app/pj_runtime/conanfile.txt)Present: summary of the change, test results (including any known-red noted), the diff or git diff --stat, and the proposed commit message:
type(scope): subject # feat|fix|chore|ci|docs|refactor|perf|test; scope = module/feature
<body: why + what; PR/issue refs>
Co-Authored-By: <model attribution>Then stop and ask. Commit only on explicit confirmation in that turn.
| Trap | Rule |
|---|---|
git mv + edits | git add the new path again — "100% similarity" in output means you shipped a stale blob |
| Force-push | --force-with-lease, never bare --force; reopen a closed PR before force-pushing (after, reopen becomes impossible) |
| Squash-merge | Verify every intended commit landed: git log --oneline <merge-commit> |
Merge from origin/main | Grep that feature entry points still have production callers — modify/delete conflicts drop wiring while CI stays green |
gh pr edit GraphQL error | Fall back to gh api repos/…/pulls/<n> -X PATCH -f … |
gh run view --log-failed usually prints nothing (at run level and per job). Don't retry it — go straight to the job log:gh run view <run-id> --json jobs -q '.jobs[] | select(.conclusion=="failure") | "\(.databaseId) \(.name)"'
gh api repos/PlotJuggler/PJ4/actions/jobs/<job-id>/logs | tr -d '\r' | grep -n -E "error|FAILED|Error:" | head -40continue-on-error even though Windows is a required target: read per-step status via gh run view <id>, never the run-level ✓.conan install with "Cannot load recipe / conanfile.py not found" after a cache HIT = poisoned ghcr Conan cache, not your code → bump the CACHE_VERSION salt in windows-ci.yml (tag + GHA key + restore-keys).| Excuse | Reality |
|---|---|
| "Only one test red, probably flaky" | Run the triage procedure; PJ4 has exactly one documented known-red |
| "Failure is in a module I didn't touch" | Still triage — step 2 takes two minutes and settles it |
| "I'll fix the docs in a follow-up PR" | Same change or an explicit question; stale docs don't ship |
| "Skip pre-commit, CI will catch it" | CI catching it costs a full round-trip; the hook costs seconds |
| "The user said run to completion" | Run-to-completion stops at the commit boundary, not through it |
| "Windows CI is green" | It's continue-on-error; green means nothing until you read the steps |
© PlotJuggler, MPL-2.0. 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 .claude/skills/ship-check of PlotJuggler/PlotJuggler.
Open the folder on GitHubat commit 346dee6
PlotJuggler Ship Check 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 |
|---|---|---|---|---|---|---|
| PlotJuggler Ship Check this skillPlotJuggler/PlotJuggler | 6.2k | — | ~1.3k | Automated safety check: Pass | MPL-2.0 | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Iterate PRmeshery/meshery-operator | 151 | 7 repos | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| PR Reviewwysaid/android-gpuimage-plus | 1.9k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Pull Requestnoh-rs/nohrs | 156 | — | ~4.1k | Automated safety check: Pass | MIT | |
| Compound Engineering Code ReviewEveryInc/compound-engineering-plugin | 25k | — | ~2k | Automated safety check: Pass | MIT |
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
meshery/meshery-operator
Iterate on a PR until CI passes. An agent skill from meshery/meshery-operator.
wysaid/android-gpuimage-plus
Address review comments and CI failures for the current branch's PR
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.
EveryInc/compound-engineering-plugin
Runs a staged pull request or diff review using selected reviewer personas, checking the change against its stated intent and project standards before producing findings.
bikeindex/bike_index
Embed a local image file into an existing GitHub PR — either in the PR body or as a comment.
PlotJuggler/PlotJuggler
Guides CPU profiling of PlotJuggler 4 on Linux with perf: count first, record cheaply with LBR, then read per-thread, flat, flamegraph or time-window views.
PlotJuggler/PlotJuggler
Directs porting of widgets, dialogs, panels and transforms from PlotJuggler 3 to PlotJuggler 4 by lifting the original files intact and rebinding only the data paths.
PlotJuggler/PlotJuggler
Confirms that a change to PlotJuggler 4 really works in the running app by proving the rebuild, launching with real data and measuring the result.
Works with
Categories
Runs a gated finish-line checklist before committing a PlotJuggler PJ4 change: build proof, red-test triage, hooks, docs freshness and a diff self-review. The gates run in order, each added because skipping it has cost time before. Gate 0 says approval is not the agent's to give: it never commits, pushes or opens a PR on its own, and ends with the diff and a question.
PlotJuggler Ship Check fits situations like: A PJ4 change looks complete and you are about to commit or open a PR; tests are red at the end and you must decide whether you caused it; before claiming a change is done or ready to merge.
Run `npx skills add PlotJuggler/PlotJuggler --skill ship-check -a claude-code`. Or copy the skill folder (.claude/skills/ship-check in PlotJuggler/PlotJuggler) into .claude/skills/ship-check in your project. Claude Code loads it when a task matches its description.
Run `npx skills add PlotJuggler/PlotJuggler --skill ship-check -a codex`. Or copy the skill folder (.claude/skills/ship-check in PlotJuggler/PlotJuggler) into .agents/skills/ship-check 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 PlotJuggler/PlotJuggler --skill ship-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ship-check, .gemini/skills/ship-check, .github/skills/ship-check and .opencode/skills/ship-check in your project.
Going by SKILL.md and its folder, PlotJuggler Ship Check needs the command-line tools its instructions call (gh and git). Our summary lists: A PlotJuggler checkout with `build.sh`, CMake `ctest` and pre-commit set up.
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. Review the folder before installing.
PlotJuggler Ship Check is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.3k tokens (SKILL.md is roughly 5.4k 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 PlotJuggler Ship Check: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Iterate PR (meshery/meshery-operator, 151 stars), PR Review (wysaid/android-gpuimage-plus, 1.9k stars) and Pull Request (noh-rs/nohrs, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
PlotJuggler (a GitHub organization) maintains it in PlotJuggler/PlotJuggler, which has 6,233 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 1, 2026.
Source: PlotJuggler/PlotJuggler on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.