codex/gh-review-comments/SKILL.md
List, reply to, resolve, unresolve, and create GitHub PR review comment threads using gh CLI scripts.
npx skillsauth add smykla-skalski/sai gh-review-commentsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when the user wants to manage pull request review threads on GitHub (list, reply, resolve, unresolve, or create a review with inline comments).
Extract these values from the user request or current repository context:
owner/repo (required)--author <login>--thread-id <PRRT_...>--reply <message>--resolve--unresolve--create-review--unresolved-onlyIf action details are missing, default to listing threads first and ask a focused follow-up question.
Before any script call:
gh auth status.sandbox_permissions=require_escalated and a short justification.gh auth login, then re-run gh auth status.gh api call fails due sandbox/network restrictions, rerun that command with escalation.Use this concrete skill path:
SKILL_DIR="/Users/[email protected]/Projects/github.com/smykla-skalski/sai/codex/gh-review-comments"
Run scripts from that directory so behavior is consistent:
"$SKILL_DIR/scripts/<script>.sh" [args...]
scripts/list-threads.sh"$SKILL_DIR/scripts/list-threads.sh" <owner> <repo> <pr_number> [--author <login>] [--unresolved-only]
Output: one JSON line per thread with thread_id, comment_id, author, body, path, line, is_resolved, is_outdated, reply_count.
scripts/reply-thread.sh"$SKILL_DIR/scripts/reply-thread.sh" <owner> <repo> <pr_number> <comment_id> <body>
comment_id must be the integer top-level comment ID from list-threads.sh.scripts/resolve-thread.sh"$SKILL_DIR/scripts/resolve-thread.sh" <thread_id>
thread_id must be the GraphQL node ID (PRRT_...) from list-threads.sh.scripts/unresolve-thread.sh"$SKILL_DIR/scripts/unresolve-thread.sh" <thread_id>
scripts/create-review.sh"$SKILL_DIR/scripts/create-review.sh" <owner> <repo> <pr_number> <event> <body> [<comments_json>|-]
event: COMMENT, APPROVE, or REQUEST_CHANGEScomments_json: array of objects with path, line, body, optional side (defaults to RIGHT)- to read comments JSON from stdinMap user request to one of:
For reply/resolve operations, enable unresolved filtering unless the user explicitly asks otherwise.
list-threads.sh with required args and any filters.--thread-id is provided, filter to that thread.If no action is requested, stop here.
For each matched thread:
comment_id with reply-thread.shthread_id with resolve-thread.shthread_id with unresolve-thread.shContinue processing remaining threads if one fails; report partial failures clearly.
When the user asks to create a review:
event, review body, and inline comments.create-review.sh exactly once.Do not automatically retry create-review.sh after a successful run because that creates duplicate reviews.
list-threads.sh and compare before/after states.create-review.sh success output as source of truth.Report:
--thread-id matches nothing, report no matching thread.create-review.sh fails, report error and likely cause (for example invalid path/line targets).Read references/gh-api-guide.md before taking action to avoid ID mismatches between REST integer IDs and GraphQL node IDs.
smykla-skalski/sai PR 4."Automaat on smykla-skalski/sai PR 4."Fixed in latest push to unresolved threads by Automaat on PR 4."PRRT_kwDOCnTGG85tgSD3 on smykla-skalski/sai PR 4."Done, thanks! and resolve thread PRRT_kwDOCnTGG85tgSD3 on PR 4."REQUEST_CHANGES review on smykla-skalski/sai PR 4 with inline comments."development
Run the council workflow from a normal Copilot session only when the user explicitly asks for council review, multi-persona critique, debate, design review, code review, architecture feedback, UX review, or tradeoff analysis. Do not use it for commit, stage, merge, approval, or generic pre-commit requests. Accept the same mode syntax as the bundled council reviewers: `core|auto|core-eng|core-ux|core-mix|all|debate <problem|@file>`. During council slash-command use, the current session agent moderates reviewer agents directly. Runs broader than 6 reviewers require explicit AskUserQuestion approval before launch.
tools
Use when the user invokes $council, $council:council, Council review, or Council debate. Use loaded SKILL body or one direct installed `skills/council/SKILL.md` read. Direct read path must contain `/.codex/plugins/cache/sai/council/` and end `/skills/council/SKILL.md`. `cd <cwd> && sed -n ... <path>` is valid. Do not use `pwd`, `ls`, `find`, `rg`, `cat`, multiple `&&`, or `;`. Never use repo-local paths. If unavailable, stop exactly `Council not run: skill unavailable.` At most one pre-tool message, exact `Council progress:` line only. Non-final lines start `Council progress:`.
development
Run council reviews with sourced engineering, UX, reliability, performance, AI, and strategy persona lenses. Use when the user asks for council review, multi-persona critique, debate, design review, code review, architecture feedback, UX review, or tradeoff analysis.
development
Use when the user asks for council review, multi-persona critique, debate, design review, code review, architecture feedback, UX review, or tradeoff analysis. Bare invocations use `core` profile auto-detect; explicit `auto` selects the best-fit 6 personas from the sourced 27-persona engineering and UX roster. Users can still pin `core`, `core-eng`, `core-ux`, `core-mix`, `all`, or `debate`.