Use when researching GitHub issues, PRs, and discussions for community solutions and known gotchas - searches via WebSearch with site filters and extracts problem-solution patterns
Scanned 9/2/2026
Install to Claude Code
npx -y skills add majiayu000/claude-skill-registry --skill using-github-search --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Using Github Search?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-using-github-search)More formats (shields.io, HTML) on the badges page.
---
name: using-github-search
description: Use when researching GitHub issues, PRs, and discussions for community solutions and known gotchas - searches via WebSearch with site filters and extracts problem-solution patterns
---
# Using GitHub Search
Use this skill when researching GitHub issues, PRs, discussions for community solutions and known gotchas.
## Core Principles
- Search GitHub via WebSearch with site: filter
- Focus on closed issues (solved problems)
- Fetch promising threads for detailed analysis
- Extract problem-solution patterns
## Workflow
### 1. Issue Search
**Use WebSearch with site:github.com:**
```python
# Find closed issues with solutions
WebSearch(
query="site:github.com React useEffect memory leak closed"
)
```
**Search patterns:**
**Closed issues (solved problems):**
```python
query="site:github.com [repo-name] [problem] closed is:issue"
```
**Pull requests (implementation examples):**
```python
query="site:github.com [repo-name] [feature] is:pr merged"
```
**Discussions (community advice):**
```python
query="site:github.com [repo-name] [topic] is:discussion"
```
**Labels for filtering:**
```python
query="site:github.com react label:bug label:performance closed"
```
### 2. Repository-Specific Search
**Known repositories:**
```python
# React issues
WebSearch(query="site:github.com/facebook/react useEffect cleanup closed")
# Next.js issues
WebSearch(query="site:github.com/vercel/next.js SSR hydration closed")
# TypeScript issues
WebSearch(query="site:github.com/microsoft/typescript type inference closed")
```
**Community repositories:**
```python
# Awesome lists
WebSearch(query="site:github.com awesome-react authentication")
# Best practice repos
WebSearch(query="site:github.com typescript best practices")
```
### 3. Fetch Issue Details
**Use WebFetch** to analyze threads:
```python
# Fetch specific issue
thread = WebFetch(
url="https://github.com/facebook/react/issues/14326",
prompt="Extract the problem description, root cause, and accepted solution. Include any workarounds or caveats mentioned."
)
```
**Fetch prompt patterns:**
- "Summarize the problem and official solution"
- "Extract workarounds and their trade-offs"
- "List breaking changes and migration steps"
- "Identify root cause and fix explanation"
### 4. Pattern Recognition
Look for **common patterns:**
**Problem-Solution:**
```markdown
Problem: Memory leak with event listeners in useEffect
Solution: Return cleanup function
Frequency: 50+ issues
Pattern: Missing return in useEffect
```
**Gotchas:**
```markdown
Gotcha: Array.sort() mutates in place
Impact: React state updates fail silently
Workaround: [...arr].sort()
Source: 20+ issues across projects
```
## Reporting Format
Structure findings as:
```markdown
## GitHub Research Findings
### 1. React useEffect Memory Leaks
**Source:** facebook/react#14326 (Closed, 150+ comments)
**Status:** Resolved in React 18
**URL:** https://github.com/facebook/react/issues/14326
**Problem:**
Event listeners added in useEffect not cleaned up, causing memory leaks on component unmount.
**Root Cause:**
Missing cleanup function in useEffect hook.
**Solution:**
```javascript
useEffect(() => {
const handler = () => console.log('event')
window.addEventListener('resize', handler)
// Cleanup function
return () => window.removeEventListener('resize', handler)
}, [])
```
**Caveats:**
- Cleanup runs before next effect AND on unmount
- Don't cleanup external state (e.g., API calls may complete after unmount)
- Use AbortController for fetch requests
**Community Consensus:**
- 95% of comments recommend cleanup pattern
- Official docs updated to emphasize this
- ESLint rule available: `exhaustive-deps`
---
### 2. Next.js Hydration Mismatch
**Source:** vercel/next.js#7417 (Closed, 80+ comments)
**Status:** Workarounds available, improved errors in Next 13+
**URL:** https://github.com/vercel/next.js/issues/7417
**Problem:**
Server-rendered HTML differs from client, causing hydration errors.
**Common Causes:**
1. Date.now() or random values in render
2. window object access during SSR
3. Third-party scripts modifying DOM
**Solutions:**
**Approach 1: Suppress hydration warning (temporary)**
```jsx
<div suppressHydrationWarning>{Date.now()}</div>
```
**Approach 2: Client-only rendering**
```jsx
const [mounted, setMounted] = useState(false)
useEffect(() => setMounted(true), [])
if (!mounted) return null
return <div>{Date.now()}</div>
```
**Approach 3: Use next/dynamic**
```jsx
const ClientOnly = dynamic(() => import('./ClientOnly'), { ssr: false })
```
**Trade-offs:**
- Suppress: Quick but masks real issues
- Client-only: Flash of missing content
- Dynamic: Extra bundle split, best for isolated components
**Community Recommendation:**
Use dynamic imports for truly client-only components. Fix server/client differences when possible.
---
### 3. TypeScript Type Inference Limitations
**Source:** microsoft/typescript#10571 (Open, discussion ongoing)
**Status:** Design limitation, workarounds exist
**URL:** https://github.com/microsoft/typescript/issues/10571
**Problem:**
Generic type inference fails with complex nested structures.
**Workarounds:**
**Explicit type parameters:**
```typescript
// Instead of inference
const result = complexFunction<User, string>(data)
```
**Type assertions:**
```typescript
const result = complexFunction(data) as Result<User>
```
**Community Patterns:**
- 40% use explicit type parameters
- 30% restructure code to simplify inference
- 30% use type assertions with validation
**Gotcha:**
Type assertions bypass type checking. Validate at runtime or use type guards.
```
## Search Strategies
### Find Solved Problems
```python
WebSearch(query="site:github.com react hooks stale closure closed is:issue")
```
### Implementation Examples
```python
WebSearch(query="site:github.com authentication JWT refresh is:pr merged")
```
### Breaking Changes
```python
WebSearch(query="site:github.com next.js migration breaking changes v14")
```
### Community Discussions
```python
WebSearch(query="site:github.com typescript best practices is:discussion")
```
### Security Issues
```python
WebSearch(query="site:github.com express security vulnerability closed CVE")
```
## Anti-Patterns
❌ **Don't:** Only search open issues (may not have solutions)
✅ **Do:** Focus on closed issues with accepted solutions
❌ **Don't:** Trust first comment without reading thread
✅ **Do:** Read accepted solution and top comments
❌ **Don't:** Apply workarounds without understanding trade-offs
✅ **Do:** Document caveats and alternatives
❌ **Don't:** Assume issue applies to current version
✅ **Do:** Check version context and current status
## Quality Indicators
**High-value issues have:**
- ✅ Closed with accepted solution
- ✅ 20+ comments (community vetted)
- ✅ Official maintainer response
- ✅ Code examples in solution
- ✅ Referenced in docs or other issues
**Skip if:**
- ❌ Open with no recent activity
- ❌ No clear solution or consensus
- ❌ Very old (>2 years) without recent confirmation
- ❌ Off-topic discussion
- ❌ No code examples
## Example Session
```python
# 1. Search for known React issues
results = WebSearch(
query="site:github.com/facebook/react useEffect infinite loop closed"
)
# → Found 10 closed issues
# 2. Fetch most relevant
issue1 = WebFetch(
url="https://github.com/facebook/react/issues/12345",
prompt="Extract the root cause of infinite loops in useEffect and the recommended solution"
)
# → Got dependency array explanation and fix
# 3. Search for migration issues
migration = WebSearch(
query="site:github.com/vercel/next.js migrate v13 to v14 breaking changes"
)
# → Found migration guide and common issues
# 4. Fetch migration PR
pr = WebFetch(
url="https://github.com/vercel/next.js/pull/56789",
prompt="List all breaking changes and required code updates"
)
# → Got comprehensive migration checklist
# 5. Search for community patterns
patterns = WebSearch(
query="site:github.com awesome-typescript patterns is:repo"
)
# → Found curated best practices repo
# 6. Synthesize findings
# Combine issue solutions, migration steps, community patterns
# Note frequency of issues, consensus solutions
```
## Citation Format
```markdown
**Issue:** Memory leak in React hooks
**Source:** facebook/react#14326 (Closed)
**URL:** https://github.com/facebook/react/issues/14326
**Status:** Resolved in React 18
**Comments:** 150+ (High community engagement)
**Official Response:**
> "The cleanup function must be returned from useEffect. This is critical for preventing memory leaks." - Dan Abramov (React team)
**Community Consensus:**
95% of solutions recommend cleanup pattern. ESLint rule added to enforce.
```
## Useful Repositories
**Best Practices:**
- awesome-[tech] lists (curated resources)
- [framework]-best-practices repos
- [company]-engineering-blogs
**Security:**
- OWASP repos for security patterns
- CVE databases for vulnerabilities
- Security advisories in popular frameworks
**Migration Guides:**
- Official framework upgrade guides
- Community migration experience issues
- Breaking change tracking issues
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!