Agent skill

Handhold PR

by analogjs in analogjs/analog

Watch a PR's CI, diagnose every failing check, fix what's actually broken, resolve CodeRabbit's major findings, and keep iterating until the PR is green.

MITAuto-check passed

Install Handhold PR

skills CLI
$ npx skills add analogjs/analog --skill handhold-pr -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install analogjs/analog handhold-pr --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/analogjs/analog.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/handhold-pr .claude/skills/handhold-pr && rm -rf skills-src

Use ~/.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/

Facts

Skill name
handhold-pr
GitHub stars
3.2k
Token cost
~1.6k tokens
SKILL.md length
941 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Watch a PR's CI, diagnose every failing check, fix what's actually broken, resolve CodeRabbit's major findings, and keep iterating until the PR is green.

  • Works in 7 steps: Get the current check state → Get the real failure output → Classify the failure before fixing… → …
  • The user says handhold the PR
  • SKILL.md covers 1. Get the current check state, 2. Get the real failure output, 3. Classify the failure before… and 4. Fix, or re-run, or escalate, plus 4 more sections
  • Calls gh, nx and git

What it does

Handhold PR is an agent skill from analogjs/analog. Watch a PR's CI, diagnose every failing check, fix what's actually broken, resolve CodeRabbit's major findings, and keep iterating until the PR is green. Use when the user says "handhold the PR", "check CI", "get CI green", "resolve any issues until green", or asks why a PR's checks are failing.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: The fullstack meta-framework for Angular. Powered by Vite and Nitro. The licence is MIT.

When your agent uses it

  • The user says handhold the PR
  • Resolve any issues until green
  • Asks why a PRs checks are failing

Example prompts

  • “s CI, diagnose every failing check, fix what”
  • “handhold the PR”
  • “check CI”
  • “/handhold-pr”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Get the current check state
  2. Get the real failure output
  3. Classify the failure before fixing anything
  4. Fix, or re-run, or escalate
  5. Wait for the next run, then loop
  6. Resolve CodeRabbit's major findings
  7. Report

What it can do on your machine

Read from SKILL.md and the folder at commit eedd920. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • nx
    • git
    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Handhold PR loads about 1.6k tokens when it runs. Until then it costs about 77 tokens; SKILL.md has 941 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~77
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from analogjs/analog at commit eedd920, republished under its MIT licence (© analogjs). 941 words, ~1,583 tokens.

Download SKILL.mdSave it as .claude/skills/handhold-pr/SKILL.md (or your agent's skills folder).
name
handhold-pr
description
Watch a PR's CI, diagnose every failing check, fix what's actually broken, resolve CodeRabbit's major findings, and keep iterating until the PR is green. Use when the user says "handhold the PR", "check CI", "get CI green", "resolve any issues until green", or asks why a PR's checks are failing.

Take a pull request from "checks failing" to "all green". This skill owns watching CI, diagnosing failures, deciding whether a failure is yours, and driving fixes until every required check passes.

Target the PR the user names (number or URL). With no argument, use the PR for the current branch: gh pr view --json number,url,headRefName. If the branch has no PR, say so and stop — this skill doesn't open PRs (that's open-pr).

1. Get the current check state

  • gh pr checks <n> — the whole picture in one call. Netlify skipping rows are noise; ignore them.
  • If checks are still queued/running, don't guess at outcomes. Wait on them (see step 5) rather than reporting a partial state.
  • Note which checks are required for merge vs. advisory (gh pr view <n> --json statusCheckRollup). A failing advisory check may not block, but still report it.

2. Get the real failure output

Don't diagnose from a check name. Read the log.

  • gh api repos/<owner>/<repo>/actions/runs/<runId>/jobs -q '.jobs[] | "\(.id) \(.name) \(.conclusion)"' to find the failing job id.
  • gh run view --job <jobId> --log-failed for the failing step.
  • --log-failed is often not enough on this repo. Nx distributed execution prints a task summary table there; the actual test/build output is earlier in the full log. Pull it and search: gh run view --job <jobId> --log | grep -n "FAIL\|Error:\|✖\|<task-name>" then sed -n '<start>,<end>p' the surrounding block (pipe through sed 's/\x1b\[[0-9;]*m//g' to strip ANSI).
  • Nx Cloud task-log URLs (cloud.nx.app/logs/...) are auth-gated — don't burn turns fetching them; the GitHub job log has the output.

3. Classify the failure before fixing anything

For each failure, answer: is this caused by the diff on this branch?

  • Compare the failing area against git diff <base>...HEAD --name-only. A failure in a package the PR never touched is a strong signal it isn't yours.
  • Check whether the base branch is green: gh run list --branch beta --limit 5 --json conclusion,name. A red base means pre-existing breakage.
  • Known non-PR causes in this repo:
    • Nx DTE ordering flakes — a task fails to resolve a workspace package's subpath export (e.g. @analogjs/vitest-angular/setup-testbed) because tsconfig.base.json maps only the bare specifier, so test → ^build doesn't guarantee that dist is on the agent that picked up the task.
    • Local-only reproductions — if a task fails locally but passes in CI, check node --version against .node-version; a newer Node changes TS/ESM resolution in Vite config loading and produces failures CI never sees.
  • Reproduce locally when the failure is plausibly yours: nx test <project>, nx build <project>, nx format:check, nx lint <project>. Say plainly when you could not reproduce.

4. Fix, or re-run, or escalate

  • Real failure from the diff → fix it on the branch, verify locally, commit with a conventional message (same conventions as open-pr), push. Keep fixes scoped to the failure; don't fold in unrelated cleanups.
  • Flake → re-run just the failed jobs: gh run rerun <runId> --failed. Re-run once. If the same task fails a second time, treat it as real and investigate — don't re-run a third time hoping.
  • Pre-existing breakage on the base → don't fix it inside this PR. Report it to the user and suggest a separate issue/PR.
  • Never edit workflow files, disable a test, or relax a check to make CI pass unless the user explicitly asks for that.
Show full SKILL.md (402 more words)Show less

5. Wait for the next run, then loop

  • Wait with a background command that exits on completion, not a bare sleep: until [ "$(gh run view <runId> --json status -q .status)" = "completed" ]; do sleep 30; done (run it with run_in_background, then read the output file when notified).
  • After each run completes, go back to step 1. Keep looping until every non-skipping check passes or you hit something the user has to decide.

6. Resolve CodeRabbit's major findings

Green CI isn't done. CodeRabbit reports as a passing check even when it has posted actionable inline comments, so its review has to be read separately.

  • gh pr view <n> --json reviews for the summary (it states how many actionable comments it posted), and gh api repos/<owner>/<repo>/pulls/<n>/comments for the inline findings. Each is tagged with a severity — 🟠 Major, 🟡 Minor, and so on.
  • Verify every finding against the current code before acting — CodeRabbit is wrong often enough that you should reproduce the claim first. Where the finding is a real code path, add a test and confirm it fails without the fix.
  • Fix the still-valid major findings on the branch, with their own commit. Lesser findings are a judgment call — apply the cheap correct ones, and say which you skipped and why rather than silently dropping them.
  • Note when a finding is pre-existing (the same defect exists on the base branch) — it's still worth fixing if it sits in code the PR touches, but say so.
  • Pushing the fix restarts CI, so go back to step 1 and wait for the new run.

7. Report

  • State the final status plainly: green, or still red with what's left and why.
  • For each failure you handled, give one line: what failed, root cause, what you did (fixed / re-ran as flake / left alone as pre-existing). Do the same for each CodeRabbit finding (fixed / skipped with reason).
  • Don't claim green without having seen the checks pass — quote the actual gh pr checks result.
  • Flag latent problems you noticed but didn't fix (e.g. a flake worth its own issue) instead of silently absorbing them.

Notes

  • Re-running CI and pushing commits are outward-facing. They're implied by "get this PR green", but confirm before anything broader (force-pushing, rewriting history, closing/reopening the PR).
  • Don't post comments on the PR unless asked.
  • If CI stays red after two focused attempts at the same failure, stop and hand the user the evidence rather than continuing to churn.

© analogjs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/handhold-pr of analogjs/analog.

Open the folder on GitHubat commit eedd920

Compare with similar skills

Handhold PR 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.

Handhold PR compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Handhold PR this skillanalogjs/analog3.2k—~1.6kAutomated safety check: PassMIT
Diagnose Gatewayopenclaw/openclaw392k—~670Automated safety check: PassMIT
Diagnosegithub/awesome-copilot40k1 repos~1kAutomated safety check: PassMIT
Diagnose Playwright Failure as Product Bugappsmithorg/appsmith41k—~1.5kAutomated safety check: PassApache-2.0
Diagnosing CI And Merge BottlenecksPostHog/posthog40k—~3.7kAutomated safety check: PassCustom licence
Diagnose a Red Rundifferent-ai/openwork24k—~779Automated safety check: PassCustom licence

Similar skills

  • Diagnose Gateway

    openclaw/openclaw

    Diagnose Gateway, config, secrets, channels, and port failures with read-only one-liners.

    392k GitHub stars~670 tokensUpdated today
    Auto-check passed
  • Diagnose

    github/awesome-copilot

    Official

    Perform a systematic diagnostic scan of an AI workflow across 5 quality dimensions — prompt quality, context efficiency, tool health, architecture fitness, and safety — producing a scored report…

    40k GitHub starsUsed in 1 repo~1k tokens
    Agent WorkflowsAuto-check passed
  • Investigates a stubbornly failing Playwright test as a possible product bug, using error output, screenshots, traces and server code, and writes a structured bug report.

    41k GitHub stars~1.5k tokensUpdated today
    Testing & QAAuto-check passed
  • Official

    Diagnoses CI and pull-request pipeline health for a GitHub repo using the engineering analytics MCP tools — pull-requests (PR list with CI status), workflow-health (per-workflow CI trends), and…

    40k GitHub stars~3.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Diagnose a Red Run

    different-ai/openwork

    Classifies a failing test, typecheck or CI job before any code changes, by recording the failure and running a clean control to show whether it was already broken.

    24k GitHub stars~779 tokensUpdated today
    Testing & QAAuto-check passed
  • Canary Watch

    affaan-m/ECC

    A skill your agent uses to monitor and verify a deployed URL after releases — checks HTTP endpoints, SSE streams, static assets, console errors, and performance regressions after deploys, merges, or…

    275k GitHub starsUsed in 1 repo~770 tokens
    DevOps & CloudAuto-check passed

More from analogjs/analog

  • Analogjs

    analogjs/analog

    Conventions for working in an AnalogJS app (an Angular meta-framework powered by Vite) — file-based routing with .page.ts files, RouteMeta, server and API routes on Nitro/h3, page load functions and…

    3.2k GitHub stars~891 tokensUpdated yesterday
    Auto-check passed
  • Open PR

    analogjs/analog

    Commit the current work, push the current feature branch, and open a GitHub PR filled out from the repo's PR template.

    3.2k GitHub stars~944 tokensUpdated yesterday
    Auto-check passed
  • Fix Issue

    analogjs/analog

    End-to-end flow for resolving a GitHub issue — fetch and understand the issue, create a feature branch off beta, implement and verify the fix, then hand off to the open-pr skill.

    3.2k GitHub stars~808 tokensUpdated yesterday
    Auto-check passed
  • Investigate Issue

    analogjs/analog

    Investigate a GitHub issue end to end — reproduce the reporter's repo or code snippet in an isolated sandbox outside the monorepo, trace the root cause in the source, and draft a reply back to the…

    3.2k GitHub stars~2k tokensUpdated yesterday
    Auto-check passed

Questions about Handhold PR

What does Handhold PR do?

Watch a PR's CI, diagnose every failing check, fix what's actually broken, resolve CodeRabbit's major findings, and keep iterating until the PR is green. Handhold PR is an agent skill from analogjs/analog. Watch a PR's CI, diagnose every failing check, fix what's actually broken, resolve CodeRabbit's major findings, and keep iterating until the PR is green.

When should I use Handhold PR?

Handhold PR fits situations like: the user says handhold the PR; resolve any issues until green; asks why a PRs checks are failing.

How do I install Handhold PR in Claude Code?

Run `npx skills add analogjs/analog --skill handhold-pr -a claude-code`. Or copy the skill folder (.agents/skills/handhold-pr in analogjs/analog) into .claude/skills/handhold-pr in your project. Claude Code loads it when a task matches its description.

How do I install Handhold PR in Codex?

Run `npx skills add analogjs/analog --skill handhold-pr -a codex`. Or copy the skill folder (.agents/skills/handhold-pr in analogjs/analog) into .agents/skills/handhold-pr in your project. Codex loads it when a task matches its description.

Can I use Handhold PR in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add analogjs/analog --skill handhold-pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/handhold-pr, .gemini/skills/handhold-pr, .github/skills/handhold-pr and .opencode/skills/handhold-pr in your project.

What does Handhold PR need to run?

Going by SKILL.md and its folder, Handhold PR needs the command-line tools its instructions call (gh, nx, git and node).

Does Handhold PR access the network?

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.

Is Handhold PR safe to install?

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.

What licence does Handhold PR use?

Handhold PR is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Handhold PR use?

About 1.6k tokens (SKILL.md is roughly 6.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Handhold PR?

Skills that share tags, products or a category with Handhold PR: Diagnose Gateway (openclaw/openclaw, 392k stars), Diagnose (github/awesome-copilot, 40k stars), Diagnose Playwright Failure as Product Bug (appsmithorg/appsmith, 41k stars) and Diagnosing CI And Merge Bottlenecks (PostHog/posthog, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Handhold PR?

analogjs (a GitHub organization) maintains it in analogjs/analog, which has 3,188 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.

Source: analogjs/analog on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.