Agent skill

Wiki Research

by Ar9av in Ar9av/obsidian-wiki

Perform multi-round web research on a topic, synthesize the findings, and file structured results into the Obsidian wiki.

MITAuto-check: notesKnowledge Management

Install Wiki Research

skills CLI
$ npx skills add Ar9av/obsidian-wiki --skill wiki-research -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Ar9av/obsidian-wiki wiki-research --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.skills/wiki-research .claude/skills/wiki-research && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
wiki-research
GitHub stars
3.5k
Token cost
~3.2k tokens
SKILL.md length
1,206 words
Files
1
Skills in repo
39
Repo updated
First seen
Licence
MIT

At a glance

Perform multi-round web research on a topic, synthesize the findings, and file structured results into the Obsidian wiki.

  • Works in 4 steps: sources/ — One page per major reference → concepts/ — One page per substantive… → entities/ — Tools, organizations, people → …
  • Comprehensive web-sourced research intended to become wiki knowledge
  • SKILL.md covers Before You Start, Research Configuration…, Research Backends (optional) and Round 1 — Broad Survey, plus 7 more sections
  • Needs PERPLEXITY_API_KEY

What it does

Wiki Research is an agent skill from Ar9av/obsidian-wiki. Perform multi-round web research on a topic, synthesize the findings, and file structured results into the Obsidian wiki. Use for comprehensive web-sourced research intended to become wiki knowledge.

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Knowledge Management, covering LLM wikis. It works with Obsidian. The repository describes itself as: Framework for AI agents to build and maintain a digital brain through Obsidian wiki | Memory System for Agents. The licence is MIT.

When your agent uses it

  • Comprehensive web-sourced research intended to become wiki knowledge
  • Tasks that involve LLM wikis

Example prompts

  • “/wiki-research”

Requirements

  • A credential in PERPLEXITY_API_KEY

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. sources/ — One page per major reference
  2. concepts/ — One page per substantive concept
  3. entities/ — Tools, organizations, people
  4. synthesis/Research: [Topic].md — Master synthesis

What it can do on your machine

Read from SKILL.md and the folder at commit 4a0630b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash, yaml and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • PERPLEXITY_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Wiki Research loads about 3.2k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 1,206 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~53
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:16
    line `@name` override → walk up CWD for `.env` → global config → prompt setup). This gives `OBSIDIAN_VAULT_PATH` and `OB

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Ar9av/obsidian-wiki at commit 4a0630b, republished under its MIT licence (© Ar9av). 1,206 words, ~3,222 tokens.

Download SKILL.mdSave it as .claude/skills/wiki-research/SKILL.md (or your agent's skills folder).
name
wiki-research
description
Perform multi-round web research on a topic, synthesize the findings, and file structured results into the Obsidian wiki. Use for comprehensive web-sourced research intended to become wiki knowledge.

Wiki Research — Autonomous Multi-Round Research

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.

Before You Start

Writing profile: Before drafting or rewriting natural-language Markdown, read and apply the Writing Profile Resolution section in llm-wiki/SKILL.md. Framework schema, provenance, safety, and operation-specific requirements take precedence. WRITING.md preferences apply only to newly drafted or rewritten natural-language Markdown; preserve source content and structured records.

  1. Resolve config — follow the Config Resolution Protocol in llm-wiki/SKILL.md (inline @name override → walk up CWD for .env → global config → prompt setup). This gives OBSIDIAN_VAULT_PATH and OBSIDIAN_LINK_FORMAT (default: wikilink).
  2. Read $OBSIDIAN_VAULT_PATH/index.md to understand what's already in the wiki — don't re-research things the wiki covers well
  3. Read $OBSIDIAN_VAULT_PATH/hot.md if it exists — it surfaces recent context
  4. Check $OBSIDIAN_VAULT_PATH/references/research-config.md if it exists — it may define source preferences, domains to skip, or confidence rules for this vault
  5. Check $OBSIDIAN_VAULT_PATH/references/research-backends.md if it exists — it registers optional CLI retrieval backends (social media, video transcripts, paid APIs, etc.). Load any available backends into your working state for this session.

When 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.

Research Configuration (optional)

If references/research-config.md exists in the vault, read it and apply any rules it defines:

  • Source preferences (e.g., prefer academic sources, avoid certain domains)
  • Domains to skip
  • Confidence scoring adjustments
  • Topic-specific constraints

If the file doesn't exist, proceed with defaults.

Research Backends (optional)

If references/research-backends.md exists in the vault, load it before starting research. It defines zero or more CLI retrieval backends as a YAML list:

yaml
backends:
  - name: yt-dlp-transcript      # friendly label
    binary: yt-dlp                # CLI binary (checked with `command -v`)
    invoke: "yt-dlp --skip-download --write-auto-sub --sub-lang en --sub-format json3 -o /tmp/ytvid '{url}'"
    when_to_use: YouTube video URLs, video transcripts
    cost_tier: free               # free | paid
    env_key: ""                   # required env var for paid tiers (empty = always enabled)
    output: text                  # json | text | markdown

  - name: perplexity-sonar
    binary: perplexity
    invoke: "perplexity search '{query}'"
    when_to_use: deep synthesis queries needing multi-source aggregation
    cost_tier: paid
    env_key: PERPLEXITY_API_KEY   # skipped if unset
    output: text

Backend availability check (run once at session start):

  • For each backend: command -v <binary> 2>/dev/null — if not found, mark unavailable and note it in the run summary
  • For paid backends: also check that $env_key is non-empty — if unset, mark unavailable and note it
  • Build a list of active backends (available + key-gated checks pass) to use in Rounds 1–2

Invocation rules (per angle/URL during research):

  • Substitute {url} or {query} in the invoke template with the current URL or search query
  • Capture stdout; on non-zero exit code → skip this backend for this angle, note the short error, continue
  • Fold backend output into the same claims/concepts/entities/contradictions extraction, citing the source URL the backend returns (or the query string for query-mode backends)
  • A backend failure never aborts the research run — always fall back to WebSearch/WebFetch

Free-first ordering: Evaluate free backends before paid ones for each angle. If a free backend returns sufficient content, paid backends for the same angle can be skipped.

No research-backends.md → skip this section entirely; behavior is identical to today.

Starter registry template

If the user asks for an example registry, offer this file at $VAULT/references/research-backends.md:

yaml
# Optional CLI backends for wiki-research. Delete rows you don't need.
# Skill docs: .skills/wiki-research/SKILL.md — Research Backends section
backends:
  # --- free / local ---
  - name: defuddle-fetch
    binary: defuddle
    invoke: "defuddle '{url}'"
    when_to_use: any URL — cleaner extraction than WebFetch alone
    cost_tier: free
    env_key: ""
    output: markdown

  - name: yt-dlp-transcript
    binary: yt-dlp
    invoke: "yt-dlp --skip-download --write-auto-sub --sub-lang en --sub-format json3 -o /tmp/ytvid '{url}'"
    when_to_use: YouTube video URLs for transcript extraction
    cost_tier: free
    env_key: ""
    output: text

  # --- paid / gated (skipped when env key is unset) ---
  - name: perplexity-sonar
    binary: perplexity
    invoke: "perplexity search '{query}'"
    when_to_use: deep synthesis queries needing multi-source aggregation
    cost_tier: paid
    env_key: PERPLEXITY_API_KEY
    output: text

Round 1 — Broad Survey

Goal: Get a wide map of the topic.

  1. Decompose the topic into 3-5 distinct angles (e.g., for "vector databases": what they are, when to use them, leading implementations, trade-offs, production gotchas)
  2. For each angle, run 2-3 WebSearch queries using varied phrasing
  3. For the top 2-3 results per angle, use WebFetch (or defuddle <url> if available — cleaner extraction) to get content. For each URL, also invoke any active backends whose when_to_use matches (e.g., a YouTube URL triggers yt-dlp-transcript); fold their output into extraction alongside WebFetch results, citing the source URL the backend returns.
  4. From each fetched page, extract:
    • Key claims — what the source explicitly states
    • Concepts — ideas, terms, frameworks introduced
    • Entities — tools, people, organizations mentioned
    • Contradictions — places where sources disagree with each other

Track what's covered and what's missing as you go.

Round 2 — Gap Fill

Goal: Close the holes left by Round 1.

Review what Round 1 produced:

  • What questions did sources raise but not answer?
  • Where do sources contradict each other?
  • Which angles got thin coverage?

Run up to 5 targeted searches specifically addressing these gaps. Prefer primary sources, official documentation, and authoritative analyses over link aggregators. For gap-fill queries, also invoke any active query-mode backends (e.g., perplexity-sonar) by substituting {query} in their invoke template — fold results into extraction with backend name as citation context.

Add findings to your working set. Update the contradiction list.

Show full SKILL.md (504 more words)Show less

Round 3 — Synthesis Check

Goal: Resolve contradictions; confirm depth is sufficient.

If major contradictions remain unresolved:

  • Run one final targeted pass (2-3 searches) to find authoritative resolution
  • If resolution is impossible, flag the contradiction explicitly in the synthesis page

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.

Filing — Write Wiki Pages

Organize all findings into wiki pages across four output areas:

1. sources/ — One page per major reference

For each significant source (typically 4-8 pages total):

yaml
---
title: >-
  <Source title>
category: references
tags: [<2-4 domain tags>]
sources:
  - "<URL>"
source_url: "<URL>"
created: <ISO-8601 timestamp>
updated: <ISO-8601 timestamp>
summary: >-
  <1-2 sentences describing what this source covers, ≤200 chars>
provenance:
  extracted: 0.X
  inferred: 0.X
  ambiguous: 0.X
base_confidence: <0.17 + 0.5 × classify(url) for a single source>
lifecycle: draft
lifecycle_changed: <ISO date today>
---

Body: title, URL, what it covers, key claims (with provenance markers), limitations.

2. concepts/ — One page per substantive concept

For each significant concept surfaced across sources:

Standard concept frontmatter + body. Link concepts to each other and to source pages.

3. entities/ — Tools, organizations, people

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.

4. synthesis/Research: [Topic].md — Master synthesis

The primary output: a structured synthesis of everything found.

yaml
---
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>

Cross-linking

After filing all pages:

  • Every concept page should link to at least 2 source pages
  • Every source page should link to the concept pages it informed
  • The synthesis page should link to all concept, entity, and source pages produced

Check index.md for existing pages on the same topics — merge into existing pages rather than creating duplicates.

Update Tracking Files

.manifest.json — Add a research entry:

json
{
  "type": "research",
  "topic": "<topic>",
  "researched_at": "TIMESTAMP",
  "rounds_completed": 3,
  "sources_fetched": N,
  "pages_created": ["..."],
  "pages_updated": ["..."]
}

One locked call updates the index, the log, and the hot cache:

bash
obsidian-wiki memory sync WIKI_RESEARCH \
  topic="<topic>" rounds=<N> sources_fetched=<N> \
  pages_created=<M> backends_used="<name,...|none>" \
  --takeaways "<the research topic and its core finding, in one line>"

Do not list every page you created in a log field — memory sync reconciles the index from disk, and a huge field only crowds the hot cache. If the research is ongoing, record it: obsidian-wiki memory todo add "<open question>" --origin synthesis/<page>.md.

Never hand-edit index.md, log.md, or hot.md — the command takes the lock that keeps a parallel writer from dropping your update.

See .skills/llm-wiki/references/MEMORY.md for the full procedure.

Quality Checklist

  • 3 rounds completed (or halted at sufficient depth)
  • Synthesis page exists at synthesis/Research: [Topic].md
  • Source pages written for major references
  • Concept and entity pages written for significant items
  • Contradictions flagged in synthesis page
  • All pages cross-linked
  • index.md, log.md, hot.md, .manifest.json updated
  • Backend summary reported: which backends were active, which were skipped (unavailable binary / unset key / error), and why

QMD Refresh After Vault Writes

QMD 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.

bash
${QMD_CLI:-qmd} update

If the output says vectors are needed or embeddings may be stale, run:

bash
${QMD_CLI:-qmd} embed

Verify the collection with either:

bash
${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"

or, when a specific page path is known:

bash
${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5

Record one of:

  • QMD refreshed: update + embed + verified
  • QMD refreshed: update only + verified
  • QMD skipped: QMD_WIKI_COLLECTION unset
  • QMD skipped: qmd CLI unavailable
  • QMD failed: <short error summary>

© Ar9av, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .skills/wiki-research of Ar9av/obsidian-wiki.

Open the folder on GitHubat commit 4a0630b

Compare with similar skills

Wiki Research next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Wiki Research compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Wiki Research this skillAr9av/obsidian-wiki3.5k—~3.2kAutomated safety check: NotesMIT
LLM Wikilewislulu/llm-wiki-skill655—~3.7kAutomated safety check: PassNone
LLM Wikizosmaai/pi-llm-wiki608—~4.4kAutomated safety check: PassMIT
LLM Wikipraneybehl/llm-wiki-plugin118—~5.7kAutomated safety check: PassMIT
Karpathy WikiSherwinQ/karpathy-wiki114—~967Automated safety check: PassMIT
My LLM WikiMartinLwx/dotfiles140—~2.7kAutomated safety check: PassNone

Similar skills

  • LLM Wiki

    lewislulu/llm-wiki-skill

    Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…

    655 GitHub stars~3.7k tokensUpdated 5 mo ago
    Knowledge ManagementAuto-check passed
  • LLM Wiki

    zosmaai/pi-llm-wiki

    Build and maintain a persistent, interlinked Obsidian-compatible markdown wiki using Karpathy's LLM Wiki pattern.

    608 GitHub stars~4.4k tokensUpdated 3 days ago
    Knowledge ManagementAuto-check passed
  • LLM Wiki

    praneybehl/llm-wiki-plugin

    Build and maintain an LLM-curated knowledge base from papers, articles, transcripts, notes and project findings.

    118 GitHub stars~5.7k tokensUpdated 27 days ago
    Knowledge ManagementAuto-check passed
  • Karpathy Wiki

    SherwinQ/karpathy-wiki

    A skill your agent uses when building or maintaining a personal knowledge base with LLM assistance.

    114 GitHub stars~967 tokensUpdated 5 mo ago
    Knowledge ManagementAuto-check passed
  • My LLM Wiki

    MartinLwx/dotfiles

    Provides access to the user's personal wiki, including notes, research, project documentation, decisions, and archived knowledge.

    140 GitHub stars~2.7k tokensUpdated yesterday
    Knowledge ManagementAuto-check passed
  • Sage Wiki

    xoai/sage-wiki

    Reference skill for sage-wiki — local-first knowledge graph with MCP server, REST API, compiled wiki, and Obsidian-compatible output.

    622 GitHub stars~2.4k tokensUpdated 3 days ago
    Knowledge ManagementAuto-check passed

More from Ar9av/obsidian-wiki

All 39 skills in this repo
  • Codex History Ingest

    Ar9av/obsidian-wiki

    Ingest Codex CLI conversation/session history into Obsidian as distilled knowledge.

    3.5k GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Copilot History Ingest

    Ar9av/obsidian-wiki

    Ingest GitHub Copilot CLI/session history into Obsidian as distilled knowledge.

    3.5k GitHub stars~4.4k tokensUpdated yesterday
    Auto-check: notes
  • Hermes History Ingest

    Ar9av/obsidian-wiki

    Ingest Hermes agent history into Obsidian as distilled knowledge.

    3.5k GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Obsidian Layout Adjustment

    Ar9av/obsidian-wiki

    Adjust the user's Obsidian visual layout with CSS snippets. An agent skill from Ar9av/obsidian-wiki.

    3.5k GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed
  • Openclaw History Ingest

    Ar9av/obsidian-wiki

    Ingest OpenClaw session/history data into Obsidian as distilled knowledge.

    3.5k GitHub stars~2.5k tokensUpdated yesterday
    Auto-check: notes
  • Wiki Capture

    Ar9av/obsidian-wiki

    Turn the current conversation or finding into a structured permanent wiki note.

    3.5k GitHub stars~4.3k tokensUpdated yesterday
    Auto-check: notes

Works with

Questions about Wiki Research

What does Wiki Research do?

Perform multi-round web research on a topic, synthesize the findings, and file structured results into the Obsidian wiki. Wiki Research is an agent skill from Ar9av/obsidian-wiki. Perform multi-round web research on a topic, synthesize the findings, and file structured results into the Obsidian wiki.

When should I use Wiki Research?

Wiki Research fits situations like: comprehensive web-sourced research intended to become wiki knowledge; tasks that involve LLM wikis.

How do I install Wiki Research in Claude Code?

Run `npx skills add Ar9av/obsidian-wiki --skill wiki-research -a claude-code`. Or copy the skill folder (.skills/wiki-research in Ar9av/obsidian-wiki) into .claude/skills/wiki-research in your project. Claude Code loads it when a task matches its description.

How do I install Wiki Research in Codex?

Run `npx skills add Ar9av/obsidian-wiki --skill wiki-research -a codex`. Or copy the skill folder (.skills/wiki-research in Ar9av/obsidian-wiki) into .agents/skills/wiki-research in your project. Codex loads it when a task matches its description.

Can I use Wiki Research in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Ar9av/obsidian-wiki --skill wiki-research -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wiki-research, .gemini/skills/wiki-research, .github/skills/wiki-research and .opencode/skills/wiki-research in your project.

What does Wiki Research need to run?

Going by SKILL.md and its folder, Wiki Research needs credentials named PERPLEXITY_API_KEY. Our summary lists: A credential in PERPLEXITY_API_KEY.

Does Wiki Research access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Wiki Research safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Wiki Research use?

Wiki Research is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Wiki Research use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Wiki Research?

Skills that share tags, products or a category with Wiki Research: LLM Wiki (lewislulu/llm-wiki-skill, 655 stars), LLM Wiki (zosmaai/pi-llm-wiki, 608 stars), LLM Wiki (praneybehl/llm-wiki-plugin, 118 stars) and Karpathy Wiki (SherwinQ/karpathy-wiki, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Wiki Research?

Ar9av (a GitHub user) maintains it in Ar9av/obsidian-wiki, which has 3,538 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 8, 2026.

Source: Ar9av/obsidian-wiki on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.