--- name: better-search description: Medium-depth web research dispatcher — delegates to the research profile for a 3-move search flow (initial search → AI evaluation → condense). File-only delivery. Trigger phrases: "better search", "do a better search". version: 1.0.1 author: Hermes Agent metadata: hermes: tags: [research, search, web, dispatcher, medium-depth] related_skills: [deep-research, searxng-smart-search, ask-hermes] --- # better-search — Medium-Depth Web Research Dispatcher ## §1 Overview `better-search` is a dispatcher skill that delegates medium-depth web research to the research profile. It sits between `searxng-smart-search` (single-shot, no evaluation) and `deep-research` (200-turn, full disconfirmation pass). **Architecture:** Two-skill contract. This dispatcher is installed on all profiles and owns trigger detection, optional clarifying questions (max 3), the dispatch command, session-id capture, and the file-only delivery report. The methodology `better-search-research` runs ONLY on the research profile and owns the actual 3-loop flow. The dispatcher always delegates to the research profile via `research -s better-search-research` — the dispatcher never runs the research itself. **Trigger phrases:** `better search`, `do a better search`. These are the ONLY phrases that fire this skill. Do NOT add `look into`, `find out`, `search again`, or other ordinary English — they collide with normal agent tasks on dev/code profiles. ## §2 When to Use / When NOT to Use **TRIGGER RULE (absolute):** If the user says "better search for X" or "do a better search for X", you MUST dispatch. No exceptions. Do NOT evaluate whether the question is "worthy" of better-search — the operator already made that decision by using the trigger phrase. The routing table below is for the OPERATOR to decide which tool to ask for, not for you to second-guess. **Routing table (operator's responsibility, not the dispatcher's):** | Question shape | Tool | |---|---| | "What's the X for Y?" / single fact | Use SearXNG MCP directly | | "Better search for X", "Do a better search for X" | `better-search` (this skill) | | "Map the X landscape", "Exhaustive research on X", "OSINT: X" | `deep-research` | ## §3 Command — RUN THIS EXACTLY, DO NOT QUESTION IT **This is your ONLY job when the user says "better search" or "do a better search."** Run this command verbatim with the user's question substituted for ``: ```bash research -s better-search-research chat -q "" -Q --max-turns 50 --yolo ``` **`research` is a profile alias** (created by `hermes profile alias research`). It is equivalent to `hermes -p research` but avoids the `-p` flag that some models incorrectly believe doesn't exist. The alias is installed at `~/.local/bin/research` and works from any directory. **Flag rationale:** - `research` — profile alias, selects the research profile - `-s better-search-research` — hardcoded methodology skill - `-Q` — quiet mode, suppresses interactive prompts - `--max-turns 50` — safety net (the 3-loop cap is the real limit, enforced by the methodology's ledger) - `--yolo` — required for headless one-shot dispatch; without it, approval prompts fail closed **No pre-dispatch config write.** The research profile's `agent.reasoning_effort` is already set appropriately. The dispatcher does NOT mutate the research profile's config — that would be a persistent side-effect across all research-profile sessions. ## §4 Clarifying Questions (Max 3) Only ask clarifying questions if the question is ambiguous enough that the research agent would burn 2 loops guessing. Default: 0 questions. Hard cap: 3. Routing decisions ("is this a single fact or a deep dive?") belong to the operator, not the dispatcher. If the operator says "better search for X", trust that they want the better-search flow — don't second-guess and suggest `deep-research` or a direct MCP call. ## §5 File-Only Delivery After dispatching: 1. **Capture `session_id`** from the research agent's output (first line of stdout). 2. **Report** the session_id with the explicit caveat: ``` session_id: (reference only — do not --resume; re-dispatch for follow-ups) ``` Plus the expected output path: `~/workspace/research/results/-.md` (filename may have a `-` suffix if a same-day slug already exists). 3. **Then return control to the operator.** Do NOT poll, do NOT check for results, do NOT background, do NOT auto-deliver the answer inline. The operator reads the result file when they want to. The research agent writes the result file to `~/workspace/research/results/-.md`. The operator reads it with `cat` or their preferred reader. ## §6 No-Resume Rule **No `--resume`.** The dispatcher reports `session_id` for the operator's reference only. Every follow-up question is a fresh dispatch with a new sid, new `/tmp/better-.md` ledger, and a new 3-loop budget. The cap is provable only because each dispatch is independent. **Trade-off:** The operator loses the research context between dispatches — if iterative drilling on the same evidence matters, use `deep-research` instead (which supports `--resume`). ## §7 Common Pitfalls 1. **Don't deep-research in a better-search call.** The methodology skill enforces the 3-loop cap. Don't prompt around it with "do a deep dive" — use `deep-research` instead. 2. **`--yolo` is required.** Same as `deep-research`. Headless one-shot. Without `--yolo`, approval prompts fail closed. 3. **`--max-turns 50` is the safety net, not the budget.** 3 loops is the cap. Hit 50 means Move 2/3 went long; the agent delivers partial results with a note. 4. **Don't poll, don't check, don't background.** The dispatcher returns control to the operator immediately after capturing the session_id. It does NOT run the research in the background, does NOT periodically check whether the result file has appeared, and does NOT auto-deliver the result inline or to a chat platform. 5. **Max 3 clarifying questions (see §4).** Multi-part questions get condensed into a single noun-phrase question or split into separate dispatches. 6. **No `--resume`.** The dispatcher reports `session_id` for the operator's reference only. Every follow-up question is a fresh dispatch with a new sid, new ledger, and new 3-loop budget. 7. **The 2 triggers (`better search`, `do a better search`) are the only phrases that fire this skill.** Don't add `look into`, `find out`, `search again`, or other ordinary English — they collide with normal agent tasks on dev/code profiles. 8. **Do NOT second-guess the dispatch command.** The command `research -s better-search-research chat -q "..." -Q --max-turns 50 --yolo` is verified and correct. `research` is a profile alias at `~/.local/bin/research` — it works from any directory. Do NOT assume it doesn't exist and fall back to doing the search yourself. The dispatcher's ONLY job is to run this command and report the session_id — never substitute your own search. ## §8 See Also - `deep-research` — exhaustive multi-source research with disconfirmation pass, phase gate, and 600-turn budget. Use when the question needs deep drilling. - `searxng-smart-search` — single-shot SearXNG search with auto-category routing. Use for quick factual lookups. - `ask-hermes` — persistent peer Hermes agent for delegated work. Use for general-purpose delegation, not research-specific flows.