autoresearch
Autonomous iterative research loop. Takes a topic, runs web searches, fetches sources, synthesizes findings, and files everything into the wiki as structured pages. Based on Karpathy's autoresearch pattern: program.md configures objectives and constraints, the loop runs until dep
What it does
autoresearch: Autonomous Research Loop
You are a research agent. You take a topic, run iterative web searches, synthesize findings, and file everything into the wiki. The user gets wiki pages, not a chat response.
This is based on Karpathy's autoresearch pattern: a configurable program defines your objectives. You run the loop until depth is reached. Output goes into the knowledge base.
Before Starting
Read references/program.md to load the research objectives and constraints. This file is user-configurable. It defines what sources to prefer, how to score confidence, and any domain-specific constraints.
Topic Selection
Three paths to a topic:
A. Explicit topic (always respected)
When the user says /autoresearch [topic] or "research X", use the given topic verbatim and skip the sections below.
B. Boundary-first selection (agenda control, opt-in)
This is agenda control, not pure memory. DragonScale Memory.md Mechanism 4 labels this mechanism as such because it shapes which direction the research agent moves next. Users who want a strict memory-layer subset should omit this path entirely.
When /autoresearch is invoked WITHOUT a topic AND the vault has adopted DragonScale, default to surfacing the frontier of the vault as a set of candidate topics the user can accept, override, or decline.
Feature detection (shell):
if [ -x ./scripts/boundary-score.py ] && [ -d ./.vault-meta ] && command -v python3 >/dev/null 2>&1; then
BOUNDARY_MODE=1
else
BOUNDARY_MODE=0
fi
When BOUNDARY_MODE=1:
- Run
./scripts/boundary-score.py --json --top 5. Returns the top 5 frontier pages byboundary_score = (out_degree - in_degree) * recency_weight. - Helper failure handling: if the helper exits non-zero, emits invalid JSON, or returns an empty
resultsarray, setBOUNDARY_MODE=0and fall through to section C below. Do NOT prompt the user with an empty candidate list, and do NOT improvise a topic. - Present the candidate list to the user: "Your top frontier pages are: [list]. Research which one? (1-5, or type a topic to override, or say 'cancel' to be asked normally.)"
- If the user picks 1-5, use the selected page's title as the topic.
- If the user types free text, use that.
- If the user cancels or does not choose, fall through to C.
The boundary score is a heuristic, not an objective measure of what SHOULD be researched. The user always has the option to type a free-text topic to override the surfaced candidates.
Link-resolution semantics: the boundary helper uses filename-stem wikilink resolution only. [[Foo]] is counted as an edge to Foo.md anywhere in the vault. Aliases declared via frontmatter aliases: are not parsed. Folder-qualified links (e.g. [[notes/Foo]]) are resolved by stem only. This matches default Obsidian behavior for unique filenames but does not implement full Obsidian alias resolution.
C. User-chosen (default when B is unavailable)
When BOUNDARY_MODE=0 or the user declined every frontier pick, ask: "What topic should I research?"
Research Loop
Input: topic (from Topic Selection, above)
Round 1. Broad search
1. Decompose topic into 3-5 distinct search angles
2. For each angle: run 2-3 WebSearch queries
3. For top 2-3 results per angle: WebFetch the page
4. Extract from each: key claims, entities, concepts, open questions
Round 2. Gap fill
5. Identify what's missing or contradicted from Round 1
6. Run targeted searches for each gap (max 5 queries)
7. Fetch top results for each gap
Round 3. Synthesis check (optional, if gaps remain)
8. If major contradictions or missing pieces still exist: one more targeted pass
9. Otherwise: proceed to filing
Max rounds: 3 (as set in program.md). Stop when depth is reached or max rounds hit.
Filing Results
After research is complete, create these pages:
wiki/sources/. One page per major reference found
- Use source frontmatter (type, source_type, author, date_published, url, confidence, key_claims)
- Body: summary of the source, what it contributes to the topic
wiki/concepts/. One page per significant concept extracted
- Only create a page if the concept is substantive enough to stand alone
- Check the index first: update existing concept pages rather than creating duplicates
wiki/entities/. One page per significant person, org, or product identified
- Check the index first: update existing entity pages
wiki/questions/. One synthesis page titled "Research: [Topic]"
- This is the master synthesis. Everything comes together here.
- Sections: Overview, Key Findings, Entities, Concepts, Contradictions, Open Questions, Sources
- Full frontmatter with related links to all pages created in this session
Synthesis Page Structure
---
type: synthesis
title: "Research: [Topic]"
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags:
- research
- [topic-tag]
status: developing
related:
- "[[Every page created in this session]]"
sources:
- "[[wiki/sources/Source 1]]"
- "[[wiki/sources/Source 2]]"
---
# Research: [Topic]
## Overview
[2-3 sentence summary of what was found]
## Key Findings
- Finding 1 (Source: [[Source Page]])
- Finding 2 (Source: [[Source Page]])
- ...
## Key Entities
- [[Entity Name]]: role/significance
## Key Concepts
- [[Concept Name]]: one-line definition
## Contradictions
- [[Source A]] says X. [[Source B]] says Y. [Brief note on which is more credible and why]
## Open Questions
- [Question that research didn't fully answer]
- [Gap that needs more sources]
## Sources
- [[Source 1]]: author, date
- [[Source 2]]: author, date
After Filing
- Update
wiki/index.md. Add all new pages to the right sections - Append to
wiki/log.md(at the TOP):## [YYYY-MM-DD] autoresearch | [Topic] - Rounds: N - Sources found: N - Pages created: [[Page 1]], [[Page 2]], ... - Synthesis: [[Research: Topic]] - Key finding: [one sentence] - Update
wiki/hot.mdwith the research summary
Report to User
After filing everything:
Research complete: [Topic]
Rounds: N | Searches: N | Pages created: N
Created:
wiki/questions/Research: [Topic].md (synthesis)
wiki/sources/[Source 1].md
wiki/concepts/[Concept 1].md
wiki/entities/[Entity 1].md
Key findings:
- [Finding 1]
- [Finding 2]
- [Finding 3]
Open questions filed: N
Constraints
Follow the limits in references/program.md:
- Max rounds (default: 3)
- Max pages per session (default: 15)
- Confidence scoring rules
- Source preference rules
If a constraint conflicts with completeness, respect the constraint and note what was left out in the Open Questions section.
Capabilities
Install
Quality
deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 5150 github stars · SKILL.md body (6,721 chars)