
Wiki Capture
Turn an agent chat into a permanent Obsidian wiki note with correct vault placement and wikilinks instead of losing context when the session ends.
Install
npx skills add https://github.com/ar9av/obsidian-wiki --skill wiki-captureWhat is this skill?
- Triggers on phrases like save this, /wiki-capture, capture this, file this conversation, or add this to my wiki
- Resolves Obsidian vault path and link format via llm-wiki Config Resolution Protocol before writing
- Extracts durable knowledge (decisions and rationale), not a chat transcript summary
- Reads index.md and hot.md to avoid duplicates and align with recent vault activity
- Classifies content and places the note in the correct vault category with formatted internal links
Adoption & trust: 1.6k installs on skills.sh; 1.8k GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Journey fit
Canonical shelf is Build → docs because the deliverable is structured knowledge documentation inside your vault, even though capture can happen during any phase. Subphase docs matches rewriting conversation substance into declarative notes, deduplicating against index.md, and linking per llm-wiki conventions—not shipping code.
Common Questions / FAQ
Is Wiki Capture safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Wiki Capture
# Wiki Capture — Conversation to Wiki Note You are preserving knowledge from the current conversation as a permanent wiki note. The goal is to extract the *substance* — the knowledge itself — not a summary of what was said. ## Before You Start 1. **Resolve config** — follow the Config Resolution Protocol in `llm-wiki/SKILL.md` (walk up CWD for `.env` → `~/.obsidian-wiki/config` → prompt setup). This gives `OBSIDIAN_VAULT_PATH` and `OBSIDIAN_LINK_FORMAT` (default: `wikilink`). 2. Read `$OBSIDIAN_VAULT_PATH/index.md` to understand existing wiki content (avoid duplicates) 3. Read `$OBSIDIAN_VAULT_PATH/hot.md` if it exists — it gives context on recent activity When writing internal links in Step 5, apply the link format from `llm-wiki/SKILL.md` (Link Format section) using the `OBSIDIAN_LINK_FORMAT` value. ## Step 1: Identify What's Worth Preserving Scan the conversation. Ask: what knowledge emerged here that would be valuable in 3 months with no memory of this chat? Worth preserving: - Decisions made and *why* they were made - Analysis, frameworks, mental models developed - Technical findings, patterns, or procedures - Synthesized understanding of a topic - Clear explanations of a concept that took effort to arrive at - Key facts from an external source discussed in the conversation Skip: - Logistics, scheduling, pleasantries - Exploratory back-and-forth where no conclusion was reached - Content that's already in the wiki If nothing material emerged, tell the user and stop. ## Step 2: Classify the Content Type Assign one of five types — this determines the target folder and tone: | Type | Description | Target folder | |---|---|---| | `synthesis` | Multi-step analysis or an answer to a specific question that required reasoning | `synthesis/` | | `concept` | A definition, framework, or mental model (what a thing *is*) | `concepts/` | | `source` | Summary of an external document, article, or resource discussed | `references/` | | `decision` | A strategic, architectural, or design choice and its rationale | `synthesis/` | | `session` | A complete discussion summary when the conversation spans multiple topics | `journal/` | If the content clearly belongs to a specific project (detected from context or user mention), place it under `projects/<project-name>/<category>/` instead. ## Step 3: Rewrite as Declarative Knowledge Do **not** write a summary of the conversation. Write the knowledge itself, in declarative present tense: - Not: "The user asked about X and Claude explained that..." - Yes: "X works by..." - Not: "We decided to use Y because..." - Yes: "Y is preferred over Z because [reason]. [^[inferred] if the rationale was implied, not stated explicitly]" Apply provenance markers per `llm-wiki`: - *Extracted* — explicitly stated in the conversation (no marker) - *Inferred* — generalized or synthesized from the conversation → `^[inferred]` - *Ambiguous* — disputed, uncertain, or contradictory → `^[ambiguous]` ## Step 4: Generate a Slug and Title Derive a clear, descriptive title from the content. Slugify it: - Lowercase, words separated by hyphens - Max 50 characters - Avoid dates in the slug (the frontmatter has `created`) ## Step 5: Write the Wiki Note Create the file at the target path with required frontmatter: ```yaml --- title: >- <Title> category: <synthesis|concepts|references|journal|skills> tags: [<2-5 domain tags from taxonomy>] sources: - conversation:<ISO-date> created: <ISO-8601 timestamp> updated: <ISO-8601 timestamp> summary: >-