GitHub Deep Research
Multi-round research combining GitHub API, web_search, and browse_page to
produce comprehensive markdown reports on any GitHub repository.
Poirot note: The original deer-flow skill uses a bundled
scripts/github_api.py helper. Poirot doesn't bundle that script, so this
version uses bash with curl to the GitHub API directly + gh CLI when
available.
When to Use
- User provides a GitHub repository URL
- User asks for comprehensive analysis, timeline reconstruction, competitive
analysis, or in-depth investigation of an open source project
- User wants to understand a project's architecture, history, or community
Research Workflow
- Round 1: GitHub API (repo metadata, README, file tree, contributors, commits)
- Round 2: Discovery (web search for overview, competitors)
- Round 3: Deep Investigation (architecture, timeline, community sentiment)
- Round 4: Deep Dive (commit history, issues/PRs for feature evolution)
Round 1 — GitHub API
Setup
# Resolve owner/repo from remote URL
REMOTE_URL=$(git remote get-url origin 2>/dev/null || echo "")
# Or user provides owner/repo directly
OWNER="owner"
REPO="repo"
Repo metadata via curl
# Repo summary
curl -s "https://api.github.com/repos/$OWNER/$REPO" | python3 -c "
import sys, json
r = json.load(sys.stdin)
print(f'Name: {r[\"full_name\"]}')
print(f'Description: {r[\"description\"]}')
print(f'Stars: {r[\"stargazers_count\"]}')
print(f'Forks: {r[\"forks_count\"]}')
print(f'Language: {r[\"language\"]}')
print(f'License: {r.get(\"license\",{}).get(\"spdx_id\",\"N/A\")}')
print(f'Created: {r[\"created_at\"][:10]}')
print(f'Updated: {r[\"updated_at\"][:10]}')
"
# README
curl -s "https://api.github.com/repos/$OWNER/$REPO/readme" | python3 -c "
import sys, json, base64
r = json.load(sys.stdin)
print(base64.b64decode(r['content']).decode('utf-8'))
"
# Recent commits
curl -s "https://api.github.com/repos/$OWNER/$REPO/commits?per_page=10" | python3 -c "
import sys, json
for c in json.load(sys.stdin):
print(f'{c[\"sha\"][:7]} {c[\"commit\"][\"author\"][\"date\"][:10]} {c[\"commit\"][\"message\"].splitlines()[0][:80]}')
"
# Languages
curl -s "https://api.github.com/repos/$OWNER/$REPO/languages"
# Contributors
curl -s "https://api.github.com/repos/$OWNER/$REPO/contributors?per_page=10" | python3 -c "
import sys, json
for c in json.load(sys.stdin):
print(f'{c[\"login\"]:20s} {c[\"contributions\"]} commits')
"
Via gh CLI (if available)
gh repo view $OWNER/$REPO
gh api repos/$OWNER/$REPO/commits --paginate | head -50
Round 2 — Discovery (3-5 web_search)
- Get overview and identify key terms
- Find official website/docs
- Identify main players/competitors
Round 3 — Deep Investigation (5-10 web_search + browse_page)
- Technical architecture details
- Timeline of key events
- Community sentiment
- Use
browse_page on valuable URLs for full content
Round 4 — Deep Dive
- Analyze commit history for timeline
- Review issues/PRs for feature evolution
- Check contributor activity
Report Structure
- Metadata Block — Date, confidence level, subject
- Executive Summary — 2-3 sentence overview with key metrics
- Chronological Timeline — Phased breakdown with dates
- Key Analysis Sections — Topic-specific deep dives
- Metrics & Comparisons — Tables, growth charts
- Strengths & Weaknesses — Balanced assessment
- Sources — Categorized references
- Confidence Assessment — Claims by confidence level
Confidence Scoring
| Confidence |
Criteria |
| High (90%+) |
Official docs, GitHub data, multiple corroborating sources |
| Medium (70-89%) |
Single reliable source, recent articles |
| Low (50-69%) |
Social media, unverified claims, outdated info |
Citation Format
Always include inline citations: [citation:Title](URL) immediately after each
claim from external sources.
Output
Save report as: .poirot/outputs/research_{topic}_{YYYYMMDD}.md
Best Practices
- Start with official sources — Repo, docs, company blog
- Verify dates from commits/PRs — More reliable than articles
- Triangulate claims — 2+ independent sources
- Note conflicting info — Don't hide contradictions
- Distinguish fact vs opinion — Label speculation clearly
- Always include inline citations
1---2name: github-deep-research3description: Multi-round deep research on any GitHub repo via API.4license: MIT5---67# GitHub Deep Research89Multi-round research combining GitHub API, `web_search`, and `browse_page` to10produce comprehensive markdown reports on any GitHub repository.1112> **Poirot note:** The original deer-flow skill uses a bundled13> `scripts/github_api.py` helper. Poirot doesn't bundle that script, so this14> version uses `bash` with `curl` to the GitHub API directly + `gh` CLI when15> available.1617## When to Use1819- User provides a GitHub repository URL20- User asks for comprehensive analysis, timeline reconstruction, competitive21 analysis, or in-depth investigation of an open source project22- User wants to understand a project's architecture, history, or community2324## Research Workflow2526- Round 1: GitHub API (repo metadata, README, file tree, contributors, commits)27- Round 2: Discovery (web search for overview, competitors)28- Round 3: Deep Investigation (architecture, timeline, community sentiment)29- Round 4: Deep Dive (commit history, issues/PRs for feature evolution)3031## Round 1 — GitHub API3233### Setup3435```bash36# Resolve owner/repo from remote URL37REMOTE_URL=$(git remote get-url origin 2>/dev/null || echo "")38# Or user provides owner/repo directly39OWNER="owner"40REPO="repo"41```4243### Repo metadata via curl4445```bash46# Repo summary47curl -s "https://api.github.com/repos/$OWNER/$REPO" | python3 -c "48import sys, json49r = json.load(sys.stdin)50print(f'Name: {r[\"full_name\"]}')51print(f'Description: {r[\"description\"]}')52print(f'Stars: {r[\"stargazers_count\"]}')53print(f'Forks: {r[\"forks_count\"]}')54print(f'Language: {r[\"language\"]}')55print(f'License: {r.get(\"license\",{}).get(\"spdx_id\",\"N/A\")}')56print(f'Created: {r[\"created_at\"][:10]}')57print(f'Updated: {r[\"updated_at\"][:10]}')58"5960# README61curl -s "https://api.github.com/repos/$OWNER/$REPO/readme" | python3 -c "62import sys, json, base6463r = json.load(sys.stdin)64print(base64.b64decode(r['content']).decode('utf-8'))65"6667# Recent commits68curl -s "https://api.github.com/repos/$OWNER/$REPO/commits?per_page=10" | python3 -c "69import sys, json70for c in json.load(sys.stdin):71 print(f'{c[\"sha\"][:7]} {c[\"commit\"][\"author\"][\"date\"][:10]} {c[\"commit\"][\"message\"].splitlines()[0][:80]}')72"7374# Languages75curl -s "https://api.github.com/repos/$OWNER/$REPO/languages"7677# Contributors78curl -s "https://api.github.com/repos/$OWNER/$REPO/contributors?per_page=10" | python3 -c "79import sys, json80for c in json.load(sys.stdin):81 print(f'{c[\"login\"]:20s} {c[\"contributions\"]} commits')82"83```8485### Via gh CLI (if available)8687```bash88gh repo view $OWNER/$REPO89gh api repos/$OWNER/$REPO/commits --paginate | head -5090```9192## Round 2 — Discovery (3-5 web_search)9394- Get overview and identify key terms95- Find official website/docs96- Identify main players/competitors9798## Round 3 — Deep Investigation (5-10 web_search + browse_page)99100- Technical architecture details101- Timeline of key events102- Community sentiment103- Use `browse_page` on valuable URLs for full content104105## Round 4 — Deep Dive106107- Analyze commit history for timeline108- Review issues/PRs for feature evolution109- Check contributor activity110111## Report Structure1121131. **Metadata Block** — Date, confidence level, subject1142. **Executive Summary** — 2-3 sentence overview with key metrics1153. **Chronological Timeline** — Phased breakdown with dates1164. **Key Analysis Sections** — Topic-specific deep dives1175. **Metrics & Comparisons** — Tables, growth charts1186. **Strengths & Weaknesses** — Balanced assessment1197. **Sources** — Categorized references1208. **Confidence Assessment** — Claims by confidence level121122## Confidence Scoring123124| Confidence | Criteria |125|------------|----------|126| High (90%+) | Official docs, GitHub data, multiple corroborating sources |127| Medium (70-89%) | Single reliable source, recent articles |128| Low (50-69%) | Social media, unverified claims, outdated info |129130## Citation Format131132Always include inline citations: `[citation:Title](URL)` immediately after each133claim from external sources.134135## Output136137Save report as: `.poirot/outputs/research_{topic}_{YYYYMMDD}.md`138139## Best Practices1401411. **Start with official sources** — Repo, docs, company blog1422. **Verify dates from commits/PRs** — More reliable than articles1433. **Triangulate claims** — 2+ independent sources1444. **Note conflicting info** — Don't hide contradictions1455. **Distinguish fact vs opinion** — Label speculation clearly1466. **Always include inline citations**