Processes unprocessed source material from an Obsidian vault's raw/ directory into structured, interlinked wiki articles. This skill should be used when the user asks to "compile my vault", "process raw files", "ingest sources", "build wiki articles", "update the knowledge base", "compile notes", or has new files in raw/ that need processing.
43:T1cdc,
Process unprocessed source material into structured, interlinked wiki articles. Backed by ${CLAUDE_SKILL_DIR}/../../scripts/compile.py — run directly for automation or CI use.
Two source modes:
raw/ (default) — user-dropped source filesdaily/ — auto-captured conversation logs from SessionEnd/PreCompact hooksall — both sourcesBefore any operation, resolve the vault path:
OBSIDIAN_VAULT_PATHwiki/index.md exists in the current working directoryAskUserQuestionCreate any missing directories silently. If wiki/index.md does not exist, create it before processing. See vault-conventions.md for full vault structure, naming rules, and article format.
Source: raw/ (default)
Glob for files in raw/:
raw/**/*.md
raw/**/*.txt
raw/**/*.pdf
A file is unprocessed if it has no entry in output/state.json or its SHA-256 hash differs from the stored value.
If the user says "recompile", "force compile", or "compile everything", treat all files as unprocessed.
Source: daily/
Glob for daily/YYYY-MM-DD.md files. These are auto-captured conversation logs. A daily file is processed if its SHA-256 hash matches the value stored in output/state.json under key daily/YYYY-MM-DD.md.
Source: all — process both raw/ and daily/.
For each unprocessed file:
project field from the raw file's frontmatter. If absent and the vault contains articles from multiple projects, ask the user with AskUserQuestionwiki/ or create new ones. For cross-cutting insights spanning multiple topics, use wiki/connections/. For each new topic:
wiki/<topic-name>/ (lowercase kebab-case)wiki/<topic-name>/index.md using the per-topic index format from vault-conventions.mdproject, title, aliases, tags, sources (list of originating files), created, and updated fields[[wiki links]] to related concepts across topicswiki/<topic>/index.md — add the new article entry alphabetically: - [[topic-name/article-name]] — one-line descriptionwiki/index.md — if the topic is new, add it to the Topics section alphabetically; append a new row to the Articles table: | [[path/article]] | one-line summary | source/file.md | YYYY-MM-DD |wiki/log.md — one entry per compile operation (see format in vault-conventions.md)processed: true and processed_date: YYYY-MM-DD to frontmatter as a human-readable marker (raw/ only, not daily/). The primary tracking is hash-based via output/state.jsonWhen a source file spans multiple topics:
index.md filesAfter writing each article:
[[wiki links]] to existing articles where the new concept is mentionedAfter processing all files, print a summary:
Compiled X files:
- [raw] source-1.md → topic-a/article-1.md, topic-b/article-2.md
- [daily] 2026-04-08.md → connections/cross-topic.md
- Updated indexes: wiki/index.md, wiki/log.md, topic-a/index.md
- Cross-linked: 3 existing articles updated
- Skipped: Y files (already processed)
order-confirmation-flow-driver.md). Do not merge cross-project contentAskUserQuestionAdd a Mermaid diagram when the source material describes something inherently structural or sequential that a diagram communicates better than bullets. Use judgment — not every article needs one.
flowchartstateDiagram-v2flowchart or graphsequenceDiagramflowchart TDPlace the diagram immediately after the section it illustrates, not at the top or bottom of the article. Use a subheading to introduce it:
## Order State Machine
\`\`\`mermaid
stateDiagram-v2
[*] --> Pending
Pending --> Confirmed
Confirmed --> Shipped
Shipped --> Delivered
Delivered --> [*]
Pending --> Cancelled
Confirmed --> Cancelled
\`\`\`
stateDiagram-v2 over stateDiagramflowchart over graph for compatibility