Deliberate search
A personal, growing collection of agent skills for coding agents (Claude Code, Codex, ...).
npx -y skills add tripcher/skills --skill deliberate-searchAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Deliberate, multi-source web research that runs as a budgeted search loop instead of a single pass — decompose the question into sub-questions, branch across them, evaluate the evidence, reflect on dead ends, and synthesize. Uses the agent's own built-in web search and fetch tools (Claude Code WebSearch/WebFetch, Codex native search, or equivalents) with no MCP or external setup, so it runs in any harness. Use when the user wants current, cross-checked research from multiple web sources, category-guided search (IT, AI, shopping, general, or custom), source comparison, or a concise synthesis with links and disagreements called out.
SKILL.md
6.0 KB, as published. Nobody here has run it
Deliberate Search
Treat research as a deliberate, budgeted loop, not a single pass: open several lines of inquiry, judge the evidence on each, drop dead ends, and synthesize across sources. The structure borrows from ReAct (reason → act → observe), Tree-of-Thoughts (branch, evaluate, prune), and LATS (select · evaluate · reflect with memory), adapted to lightweight, prompt-level research. Borrow the discipline, not the heavy machinery: keep the tree shallow (2–4 branches), the budget small, and lean on evaluation and reflection rather than literal tree-search math. Web research has no clean pass/fail reward, so the value comes from judging evidence and reflecting on dead ends — not from formal selection/backprop.
Tools — harness-agnostic
This skill needs two capabilities from whatever agent runs it. Map them to the host's built-in tools; never require an MCP or external dependency:
- SEARCH(query) — run a web query. Claude Code:
WebSearch· Codex: native web search · other harnesses: their equivalent search tool. - FETCH(url) — open and read a page. Claude Code:
WebFetch· others: the equivalent fetch/read tool. Prefer it for primary sources. If the host has no fetch tool, work from search snippets, make queries more targeted, and note that you could not open the primary text. - FINISH — stop searching and synthesize.
The search_filters in each category profile are plain query operators (site:, filetype:),
so they apply identically no matter which tool backs SEARCH.
The loop
- Frame & decompose — restate the user's real decision. Split it into 2–4 sub-questions
(branches). Pick the best-fit category and load only that profile from
references/category-profiles.yaml. - Plan the frontier — for each branch draft 1–2 queries, scoped with the category's
search_filters. Rank branches by expected payoff toward the decision. - Loop (budget: a few rounds; stop early when confident):
- Select the highest-value open branch.
- Act — run a small SEARCH batch; FETCH only the most promising results (prefer
primary sources). Apply
search_filterson the first pass, then drop or broaden them once a branch turns weak or repetitive. - Evaluate — score the evidence on the category's
evaluate_onplus cross-source agreement. Is the sub-question actually answered? - Reflect & update — append findings to the scratchpad. If a branch dead-ends or sources conflict, write a one-line reflection, prune or backtrack, and reallocate the remaining budget. Open a new sub-question if a gap appears.
- Stop — see Stopping.
- Synthesize — organize around the user's decision, across branches (not one source at a time). Surface agreement, conflicts, dates, and confidence; include links.
Keep a lightweight scratchpad as working memory across the loop:
Findings: claim — source — confidence
Conflicts: X says A; Y says B; stronger = …
Reflections: failed query pattern → switch to …
Frontier: open branches · budget left
A ReAct-style trace per step is optional — surface it only when it helps the user follow along:
Thought: gap or hypothesis
Search: query
Observe: what the top sources actually said
Reflect: closed? next gap? dead end → reflection
Stopping
One global rule (categories carry no stop criterion of their own):
- Close a branch when its sub-question is confirmed by a source that fits the category's
evaluate_onpriors and — for contestable facts — corroborated by ≥2 independent sources; or when fresh queries stop yielding anything new. - Stop the loop when the user's decision is answered with corroborated primary evidence, or the budget/returns are exhausted. Note any branch left unresolved.
Categories
Pick one; load only that profile.
it— software engineering, cloud, security, infrastructure, developer tools, standards.ai— models, benchmarks, AI products, papers, provider capabilities, prompting, agents.shopping— products, pricing, specs, alternatives, buying advice, market comparison.general— broad current-events-adjacent research, business, policy, mixed-source explainers.- Not listed? Infer a temporary category from
custom_template, state the assumption in one sentence, and continue.
Each profile carries three fields, one per loop stage:
description→ category selectionsearch_filters→ scopes Act (recommended first-pass operators; soft, not a whitelist)evaluate_on→ the rubric for Evaluate
Synthesis rules
- Organize around the user's decision, not the order of sources.
- Separate fact, interpretation, and uncertainty; highlight what multiple sources agree on.
- Do not average conflicting sources — explain the conflict and which source is stronger.
- Flag weak evidence: stale pages, affiliate-heavy content, missing primary confirmation.
- Keep the answer concise unless the user asks for a deep dive.
Output shape
Use when it fits:
- Direct answer or recommendation
- Key evidence across sources
- Tradeoffs or disagreements
- Short conclusion
- Source links
References
references/category-profiles.yaml