Help us improve
Share bugs, ideas, or general feedback.
From claude-obsidian
Runs autonomous iterative web research on topics, fetches sources via WebSearch/WebFetch, synthesizes findings, and files structured wiki pages. Activates on /autoresearch or phrases like 'research [topic]' or 'deep dive into [topic]'
npx claudepluginhub agricidaniel/claude-obsidian --plugin claude-obsidianHow this skill is triggered — by the user, by Claude, or both
Slash command
/claude-obsidian:autoresearchThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
Conducts autonomous research loops on topics: decomposes into angles, performs web searches and fetches, extracts entities/concepts/claims, synthesizes, and files into knowledge graph.
Investigates topics from scratch: web searches sources, captures them, identifies concepts, generates cross-linked wiki pages with confidence scores, detects contradictions.
Conducts deep research on topics or indexes local files/URLs into a git-versioned knowledge base using web search, fetch, and structured templates.
Share bugs, ideas, or general feedback.
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.
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.
Three paths to a topic:
When the user says /autoresearch [topic] or "research X", use the given topic verbatim and skip the sections below.
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:
./scripts/boundary-score.py --json --top 5. Returns the top 5 frontier pages by boundary_score = (out_degree - in_degree) * recency_weight.results array, set BOUNDARY_MODE=0 and fall through to section C below. Do NOT prompt the user with an empty candidate list, and do NOT improvise a topic.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.
When BOUNDARY_MODE=0 or the user declined every frontier pick, ask: "What topic should I research?"
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.
After research is complete, create these pages:
wiki/sources/. One page per major reference found
wiki/concepts/. One page per significant concept extracted
wiki/entities/. One page per significant person, org, or product identified
wiki/questions/. One synthesis page titled "Research: [Topic]"
---
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
wiki/index.md. Add all new pages to the right sectionswiki/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]
wiki/hot.md with the research summaryAfter 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
Follow the limits in references/program.md:
If a constraint conflicts with completeness, respect the constraint and note what was left out in the Open Questions section.