Install
$ agentstack add skill-billchirico-bills-agent-skills-manage-prs ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Manage PRs
Operating Rule
Treat GitHub as the source of truth. Do not rely on stale browser state, old summaries, local guesses, or a previous agent's report.
Only mark review threads resolved after:
- The related code/doc/test fix is committed.
- The branch is pushed.
- The live PR state is re-read and the fixed thread IDs are still the threads being resolved.
Top-level PR conversation comments do not have review-thread resolution. Address them by fixing the issue, pushing the fix, and replying only when a reply is useful or explicitly requested.
Quick Start
From the target repo:
python3 "/scripts/inspect_pr_state.py" --repo "." --pr ""
If the current branch has exactly one PR, omit --pr.
After fixes are pushed and the live thread IDs are confirmed:
python3 "/scripts/resolve_review_threads.py" --repo "." --thread-id ""
Workflow
- Confirm the target PR.
- Use a provided PR number/URL when present.
- Otherwise run
gh pr view --json number,url,headRefName,headRepositoryOwner. - Run
git status --shortbefore editing. Preserve unrelated user changes.
- Refresh from GitHub.
- Run
git fetch --all --prune. - Inspect mergeability with
gh pr view --json number,url,headRefName,baseRefName,mergeable,mergeStateStatus,reviewDecision. - If the branch is behind or conflicted, update from the PR base using the repo's normal merge/rebase pattern before calling the PR clean.
- Inventory every blocker.
- Run
inspect_pr_state.py. - Read unresolved review threads.
- Read top-level PR conversation comments.
- Read review summary bodies, especially
CHANGES_REQUESTED. - Read failing and pending checks.
- For failing GitHub Actions checks, fetch logs with
gh run view --logor use the existinggh-fix-ciskill/script if available. - For external CI providers, open the details URL if tooling is available; otherwise report the exact external URL and continue with local reproduction where possible.
- Cluster comments by root cause.
- Multiple comments often point at one bug. Fix the bug once instead of making one-off edits for each comment.
- Separate actionable requests from stale, duplicate, or already-addressed comments.
- Do not resolve a stale-looking thread until live code proves it is obsolete and the branch has been pushed.
- Fix with tests.
- Reproduce failing CI locally when feasible.
- Add or update focused tests for review-comment fixes that affect behavior.
- Run the narrowest meaningful verification first, then broader gates when the PR touches shared code.
- Do not weaken lint, typecheck, tests, snapshots, coverage, security checks, or required workflows to get green.
- Commit and push.
- Use the repo's commit conventions.
- If push is rejected, fetch/rebase or merge the remote branch, rerun the relevant checks, then push again.
- Never resolve review threads before this push succeeds.
- Re-check GitHub.
- Re-run
inspect_pr_state.py. - Re-run
gh pr checksor the provider-specific status command. - If checks are pending, wait or watch them when practical. Do not claim there are no failing checks while required checks are still red.
- Resolve completed review threads.
- Resolve only the exact thread IDs whose requested changes were fixed and pushed.
- Use
resolve_review_threads.pyor the GraphQL mutation directly. - Re-run
inspect_pr_state.pyand confirm unresolved actionable review threads are zero.
- Final report.
- Include the PR URL/number.
- List the comments fixed, top-level comments addressed, and CI failures cleared.
- State the exact verification run.
- If anything remains pending or externally blocked, say exactly which check/comment and link the details.
Comment Handling Rules
- Review threads: fix, push, then resolve via GraphQL
resolveReviewThread. - Top-level PR conversation comments: fix the underlying issue. Reply only when a human needs a note; do not pretend they can be resolved.
- Review summary bodies: treat
CHANGES_REQUESTEDas actionable even when there is no inline thread. - Bot comments: handle if they identify a real blocker. Ignore noise only after proving it is non-actionable.
- Duplicates: mention they are duplicates in the final report, but still verify there is no separate unresolved request.
CI/CD Handling Rules
- Required checks must not be failing when done.
- A local green test does not replace a red GitHub check. Use logs to connect the local fix to the failing workflow.
- Treat pending checks as pending, not green.
- Treat skipped/neutral checks as their own bucket. They are not failures unless branch protection or the PR UI marks them as blockers.
- If a failure is environmental or third-party, gather the run URL, error text, and retry status before reporting it as blocked.
- If several PRs share the same failing workflow, fix the shared workflow once and verify each affected PR state separately.
Useful GraphQL Mutation
Use this only after the fix is pushed:
gh api graphql \
-f threadId="" \
-f query='mutation($threadId:ID!){resolveReviewThread(input:{threadId:$threadId}){thread{id isResolved}}}'
Bundled Scripts
scripts/inspect_pr_state.py: prints unresolved review threads, top-level PR comments, review summaries, and status checks for a PR.scripts/resolve_review_threads.py: resolves explicit review-thread IDs after the branch has been fixed and pushed.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: BillChirico
- Source: BillChirico/bills-agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.