Research Dispatcher
Single-command research across HN, Reddit, GitHub, and web search. Each source has its own query syntax, rate limits, and "what to put in the search box" pitfalls. This skill encodes those once so the agent doesn't have to remember.
When to use this skill
Activate when the user expresses any of:
- "Research X across HN, Reddit, GitHub"
- "What's the community saying about Y?"
- "Find me recent activity on Z"
- "Survey OSS projects related to W"
- "Compare what different platforms think of V"
- Any time multi-source synthesis would beat single-source search
Do not activate for:
- A single specific URL fetch (use
WebFetch directly).
- Searches that require authentication beyond GitHub (e.g., LinkedIn, X/Twitter, internal Slack — those need different tools).
Sources covered
| Source |
Endpoint |
Auth |
Rate limit |
Strength |
| Hacker News |
hn.algolia.com/api/v1/search |
none |
10K/hr |
Tech news, deep technical discussion |
| Reddit |
reddit.com/r/<sub>/<sort>.json |
UA only |
60/min |
Community sentiment, niche subreddits |
| GitHub Search |
api.github.com/search/repositories |
token recommended |
5000/hr (token) / 60/hr (anon) |
OSS activity, code, issues |
| Brave Web Search |
external (per-request) |
API key |
2K/month free |
General web, fresh content |
Bluesky, YouTube, TikTok, X/Twitter and other "Route B"-style sources are not directly supported by this skill but can be wired up via a host queue (out of scope here).
Procedure
Default flow
- Parse user intent to determine sources to hit. If the user says "broad survey", default to HN + Reddit + GitHub. If they say "what's trending in
<community>", lean Reddit. If "recent OSS work on X", lean GitHub.
- Run the dispatcher with one command:
./scripts/research.sh "<topic>" --sources hn,reddit,github
- Aggregate results into a single Markdown summary, deduplicating identical URLs across sources.
- Surface signals: top stories by score, recent commits, recurring themes.
- Recommend follow-up sources or queries if the initial sweep was thin.
Source-specific query tips (highlights)
See references/SOURCES.md for the full guide. Key tips:
- HN: spaces are AND. Use
&numericFilters=created_at_i>UNIX_TS for date range. Topics like "AI safety" hit better than "AI regulation" on HN.
- Reddit: full-text search is weak; subreddit +
/hot.json or /top.json?t=week gives better signal than /search. Always send a User-Agent header.
- GitHub: use qualifiers —
topic:llm stars:>200 pushed:>2026-04-01. topic: is far stronger than free-text.
- Brave:
freshness=pm for last month. Site-specific narrowing with site: operator. Watch the 2K/month free quota.
Choosing sources
+-------------------+-------------------+-------------------+
| User wants | Primary sources | Skip |
+-------------------+-------------------+-------------------+
| Tech trends | HN, Reddit | GitHub (too noisy)|
| OSS activity | GitHub, HN | Reddit |
| Community vibes | Reddit | HN, GitHub |
| Breaking news | HN, Brave | GitHub |
| Niche topic | Reddit, Brave | HN (sparse) |
+-------------------+-------------------+-------------------+
Edge cases
- Zero results: surface the actual
query_sent to each source so the user can see why. Suggest: shorter query, OR-joined synonyms, longer time window.
- Rate-limited: Reddit may return 429 with no User-Agent. The script always sends one, but if you see 429, wait 60s and retry.
- GitHub anon hit 60/hr: switch to authenticated mode by exporting
GITHUB_TOKEN (a fine-grained PAT with public_repo is enough).
- Brave quota exhausted: skill should warn at 80% (1600/2000) and refuse at 100%. Fall back to other sources.
- API JSON shape changes: each parser is a few lines of
jq. If a source breaks, update scripts/research.sh minimally.
Output format
Return a single Markdown response with:
- One-line query summary
- Per-source bullet list of top 5 hits (title, score, URL, 1-line preview)
- Cross-source themes (if any obvious overlap)
- A "what's missing" note if a source returned 0 hits or was skipped
Differentiation
- Generic web search (Brave, Google) misses community context. This skill brings HN/Reddit ranks into one view.
- Single-source agents (e.g. an HN-only summarizer) don't compare. This skill uses the contrast between sources as a signal.
- Manual multi-tab research: the goal of this skill is to replace 30 minutes of tab-switching with a single command.
Limitations
- No paywall content, no logged-in views (e.g. private subreddits, X/Twitter feeds).
- No real-time / WebSocket subscriptions.
- Score interpretation is naive — high HN score doesn't mean correct, just popular.
- Reddit
/search is genuinely poor; subreddit + sort is the workaround but requires knowing relevant subreddits.
1---2name: research-dispatcher3description: Route research queries across multiple public sources (Hacker News, Reddit, GitHub, web search) from a single declarative interface, with source-specific query optimization tips baked in. Use when the user wants to research a topic across multiple platforms, compare what different communities are saying, find OSS activity around a keyword, or systematically gather evidence before making a decision. Eliminates the need to remember each platform's query syntax, rate limits, and pitfalls.4license: MIT5---67# Research Dispatcher89Single-command research across HN, Reddit, GitHub, and web search. Each source has its own query syntax, rate limits, and "what to put in the search box" pitfalls. This skill encodes those once so the agent doesn't have to remember.1011## When to use this skill1213Activate when the user expresses any of:1415- "Research X across HN, Reddit, GitHub"16- "What's the community saying about Y?"17- "Find me recent activity on Z"18- "Survey OSS projects related to W"19- "Compare what different platforms think of V"20- Any time multi-source synthesis would beat single-source search2122Do *not* activate for:23- A single specific URL fetch (use `WebFetch` directly).24- Searches that require authentication beyond GitHub (e.g., LinkedIn, X/Twitter, internal Slack — those need different tools).2526## Sources covered2728| Source | Endpoint | Auth | Rate limit | Strength |29|---|---|---|---|---|30| Hacker News | `hn.algolia.com/api/v1/search` | none | 10K/hr | Tech news, deep technical discussion |31| Reddit | `reddit.com/r/<sub>/<sort>.json` | UA only | 60/min | Community sentiment, niche subreddits |32| GitHub Search | `api.github.com/search/repositories` | token recommended | 5000/hr (token) / 60/hr (anon) | OSS activity, code, issues |33| Brave Web Search | external (per-request) | API key | 2K/month free | General web, fresh content |3435> Bluesky, YouTube, TikTok, X/Twitter and other "Route B"-style sources are *not* directly supported by this skill but can be wired up via a host queue (out of scope here).3637## Procedure3839### Default flow40411. **Parse user intent** to determine sources to hit. If the user says "broad survey", default to HN + Reddit + GitHub. If they say "what's trending in `<community>`", lean Reddit. If "recent OSS work on X", lean GitHub.422. **Run the dispatcher** with one command:43 ```bash44 ./scripts/research.sh "<topic>" --sources hn,reddit,github45 ```463. **Aggregate results** into a single Markdown summary, deduplicating identical URLs across sources.474. **Surface signals**: top stories by score, recent commits, recurring themes.485. **Recommend follow-up** sources or queries if the initial sweep was thin.4950### Source-specific query tips (highlights)5152See `references/SOURCES.md` for the full guide. Key tips:5354- **HN**: spaces are AND. Use `&numericFilters=created_at_i>UNIX_TS` for date range. Topics like "AI safety" hit better than "AI regulation" on HN.55- **Reddit**: full-text search is weak; subreddit + `/hot.json` or `/top.json?t=week` gives better signal than `/search`. Always send a User-Agent header.56- **GitHub**: use qualifiers — `topic:llm stars:>200 pushed:>2026-04-01`. `topic:` is far stronger than free-text.57- **Brave**: `freshness=pm` for last month. Site-specific narrowing with `site:` operator. Watch the 2K/month free quota.5859### Choosing sources6061```62+-------------------+-------------------+-------------------+63| User wants | Primary sources | Skip |64+-------------------+-------------------+-------------------+65| Tech trends | HN, Reddit | GitHub (too noisy)|66| OSS activity | GitHub, HN | Reddit |67| Community vibes | Reddit | HN, GitHub |68| Breaking news | HN, Brave | GitHub |69| Niche topic | Reddit, Brave | HN (sparse) |70+-------------------+-------------------+-------------------+71```7273## Edge cases7475- **Zero results**: surface the actual `query_sent` to each source so the user can see why. Suggest: shorter query, OR-joined synonyms, longer time window.76- **Rate-limited**: Reddit may return 429 with no User-Agent. The script always sends one, but if you see 429, wait 60s and retry.77- **GitHub anon hit 60/hr**: switch to authenticated mode by exporting `GITHUB_TOKEN` (a fine-grained PAT with `public_repo` is enough).78- **Brave quota exhausted**: skill should warn at 80% (1600/2000) and refuse at 100%. Fall back to other sources.79- **API JSON shape changes**: each parser is a few lines of `jq`. If a source breaks, update `scripts/research.sh` minimally.8081## Output format8283Return a single Markdown response with:84851. One-line query summary862. Per-source bullet list of top 5 hits (title, score, URL, 1-line preview)873. Cross-source themes (if any obvious overlap)884. A "what's missing" note if a source returned 0 hits or was skipped8990## Differentiation9192- **Generic web search** (Brave, Google) misses community context. This skill brings HN/Reddit ranks into one view.93- **Single-source agents** (e.g. an HN-only summarizer) don't compare. This skill uses the *contrast* between sources as a signal.94- **Manual multi-tab research**: the goal of this skill is to replace 30 minutes of tab-switching with a single command.9596## Limitations9798- No paywall content, no logged-in views (e.g. private subreddits, X/Twitter feeds).99- No real-time / WebSocket subscriptions.100- Score interpretation is naive — high HN score doesn't mean correct, just popular.101- Reddit `/search` is genuinely poor; subreddit + sort is the workaround but requires knowing relevant subreddits.