Claude-skill-registry github-url-intercept
BLOCKING INTERCEPT: When ANY github.com URL appears in user input, STOP and use this skill. Never fetch GitHub HTML pages directly - they are 5-10MB and will exhaust your context window. This skill routes URLs to efficient API calls (1-50KB). Triggers on: pull/, issues/, blob/, tree/, commit/, compare/, discussions/.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/github-url-intercept" ~/.claude/skills/majiayu000-claude-skill-registry-github-url-intercept && rm -rf "$T"
skills/data/github-url-intercept/SKILL.mdGitHub URL Intercept
CRITICAL: This skill activates AUTOMATICALLY when you see ANY
URL. Do NOT usegithub.com,web_fetch, or any browser-based fetch on GitHub URLs. Doing so wastes 1-2.5 MILLION tokens on HTML that provides no useful data.curl
MANDATORY BEHAVIOR: Parse the URL → Route to API → Return structured JSON.
Quick Reference (Copy-Paste Commands)
When you see a GitHub URL, use these commands immediately:
# PR URL → Use this pwsh .claude/skills/github/scripts/pr/Get-PRContext.ps1 -PullRequest {n} -Owner {owner} -Repo {repo} # Issue URL → Use this pwsh .claude/skills/github/scripts/issue/Get-IssueContext.ps1 -Issue {n} -Owner {owner} -Repo {repo} # File/blob URL → Use this gh api repos/{owner}/{repo}/contents/{path}?ref={ref} # Commit URL → Use this gh api repos/{owner}/{repo}/commits/{sha} # Comment fragment (#discussion_r{id}) → Use this gh api repos/{owner}/{repo}/pulls/comments/{id}
Triggers
| Phrase | Action |
|---|---|
Any URL in user input (even bare URL pasted alone) | Parse URL type and route to API |
/ / + GitHub URL | Route based on URL type |
| URL + question (e.g., "...#r123 what's the tracking issue?") | Extract fragment, call specific API |
| Multiple GitHub URLs in one prompt | Process each URL, batch API calls |
URL Patterns (Detailed Reference)
| Pattern | Example | Why Intercept |
|---|---|---|
| | PR HTML is 5-10MB |
| | CI checks page bloat |
or | | Diff view with comment fragment |
| | Issue HTML is 2-5MB |
| | Workflow run page bloat |
| | File page has nav bloat |
| | Directory listing bloat |
| | Commit page overhead |
| | Diff page overhead |
| | Discussion page bloat |
Fragment | Review comment ID in or URL | Extract ID, call API directly |
Fragment | Issue comment ID | Extract ID, call API directly |
Fragment | Review ID | Extract ID, call API directly |
Fragment (short form) | Review comment in | Same as |
Decision Flow
GitHub URL detected in user input │ ├─ Has fragment (#pullrequestreview-, #discussion_r, #issuecomment-)? │ Yes → Extract ID, use gh api for specific comment/review │ ├─ Is /pull/{n}? │ Yes → Get-PRContext.ps1 -PullRequest {n} -Owner {o} -Repo {r} │ (or Get-PRReviewComments.ps1 / Get-PRReviewThreads.ps1 for comments) │ ├─ Is /issues/{n}? │ Yes → Get-IssueContext.ps1 -Issue {n} -Owner {o} -Repo {r} │ ├─ Is /blob/{ref}/{path} or /tree/{ref}/{path}? │ Yes → gh api repos/{o}/{r}/contents/{path}?ref={ref} │ ├─ Is /commit/{sha}? │ Yes → gh api repos/{o}/{r}/commits/{sha} │ └─ Is /compare/{base}...{head}? Yes → gh api repos/{o}/{r}/compare/{base}...{head}
Process
Phase 1: URL Detection and Parsing
| Step | Action | Verification |
|---|---|---|
| 1.1 | Detect github.com URL in user input | URL pattern matched |
| 1.2 | Extract owner/repo from path | Both values non-empty |
| 1.3 | Identify URL type (pull, issues, blob, tree, commit, compare) | Type classified |
| 1.4 | Extract fragment ID if present | Fragment parsed or null |
Phase 2: Route Selection
| Step | Action | Verification |
|---|---|---|
| 2.1 | Check if github skill script exists for URL type | Script path resolved |
| 2.2 | If script exists → use github skill (primary route) | Script invocation planned |
| 2.3 | If no script → use gh api (fallback route) | API command constructed |
| 2.4 | For fragments → always use gh api with specific endpoint | Endpoint includes ID |
Phase 3: Execution
| Step | Action | Verification |
|---|---|---|
| 3.1 | Execute selected command | Command runs without error |
| 3.2 | Receive structured JSON response | for scripts |
| 3.3 | Parse relevant fields for user query | Response processed |
URL Routing Table
Primary: Use GitHub Skill Scripts
| URL Pattern | Script | Parameters |
|---|---|---|
| | |
(with diff) | | |
(review comments) | | |
(review threads) | | |
(CI status) | | |
| | |
Script location:
.claude/skills/github/scripts/
Fallback: Raw gh Commands
Use only when no script exists for the operation:
| URL Pattern | API Call |
|---|---|
| |
| |
or | |
| |
| or use |
| |
| |
| |
| |
| |
| |
| |
URL Parsing Pattern
Extract owner, repo, and resource from GitHub URLs:
https://github.com/{owner}/{repo}/pull/{number} https://github.com/{owner}/{repo}/issues/{number} https://github.com/{owner}/{repo}/blob/{ref}/{path} https://github.com/{owner}/{repo}/tree/{ref}/{path} https://github.com/{owner}/{repo}/commit/{sha} https://github.com/{owner}/{repo}/compare/{base}...{head}
Fragment extraction (when present):
→ Review ID#pullrequestreview-{id}
→ Discussion comment ID#discussion_r{id}
→ Issue comment ID#issuecomment-{id}
Why This Matters (CRITICAL)
Fetching GitHub HTML is catastrophic for your context window:
| Method | Response Size | Token Cost | Time | Usability |
|---|---|---|---|---|
| ❌ HTML fetch | 5-10 MB | 1-2.5M tokens | 10-30s | UNUSABLE - HTML noise, no structured data |
| ✅ API call | 1-50 KB | 250-12K tokens | 0.5-2s | Clean JSON with exactly what you need |
| ✅ Script | 1-50 KB | 250-12K tokens | 0.5-2s | Structured output, error handling |
Impact: 100-1000x reduction in token consumption.
If you fetch GitHub HTML directly, you will:
- Consume your entire context window on ONE page
- Get no useful structured data (just HTML soup)
- Be unable to process subsequent user requests
- Need to start a new conversation
ALWAYS use this skill when you see a GitHub URL.
Examples
Bare URL Pasted (Most Common!)
Input: "https://github.com/rjmurillo/ai-agents/pull/735/checks?check_run_id=59355308734" Action: 1. Parse: owner=rjmurillo, repo=ai-agents, pr=735, type=checks 2. Route: pwsh .claude/skills/github/scripts/pr/Get-PRChecks.ps1 -PullRequest 735 -Owner rjmurillo -Repo ai-agents
URL with Question After It
Input: "https://github.com/owner/repo/pull/715/changes#r2656144507 are the graph refactoring items part of Issue 722?" Action: 1. Extract fragment: r2656144507 (review comment ID) 2. Call: gh api "repos/owner/repo/pulls/comments/2656144507" 3. Answer user's question using the comment content
Multiple URLs in One Prompt
Input: "https://github.com/owner/repo/pull/715#discussion_r123 https://github.com/owner/repo/pull/715#discussion_r456" Action: 1. Parse each URL 2. Batch: gh api "repos/owner/repo/pulls/comments/123" 3. Batch: gh api "repos/owner/repo/pulls/comments/456"
Research/Analyze Pattern
Input: "analyze https://github.com/modu-ai/moai-adk for insights" Action: 1. Use deepwiki MCP or gh api to get repo info 2. Call: gh api "repos/modu-ai/moai-adk" (NOT web_fetch!)
CI/Actions Run URL
Input: "https://github.com/owner/repo/actions/runs/20675405338/job/59362398542?pr=740" Action: 1. Extract: run_id=20675405338, job_id=59362398542 2. Call: gh api "repos/owner/repo/actions/jobs/59362398542"
PR URL → Script
Input: "Review this: https://github.com/owner/repo/pull/123" Action: pwsh ".claude/skills/github/scripts/pr/Get-PRContext.ps1" -PullRequest "123" -Owner "owner" -Repo "repo"
File URL → API
Input: "would a hook like https://github.com/ruvnet/claude-flow/blob/main/.claude/settings.json help?" Action: gh api "repos/ruvnet/claude-flow/contents/.claude/settings.json?ref=main"
Anti-Patterns (NEVER DO THESE)
| ❌ NEVER | Why It's Catastrophic | ✅ Do This Instead |
|---|---|---|
| 5-10 MB HTML, 1-2.5M tokens WASTED | Parse URL, use script or |
| Same catastrophic result | Use CLI for authentication + JSON |
/ on GitHub URLs | Same catastrophic result | Route through this skill |
without | Unstructured text output | Use for structured JSON |
| Fetching full page to find one comment | Fetches 5MB to read 500 bytes | Extract fragment ID (), call specific endpoint |
| Ignoring GitHub URLs in user input | User expects you to understand the link | ALWAYS parse and route |
| Hardcoding owner/repo in commands | Breaks when user shares fork/different repo | Extract from URL path |
RED FLAG PHRASES - If you're about to do any of these, STOP:
- "Let me fetch that page..."
- "I'll retrieve the content from that URL..."
- "Accessing the GitHub page..."
These indicate you're about to waste millions of tokens. Use this skill instead.
Related Skills
| Skill | When to Use |
|---|---|
| github | Full PR/issue operations (mutations, reactions, labels) |
| pr-comment-responder | Systematic PR review response |
Verification Checklist
Before processing any GitHub URL:
- Extracted owner/repo from URL path
- Identified URL type (PR, issue, blob, commit, compare)
- Extracted fragment ID if present (#discussion_r, #issuecomment-, #pullrequestreview-)
- Selected appropriate github skill script (primary) or gh command (fallback)
- Did NOT use web_fetch, curl, or browser-based fetch on the URL
- Received structured JSON response with
(for scripts)Success: true