--- name: github-pr description: GitHub PR utilities for code review workflows version: 0.1.0-beta license: MIT compatibility: opencode --- ## Overview CLI tools for GitHub pull request operations. Designed to support automated code review workflows. Requires the GitHub CLI (`gh`) to be installed and authenticated. ## Prerequisites - [bun](https://bun.sh) runtime installed - [GitHub CLI](https://cli.github.com/) installed and authenticated ```bash brew install gh gh auth login ``` ## Commands ### Check Review Needed Determines if a PR should be reviewed by checking various conditions. ```bash bun .opencode/skill/github-pr/check-review-needed.js [pr-number] ``` **Arguments:** - `pr-number` - PR number (optional, defaults to current branch's PR) **Output:** JSON object with: - `shouldReview` - boolean indicating if review should proceed - `reason` - explanation for the decision - `prNumber` - the PR number checked **Conditions checked:** - PR is not closed or merged - PR is not a draft - PR is not from a known bot (dependabot, renovate, etc.) - PR title doesn't indicate automation (bump, chore(deps), etc.) - PR has not already been reviewed by Claude/AI - PR is not trivial (2 or fewer lines changed) **Examples:** ```bash # Check current branch's PR bun .opencode/skill/github-pr/check-review-needed.js # Check specific PR bun .opencode/skill/github-pr/check-review-needed.js 123 ``` --- ### List Guideline Files Finds AGENTS.md (or CLAUDE.md) files relevant to a PR's changes. ```bash bun .opencode/skill/github-pr/list-guideline-files.js [pr-number] [--json] ``` **Arguments:** - `pr-number` - PR number (optional, defaults to current branch's PR) **Options:** - `--json` - Output as JSON array with file contents **Search locations:** - Repository root - All directories containing files modified in the PR - Parent directories of modified files **Priority:** If both AGENTS.md and CLAUDE.md exist in the same directory, AGENTS.md takes precedence. **Examples:** ```bash # List guideline files for current PR bun .opencode/skill/github-pr/list-guideline-files.js # Get full content as JSON bun .opencode/skill/github-pr/list-guideline-files.js 123 --json ``` **JSON Output Format:** ```json [ { "path": "AGENTS.md", "content": "# Project Guidelines\n..." }, { "path": "src/components/AGENTS.md", "content": "# Component Guidelines\n..." } ] ``` --- ### Post Inline Comment Posts a review comment on a specific line or line range in a PR. ```bash bun .opencode/skill/github-pr/post-inline-comment.js --path --line --body ``` **Arguments:** - `pr-number` - PR number (optional if on a PR branch) **Options:** - `--path ` - File path to comment on (required) - `--line ` - Line number to comment on (required) - `--start-line ` - Start line for multi-line comments (optional) - `--body ` - Comment body in markdown (required) **Suggestion blocks:** Include a suggestion block for small fixes that can be committed directly: ````markdown Fix the error handling: ```suggestion try { await authenticate(); } catch (e) { handleAuthError(e); } ``` ```` **Important:** Suggestions must be complete. The author should be able to click "Commit suggestion" without needing additional changes elsewhere. **Examples:** ```bash # Single line comment bun .opencode/skill/github-pr/post-inline-comment.js 123 \ --path src/auth.ts \ --line 67 \ --body "Missing error handling for OAuth callback" # Multi-line comment (lines 65-70) bun .opencode/skill/github-pr/post-inline-comment.js 123 \ --path src/auth.ts \ --line 70 \ --start-line 65 \ --body "This authentication block needs refactoring" ``` --- ## Integration with gh CLI These tools wrap the GitHub CLI (`gh`). For operations not covered by these utilities, use `gh` directly: ```bash # View PR details gh pr view 123 --json title,body,state,isDraft,files # Get PR diff gh pr diff 123 # View PR comments gh pr view 123 --comments # Post a regular comment gh pr comment 123 --body "Comment text" # View file at PR head gh api repos/{owner}/{repo}/contents/{path}?ref={branch} ``` ## Output Behavior - Command output is displayed directly to the user in the terminal - JSON output is formatted for readability and piping - Use `--json` flag when you need to process output programmatically