search-sources

Gathers and normalizes deduplicated web sources for each sub-question of a research plan.

Updated Apr 26, 2026
One-click install
npx skills add https://github.com/Jin9/skillify-foundation --skill search-sources-jin9
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: search-sources
Source: https://github.com/Jin9/skillify-foundation/tree/main/treasury/search-sources
Command: npx skills add https://github.com/Jin9/skillify-foundation --skill search-sources-jin9

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Turning a structured research plan into a trustworthy list of sources is error-prone: agents fabricate URLs, return duplicate or single-domain results, and silently leave sub-questions uncovered. This Skill enforces a fixed output schema, deduplication, diversity caps, and a validation gate so downstream stages receive only real, backend-returned sources. ## Core Features & Use Cases - Backend-agnostic search orchestration: Wraps whatever search tool the host configures (Tavily, Exa, Brave, Serper, Bing, Google CSE, or an MCP search server) behind one fixed source-record schema. - Depth-controlled query budgets: Maps quick, standard, and deep depths to 1-4 query variants per sub-question (keyword, semantic, recency-filtered, contrarian) with target source counts. - Quality gates: Applies URL and snippet-based deduplication, a 30% per-domain diversity cap, relevance scoring with a 0.3 cutoff, and a coverage side channel that flags thin or paywalled sub-questions instead of padding results. - Use Case: As stage 2 of the researcher workflow, feed it the research_plan from plan-research at standard depth and receive 10-20 normalized source records tagged with sub-question IDs, ready for extract-findings to consume. ## Quick Start Gather sources for this research plan at standard depth and return the normalized sources array with coverage notes.

Frequently Asked Questions about search-sources

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I gather sources for a research plan with an AI agent?▼

Pass the research_plan object from plan-research plus a depth value (quick, standard, or deep) to this stage. It formulates keyword and semantic queries per sub-question, calls the configured search backend, and returns normalized source records tagged with sub-question IDs.

Which search backends does the search-sources stage support?▼

The stage is backend-agnostic and works with whatever search tool the host configures, including Tavily, Exa, Brave, Serper, Bing, Google CSE, a local index, or an MCP search server. It only emits sources the tool actually returned.

How does the skill prevent hallucinated or duplicate URLs?▼

A validation gate requires every URL to come from an actual search-tool result in the same call, and deduplication runs exact URL matching, domain-plus-title near-matching, and snippet 5-gram Jaccard overlap at 0.7. Suspected hallucinated URLs are dropped, never repaired.

What happens when a search returns zero results or only paywalled pages?▼

The stage emits an empty or partial sources list and records the gap in the coverage side channel with a per-sub-question gap_note. Paywalled results are kept with a notes flag so downstream review can hedge, and no low-quality padding is added.

When should I not use the search-sources stage?▼

Do not use it to plan the research (use plan-research), to extract claims from sources (use extract-findings), or to write the final report (use synthesize-report). It only finds and normalizes candidate sources; snippets are the unit of work, not full-text reading.