| name | gh-pr-auto-detector |
| description | Automatically detects GitHub PR mentions (URLs, |
GitHub PR Auto-Detector Skill
You have access to a skill that seamlessly integrates GitHub Pull Request context into conversations without polluting the main context window with huge PR payloads.
Mission
Enhance user conversations by:
- Detecting GitHub PR mentions in user messages
- Evaluating whether PR context is genuinely needed
- Classifying user intent to fetch reviews, CI, or full context
- Fetching concise summaries via context-isolated subagent
- Integrating information naturally into your response
Pattern Recognition
Detect these GitHub PR patterns:
Full GitHub URLs:
- Format:
https://github.com/[owner]/[repo]/pull/[number] - Examples:
https://github.com/anthropics/claude-code/pull/123https://github.com/owner/repo/pull/456
- Common in: "Review https://github.com/owner/repo/pull/123"
Short Form (owner/repo#number):
- Format:
[owner]/[repo]#\d+ - Examples:
anthropics/claude-code#123,owner/repo#456 - Common in: "Check anthropics/claude-code#123"
Hash-only (#number):
- Format:
#\d+ - Examples:
#123,#456 - Common in: "What's the status of #123?"
- CAVEAT: Requires repository context from conversation or working directory
Explicit Mentions:
- "PR #123", "pull request 123", "PR 456"
- "the pull request #123"
- "review PR #456"
Multiple PRs:
- "Compare #123 and #456"
- "Review PRs #123, #124, #125"
- "Merged in anthropics/claude-code#123 and owner/repo#456"
Intelligence: When to Fetch
✅ FETCH when user needs context:
Direct questions:
- "What is #123 about?"
- "Tell me about anthropics/claude-code#456"
- "What's in https://github.com/owner/repo/pull/789?"
- "Summarize PR #123"
Review requests:
- "Review #123"
- "Check the code in PR #456"
- "What do you think about anthropics/claude-code#123?"
- "Analyze this PR: [URL]"
Status checks:
- "What's the CI status of #123?"
- "Did the tests pass on #456?"
- "Are there any review comments on #123?"
- "Is #456 approved?"
Implementation requests:
- "Apply the changes from #123"
- "Use the approach from anthropics/claude-code#456"
- "Implement similar to #123"
- "Port #456 to our codebase"
Problem-solving:
- "Why did #123 fail CI?"
- "What are the review blockers on #456?"
- "How should I address feedback on #123?"
Comparisons:
- "Compare #123 and #456 approaches"
- "Which is better, #123 or anthropics/claude-code#789?"
❌ DON'T FETCH when context not needed:
Past tense (already done):
- "I merged #123 yesterday"
- "PR #456 was released last week"
- "Closed #123 this morning"
- "Fixed in #456"
Passive listing:
- "Released with #123, #124, #125"
- "Changelog: #123, #456, #789"
- "Sprint delivered #100 through #150"
Technical identifiers:
- "The PR-123 endpoint" (endpoint name, not PR reference)
- "Variable pr_456_result"
- "Function handlePR123()"
Casual reference:
- "Similar to #123 but different"
- "Reminds me of that PR #456"
- "Like we did in #123"
Already fetched this session:
- Check transcript for previous gh-pr-analyzer subagent calls
- Don't re-fetch same PR in same conversation
- Reuse previously fetched context
Intent Classification: What to Fetch
Based on user's question, determine which PR aspects to fetch:
🔍 Full Context (default)
- User asks general questions: "What's #123 about?"
- Wants comprehensive review: "Review #456"
- Implementation planning: "Implement similar to #123"
- Options:
include_reviews: true, include_ci: true
💬 Reviews Focus
- User asks specifically about feedback: "What are the review comments on #123?"
- Wants approval status: "Is #456 approved?"
- Addressing feedback: "How should I address review on #123?"
- Options:
include_reviews: true, include_ci: false
✅ CI/Checks Focus
- User asks about tests/CI: "Did tests pass on #123?"
- CI failures: "Why did #456 fail CI?"
- Check status: "What's the CI status of #123?"
- Options:
include_reviews: false, include_ci: true
📄 Minimal Context (rare)
- User only needs basic info: "Who authored #123?"
- Quick status check: "Is #456 merged?"
- Options:
include_reviews: false, include_ci: false
How to Use This Skill
Step 1: Scan User Message
Look for GitHub PR patterns:
- Scan for full GitHub URLs
- Check for owner/repo#number format
- Look for #number references
- Note explicit mentions ("PR #123")
- Identify all matches (can be multiple)
Step 2: Extract Repository Context
For full URLs:
- Parse owner and repo from URL
- Extract PR number
- Format:
owner/repo#number
For owner/repo#number:
- Already has full context
- Use as-is
For #number only:
- Check conversation for repo context
- Check working directory (via git remote)
- If missing, ask user to clarify repository
Step 3: Evaluate Context Need
For each detected PR, ask yourself:
Does the user's request require understanding this PR?
- Will I need PR details to answer their question?
- Is this PR central to what they're asking?
- Are they asking me to work with this PR?
Is this just a passing mention?
- Is it in past tense (already merged/closed)?
- Is it part of a list?
- Is it used as an identifier/name?
Have I already fetched this PR?
- Check transcript for
Tasktool calls with "gh-pr-analyzer" - Look for "GitHub PR Summary: owner/repo#123" in conversation history
- If found, reuse that context
Step 4: Classify User Intent
Determine what aspects the user needs:
Full context signals:
- General questions ("What's #123 about?")
- Implementation ("Apply changes from #123")
- Comprehensive review ("Review #456")
Reviews focus signals:
- "review comments", "feedback", "approval"
- "What did reviewers say?"
- "Address review on #123"
CI focus signals:
- "CI", "tests", "checks", "build", "failed"
- "Did tests pass?"
- "Why did CI fail?"
Default: When unclear, fetch full context (reviews + CI)
Step 5: Fetch PR Summary (If Needed)
When you determine context IS needed:
First, acknowledge detection:
📋 **[PR Auto-Detector]** Detected PR reference: [owner/repo#number or #number]
⏳ Fetching PR details...
Use the Task tool to spawn gh-pr-analyzer subagent:
Tool: Task
Parameters:
prompt: "Fetch and summarize GitHub PR: [owner/repo#number or URL]
Options: include_reviews=[true/false], include_ci=[true/false]"
subagent_type: "schovi:gh-pr-auto-detector:gh-pr-analyzer"
description: "Fetching GitHub PR context"
Examples:
Full context (default):
prompt: "Fetch and summarize GitHub PR: anthropics/claude-code#123"
Reviews only:
prompt: "Fetch and summarize GitHub PR: anthropics/claude-code#123
Options: include_reviews=true, include_ci=false"
CI only:
prompt: "Fetch and summarize GitHub PR: https://github.com/owner/repo/pull/456
Options: include_reviews=false, include_ci=true"
CRITICAL formatting rules:
- Use full identifier format:
owner/repo#numberOR full URL - Specify options explicitly when not default
- Format must be parseable by gh-pr-analyzer subagent
What you'll receive:
The gh-pr-analyzer subagent will return a structured summary (~800-1000 tokens) with visual wrappers:
╭─────────────────────────────────────╮
│ 🔗 PR ANALYZER │
╰─────────────────────────────────────╯
# GitHub PR Summary: owner/repo#123
## Core Information
- PR: #123 - Title
- Author: username
- Status: open | merged | closed
- Base: main ← Head: feature-branch
- URL: https://github.com/owner/repo/pull/123
## Description
[Condensed description, max 500 chars]
## Code Changes
- Files changed: 15 (+250, -100)
- Key files: [Top 5 files by changes]
## CI/CD Status (if requested)
- Overall: ✅ passing | ❌ failing | ⏳ pending
- Failed checks: [Details if any]
## Reviews (if requested)
- Review decision: APPROVED | CHANGES_REQUESTED | PENDING
- Latest reviews: [Max 3 most recent]
- Key comments: [Max 5 significant comments]
## Analysis Notes
[Subagent's assessment]
Step 6: Use the Summary
After receiving the summary, acknowledge completion:
✅ **[PR Auto-Detector]** PR details fetched successfully
Integrate the summary information into your response:
Acknowledge you fetched it:
"I've fetched PR #123 details..." "Based on the pull request..." "Looking at anthropics/claude-code#123..."
Use the context:
- Answer questions based on description/changes
- Assess CI status and diagnose failures
- Summarize review feedback and approval state
- Analyze code changes based on diff summary
- Reference key comments if relevant
Stay concise:
- Don't regurgitate entire summary
- Extract relevant points for this response
- Focus on what user asked about
Step 7: Handle Multiple PRs
If user mentions multiple PRs (e.g., "Compare #123 and #456"):
Prioritize:
- Primary PR: The one most central to their question
- Secondary PRs: Only if needed for comparison/context
Fetch sequentially:
1. Spawn subagent for #123
2. Wait for response
3. Spawn subagent for #456
4. Wait for response
5. Use both summaries for comparison
Limit:
- Don't fetch more than 3 PRs per response
- If user mentions 10 PRs in a list, don't fetch all
- Ask user to clarify which they want details on
Repository Context Detection
When #number is mentioned without owner/repo:
Step 1: Check conversation history
- Look for previous PR mentions with full context
- See if user specified repository earlier
- Check for git remote context from previous commands
Step 2: Check current working directory
- If cwd is a git repository, use
git remote get-url origin - Parse owner/repo from remote URL
- Format:
owner/repo#number
Step 3: Ask user if context unclear
"I see you mentioned #123. Which repository is this PR in? (e.g., owner/repo#123)"
Example flow:
User: "What's #123 about?"
Your process:
- ✅ Detect "#123" pattern
- ❓ Missing owner/repo context
- ✅ Check cwd:
/Users/schovi/productboard/frontend - ✅ Run:
git remote get-url origin - ✅ Parse:
https://github.com/productboard/frontend.git→productboard/frontend - ✅ Format:
productboard/frontend#123 - ✅ Spawn gh-pr-analyzer with full identifier
Session Memory
Track what you've fetched:
When you fetch a PR, remember it for this session:
- Note the PR identifier (owner/repo#number)
- Note the summary content
- Note what options were used (reviews/CI)
- Reuse this context if user mentions it again
How to check:
- Review conversation transcript
- Look for your previous Task tool calls
- Search for "GitHub PR Summary: owner/repo#"
Benefits:
- Avoid redundant fetches
- Faster responses
- Cleaner context management
Re-fetch scenarios: When to fetch again even if already fetched:
- User asks for different aspects (was minimal, now wants reviews)
- User explicitly requests fresh data ("re-check CI on #123")
- Significant time has passed (CI might have updated)
Error Handling
If subagent returns "PR Not Found":
Respond to user:
"I couldn't fetch #123 - it might not exist or you may not have access. Can you verify the PR number and repository?"
Possible reasons:
- Typo in PR number
- Wrong repository
- PR doesn't exist
- User lacks permissions
- Private repository
If subagent returns "Repository context missing":
Respond to user:
"You mentioned #123, but I need the repository. Please specify as owner/repo#123 or provide a full GitHub URL."
Your action:
- Ask for clarification
- Don't assume repository
- Wait for user to provide context
If subagent returns API error:
Respond to user:
"I encountered an error fetching the PR. Can you provide the key details about this pull request?"
Continue conversation:
- Ask user for context manually
- Don't block on PR fetch failure
- Use whatever information user provides
If gh CLI not authenticated:
Respond to user:
"GitHub CLI (
gh) is not authenticated. Please rungh auth loginto enable PR fetching."
Fallback:
- Ask user to provide PR details manually
- Suggest authentication command
- Continue with available information
If fetch times out:
Respond to user:
"Fetching PR #123 is taking longer than expected. While that completes, can you tell me what specific aspect you need help with?"
Proceed in parallel:
- Ask clarifying questions
- Start analysis with available context
- Incorporate PR summary when it arrives
Integration with Commands
If user explicitly runs a command that fetches PRs:
✅ Let the command handle PR fetching
- Commands may have their own PR fetch logic
- Don't duplicate effort
- Your skill doesn't need to activate
✅ The command will:
- Parse PR identifiers from arguments
- Delegate to gh-pr-analyzer subagent
- Perform its specific workflow
✅ Your role:
- Execute the command's instructions
- Don't interfere with its flow
- Trust the command's structured workflow
If user casually mentions PRs in other contexts:
✅ Your skill activates
- "What's #123 about?" → You fetch it
- "Review anthropics/claude-code#456" → You fetch it
- "Why did #123 fail CI?" → You fetch it (CI focus)
Working with gh-pr-analyzer Subagent
Understand the architecture:
You (Main Claude with Skill)
↓ detect PR mention
↓ evaluate context need
↓ classify intent (reviews/CI/full)
↓ determine repository context
↓ spawn subagent via Task tool
↓
gh-pr-analyzer Subagent (Isolated Context)
↓ fetches huge PR payload via gh CLI
↓ analyzes and extracts essence
↓ burns tokens privately
↓ returns 800-1000 token summary
↓
You receive clean summary
↓ integrate into response
↓ main context stays clean!
Your responsibilities:
- WHEN to fetch (intelligence, context evaluation)
- WHAT to fetch (reviews, CI, full context)
- WHAT to do with summary (integration into response)
gh-pr-analyzer subagent's responsibilities:
- HOW to fetch (gh CLI commands, parsing)
- WHAT to extract (summarization, condensing)
Separation of concerns = clean architecture
Examples
Example 1: Direct Question (Full Context)
User: "What is anthropics/claude-code#123 about?"
Your Process:
- ✅ Detect "anthropics/claude-code#123" pattern
- ✅ Extract: owner=anthropics, repo=claude-code, number=123
- ✅ Evaluate: Direct question → context needed
- ✅ Classify: General question → full context (default)
- ✅ Check transcript: Not fetched yet
- ✅ Spawn gh-pr-analyzer subagent with full context
- ✅ Receive summary
- ✅ Respond with information
Your Response:
📋 [PR Auto-Detector] Detected PR reference: anthropics/claude-code#123 ⏳ Fetching PR details...
[After subagent returns]
✅ [PR Auto-Detector] PR details fetched successfully
"I've fetched anthropics/claude-code#123. This PR adds support for MCP servers in Claude Code. The PR includes 15 file changes (+250, -100 lines), primarily in the server integration layer. The CI is passing and the PR has been approved by 2 reviewers. Based on the description..."
Example 2: CI Status Check
User: "Did the tests pass on #456?"
Your Process:
- ✅ Detect "#456" pattern
- ❓ Missing owner/repo → check cwd
- ✅ Get git remote →
productboard/frontend - ✅ Format:
productboard/frontend#456 - ✅ Evaluate: CI question → context needed
- ✅ Classify: CI focus → include_reviews=false, include_ci=true
- ✅ Spawn gh-pr-analyzer with CI focus
- ✅ Receive CI summary
- ✅ Respond about CI status
Your Response:
📋 [PR Auto-Detector] Detected PR reference: #456 ⏳ Resolving repository context and fetching CI status...
[After subagent returns]
✅ [PR Auto-Detector] CI status fetched successfully
"I've checked the CI status for productboard/frontend#456. The build is currently failing - the 'test-suite' check failed with 3 test errors in the authentication module. The linter and type checks passed successfully. Here are the failing tests..."
Example 3: Review Request
User: "Review https://github.com/owner/repo/pull/789"
Your Process:
- ✅ Detect full GitHub URL
- ✅ Parse: owner=owner, repo=repo, number=789
- ✅ Evaluate: Review request → context needed
- ✅ Classify: Review request → full context (reviews + CI + code)
- ✅ Spawn gh-pr-analyzer with full context
- ✅ Receive comprehensive summary
- ✅ Analyze and provide review feedback
Your Response:
📋 [PR Auto-Detector] Detected PR reference: https://github.com/owner/repo/pull/789 ⏳ Fetching full PR context for review...
[After subagent returns]
✅ [PR Auto-Detector] PR details fetched successfully
"I've reviewed owner/repo#789. This PR refactors the authentication flow to use JWT tokens. Here's my analysis:
Code Changes: The PR modifies 8 files, primarily in the auth/ directory. The changes look well-structured and include comprehensive tests.
CI Status: All checks are passing ✅
Existing Reviews: One reviewer requested changes regarding error handling in the token refresh logic. I agree with that feedback.
Additional Observations: [detailed review feedback]..."
Example 4: Past Tense (Don't Fetch)
User: "I merged #123 yesterday, now working on #124"
Your Process:
- ✅ Detect "#123" and "#124" patterns
- ❌ Evaluate: Past tense (#123) → don't fetch
- ✅ Evaluate: Current work (#124) → might need context
- ❓ Check user intent: Are they asking for help with #124?
Your Response (if just informing):
"Great progress on #123! What would you like help with regarding #124?" [Don't fetch either PR yet - wait for user to ask specific question]
Your Response (if asking for help):
"Great! Now for #124, let me fetch the details..." [Fetch #124 only, with appropriate focus]
Example 5: Comparison Request
User: "Compare the approaches in #123 and anthropics/claude-code#456"
Your Process:
- ✅ Detect both PRs
- ❓ #123 missing context → check cwd →
productboard/frontend - ✅ Format:
productboard/frontend#123andanthropics/claude-code#456 - ✅ Evaluate: Comparison request → context needed for both
- ✅ Classify: Approach comparison → full context
- ✅ Spawn subagent for productboard/frontend#123 first
- ✅ Wait for summary
- ✅ Spawn subagent for anthropics/claude-code#456
- ✅ Wait for summary
- ✅ Compare based on both summaries
Your Response:
📋 [PR Auto-Detector] Detected PR references: #123, anthropics/claude-code#456 ⏳ Fetching both PRs for comparison...
[After first subagent returns] ✅ productboard/frontend#123 fetched ⏳ Fetching anthropics/claude-code#456...
[After second subagent returns] ✅ anthropics/claude-code#456 fetched
"productboard/frontend#123 implements authentication using session cookies, while anthropics/claude-code#456 uses JWT tokens. Key differences:
#123 (session cookies):
- Pros: [analysis]
- Cons: [analysis]
anthropics/claude-code#456 (JWT):
- Pros: [analysis]
- Cons: [analysis]
For your use case, I'd recommend [recommendation with rationale]..."
Example 6: Technical Identifier (Don't Fetch)
User: "The PR-123 endpoint is returning 500 errors"
Your Process:
- ✅ Detect "PR-123" pattern (looks like PR reference)
- ❌ Evaluate: Used as endpoint name (technical identifier) → don't fetch
- ✅ Respond about the endpoint issue
Your Response:
"Let me help debug the PR-123 endpoint. Can you share the error logs or stack trace?" [No PR fetch - "PR-123" is just an endpoint name here]
Example 7: Already Fetched (Reuse Context)
User (earlier): "Review #123" You: [Fetched anthropics/claude-code#123, provided review]
User (later): "Can you also check if #123 affects the authentication flow?"
Your Process:
- ✅ Detect "#123" pattern
- ✅ Evaluate: Question about PR → context needed
- ✅ Check transcript: Already fetched earlier in this conversation
- ✅ Reuse previous summary from transcript
- ✅ Answer based on already-known context
Your Response:
"Based on the #123 PR I reviewed earlier (adds MCP server support), let me analyze how it interacts with the authentication flow... [analysis based on previously fetched context]" [No redundant fetch - reused previous context]
Example 8: Missing Repository Context
User: "What's #123 about?"
Your Process (no git context available):
- ✅ Detect "#123" pattern
- ❓ Missing owner/repo → check cwd → not a git repo
- ❓ Check conversation → no previous repo mentions
- ❌ Cannot determine repository
- ✅ Ask user for clarification
Your Response:
"You mentioned #123 - which repository is this PR in? Please specify as
owner/repo#123or provide the full GitHub URL." [Wait for user to clarify before fetching]
Quality Checks
Before fetching any PR:
- PR identifier matches valid format
- Repository context is clear (owner/repo known)
- User's question genuinely requires PR context
- PR hasn't already been fetched this session (or needs refresh)
- Fetching will help (not hinder) the response
- User intent is clear (not ambiguous)
- Correct options selected (reviews/CI/full)
After receiving subagent summary:
- Summary was successfully returned (not error)
- Summary contains relevant information
- You understand the PR context
- You can now provide informed response
- You're ready to proceed
In your response:
- Acknowledged you fetched context
- Used summary information appropriately
- Didn't regurgitate entire summary
- Focused on user's specific question
- Response is actionable and helpful
- Integrated GitHub context naturally
Remember
Your goal: Seamlessly enhance conversations with GitHub PR context when needed.
Balance:
- ✅ Be proactive: Fetch when context genuinely helps
- ✅ Be respectful: Don't over-fetch or slow conversations
- ✅ Be intelligent: Understand nuance in how PRs are mentioned
- ✅ Be context-aware: Detect repository from environment
- ✅ Be specific: Fetch only what user needs (reviews/CI/full)
- ✅ Be transparent: Let users know you fetched context
- ✅ Be efficient: Reuse context, don't fetch redundantly
Trust the architecture:
- You decide WHEN (intelligence layer)
- You decide WHAT (intent classification)
- gh-pr-analyzer decides HOW (execution layer)
- User stays in flow (seamless experience)
Activation is automatic:
- No special invocation needed
- Just be aware of GitHub PR patterns
- Evaluate context intelligently
- Classify user intent appropriately
- Fetch when it genuinely helps
Good luck making GitHub PR integration seamless! 🚀