npx skills add ...
npx skills add ar9av/obsidian-wiki --skill wiki-research
npx skills add ar9av/obsidian-wiki --skill wiki-research
Autonomously research a topic via multi-round web search, synthesize findings, and file structured results into the Obsidian wiki. Use this skill when the user says "/wiki-research [topic]", "research X", "find everything about Y", "do a deep dive on Z", "autonomous research on X", or wants comprehensive, web-sourced knowledge on a topic filed directly into their wiki.
You are running an autonomous research loop on a topic, synthesizing what you find, and filing the results into the Obsidian wiki as permanent knowledge.
llm-wiki/SKILL.md (inline @name override → walk up CWD for .env → ~/.obsidian-wiki/config → prompt setup). This gives OBSIDIAN_VAULT_PATH and OBSIDIAN_LINK_FORMAT (default: wikilink).$OBSIDIAN_VAULT_PATH/index.md to understand what's already in the wiki — don't re-research things the wiki covers well$OBSIDIAN_VAULT_PATH/hot.md if it exists — it surfaces recent context$OBSIDIAN_VAULT_PATH/references/research-config.md if it exists — it may define source preferences, domains to skip, or confidence rules for this vaultWhen writing internal links in generated pages, apply the link format from llm-wiki/SKILL.md (Link Format section) using the OBSIDIAN_LINK_FORMAT value.
Confirm the research topic with the user if it's ambiguous. Then proceed.
If references/research-config.md exists in the vault, read it and apply any rules it defines:
If the file doesn't exist, proceed with defaults.
Goal: Get a wide map of the topic.
WebSearch queries using varied phrasingWebFetch (or defuddle <url> if available — cleaner extraction) to get contentTrack what's covered and what's missing as you go.
Goal: Close the holes left by Round 1.
Review what Round 1 produced:
Run up to 5 targeted searches specifically addressing these gaps. Prefer primary sources, official documentation, and authoritative analyses over link aggregators.
Add findings to your working set. Update the contradiction list.
Goal: Resolve contradictions; confirm depth is sufficient.
If major contradictions remain unresolved:
If contradictions are minor or the topic feels well-covered after Round 2, skip additional searching and proceed to filing.
Halt condition: Stop when depth is achieved or 3 rounds are complete — do not loop indefinitely.
Organize all findings into wiki pages across four output areas:
For each significant source (typically 4-8 pages total):
Body: title, URL, what it covers, key claims (with provenance markers), limitations.
For each significant concept surfaced across sources:
Standard concept frontmatter + body. Link concepts to each other and to source pages.
For each significant entity encountered (tools, libraries, companies, key authors):
Standard entity frontmatter. Link back to concepts that use the entity and sources where it appears.
The primary output: a structured synthesis of everything found.
After filing all pages:
Check index.md for existing pages on the same topics — merge into existing pages rather than creating duplicates.
.manifest.json — Add a research entry:
index.md — Add all new pages under their respective sections.
log.md — Append:
hot.md — Update Recent Activity with the research topic and core finding. Update Active Threads if this is ongoing. Update updated timestamp.
synthesis/Research: [Topic].mdindex.md, log.md, hot.md, .manifest.json updatedQMD is a search index, not the source of truth. If $QMD_WIKI_COLLECTION is empty or unset, skip this step. Run it only after this skill has written or rewritten vault markdown. If QMD refresh fails, do not roll back the vault changes; report the QMD status separately.
Use $QMD_CLI if set; otherwise use qmd.
If the output says vectors are needed or embeddings may be stale, run:
Verify the collection with either:
or, when a specific page path is known:
Record one of:
QMD refreshed: update + embed + verifiedQMD refreshed: update only + verifiedQMD skipped: QMD_WIKI_COLLECTION unsetQMD skipped: qmd CLI unavailableQMD failed: <short error summary>---
title: >-
Research: <Topic>
category: synthesis
tags: [<3-5 domain tags>, research]
sources: [<list of source URLs or page paths>]
created: <ISO-8601 timestamp>
updated: <ISO-8601 timestamp>
summary: >-
Synthesis of <N>-round research on <topic>. Covers <core findings in ≤200 chars>.
provenance:
extracted: 0.X
inferred: 0.X
ambiguous: 0.X
base_confidence: <min(N_unique_sources/3,1.0)×0.5 + avg_source_quality×0.5>
lifecycle: draft
lifecycle_changed: <ISO date today>
---
# Research: <Topic>
## Overview
<2-4 sentence executive summary of what the research found>
## Key Findings
<Bulleted list of the most important claims, each with a [[source page]] citation>
## Core Concepts
<Links to concept pages created, with one-line descriptions>
## Entities & Tools
<Links to entity pages, with one-line descriptions>
## Contradictions & Open Questions
<Where sources disagree or where the research hit limits>
## Sources Consulted
<Linked list of all source pages>{
"type": "research",
"topic": "<topic>",
"researched_at": "TIMESTAMP",
"rounds_completed": 3,
"sources_fetched": N,
"pages_created": ["..."],
"pages_updated": ["..."]
}- [TIMESTAMP] WIKI_RESEARCH topic="<topic>" rounds=N sources_fetched=N pages_created=M${QMD_CLI:-qmd} update${QMD_CLI:-qmd} embed${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5