From beagle-analysis
Researches questions by writing a multi-subtopic plan, dispatching parallel subagents, and producing a cited synthesis report on disk. Never returns inline prose or unsourced claims.
How this skill is triggered — by the user, by Claude, or both
Slash command
/beagle-analysis:web-researchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn a sharp research question into cited, gap-flagged findings by delegating to parallel web-search subagents.
Turn a sharp research question into cited, gap-flagged findings by delegating to parallel web-search subagents.
The deliverable is always on disk: a written plan the caller can review, one findings file per subtopic, and a synthesized report with numbered citations. Nothing returns as inline prose, and no claim ships without a URL + title + verbatim excerpt behind it.
references/companion-contract.md).artifact-analysis.llm-judge.Four steps, in order. No step is skippable.
plan.md — main question verbatim, 1-5 non-overlapping subtopics, what each subtopic should establish, and how the findings will be synthesized.auto_proceed: true.report.md.references/failure-modes.md to confirm all expected artifacts exist and are well-formed. Any check that fails becomes an entry in Gaps & Limitations.Advance only when the prior gate passes. A pass is always evidenced by a file on disk, a caller flag, or a structured error — not an internal “I checked.”
| Gate | Blocks | Pass condition |
|---|---|---|
| G0 — Tools | Slug derivation, output_dir, any write | WebSearch (or equivalent) is available. On fail: emit JSON per references/failure-modes.md (“Fail-fast on missing web tools”); do not create plan.md or any other artifact. |
| G1 — Re-run | First write under output_dir | output_dir has no plan.md or report.md, or refresh: true with prior contents archived per “Re-run protection” in references/failure-modes.md. |
| G2 — Plan artifact | Subagent dispatch | plan.md exists and includes every required bullet under “The research plan (plan.md)”. |
| G3 — Review | Dispatch | User has confirmed the plan or auto_proceed: true. |
| G4 — Findings set | Synthesis | For each subtopic in plan.md, findings/<slug>.md exists and has status: frontmatter (stub allowed). |
| G5 — Deliverable | Success return to caller | report.md exists; end-of-run checklist in references/failure-modes.md (“Verification checklist”) is satisfied or each failed check is recorded under Gaps & Limitations. |
Receive question ──→ Write plan.md ──→ Review gate (unless auto_proceed)
↓
User confirms
↓
Dispatch subagents (up to 3 parallel)
↓
Collect findings/<slug>.md files
↓
Synthesize report.md
↓
Return paths to caller
Before step 1, verify the environment has WebSearch (or equivalent). WebFetch is desirable for subagents that need full-page content beyond search snippets, but not required — WebSearch-only environments can still produce useful findings. If WebSearch is absent, fail fast per references/failure-modes.md — do not create plan.md, do not spawn subagents.
The input contract is small and strict:
| Field | Type | Required | Default | Purpose |
|---|---|---|---|---|
research_question | string | yes | — | The question to answer, already distilled. The skill does not reshape it. |
output_dir | absolute path | no | derived | Where plan.md, findings/, and report.md land. |
auto_proceed | bool | no | false | When true, skip the plan review gate and dispatch immediately. |
refresh | bool | no | false | When true, allow overwriting a prior run in the same output_dir. |
The skill does not parse caller-specific structures. Callers distill their brief into one sharp question string before invoking.
When to pass auto_proceed: true vs false. Pass false (the default) when the user will still benefit from seeing the subtopic plan before searches burn — e.g. the caller wants this skill's plan-review gate to serve as that check. Pass true when the caller has already satisfied the "is this the right framing" question through its own interaction with the user, and another gate would just be friction — e.g. the user explicitly asked mid-conversation for background research, or the caller runs its own review loop upstream. The rule is about where the review happens, not whether it happens.
If the caller provides output_dir, use it verbatim. Otherwise derive the default:
.beagle/research/<YYYY-MM-DD>-<topic-kebab>/
Slug derivation (stable so re-running the same question on the same day lands on the same folder):
YYYY-MM-DD-.Re-run protection. Before writing anything, check whether output_dir already contains plan.md or report.md. If it does and refresh is not true, refuse with a message naming the existing folder. When refresh: true, archive the prior contents into <output_dir>/.archive-<timestamp>/ first, then start fresh. See references/failure-modes.md and references/companion-contract.md.
Every run lands in its own folder so callers weeks later can re-read the plan, findings, and report without re-running the skill.
plan.md)The plan is written before any subagents run and is the caller's chance to catch bad framing before searches burn.
plan.md contains:
report.md.Plan review gate. By default, show plan.md to the user and wait for confirmation before dispatching. The user can revise subtopics, add or remove them, or reject the framing entirely. When the caller passes auto_proceed: true, skip the gate and dispatch immediately — this is the programmatic-companion path where the caller has its own review loop.
Up to 3 subagents run concurrently. Each gets a mechanically-derived brief built from plan.md — no interpretation drift between the plan the user approved and the briefs the subagents received. The brief template lives in references/subagent-brief.md.
Each subagent:
findings/<subtopic-slug>.md under output_dir.The orchestrator waits for all subagents to finish, then verifies every expected findings file exists before moving to synthesis. A missing file is a silent failure, recorded in Gaps & Limitations — see references/failure-modes.md.
See references/subagent-brief.md for the full brief shape and the required frontmatter on each findings file.
Every claim in a findings file and in report.md carries a citation. The shape is documented in references/citation-schema.md. At a glance:
url, title, excerpt (verbatim quote from the page).retrieved_at (ISO date), source_type (official-docs / vendor / blog / forum / news / other).Inline references use [^n] footnotes; the full citation sits in the numbered Sources section at the bottom of the report.
report.md)The report has a fixed four-section layout, in this order. Every section is required, every time.
## TL;DR — 3-5 bullets capturing the highest-signal findings.## Findings — organized by subtopic or theme; every claim carries a [^n] footnote.## Gaps & Limitations — what the research could not establish, including any failed subagents.## Sources — numbered bibliography matching footnote numbers.Gaps & Limitations is required even when findings look complete. Honest accounting of what was and was not verifiable is part of the product. The full literal skeleton the skill copies from lives in references/report-template.md.
Gaps & Limitations, including the last-known brief and the stub-file reason. The run does not abort.WebSearch (or equivalent) unavailable. Abort before any disk write (including plan.md); return structured JSON per references/failure-modes.md. WebFetch is optional for subagents and is not part of this gate.findings/<slug>.md with status: frontmatter (ok, empty, failed) before returning. Missing file after dispatch = silent failure, recorded in Gaps & Limitations.references/failure-modes.md.Full rules and the structured error shape live in references/failure-modes.md.
Tunable knobs, not hard-coded invariants:
| Knob | Default |
|---|---|
| Subtopics per run | 1-5 |
| Parallel subagents | up to 3 |
| Web searches per subagent | 3-5 |
A caller that needs broader or narrower scope can override via the brief. The plan-review gate is the right place to adjust before searches burn.
Other beagle skills invoke this one via a small, documented contract. The minimal call passes only research_question; the full call adds output_dir, auto_proceed, and refresh.
Worked examples for the three known callers (prfaq-beagle, brainstorm-beagle, strategy-interview) plus the success and fail-fast return shapes live in references/companion-contract.md. Callers are expected to honor the contract verbatim rather than invent parallel invocation styles.
This skill is a tone-neutral primitive. It does not:
If the caller is a coaching skill (prfaq-beagle, brainstorm-beagle), the coaching happens before and after this skill runs. Inside this skill, the question is treated as final.
llm-judge already covers comparative evaluation.artifact-analysis.references/subagent-brief.md — template the orchestrator mechanically fills from plan.md when dispatching each subagent.references/citation-schema.md — required and optional citation fields, footnote convention, and a well-formed example.references/report-template.md — literal report.md skeleton with all four fixed sections.references/failure-modes.md — partial-success, fail-fast, silent-failure detection, and re-run protection rules.references/companion-contract.md — programmatic invocation shape with worked examples for prfaq-beagle, brainstorm-beagle, and strategy-interview.npx claudepluginhub existential-birds/beagle --plugin beagle-analysisExecutes multi-agent research pipeline on any topic with Scout, Investigators, Deep Diver, Verifier, Synthesizer, and Critic reviews to produce verified, sourced reports.
Conducts deep web research with parallel agents, multi-wave exploration for gaps, and structured synthesis. Activates for investigating topics, comparing options, best practices, or comprehensive web info.
Conducts deep research on any topic with multi-agent source verification, interactive focus selection, and structured report generation. Supports multiple languages and session management.