research
Skill0 starsChanged 6 months agoMITView on GitHub
Use when the user wants a cited research brief on a topic. Adaptive plan→fan-out→reflect→drill-or-synth loop. Defaults breadth=4 depth=2 max-dispatches=15; pass `--depth N --breadth M --max-dispatches X` to override. Writes report to reports/<run-id>.md.
189 other projects use a version of this.
Adopted by
Most recently taken up by
- dialog-db/dialog-dbtheir own version, first seen Nov 9, 2026
- howells/skillstheir own version, first seen Nov 8, 2026
- xiaoxiaosrm/dsh-mattpocock-skillstheir own version, first seen Nov 8, 2026
- Suge8/friedbuntheir own version, first seen Nov 8, 2026
- wowyuarm/dsh-agent-teamtheir own version, first seen Nov 8, 2026
- Contexera/dsh-agent-teamtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use daily-arxiv, exp-eval and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
LambenthanSkilldaily-arxiv
每日从 arXiv 拉取新论文,过滤相关性,auto-ingest 高优先级论文,检测 SOTA 更新
Also in 5 projects that use this
LambenthanSkillexp-eval
实验判决门:Review LLM 独立评判实验结果 → 4 种判决路径 → 自动更新 claims confidence、ideas status、graph edges
Also in 5 projects that use this
truongtv22SkillProblem-Solving Techniques
Apply systematic problem-solving techniques for complexity spirals (simplification cascades), innovation blocks (collision-zone thinking), recurring patterns (meta-pattern recognition), assumption constraints (inversion exercise), scale uncertainty (scale game), and dispatch when stuck. Techniques derived from Microsoft Amplifier project patterns adapted for immediate application.
Also in 5 projects that use this
liufeng1976Skillsetup-ts-deep-modules
Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.
Also in 43 projects that use this
skyllwtSkillexp-pilot-eval
Pilot result evaluation — read pilot results, apply success criteria, update idea page (pilot_result, failure_reason if failed), generate PILOT_VERDICT_REPORT. Called by /ideate Phase 5 after /exp-pilot-run.
Also in 4 projects that use this
skyllwtSkillexp-pilot-run
Pilot experiment execution — read Pilot Spec YAML, write pilot code, run experiment(Confirm with the user before operation and require the applicant to conduct manual inspection), return results. Called by /ideate Phase 5. Does NOT modify wiki pages or judge pass/fail.
Also in 4 projects that use this
- +5 more from Lambenthan
- +1 more from skyllwt
Other versions189 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 189
- mattpocock/skills★ 309ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 41ksame name
- Yeachan-Heo/oh-my-claudecode★ 41ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- udecode/plate★ 17ksame name
- openai/plugins★ 7.8ksame name
- ArcReel/ArcReel★ 6.3ksame name
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- withcoral/coral★ 4.9ksame name
179 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. 0 are common, 3 are distinctive, and 11 are very specific to this project.
0
Common
Most of the 169 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
You personally issue zero
WebSearch/WebFetchcalls: All web access happens inside worker dispatches. - Very specific: line 14
Spawn workers in parallel: when fanning out — multiple Agent tool calls in a SINGLE message.
- Very specific: line 16
Reasoning roles run on Opus: When dispatching the reflector or synthesizer role, pass model: "opus" on the Agent call.
- Very specific: line 17
Honor the hard cap: Before each fan-out, check dispatch_count + planned_this_layer <= max_dispatches.
- Very specific: line 18
Reports are immutable: Never edit reports/<run-id>.md after writing it.
- Very specific: line 63
Wait for completion. Then Read reports/.work/<RUN_ID>/grounding.md.
- Distinctive: line 80
After all return, for each scout's response text:
- Distinctive: line 91
Verify each file has the expected frontmatter and at least 3 cited claims:
- Very specific: line 103
If any scout returned <3 claims OR no coverage_score frontmatter, re-dispatch that one scout with a sharpened angle phrasing (one retry.
- Very specific: line 124
Read reports/.work/<RUN_ID>/reflection_L<CURRENT_DEPTH>.md.
- Very specific: line 126
If decision == "synthesize", break out of the loop.
- Very specific: line 130
Read the ## Drill questions JSON block from reflection_L<CURRENT_DEPTH>.md.
- Very specific: line 167
Wait for completion. Verify reports/<RUN_ID>.md exists and contains the required sections per mode:
- Distinctive: line 191
Planner returns wrong angle count: stop and ask user. Don't fan out N≠BREADTH scouts.
“Common” is measured: kept by at least 6 in 10 of the 169 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
You are the orchestrator of the adaptive web research loop. You do not do research yourself — you dispatch workers via subagent_type: "general-purpose" with role-specific prompts, persist their outputs, and assemble the final report.
Topic: $ARGUMENTS
Hard rules
- You personally issue zero
WebSearch/WebFetchcalls. All web access happens inside worker dispatches. - Spawn workers in parallel when fanning out — multiple
Agenttool calls in a SINGLE message. Sequential dispatch wastes wall-clock time. - Scouts and drills cannot Write. Persist each scout/drill response yourself with
Writeafter the parallel fan-out returns. Other roles (planner, reflector, synthesizer) write their own outputs. - Reasoning roles run on Opus. When dispatching the
reflectororsynthesizerrole, passmodel: "opus"on theAgentcall. Fetching roles (planner, scout, drill) run on Sonnet — passmodel: "sonnet". - Honor the hard cap. Before each fan-out, check
dispatch_count + planned_this_layer <= max_dispatches. If exceeding, skip drilling and proceed to synthesis withbudget_capped: true. - Reports are immutable. Never edit
reports/<run-id>.mdafter writing it; a re-run creates a new RUN_ID. - Output language matches input language. Pass it through; don't translate.
Parameters
Parse $ARGUMENTS for these flags (positional topic goes first):
| Flag | Default | Meaning |
--depth N | 2 | Max loop depth (Layer 1 = scouts; depth=2 means one drill layer; etc.). |
--breadth M | 4 | Number of angles in Layer 1 and max parallel workers per drill layer. |
--max-dispatches X | 15 | Hard cap on total worker dispatches before forced synth. |
--mode <lite|standard|deep> | standard | Passed to synth for section list + word target. /analyst --lite sets this to lite. |
For arg parsing, use the simplest shell parsing: split $ARGUMENTS on whitespace, walk pairs.
Pipeline
Step 0 — Set up the run
TOPIC=$(cat <<'EOF'
$ARGUMENTS
EOF
)
RUN_ID="$(date +%Y%m%d-%H%M)-$(echo "$TOPIC" | head -c 40 | tr -c 'a-zA-Z0-9' '-' | tr -s '-' | sed 's/^-//;s/-$//')"
mkdir -p "reports/.work/$RUN_ID"
echo "RUN_ID=$RUN_ID"Initialize DISPATCH_COUNT=0. Read defaults: DEPTH=2, BREADTH=4, MAX_DISPATCHES=15, MODE=standard. Override from parsed flags.
Step 1 — Layer 0: Planner
Agent({
subagent_type: "general-purpose",
model: "sonnet",
description: "Plan: ground the topic",
prompt: <contents of .claude/skills/research/prompts/planner.md> + "\n\nInputs:\ntopic: <verbatim topic>\nrun_id: <RUN_ID>\nbreadth: <BREADTH>\nlite: <MODE == lite>"
})Pass the entire planner prompt file's contents as the dispatch prompt body, with the input block appended. DISPATCH_COUNT += 1 after the call returns.
Wait for completion. Then Read reports/.work/<RUN_ID>/grounding.md. Extract the angles array from the JSON-fenced block. Validate len(angles) == BREADTH. If not, print an error and stop — the planner spec failed.
Step 2 — Layer 1: Scout fan-out
For each angle in the grounding brief's angles array (exactly BREADTH of them), construct one Agent dispatch:
Agent({
subagent_type: "general-purpose",
model: "sonnet",
description: "Scout angle: <slug>",
prompt: <contents of .claude/skills/research/prompts/scout.md> + "\n\nInputs:\ntopic: <verbatim topic>\nangle: <full angle question>\nangle_slug: <slug>\ngrounding_brief_path: reports/.work/<RUN_ID>/grounding.md\nrun_id: <RUN_ID>\ndensity_hint: <hint or 'unset'>\n\nYour entire final response will be saved verbatim by the orchestrator. Do not call the Write tool."
})Issue all BREADTH Agent calls in a SINGLE message. This is the parallel fan-out — sequential dispatch defeats the purpose.
After all return, for each scout's response text:
Write({
file_path: "reports/.work/<RUN_ID>/findings_L1_<angle_slug>.md",
content: <verbatim scout response text>
})DISPATCH_COUNT += BREADTH.
Verify each file has the expected frontmatter and at least 3 cited claims:
for f in reports/.work/<RUN_ID>/findings_L1_*.md; do
if [ -e "$f" ]; then
cov=$(grep -m1 "^coverage_score:" "$f" | sed 's/.*: //')
claims=$(grep -c "^ - source:" "$f" 2>/dev/null || echo 0)
echo "$f: coverage=$cov claims=$claims"
fi
doneIf any scout returned <3 claims OR no coverage_score frontmatter, re-dispatch that one scout with a sharpened angle phrasing (one retry; if still short, log to scratch and continue).
Step 3 — Loop: Reflect, then drill or synthesize
Set CURRENT_DEPTH=1.
While CURRENT_DEPTH < DEPTH AND DISPATCH_COUNT < MAX_DISPATCHES:
Step 3a — Dispatch reflector (Opus)
Agent({
subagent_type: "general-purpose",
description: "Reflect: gap detection",
model: "opus",
prompt: <contents of .claude/skills/research/prompts/reflector.md> + "\n\nInputs:\nrun_id: <RUN_ID>\ncurrent_depth: <CURRENT_DEPTH>\nmax_depth: <DEPTH>\ndispatch_count: <DISPATCH_COUNT>\nmax_dispatches: <MAX_DISPATCHES>\nbreadth: <BREADTH>\nthreshold: 0.70"
})DISPATCH_COUNT += 1.
Read reports/.work/<RUN_ID>/reflection_L<CURRENT_DEPTH>.md. Parse the **Decision:** line.
If decision == "synthesize", break out of the loop.
Step 3b — Dispatch drill workers (if decision == drill)
Read the ## Drill questions JSON block from reflection_L<CURRENT_DEPTH>.md. For each drill question (up to BREADTH of them), dispatch one worker:
Agent({
subagent_type: "general-purpose",
model: "sonnet",
description: "Drill: <slug>",
prompt: <contents of .claude/skills/research/prompts/scout.md> + "\n\nInputs:\ntopic: <verbatim topic>\nangle: <drill question text>\nangle_slug: <drill slug>\ngrounding_brief_path: reports/.work/<RUN_ID>/grounding.md\nrun_id: <RUN_ID>\ndensity_hint: <inherit from parent angle, or 'narrative' if contrarian>\n\nThis is a drill (deeper layer follow-up) — tool budget is tighter: 2 WebSearch, 5 WebFetch, 2 Playwright. Stay tightly focused on the drill question. Your final response is your findings document; do not call Write."
})Issue all drill dispatches in a SINGLE parallel message. After all return, persist each:
Write({
file_path: "reports/.work/<RUN_ID>/findings_L<CURRENT_DEPTH + 1>_<drill_slug>.md",
content: <verbatim drill response text>
})DISPATCH_COUNT += <number of drills>. CURRENT_DEPTH += 1.
Loop back to Step 3a.
Step 4 — Synthesizer (Opus)
Agent({
subagent_type: "general-purpose",
description: "Synthesize: compose final report",
model: "opus",
prompt: <contents of .claude/skills/research/prompts/synthesizer.md> + "\n\nInputs:\nrun_id: <RUN_ID>\nmode: <MODE>\ndispatch_count: <DISPATCH_COUNT>\nbudget_capped: <true if loop ended via DISPATCH_COUNT >= MAX_DISPATCHES else false>"
})DISPATCH_COUNT += 1.
Wait for completion. Verify reports/<RUN_ID>.md exists and contains the required sections per mode:
required=("TL;DR" "Findings")
if [ "$MODE" != "lite" ]; then
required+=("Background" "Cross-angle synthesis" "Confidence map" "Open questions")
fi
for section in "${required[@]}"; do
grep -q "^## $section" "reports/$RUN_ID.md" || echo "MISSING SECTION: $section"
doneStep 5 — Hand-off
Print to the user (terse — they read the report):
Run complete: <MODE>
Report: reports/<RUN_ID>.md
Dispatches: <DISPATCH_COUNT> / <MAX_DISPATCHES> | Depth reached: <CURRENT_DEPTH> | Budget capped: <yes/no>Failure-mode notes
- Planner returns wrong angle count: stop and ask user. Don't fan out N≠BREADTH scouts.
- Scout returns <3 claims: retry once with a sharpened angle. If still short, log and continue — reflector handles the gap.
- Reflector says drill but
BREADTHbudget is exhausted: cap drill workers atMAX_DISPATCHES - DISPATCH_COUNT - 1(reserve 1 for synth). If 0 remaining, forcedecision = synthesize, budget_capped = true. - Synth fails to produce required sections: print the missing section list and stop. The report file may be partial; do not retry synth.
- Worker errors during fan-out: collect what returned successfully; don't fail the whole layer if 1 of 4 errors. Log the missing slug in scratch notes; reflector will treat it as low coverage.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

