| name | github-conversation | ||||
|---|---|---|---|---|---|
| description | Practical workflow for agents to read GitHub PR/issue context and communicate effectively with evidence, clear status, and low noise. | ||||
| metadata |
|
- You need to read a PR/issue before replying.
- You need to reply to comments or review threads.
- You need to submit a review.
- You need to post a status update that closes loops.
- Use
gh-llmfor reading context (timeline, collapsed items, review threads, checks). - Use
ghfor simple write actions (comment, labels, assignees, reviewers, close/reopen, merge). - If context is incomplete, do not reply yet; expand first.
Prerequisites:
ghis installed and authenticated (gh auth status).- Python 3.14+ is available if installing via
uv.
Install option A (recommended for CLI tool use):
uv tool install gh-llm
gh-llm --versionInstall option B (GitHub CLI extension):
gh extension install ShigureLab/gh-llm
gh llm --versionCommand prefix mapping:
- If installed via
uv tool, usegh-llm .... - If installed as
ghextension, usegh llm ....
gh-llm pr view <pr> --repo <owner/repo>
gh-llm pr timeline-expand <page> --pr <pr> --repo <owner/repo>
gh-llm pr review-expand <PRR_id[,PRR_id...]> --pr <pr> --repo <owner/repo>
gh-llm pr checks --pr <pr> --repo <owner/repo>gh-llm pr body-template --repo <owner/repo>
gh-llm pr body-template \
--repo <owner/repo> \
--requirements 'Motivation,Validation,Related Issues' \
--output /tmp/pr_body.mdUse this before gh pr create when you need to load a repo PR template, append required sections, and produce a ready-to-edit body file.
gh-llm issue view <issue> --repo <owner/repo>
gh-llm issue timeline-expand <page> --issue <issue> --repo <owner/repo>gh pr comment <pr> --repo <owner/repo> --body '<comment>'
gh issue comment <issue> --repo <owner/repo> --body '<comment>'
gh pr edit <pr> --repo <owner/repo> --add-label '<label1>,<label2>'
gh pr edit <pr> --repo <owner/repo> --remove-label '<label1>,<label2>'
gh pr edit <pr> --repo <owner/repo> --add-reviewer '<reviewer1>,<reviewer2>'
gh pr edit <pr> --repo <owner/repo> --add-assignee '<assignee1>,<assignee2>'Identify:
- Current goal of this PR/issue.
- Open requests not yet addressed.
- Decisions already made.
- Linked PRs/issues that affect this thread.
2) Expand hidden context
Expand collapsed timeline pages and relevant review threads before replying.
For PRs, check:
- CI/check failures.
- Mergeability/conflicts.
- Unresolved review threads.
A single reply should answer the target point only. Do not mix unrelated updates.
When making technical claims, include at least one concrete reference:
path:line- commit hash
- check/log link
- reproduction command
Use > when:
- the original comment has multiple points
- the thread is long and reference is ambiguous
- you are answering a specific sentence fragment
For short one-to-one replies, no quote is needed.
Use plain status language:
- fixed
- partially fixed
- not fixed yet
- intentionally unchanged
If partially fixed or unchanged, include reason and next step.
- Read the whole PR first, not just one hunk:
gh-llm pr view <pr> --repo <owner/repo>
gh-llm pr checks --pr <pr> --repo <owner/repo>
gh-llm pr review-start --pr <pr> --repo <owner/repo>- For large PRs, narrow the diff instead of guessing:
gh-llm pr review-start --pr <pr> --repo <owner/repo> --files 6-12
gh-llm pr review-start --pr <pr> --repo <owner/repo> --path 'path/to/file'
gh-llm pr review-start --pr <pr> --repo <owner/repo> --path 'path/to/file' --hunks 2-4
gh-llm pr review-start --pr <pr> --repo <owner/repo> --context-lines 3- Before writing a new comment, check whether the same location already has unresolved review threads.
- Use one pending review for one review round. Prefer multiple inline comments plus one final summary, not many separate top-level reviews.
- Use
review-suggestonly when the exact replacement is clear and small enough to be safely suggested inline. - Use
review-commentfor questions, design concerns, missing tests, missing context, or changes too large for a suggestion block. - Distinguish severity clearly:
- blocking: correctness, behavior regression, missing required tests, broken API/ABI, unsafe edge case
- non-blocking: readability, style, naming, optional refactor, small follow-up
- Every blocking point should make the next action obvious: what is wrong, where it is, and what kind of fix is expected.
Use inline comments during reading:
gh-llm pr review-comment \
--path 'path/to/file' \
--line <line> \
--side RIGHT \
--body '<comment>' \
--pr <pr> --repo <owner/repo>
gh-llm pr review-suggest \
--path 'path/to/file' \
--line <line> \
--side RIGHT \
--body '<why>' \
--suggestion '<replacement>' \
--pr <pr> --repo <owner/repo>Then submit one review:
gh-llm pr review-submit --event COMMENT --body '<summary>' --pr <pr> --repo <owner/repo>
gh-llm pr review-submit --event REQUEST_CHANGES --body '<summary>' --pr <pr> --repo <owner/repo>
gh-llm pr review-submit --event APPROVE --body '<summary>' --pr <pr> --repo <owner/repo>Use the final review summary to group the round:
- what is blocking
- what is optional
- what is already good
- Expand all relevant review content before changing code:
gh-llm pr view <pr> --repo <owner/repo>
gh-llm pr review-expand <PRR_id[,PRR_id...]> --pr <pr> --repo <owner/repo>
gh-llm pr thread-expand <PRRT_id> --pr <pr> --repo <owner/repo>- Address review items one by one, but reply in batches when possible to avoid noisy back-and-forth.
- Reply to each resolved point with concrete status:
- what changed
- where it changed
- why a point was not adopted, if applicable
- Resolve a thread only after the fix or decision is actually complete.
- If a reviewer's suggestion is substantially adopted, add proper co-author credit in the follow-up commit.
- After a batch of fixes, post one concise round-up so the reviewer can re-check efficiently.
Include:
- Problem statement.
- Minimal reproduction.
- Expected vs actual behavior.
- Environment details.
- Logs/traceback/screenshots.
- Related links.
- Ask for missing repro info instead of guessing.
- Link duplicates to the canonical thread.
- Keep one canonical status update comment.
- Is context complete (including expanded hidden/collapsed content)?
- Does the message move the thread forward?
- Are key claims backed by verifiable evidence?
- Does tone and granularity match this repository?
When a reviewer's concrete code change is substantially adopted, add:
Co-authored-by: <Reviewer Name> <reviewer_email>
Use GitHub-linked email if attribution on GitHub is desired.