retrieve-diff-from-github-pr
SKILL.md
Retrieve Diff from GitHub PR Skill
An input skill that retrieves code diff and PR metadata from GitHub via the API. This is the entry point for reviewing GitHub Pull Requests.
Role
- Fetch: Get PR details and diff via GitHub API
- Extract: Parse changed files and their diffs
- Context: Gather PR metadata (title, description, author, reviews)
Inputs
| Input | Required | Description |
|---|---|---|
owner |
Yes | Repository owner (username or organization) |
repo |
Yes | Repository name |
pull_number |
Yes | Pull Request number |
Outputs
| Output | Description |
|---|---|
pr_info |
PR metadata (title, description, author, state, labels) |
files |
List of changed files with patches |
commits |
List of commits in the PR |
base_ref |
Base branch reference |
head_ref |
Head branch reference |
diff |
Full unified diff content |
Required MCP Tools
This skill uses the GitHub MCP server with the following tools:
| Tool | Purpose |
|---|---|
get_pull_request |
Get PR details (title, body, state, author) |
get_pull_request_files |
Get list of changed files with patches |
Step 1: Parse PR Reference
Accept PR reference in various formats:
| Format | Example | Parsing |
|---|---|---|
| Full URL | https://github.com/owner/repo/pull/123 |
Extract owner, repo, pull_number |
| Short reference | owner/repo#123 |
Split on / and # |
| Number only | 123 |
Requires owner/repo from context |
Regex for URL: github\.com/([^/]+)/([^/]+)/pull/(\d+)
Regex for short: ([^/]+)/([^#]+)#(\d+)
Step 2: Fetch PR Details
Use the GitHub MCP tool to get PR information:
{
"tool": "get_pull_request",
"server": "user-github",
"arguments": {
"owner": "<owner>",
"repo": "<repo>",
"pull_number": <number>
}
}
This returns:
- PR title and description
- Author information
- Base and head branches
- State (open/closed/merged)
- Labels and reviewers
- Head commit SHA (needed for submitting review)
Step 3: Fetch Changed Files
Use the GitHub MCP tool to get file changes:
{
"tool": "get_pull_request_files",
"server": "user-github",
"arguments": {
"owner": "<owner>",
"repo": "<repo>",
"pull_number": <number>
}
}
This returns for each file:
filename: Path to the filestatus: added, removed, modified, renamedadditions: Lines addeddeletions: Lines deletedpatch: Unified diff patch for the file
Step 4: Format Output
Structure the output for the review pipeline:
## PR Retrieved
**Repository**: owner/repo
**PR #**: 123
**Title**: feat: add user authentication
### PR Info
| Field | Value |
|-------|-------|
| Author | @username |
| State | open |
| Base | main |
| Head | feature/auth |
| Commits | 3 |
| Changed Files | 5 |
### Description
<PR description content>
### Files Changed
| Status | File | +/- |
|--------|------|-----|
| modified | src/auth/login.ts | +50/-10 |
| added | src/utils/helper.ts | +30/-0 |
| deleted | src/deprecated.ts | +0/-25 |
### Diff Content
<unified diff for each file>
Output Format
{
"source": "github-pr",
"repository": {
"owner": "owner",
"repo": "repo"
},
"pull_request": {
"number": 123,
"title": "feat: add user authentication",
"body": "PR description...",
"author": "username",
"state": "open",
"base": {
"ref": "main",
"sha": "abc123"
},
"head": {
"ref": "feature/auth",
"sha": "def456"
},
"labels": ["enhancement"],
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T12:00:00Z"
},
"stats": {
"files_changed": 5,
"additions": 120,
"deletions": 45,
"commits": 3
},
"files": [
{
"path": "src/auth/login.ts",
"status": "modified",
"additions": 50,
"deletions": 10,
"patch": "@@ -1,10 +1,50 @@\n..."
}
],
"diff": "<combined unified diff>"
}
Integration with Review Pipeline
After retrieving the PR diff, pass the output to:
- codereview-orchestrator - For triage and routing
- Then to appropriate specialist skills based on the triage
- Finally to submit-github-review to post the review
Quick Reference
□ Parse PR Reference
□ Extract owner, repo, pull_number
□ Handle URL or short format
□ Fetch PR Details
□ Call get_pull_request MCP tool
□ Extract metadata and head SHA
□ Fetch Changed Files
□ Call get_pull_request_files MCP tool
□ Get patches for all files
□ Format Output
□ Structure for review pipeline
□ Include commit SHA for review submission
Example Usage in Pipeline
1. retrieve-diff-from-github-pr (this skill)
↓
2. codereview-orchestrator (triage)
↓
3. Specialist skills (review)
↓
4. submit-github-review (post review)
Error Handling
| Error | Cause | Resolution |
|---|---|---|
| 404 Not Found | PR doesn't exist or no access | Verify PR number and permissions |
| 403 Forbidden | Rate limited or no auth | Check GitHub token |
| Invalid format | Can't parse PR reference | Use format: owner/repo#number |
Weekly Installs
1
Repository
xinbenlv/codere…w-skillsGitHub Stars
6
First Seen
5 days ago
Security Audits
Installed on
claude-code1