PR Cycle
jaemk/cached
PR review-and-update cycle — the orchestrator that takes a PR from review to resolved.
Agent Loop that runs local pre-flight CI checks, auto-fixes issues, creates/pushes the PR, monitors CI, and loops until all checks pass.
$ npx skills add UniClipboard/UniClipboard --skill pr-greenlight -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install UniClipboard/UniClipboard pr-greenlight --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/UniClipboard/UniClipboard.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pr-greenlight .claude/skills/pr-greenlight && 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-greenlight" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/pr-greenlight into .claude/skills/pr-greenlight/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-greenlight", 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/UniClipboard/UniClipboard/tree/main/.agents/skills/pr-greenlightType 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 UniClipboard/UniClipboard --skill pr-greenlight -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install UniClipboard/UniClipboard pr-greenlight --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/pr-greenlight .agents/skills/pr-greenlight && 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-greenlight" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/pr-greenlight into .agents/skills/pr-greenlight/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-greenlight", 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 UniClipboard/UniClipboard --skill pr-greenlight -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install UniClipboard/UniClipboard pr-greenlight --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/pr-greenlight .cursor/skills/pr-greenlight && 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-greenlight" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/pr-greenlight into .cursor/skills/pr-greenlight/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-greenlight", 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/UniClipboard/UniClipboard.git --path .agents/skills/pr-greenlight--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 UniClipboard/UniClipboard --skill pr-greenlight -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install UniClipboard/UniClipboard pr-greenlight --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/pr-greenlight .gemini/skills/pr-greenlight && 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-greenlight" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/pr-greenlight into .gemini/skills/pr-greenlight/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-greenlight", 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 UniClipboard/UniClipboard pr-greenlightInstalls 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 UniClipboard/UniClipboard --skill pr-greenlight -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/pr-greenlight .github/skills/pr-greenlight && 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-greenlight" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/pr-greenlight into .github/skills/pr-greenlight/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-greenlight", 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 UniClipboard/UniClipboard --skill pr-greenlight -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install UniClipboard/UniClipboard pr-greenlight --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/pr-greenlight .opencode/skills/pr-greenlight && 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-greenlight" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/pr-greenlight into .opencode/skills/pr-greenlight/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pr-greenlight", 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-greenlightAgent Loop that runs local pre-flight CI checks, auto-fixes issues, creates/pushes the PR, monitors CI, and loops until all checks pass.
PR Greenlight is an agent skill from UniClipboard/UniClipboard. Agent Loop that runs local pre-flight CI checks, auto-fixes issues, creates/pushes the PR, monitors CI, and loops until all checks pass. Replaces the manual chain of preflight → create-pr → babysit-pr.
Its SKILL.md is about 2.7k 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 and Autonomous loops. It works with Rust. The repository describes itself as: Real-time clipboard sync across all your devices — local-first, peer-to-peer, and end-to-end encrypted. No account. No cloud dependency. No central server. The licence is AGPL-3.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 19fc8bc. 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:
gitghbuncargonpxnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, gh and npx, 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 Greenlight loads about 2.7k tokens when it runs. Until then it costs about 54 tokens; SKILL.md has 845 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 UniClipboard/UniClipboard at commit 19fc8bc, republished under its AGPL-3.0 licence (© UniClipboard). 845 words, ~2,694 tokens.
.claude/skills/pr-greenlight/SKILL.md (or your agent's skills folder).A single Agent Loop that takes uncommitted or committed work on a feature branch all the way to a green PR. It replaces the manual chain of:
$create-pr → wait → $babysit-pr → wait → fix → push → waitThe loop runs: Pre-flight → Auto-fix → Push/PR → Monitor CI → Fix CI → Loop until green.
$pr-greenlight - full loop: preflight + create PR + monitor$pr-greenlight preflight - only run local pre-flight checks, no push/tmp/codex-pr-greenlight-state.json:
{
"phase": "preflight|pushed|monitoring",
"pr_number": null,
"round": 0,
"max_rounds": 4,
"preflight_passed": false,
"checks_run": [],
"fixes_applied": [],
"processed_comment_ids": [],
"started_at": "ISO timestamp"
}Lock file: /tmp/codex-pr-greenlight.lock
touch /tmp/codex-pr-greenlight.lockRun in parallel:
git rev-parse --abbrev-ref HEAD
git status --short
git diff main...HEAD --stat
git diff main...HEAD --name-only
git log main..HEAD --format="%h %s"From the file list, classify what changed into categories:
| Category | Detection pattern |
|---|---|
rust | *.rs, Cargo.toml, Cargo.lock |
frontend | src/**/*.{ts,tsx,js,jsx,css}, package.json, bun.lockb |
api-endpoints | *.rs files containing #[utoipa::path] changes |
openapi | schema/openapi.json, files with #[utoipa::path] |
docs-site | docs-site/** |
markdown | *.md (outside docs-site) |
generated | apps/gui/src/api/generated/** |
Store the categories in state as change_categories.
Refuse conditions (same as create-pr):
main → refusegit log main..HEAD empty → refuse (nothing to PR)gh auth status fails → ask user to authRun ONLY the checks relevant to change_categories. Each check follows: run → detect failure → auto-fix → re-run → confirm.
# Rust format (if rust changed)
cargo fmt --all --check 2>&1
# If fails:
cargo fmt --all
git add -u '*.rs'
# Frontend format (if frontend/markdown/docs changed)
bun run format 2>&1
# Prettier auto-fixes; stage changed files
git add -uOnly if rust or api-endpoints changed:
# 1. OpenAPI schema
bun run gen:openapi 2>&1
git diff --exit-code schema/openapi.json
# If diff: stage it
git add schema/openapi.json
# 2. API client (if openapi.json changed in step 1 or was already changed)
bun run gen:client 2>&1
git diff --exit-code apps/gui/src/api/generated/
# If diff: stage it
git add apps/gui/src/api/generated/# Frontend lint — scope to changed files only (full repo has baseline debt)
CHANGED_TS=$(git diff main...HEAD --name-only --diff-filter=d -- '*.ts' '*.tsx' '*.js' '*.jsx' | head -50)
if [ -n "$CHANGED_TS" ]; then
bun run lint --fix -- $CHANGED_TS 2>&1
git add -u
fi# Rust check (if rust changed)
cargo check --workspace --locked 2>&1 | tail -40
# Frontend build = tsc + vite (if frontend changed)
bun run build 2>&1 | tail -40If either fails, do NOT auto-fix — these are real errors. Report to user with the error output and ask how to proceed.
# Frontend tests (if frontend changed)
bun run test -- --run 2>&1 | tail -40
# Rust tests are slow — only run focused tests for changed crates
# Detect changed crates from file paths
CHANGED_CRATES=$(git diff main...HEAD --name-only -- 'crates/*/src' 'apps/*/src' 'tools/*/src' | sed 's|.*/\(crates/[^/]*\)/.*|\1|;s|.*/\(apps/[^/]*\)/.*|\1|' | sort -u)
for crate_path in $CHANGED_CRATES; do
crate_name=$(basename $crate_path)
cargo test -p $crate_name --lib 2>&1 | tail -20
done# Only for non-docs-site markdown
CHANGED_MD=$(git diff main...HEAD --name-only --diff-filter=d -- '*.md' ':!docs-site/**' | head -20)
if [ -n "$CHANGED_MD" ]; then
for f in $CHANGED_MD; do
node scripts/fix-md-cjk-emphasis.mjs "$f" 2>/dev/null
npx autocorrect --fix "$f" 2>/dev/null
npx prettier --write "$f" 2>/dev/null
done
git add -u '*.md'
fiIf any files were staged by auto-fix steps:
git diff --cached --statIf there are staged changes, commit them:
git commit -m "$(cat <<'EOF'
chore: pre-flight auto-fix (format, codegen, lint)
EOF
)"Update state: preflight_passed = true.
Print a table:
Pre-flight results:
✓ cargo fmt
✓ prettier
✓ OpenAPI schema (regenerated, +12 -3)
✓ IPC bindings (no drift)
✓ API client (regenerated)
✓ ESLint (2 auto-fixed)
✓ cargo check
✓ tsc + vite build
✓ vitest (14 passed)
✓ cargo test uc-core (23 passed)
— cargo test uc-daemon (skipped, no changes)If the user only asked for $pr-greenlight preflight, stop here. Clean up the lock file and report results.
If pre-flight passed, proceed to push and create PR.
Delegate to the create-pr skill logic:
gh pr createKey points:
create-pr conventions (title format, body format, branch name check)After PR is created, immediately proceed to Phase 4.
This is the core monitoring loop, similar to babysit-pr but integrated.
# Give CI 30s to register checks
sleep 30
gh pr checks --json name,state,conclusion 2>/dev/nullIf no checks have registered, keep the current turn active, wait with the available command/session wait mechanism, and check again. Do not end the task merely because CI has not appeared yet.
gh pr checks --json name,state,conclusion,link 2>/dev/nullClassify:
Same as babysit-pr Step 2b — check all three GitHub comment endpoints:
BOT_FILTER='select(.user.login | test("coderabbitai|github-actions|codecov"))'
# Inline review comments
gh api repos/UniClipboard/UniClipboard/pulls/<PR>/comments \
--jq "[.[] | ${BOT_FILTER} | {id, user: .user.login, body, path, line}]"
# Review bodies
gh api repos/UniClipboard/UniClipboard/pulls/<PR>/reviews \
--jq "[.[] | ${BOT_FILTER} | {id, user: .user.login, body, state}]"
# Issue comments (CodeRabbit walkthrough lives here)
gh api repos/UniClipboard/UniClipboard/issues/<PR>/comments \
--jq "[.[] | ${BOT_FILTER} | {id, user: .user.login, body: (.body | .[0:2000])}]"Filter out processed_comment_ids. If zero unprocessed actionable comments AND all checks pass → Success. Clean up.
For each failed check or new review comment:
gh run view <run_id> --log-failed | tail -100), read relevant codegit add <specific files>
git commit -m "$(cat <<'EOF'
fix: address CI feedback (pr-greenlight round N)
EOF
)"
git pushIncrement round in state. If round >= max_rounds → clean up with warning.
After pushing a fix, prefer gh pr checks --watch --interval 30 and poll its command session in bounded intervals. Re-enter at Phase 4b when the checks finish. Keep the current Codex turn alive and continue reporting useful status while waiting.
On success:
rm -f /tmp/codex-pr-greenlight.lock /tmp/codex-pr-greenlight-state.json✅ PR #<N> is green. All CI checks passed after <round> round(s).
URL: <pr_url>
Pre-flight caught: <list of issues auto-fixed before push>
CI rounds: <N>On max rounds (4):
rm -f /tmp/codex-pr-greenlight.lock /tmp/codex-pr-greenlight-state.json⚠️ PR #<N> still has failures after 4 rounds. Manual review needed.
Remaining failures: <list>
URL: <pr_url>On timeout (90 min):
rm -f /tmp/codex-pr-greenlight.lock /tmp/codex-pr-greenlight-state.json--force pushprocessed_comment_ids prevents duplicate processing$create-pr + $babysit-pr chain for the common case$create-pr and $babysit-pr remain available for standalone usegh pr create)$pr-greenlight preflight, only Phase 1-2 execute (no push, no PR)bun run lint on entire repo (33 baseline errors will confuse the loop)cargo fmt failures as real bugs (they're always auto-fixable)© UniClipboard, AGPL-3.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 .agents/skills/pr-greenlight of UniClipboard/UniClipboard.
Open the folder on GitHubat commit 19fc8bc
PR Greenlight 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 Greenlight this skillUniClipboard/UniClipboard | 1.9k | — | ~2.7k | Automated safety check: Pass | AGPL-3.0 | |
| PR Cyclejaemk/cached | 2.1k | — | ~4.8k | Automated safety check: Notes | MIT | |
| PR Reviewjaemk/self_update | 961 | — | ~1.5k | Automated safety check: Notes | MIT | |
| Firewood Reviewava-labs/firewood | 153 | — | ~2.1k | Automated safety check: Notes | Custom licence | |
| Planetscale Schema Recommendations Agent Loopplanetscale/skills | 133 | — | ~979 | Automated safety check: Pass | MIT | |
| SeekDB Code Reviewoceanbase/seekdb | 3.1k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 |
jaemk/cached
PR review-and-update cycle — the orchestrator that takes a PR from review to resolved.
jaemk/self_update
Targeted, read-only review of a PR or checked-out branch. An agent skill from jaemk/self_update.
ava-labs/firewood
A skill your agent uses when reviewing ava-labs/firewood code changes — pull request or local workspace.
planetscale/skills
Safely triage PlanetScale schema recommendations and turn them into reviewed branches, migrations, issues, or pull requests without applying production changes.
oceanbase/seekdb
Reviews seekdb pull requests and diffs for real defects in correctness, resources, concurrency, security and tests, reporting only Blocker or Major findings.
Devolutions/IronRDP
Derive and validate the canonical scope for IronRDP Conventional Commit and pull-request titles.
UniClipboard/UniClipboard
Pick and install beUI (@beui) animated React components from the shadcn registry.
UniClipboard/UniClipboard
Push the current branch and open a GitHub pull request against main.
UniClipboard/UniClipboard
定期审计代码库的工程设计问题(高心智复杂度、单一真相源被破坏、catch-all 胖接口、死代码、散落魔法字面量、泄漏抽象、资源生命周期靠环形缓冲)与可优化点,范围限定为自上次审计以来的 git churn,每条发现都落到 file:line 并对照本项目自己的 VISION.md / 各级 AGENTS.md / memory…
UniClipboard/UniClipboard
Inspect uniclipboard logs from BOTH the macOS host and the mounted Windows peer when debugging cross-platform sync, pairing, transfer, or daemon issues.
UniClipboard/UniClipboard
Analyze the current branch's diff against main and determine which changes are testable via CLI-based end-to-end tests.
UniClipboard/UniClipboard
Drive the UniClipboard iOS app in a simulator and read its OSLog yourself to diagnose a mobile-sync bug, instead of asking the user to paste logs.
Works with
Categories
Agent Loop that runs local pre-flight CI checks, auto-fixes issues, creates/pushes the PR, monitors CI, and loops until all checks pass. PR Greenlight is an agent skill from UniClipboard/UniClipboard. Agent Loop that runs local pre-flight CI checks, auto-fixes issues, creates/pushes the PR, monitors CI, and loops until all checks pass.
PR Greenlight fits situations like: tasks that involve Pull requests; tasks that involve Autonomous loops.
Run `npx skills add UniClipboard/UniClipboard --skill pr-greenlight -a claude-code`. Or copy the skill folder (.agents/skills/pr-greenlight in UniClipboard/UniClipboard) into .claude/skills/pr-greenlight in your project. Claude Code loads it when a task matches its description.
Run `npx skills add UniClipboard/UniClipboard --skill pr-greenlight -a codex`. Or copy the skill folder (.agents/skills/pr-greenlight in UniClipboard/UniClipboard) into .agents/skills/pr-greenlight 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 UniClipboard/UniClipboard --skill pr-greenlight -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-greenlight, .gemini/skills/pr-greenlight, .github/skills/pr-greenlight and .opencode/skills/pr-greenlight in your project.
Going by SKILL.md and its folder, PR Greenlight needs the command-line tools its instructions call (git, gh, bun, cargo, npx and node). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use git, gh and npx, 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 Greenlight is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k 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 Greenlight: PR Cycle (jaemk/cached, 2.1k stars), PR Review (jaemk/self_update, 961 stars), Firewood Review (ava-labs/firewood, 153 stars) and Planetscale Schema Recommendations Agent Loop (planetscale/skills, 133 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
UniClipboard (a GitHub organization) maintains it in UniClipboard/UniClipboard, which has 1,860 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 9, 2026.
Source: UniClipboard/UniClipboard on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.