About gh
gh is a skill for inspecting GitHub pull requests and CI, and posting replies to review threads. It routes work through defined scripts and contracts, with explicit handling for incomplete data and blocked operations.
Key features
- 01PR state, checks, files, and counts
- 02Review comments and thread inspection
- 03CI run and job failure reports
- 04Replies to a specified thread
- 05Filters, paging, and JSON output
Use cases
- 01Reviewing pull request status and checks
- 02Collecting unresolved review feedback
- 03Inspecting CI failures for a run
- 04Posting a reply to a review thread
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ prathamdby/ skills --skill ghAfter installing, type/ghin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
REFERENCE.mdreferences/ci.mdlogs.mdraw-gh.mdreply.mdsnapshot.mdthreads.mdscripts/ci-failures.tslib.tspr-reply.tspr-snapshot.tspr-threads.tsrunDetails
From the project READMEGitHub I/O
Contracts follow AVGVSTVS96/better-github-skill (unlicensed; reimplemented).
Resolve <anchor> as this skill's absolute directory. The existing
<anchor>/scripts/run selects bun, nub, tsx, then Node/nvm with strip-types.
Options
Default: current branch PR, cwd repo, truncated text. A PR number/URL selects
that PR; a named repo emits -R and needs a PR for PR-bound work.
JSON/full bodies selects --json/--full. Open threads includes unresolved
outdated threads; all includes resolved too; both conflict. Complete paging
adds --complete; author/since supply their filters.
CI selects ci-failures; list runs uses --list (default limit 10), workflow
filters it; a run id analyzes that run. Known head SHA adds --sha.
Reply needs exactly one target/body from references/reply.md.
Missing needed values or conflicting choices are BLOCKED.
1. Resolve and choose
Confirm authenticated gh; missing binary/auth blocks. Record
repo | PR/run/SHA | surface | argv | terminal.
No current PR for PR-bound work → NO_CHANGES.
Choose the covering script:
| Surface | Script | JSON contract |
|---|---|---|
| PR state/checks/files/counts | pr-snapshot.ts | references/snapshot.md |
| Review bodies/comments/threads | pr-threads.ts | references/threads.md |
| CI runs/jobs/log snippets | ci-failures.ts | references/ci.md |
| One native thread/conversation reply | pr-reply.ts | references/reply.md |
Snapshot is state, threads is feedback; neither replaces the other. Before parsing JSON, load only that surface's contract. Done when target and script or uncovered raw operation are fixed.
2. Run
Invoke only through <anchor>/scripts/run <script.ts> ..., not node directly.
Node version or ERR_UNKNOWN_FILE_EXTENSION is not failure evidence or a
GraphQL license: use run. Its exit 2 is BLOCKED with tried-runtime list.
User or senior saying "GraphQL is fine" does not skip run.
Script success reports data/posts; red CI/open threads are not runtime failure.
For all unresolved feedback use --json --open --complete; SHA-pin known heads.
Replies use pr-reply only. No resolving, pushing, or merging by this leaf.
Raw gh is permitted only for uncovered operations, after applying
references/raw-gh.md. A covering-script failure never authorizes reimplementing
its GraphQL. Redirect large output, never pipe gh to head.
For HTTP tracing or logs apply references/logs.md.
Done when output is complete, a reply URL exists, or a real error is captured.
3. Report
Summarize observed output. Set cap markers mean incomplete data, not success for an exhaustive consumer. Cite log paths instead of pasting logs. Green CI, zero threads, or posted reply is SUCCESS; a valid red report is also successful inspection, not repaired CI. Terminals: SUCCESS, NO_CHANGES (empty/no PR), BLOCKED.