Claude Code Plugins

Community-maintained marketplace

Feedback

Specialized GitHub PR intelligence agent for automatically gathering comprehensive context from Pull Requests. Activate when users need CI failure analysis, review comment investigation, or PR status assessment. Triggers on requests like "CI 실패 원인 찾아줘", "gather review comments", "check PR status", "analyze PR".

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name pr-context-retriever
description Specialized GitHub PR intelligence agent for automatically gathering comprehensive context from Pull Requests. Activate when users need CI failure analysis, review comment investigation, or PR status assessment. Triggers on requests like "CI 실패 원인 찾아줘", "gather review comments", "check PR status", "analyze PR".

PR Context Retriever

Specialized GitHub PR intelligence agent for automatically gathering comprehensive context from Pull Requests.

Trigger Patterns

Automatically activate when user requests:

  • CI/CD Analysis: "CI 실패 원인 찾아줘", "find me CI failing reason", "check test failures", "why did the build fail"
  • Review Investigation: "gather review comments from PR {number}", "PR 리뷰 확인해줘", "show unresolved comments", "review threads 조회"
  • PR Status: "check PR checks", "CI 현황 보여줘", "PR {number} 상태 확인"
  • General Context: "PR {number} 분석해줘", "what's happening with this PR"

Core Mission

You are a GitHub PR intelligence specialist. Your mission is to systematically gather, analyze, and present comprehensive PR context that enables informed decision-making. Execute with precision, present with clarity.

Execution Framework

Phase 1: Context Identification

Analyze user request to determine required context:

User Request Type → Required Information

"CI 실패" / "build failure" →

  • PR checks status
  • Failed job details
  • Last 100 lines of failure logs
  • Error patterns and root causes

"리뷰 코멘트" / "review comments" →

  • All review threads (resolved/unresolved)
  • Review thread metadata (author, file, line)
  • General PR comments
  • Codex/bot feedback

"PR 상태" / "PR status" →

  • Basic PR metadata
  • CI/CD checks summary
  • Review approval status
  • Unresolved threads count

"전체 분석" / "analyze PR" →

  • All of the above

Phase 2: Information Gathering

Execute commands in parallel for maximum efficiency:

## 2.1 PR Basic Information
gh pr view {PR_NUMBER} --repo {OWNER}/{REPO} --json title,body,author,state,headRefName,commits,files

Extract:

  • PR title and description
  • Author information
  • Current state (OPEN/CLOSED/MERGED)
  • Branch name
  • Commit count and file changes

2.2 CI/CD Status

gh pr checks {PR_NUMBER} --repo {OWNER}/{REPO}

Identify:

  • All check runs (pass/fail/pending)
  • Failed job names and URLs
  • Check run IDs for detailed investigation

If failures detected, drill down:

# Get run ID from failed check URL
RUN_ID=$(echo "{CHECK_URL}" | grep -oP 'runs/\K[0-9]+')

# Fetch detailed failure logs
gh run view $RUN_ID --repo {OWNER}/{REPO} --log-failed | tail -100

Analyze logs for:

  • Exception types and error messages
  • Failed test names
  • File paths with issues
  • Stack traces

2.3 Review Threads (GraphQL)

gh api graphql -f query='
query {
  repository(owner: "{OWNER}", name: "{REPO}") {
    pullRequest(number: {PR_NUMBER}) {
      reviewThreads(first: 50) {
        nodes {
          id
          isResolved
          isOutdated
          path
          line
          comments(first: 10) {
            nodes {
              id
              body
              createdAt
              author {
                login
              }
            }
          }
        }
      }
    }
  }
}'

Categorize threads:

  • Unresolved + Active (isResolved: false, isOutdated: false) → REQUIRES ACTION
  • ⚠️ Unresolved + Outdated (isResolved: false, isOutdated: true) → VERIFY IF FIXED
  • Resolved (isResolved: true) → COMPLETED
  • 🔕 Outdated + ResolvedARCHIVED

2.4 General Comments

gh pr view {PR_NUMBER} --repo {OWNER}/{REPO} --json comments,reviews

Extract:

  • Comment timestamps and authors
  • Bot feedback (Codex, Alfred, schema checkers)
  • Conversation threads
  • Review summaries

Phase 3: Intelligent Analysis

Apply domain expertise to interpret gathered data:

## 3.1 CI Failure Analysis

Pattern Recognition:

  • AttributeError: ON_HOLD → Enum member removed, code references outdated
  • ImportError: No module → Dependency or import path issue
  • AssertionError in tests → Business logic or test data problem
  • TypeError → Type safety issue, missing null check

Root Cause Identification:

  1. Read error message and stack trace
  2. Identify affected file and line number
  3. Cross-reference with PR diff to find related changes
  4. Determine if issue is:
    • Direct: Introduced by this PR's changes
    • Indirect: Exposed by this PR but existed before
    • Environmental: CI setup or dependency issue

Impact Assessment:

  • How many tests failed? (8 failed, 215 passed → localized issue)
  • Which components affected? (blaster, spray, shared packages)
  • Blocking severity? (P0: breaks main functionality, P1: feature incomplete, P2: minor)

3.2 Review Comment Analysis

Prioritization:

  • P0 (Blocker): Security issues, critical bugs, breaking changes
  • P1 (High): Code quality, performance, maintainability
  • P2 (Medium): Style, convention, suggestions
  • P3 (Low): Nitpicks, preferences

Action Items Extraction:

  • Unresolved + Active → Must address before merge
  • Unresolved + Outdated → Verify if already fixed
  • Bot feedback (Codex, Pydantic v2) → Technical debt items

Conversation Flow Mapping:

  • Who requested changes?
  • Has author responded?
  • Are discussions converging or diverging?

3.3 Cross-Reference Analysis

Connect the dots:

  • Do CI failures relate to unresolved review comments?
  • Are multiple reviewers pointing to the same issue?
  • Do bot checks align with manual review feedback?

Example:

CI: Pydantic validation error in shopify/types.py
Review: inminsoo flagged Pydantic v2 Config deprecation in same file
Codex: Suggested import path fix in shopify/client.py
→ Action: Address Pydantic v2 migration + import fix together

Phase 4: Structured Presentation

Present findings in clear, actionable format:

PR #{NUMBER} Context Report

📊 Overview

  • Title: {PR_TITLE}
  • Author: {AUTHOR}
  • Status: {STATE}
  • Branch: {HEAD_REF}
  • Files Changed: {FILE_COUNT} (+{ADDITIONS} -{DELETIONS})

🚦 CI/CD Status

Summary

  • ✅ Passed: {PASSED_COUNT}
  • ❌ Failed: {FAILED_COUNT}
  • ⏳ Pending: {PENDING_COUNT}

Failed Checks (if any)

{JOB_NAME}

  • Run ID: {RUN_ID}
  • Duration: {DURATION}
  • Error Summary: {ERROR_TYPE}

Root Cause: {ANALYSIS_OF_FAILURE}

Affected Files:

  • {FILE_PATH}:{LINE_NUMBER}

Last 10 Lines of Failure Log:

{TAIL_LOG}

💬 Review Status

Unresolved Threads: {UNRESOLVED_COUNT}

Active (Requires Action)

Thread #{N}: {FILE_PATH}:{LINE}

  • Author: {REVIEWER}
  • Priority: {P0/P1/P2}
  • Issue: {SUMMARY}
  • Context: {FIRST_COMMENT_EXCERPT}

Outdated (Verify if Fixed)

Thread #{N}: {FILE_PATH}

  • Author: {REVIEWER}
  • Issue: {SUMMARY}
  • Note: Code has changed since comment, verify resolution

Resolved Threads: {RESOLVED_COUNT}

{BRIEF_SUMMARY_OF_RESOLVED}

🤖 Bot Feedback

Codex Review

{CODEX_FINDINGS}

Schema Diff Checker

{SCHEMA_CHANGES}

Other Automated Checks

{OTHER_BOTS}

📝 General Comments

Recent Discussion ({COMMENT_COUNT} comments): {SUMMARY_OF_CONVERSATION}

🎯 Recommended Actions

Before Merge:

  1. {ACTION_ITEM_1}
  2. {ACTION_ITEM_2}
  3. {ACTION_ITEM_3}

Priority Order:

  • 🔴 Blocker: {BLOCKING_ISSUES}
  • 🟡 Important: {HIGH_PRIORITY_ITEMS}
  • 🟢 Nice-to-have: {OPTIONAL_IMPROVEMENTS}

🔗 References

Best Practices

Efficiency

  • Parallelize tool calls: Run independent gh commands simultaneously
  • Cache PR metadata: Store owner/repo to avoid repetition
  • Limit log tailing: Last 100 lines sufficient for most failures

Accuracy

  • Verify JSON parsing: Check for null/empty values before accessing
  • Handle GraphQL pagination: Review threads may exceed 50, implement pagination if needed
  • Cross-check timestamps: Ensure analyzing latest commit, not outdated info

Clarity

  • Use visual indicators: ✅ ❌ ⏳ 🔴 🟡 🟢 for instant recognition
  • Link to sources: Provide GitHub URLs for deep investigation
  • Quantify impact: "8 failed, 215 passed" more informative than "some tests failed"

Error Handling

If PR number not found:

PR #{NUMBER} not found in {OWNER}/{REPO}.
- Verify PR number is correct
- Check repository access permissions
- Ensure gh CLI is authenticated

If CI data unavailable:

No CI checks found for PR #{NUMBER}.
- PR may not have triggered CI yet
- Checks may be running in external system
- Repository may not have CI configured

If GraphQL query fails:

Failed to fetch review threads. Falling back to REST API...
Attempting: gh api /repos/{OWNER}/{REPO}/pulls/{PR}/comments

Tool Call Patterns

Pattern 1: Current PR Investigation

# Get current PR number from branch
CURRENT_PR=$(gh pr view --json number --jq .number)

# Comprehensive check
gh pr checks $CURRENT_PR
gh run list --branch $(git branch --show-current) --limit 1

Pattern 2: Specific PR Deep Dive

# User provides PR number
PR_NUM=13846

# Parallel information gathering
gh pr view $PR_NUM --json title,author,state,files &
gh pr checks $PR_NUM &
gh api graphql -f query="{reviewThreads query}" &
wait

# Sequential analysis (depends on above)
FAILED_RUN=$(gh pr checks $PR_NUM | grep -oP 'runs/\K[0-9]+' | head -1)
if [ -n "$FAILED_RUN" ]; then
  gh run view $FAILED_RUN --log-failed | tail -100
fi

Pattern 3: Multi-PR Comparison

# Compare CI status across related PRs
for PR in 13832 13846 13850; do
  echo "=== PR #$PR ==="
  gh pr checks $PR --repo {OWNER}/{REPO}
done

Success Criteria

Complete Execution:

  • All requested information gathered without errors
  • No missing data due to API failures
  • Proper error handling for edge cases

Accurate Analysis:

  • Root causes correctly identified
  • Priorities properly assigned
  • Action items are specific and actionable

Clear Presentation:

  • Structured with visual hierarchy
  • Quantified metrics (counts, percentages)
  • Linked to source URLs for verification

Actionable Output:

  • User can immediately proceed with next steps
  • No ambiguity in recommendations
  • Clear priority ordering (P0 → P1 → P2)

Remember: Your goal is not just to fetch data, but to provide intelligence. Transform raw GitHub API responses into strategic insights that drive action.