
Ce Resolve Pr Feedback
Triage and resolve unresolved PR review threads and related comments so merge blockers clear without losing outdated-inline context.
Overview
ce-resolve-pr-feedback is an agent skill most often used in Ship (also Build frontend, Ship testing) that fetches, triages, and resolves unresolved GitHub PR review feedback in Full Mode.
Install
npx skills add https://github.com/everyinc/compound-engineering-plugin --skill ce-resolve-pr-feedbackWhat is this skill?
- Full Mode processes all unresolved threads when no argument or a PR number is provided
- Fetches review_threads, pr_comments, and review_bodies via scripts/get-pr-comments GraphQL script
- Threads include isOutdated flags for line-drift handling before resolve
- Triages feedback into new versus already-handled (including deferred acknowledgments)
- gh pr view / gh api fallbacks when the GraphQL script fails
- Three JSON keys from get-pr-comments: review_threads, pr_comments, review_bodies
Adoption & trust: 1.5k installs on skills.sh; 20.5k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your PR has dozens of inline threads and conversation comments and you cannot tell which feedback still needs a code change versus what was already addressed or deferred.
Who is it for?
Indie maintainers using gh on GitHub who want one agent pass over every unresolved review thread on a numbered PR.
Skip if: Repos off GitHub, PRs with zero review tooling, or situations where you have not decided product answers and only need a brainstorming pass first.
When should I use this skill?
When Mode Detection routes to Full Mode—no argument or a PR number—and you need all unresolved PR feedback processed.
What do I get? / Deliverables
Unresolved threads are classified and addressed with GraphQL-resolvable inline feedback processed deliberately, moving the PR toward merge-ready review state.
- Triage of new versus already-handled feedback
- Resolved or replied inline review threads where GraphQL resolve applies
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
PR feedback resolution is canonically shelved under Ship review because it closes the loop after implementation and before release. Review subphase covers inline threads, review bodies, and conversation comments—not writing the original code.
Where it fits
Run Full Mode on PR #42 to resolve every outstanding inline thread before you tag a release.
After pushing API changes, batch-fix reviewer requests surfaced in review_threads JSON.
Pre-launch week: clear deferred-looking replies that actually still need a patch.
How it compares
Opinionated PR feedback workflow with thread JSON and resolve paths, not a generic 'reply to comments' chat prompt.
Common Questions / FAQ
Who is ce-resolve-pr-feedback for?
Solo and indie builders who ship through GitHub PRs and need structured handling of inline review threads plus top-level review conversation.
When should I use ce-resolve-pr-feedback?
In Ship (review) before merge on an open PR; after Build when reviewers left inline notes; optionally after Ship testing when failures trace back to review-requested fixes.
Is ce-resolve-pr-feedback safe to install?
It uses git and GitHub APIs and may change code to address feedback—check the Security Audits panel on this page and restrict tokens to the repo you trust.
Workflow Chain
Then invoke: ce test browser
SKILL.md
READMESKILL.md - Ce Resolve Pr Feedback
# Full Mode Read this reference when Mode Detection (in SKILL.md) routes to **Full Mode** — no argument given, or a PR number was provided. Full mode processes all unresolved threads on the PR. ## 1. Fetch Unresolved Threads If no PR number was provided, detect from the current branch: ```bash gh pr view --json number -q .number ``` Then fetch all feedback using the GraphQL script at [scripts/get-pr-comments](../scripts/get-pr-comments): ```bash bash scripts/get-pr-comments PR_NUMBER ``` Returns a JSON object with three keys: | Key | Contents | Has file/line? | Resolvable? | |-----|----------|---------------|-------------| | `review_threads` | Unresolved inline code review threads (includes outdated; each carries its `isOutdated` flag so the resolver can account for line drift) | Yes | Yes (GraphQL) | | `pr_comments` | Top-level PR conversation comments (excludes PR author) | No | No | | `review_bodies` | Review submission bodies with non-empty text (excludes PR author) | No | No | If the script fails, fall back to: ```bash gh pr view PR_NUMBER --json reviews,comments gh api repos/{owner}/{repo}/pulls/PR_NUMBER/comments ``` ## 2. Triage: Separate New from Pending Before processing, classify each piece of feedback as **new** or **already handled**. **Review threads**: Read the thread's comments. If there's a substantive reply that acknowledges the concern but defers action (e.g., "need to align on this", "going to think through this", or a reply that presents options without resolving), it's a **pending decision** -- don't re-process. If there's only the original reviewer comment(s) with no substantive response, it's **new**. **PR comments and review bodies**: These have no resolve mechanism, so they reappear on every run. Apply two filters in order: 1. **Actionability**: Skip items that contain no actionable feedback or questions to answer. Examples: review wrapper text ("Here are some automated review suggestions..."), approvals ("this looks great!"), status badges ("Validated"), CI summaries with no follow-up asks. If there's nothing to fix, answer, or decide, it's not actionable -- drop it from the count entirely. 2. **Already replied**: For actionable items, check the PR conversation for an existing reply that quotes and addresses the feedback. If a reply already exists, skip. If not, it's new. The distinction is about content, not who posted what. A deferral from a teammate, a previous skill run, or a manual reply all count. Similarly, actionability is about content -- bot feedback that requests a specific code change is actionable; a bot's boilerplate header wrapping those requests is not. **Silent drop.** Non-actionable items are dropped without narration. Do not announce, list, or count dropped items in conversation, the task list, or the step 9 summary. Review-bot wrappers from CodeRabbit, Codex, Gemini Code Assist, and Copilot (bodies like "Here are some automated review suggestions...") commonly appear here -- recognize them by their boilerplate content, drop silently. Only CI/status bot summaries (Codecov) are pre-filtered at the script level; everything else relies on this content-aware check so bot format changes cannot silently hide actionable findings. If there are no new items across all feedback types, skip steps 3-8 and go straight to step 9. ## 3. Plan Create a task list of all **new** unresolved items (e.g., `TaskCreate` in Claude Code, `update_plan` in Codex) -- one entry per thread or comment to resolve. ## 4. Implement (PARALLEL) Process all three feedback types. Review threads are the primary type; PR comments and review bodies are secondary but should not be ignored. ### Dispatch **For review threads** (`review_threads`): Spawn a `ce-pr-comment-resolver` agent for each new thread. Each agent receives: - The thread ID - The file path and location fields: `line`, `originalLine`, `startLine`, `originalStartLine` (any can be null; outdated and file-level threads often have `line ==