github-pr-feedback
Collect, triage, and safely resolve GitHub pull-request feedback with `gh` and the GitHub API without posting comments.
Skill by kaeawc
Chalk Labs
Need help deploying github-pr-feedback?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/kaeawc-github-pr-feedback-29e7f1
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
github-pr-feedback- Description
- Collect, triage, and safely resolve GitHub pull-request feedback with `gh` and the GitHub API without posting comments. Use for a PR's conversation comments, review submissions, inline comments, or unresolved review threads, especially before addressing feedback or declaring a PR ready.
- License
- Apache-2.0
- Instructions
- 109 lines in SKILL.md · view on GitHub
Files (2)
- SKILL.md
- openai.yaml · agents/
SKILL.md (first lines)
# GitHub PR Feedback
Build one complete, head-SHA-scoped ledger before judging or changing a PR. Flat comment views
are insufficient: an unresolved thread can be absent from them, and an outdated thread still
needs a deliberate disposition. See `github-cli` for the underlying command mechanics.
## Intake
1. Snapshot the PR:
```bash
# Keep the field list on ONE line: a backslash-newline plus indentation turns the
# remainder into a second positional argument, which `gh pr view` rejects.
gh pr view <pr> --json number,url,state,mergedAt,mergeCommit,title,body,author,headRefName,headRefOid,baseRefName,mergeable,mergeStateStatus,reviewDecision,closingIssuesReferences
gh api user -q .login # is this an open PR authored by the authenticated user?
```
Record `headRefOid`; never apply a disposition to a later head without a fresh snapshot.
2. **Merged or closed ⇒ historical read-only mode.** Compare its merge commit against current
`origin/main`, classify each item as historical, remediated, or still-open, and do not push,
resolve, or re-run without explicit authorization for a new follow-up scope.
3. Read every linked issue (`gh issue view <issue> --json number,title,state,body,comments,url`),
then fetch all four paginated feedback surfaces, saving large snapshots under `scratch/`:
- conversation: `gh api --paginate "repos/<owner>/<repo>/issues/<pr>/comments?per_page=100"`
- review verdicts: `gh api --paginate "repos/<owner>/<repo>/pulls/<pr>/reviews?per_page=100"`
- inline: `gh api --paginate "repos/<owner>/<repo>/pulls/<pr>/comments?per_page=100"`
- GraphQL review threads: `scripts/ci/pr-review-threads.sh <pr>`, which returns a complete
JSON array containing `id`, `isResolved`, `isOutdated`, `path`, `line`, `originalLine`,
`diffSide`, and each requested comment's author, body, URL, and timestamp. Add
`--unresolved-only` only when the full resolved-thread history is not needed.
Query thread state even when the flat inline list is empty.
The three REST endpoints return top-level arrays and `--paginate` merges them, so saving
and parsing those is safe — do not add `--slurp`, which would yield an array _of pages_ and
is rejected alongside `--jq`. GraphQL is the opposite, which is why review threads must use
`pr-review-threads.sh`; a ledger built from only its first page looks complete and is not.
4. Build the ledger — one row per unresolved thread, review request, inline comment, and
conversation comment: source URL, head SHA, requested behavior, file/line, disposition
(`fix`, `wrong reason, right change`, `already addressed`, `not actionable`, `duplicate`,
`ambiguous`, `out of scope`), evidence, targeted validation, and whether resolution is
allowed.
### Bot findings
`chatgpt-codex-connector[bot]` is the highest-volume reviewer here and encodes severity as a
body badge (`P1 Badge`/`P2 Badge`/`P3 Badge`):
```bash
gh api --paginate "repos/<owner>/<repo>/pulls/<pr>/comments?per_page=100" \
--jq '.[] | select(.user.login|test("codex"))
| {id, path, line, sev: (.body|capture("P(?<n>[123]) Badge").n), body: .body[0:400]}'
```
P1 claims to block. It is usually right about mechanism and sometimes wrong about reachability —
verify the call path before acting and equally before dismissing. Over one recent week, 46 of 94
codex threads here merged still unresolved, several P1; that is the failure mode this skill
exists to prevent.
## Triage and resolution boundary
- Verify each claim against current source and PR intent. Neither an automated reviewer nor a
stale diff position is proof by itself.
- **Judge the mechanism and the suggestion separately.** A reviewer can be wrong about _why_ and
right about _what_; that is what `wrong reason, right change` is for. Collapsing it into
`not actionable` is how real fixes get closed — it happened twice in one week here.
- **Refutation carries the higher burden.** Wrongly rejecting a real finding leaves a live bug;
wrongly accepting a bad one costs a small unnecessary change. Before calling something refuted,
confirm your test could actually have found it: that it discriminates between the claim and its
negation, and that your environment or sample matches the claim's stated scope. Record the
version or platform you tested against, so the limit of the evidence is visible.
- An unresolved, non-outdated thread is actionable until evidence says otherwise. An outdated
thread is a prompt to check whether the current head fixed the underlying behavior — never a
reason to silently discard it. On a merged/closed PR, keep it as an explicit historical
disposition; adjacent code changing in a later PR does not address it.
- **Never post a conversation comment, reply, inline comment, or review.** Return dispositions
and evidence to the user.
- **A triaged thread gets resolved — that is what addressing it means.** Resolution is the
disposition made durable, not a reward reserved for fixes. Two routes:
- Disposition `fix` or `wrong reason, right change`: resolve once the change is committed
**and pushed**, targeted validation passed, and the fresh head still contains it. For
`wrong reason, right change`, also tell the user which part of the stated reasoning did not
hold — otherwise it reads as agreement and the bad rationale becomes precedent.
- Disposition `already addressed`, `not actionable`, `duplicate`, or `out of scope`:
resolve too. A finding you verified and declined is handled; leaving it open only makes
the next reader re-derive your reasoning. Report the reason to the user in-session.
In both cases the PR must be open and authored by the authenticated user, and the
resolution must answer _that_ thread rather than a neighbouring one.
- The single exception is `ambiguous`: if you could not determine whether the finding is real,
leave it open, say so, and ask. Never resolve to make a queue look clean.
- Resolve via GraphQL, never by guessing from a flat comment id:
```bash
gh api graphql -f query='
mutation($id:ID!){ resolveReviewThread(input:{threadId:$id}){ thread{ id isResolved } } }' \
-F id=<PRRT_…>
```
`threadId` is the `PRRT_…` node id from the `reviewThreads` query, and nothing else is needed.
Answering instead takes the _comment_ id
(`gh api repos/<owner>/<repo>/pulls/<pr>/comments/<comment_id>/replies -f body='…'`) — but a
reply is a comment, so send one only when the user asked you to answer a reviewer, never as
your own finding.
- After a push, repeat intake from the new head SHA. Do not resolve threads or call CI green
against the previous head.
## Handoff
Return the ledger and the exact remaining blockers. Pair with `check-ci` for workflow state and
`auto-mobile-code-review` for code-level verification and follow-through.From kaeawc/auto-mobile, Apache-2.0.
More from kaeawc/auto-mobile
- 0.789score
AutoMobile
jasonpearson.dev
Mobile device interaction automation.
ConnectorAFreshness: ALocal★ 52↓ 2.9K/wkClaude Code +5 - 0.664score
fan-out-fan-in
kaeawc
Use this workflow skill only when the user wants explicit parallelization or the task should be split into isolated worktrees and merged back without separate…
SkillAFreshness: A★ 52Claude Code +9 - 0.664score
research
kaeawc
Use this skill to conduct deep parallel research on a topic using web searches and available tools.
SkillAFreshness: A★ 52Claude Code +9 - 0.664score
ship-issue
kaeawc
Drive one GitHub issue to a merged PR via TDD, autonomously by default — interrupting the user only on review-feedback thrashing or an approach pivot — with a…
SkillAFreshness: A★ 52Claude Code +9 - 0.664score
github-cli
kaeawc
Helper skill for GitHub operations in this repo; use it when another workflow needs gh for PRs, issues, review threads, checks, Actions runs, or job logs —…
SkillAFreshness: A★ 52Claude Code +9 - 0.664score
dead-code
kaeawc
Use this skill to detect and clean up dead code in this repo, starting with the project’s TypeScript dead-code scripts and validating that removals do not…
SkillAFreshness: A★ 52Claude Code +9 - 0.661score
push-my-prs
kaeawc
Use this workflow skill to iterate through multiple open PRs authored by the current user, address feedback and CI issues, and push follow-up fixes across the…
SkillAFreshness: A★ 52Claude Code +9 - 0.661score
push-pr
kaeawc
Canonical repo workflow for publishing one branch or PR: confirm scope, validate, commit, push, create or update the PR with preserved Markdown, and…
SkillAFreshness: A★ 52Claude Code +9 - 0.661score
check-ci
kaeawc
Use this workflow skill for PR CI triage: inspect pending and failed checks for the exact PR head, read live or completed job logs and artifacts, classify…
SkillAFreshness: A★ 52Claude Code +9 - 0.661score
pr-analysis
kaeawc
Use this workflow skill for a deep, read-only PR review covering intent, code quality, regression risk, test gaps, and feedback status; prefer it over…
SkillAFreshness: A★ 52Claude Code +9 - 0.660score
android-gradlew
kaeawc
Helper skill for Android-specific validation or build work in the android/ subdirectory; use it when another task needs Gradle wrapper commands run from…
SkillAFreshness: A★ 52Claude Code +9 - 0.659score
observe
kaeawc
Use this skill to inspect the current state of a connected mobile device through the AutoMobile observe capability and summarize the active app, visible UI…
SkillAFreshness: A★ 52Claude Code +9
Signals
- Stars
- 52
- Forks
- 7
- Open issues
- 510
- Contributors
- 20
- Last commit (this folder)
- Aug 24, 2026 (2 months ago)
- Last release
- Oct 19, 2026 (12 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/kaeawc/auto-mobile
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from kaeawc
- 0.664score
research
kaeawc
Use this skill to conduct deep parallel research on a topic using web searches and available tools.
SkillAFreshness: A★ 52Claude Code +9 - 0.664score
ship-issue
kaeawc
Drive one GitHub issue to a merged PR via TDD, autonomously by default — interrupting the user only on review-feedback thrashing or an approach pivot — with a…
SkillAFreshness: A★ 52Claude Code +9 - 0.664score
github-cli
kaeawc
Helper skill for GitHub operations in this repo; use it when another workflow needs gh for PRs, issues, review threads, checks, Actions runs, or job logs —…
SkillAFreshness: A★ 52Claude Code +9 - 0.664score
dead-code
kaeawc
Use this skill to detect and clean up dead code in this repo, starting with the project’s TypeScript dead-code scripts and validating that removals do not…
SkillAFreshness: A★ 52Claude Code +9 - 0.664score
fan-out-fan-in
kaeawc
Use this workflow skill only when the user wants explicit parallelization or the task should be split into isolated worktrees and merged back without separate…
SkillAFreshness: A★ 52Claude Code +9 - 0.661score
check-ci
kaeawc
Use this workflow skill for PR CI triage: inspect pending and failed checks for the exact PR head, read live or completed job logs and artifacts, classify…
SkillAFreshness: A★ 52Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get github-pr-feedback running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
github-pr-feedback skill. Agent Mart. https://agentmart.dev/skills/kaeawc-github-pr-feedback-29e7f1 (last updated 2026-10-24)