Bootstrap a new LLM-maintained wiki at a chosen folder, following the llm-wiki.md pattern (a three-layer memex - raw sources, LLM-generated wiki pages, and a CLAUDE.md or AGENTS.md schema that tells the LLM how to ingest and maintain the wiki). Creates the directory layout, writes a tailored schema file, plus index.md and log.md with a bootstrap entry. Use this skill when the user asks to "set up an llm-wiki", "create an LLM wiki", "bootstrap a wiki", "instantiate the llm-wiki pattern", or invokes /setup-llm-wiki. The skill asks the user about target folder, domain (research deep-dive / personalised work wiki / personal knowledge base / business-team wiki / reading a book / combination), source types (web articles, academic PDFs, meeting/podcast transcripts, own notes), image handling, optional search tooling (qmd), schema filename (CLAUDE.md or AGENTS.md), and optional symlinks to sibling folders if the target sits inside an Obsidian vault.
90%
Does it follow best practices?
Impact
83%
2.24xAverage score across 4 eval scenarios
Low
Low-risk findings worth noting
Bootstrap a new LLM-maintained wiki following the pattern from llm-wiki.md. The user picks the folder; you create the structure, schema, and bootstrap files, tailored to their answers.
Gather these inputs before creating any files. Use AskUserQuestion (load via ToolSearch if deferred) for the multiple-choice items; ask the path in plain text since it's free-form.
~ to the home directory. If it doesn't exist, create it. If it exists and is non-empty, list what's there and confirm before adding files.~/Documents/vault/llm-wiki.md. If present, read it for context. If not, proceed without it — the templates encode the pattern's essentials.CLAUDE.md.raw/ subdirectory and an entry under "Source-type specifics" in CLAUDE.md.raw/assets/ conventions.## Search section in CLAUDE.md recommending qmd (local hybrid BM25/vector search with CLI + MCP server) for when the wiki outgrows the index file. The skill does not install qmd — it just documents that the user can.CLAUDE.md). Offer AGENTS.md as an alternative for users running OpenAI Codex or other agents that look for that filename. The contents are the same; only the filename differs..obsidian/ — list the sibling folders and ask which to symlink under raw/.Detect a vault by walking up from the target: parent="$target"; while [ "$parent" != "/" ]; do [ -d "$parent/.obsidian" ] && echo "$parent" && break; parent=$(dirname "$parent"); done.
After gathering inputs:
scripts/create_dirs.sh <target> <source_types_csv>. The CSV is a comma-separated list of chosen slugs from articles,papers,transcripts,notes. The script always creates raw/, raw/assets/, and the five wiki/ subdirs.assets/CLAUDE.md.template, fill in the placeholders documented below, write to <target>/<schema-filename> (defaults to CLAUDE.md; use AGENTS.md if the user prefers Codex/other agents). Never overwrite an existing schema file without confirmation.index.md. Copy assets/index.md.template to <target>/index.md verbatim.log.md. Copy assets/log.md.template and substitute {{BOOTSTRAP_ENTRY}} (see "Bootstrap log entry" below). Write to <target>/log.md.raw/README.md. Read assets/raw-README.md.template, prune the bullet list to chosen source-type subfolders plus any symlinks, write to <target>/raw/README.md.cd <target>/raw && ln -s "../../<sibling>" "<sibling>"..obsidian/ is present at or above the target. See references/obsidian-graph.md for the decision tree (Cases A/B/C), the color palette, and the minimal graph.json body to write.raw/<type>/ and ask to ingest it).assets/CLAUDE.md.template contains these {{PLACEHOLDER}} markers. Replace each with rendered content based on user answers.
{{PURPOSE_PARAGRAPHS}}One or two short paragraphs framing the wiki's purpose, derived from the domain answer. For combinations, describe each strand. Reference phrasings:
{{USER_DESCRIPTION}}Short noun phrase identifying the user. Examples: The user, Jane (jane@example.com), or just first name. Default to The user when no identity has been disclosed.
{{RAW_SUBDIRS}}Markdown bullet list, one line per chosen source type, indented under the raw/ bullet. Use these canonical lines (omit any not chosen). Always include raw/assets/.
- `raw/articles/` — web articles (markdown, often via Obsidian Web Clipper)
- `raw/papers/` — academic papers, technical reports (PDFs)
- `raw/transcripts/` — meeting/call/podcast transcripts
- `raw/notes/` — the user's own free-form notes and journal entries
- `raw/assets/` — images, diagrams, attachments referenced by raw sources{{SYMLINKED_FOLDERS_NOTE}}If symlinks were created, a single bullet line listing them, e.g.:
- `raw/<symlinked-folder>/` — symlinks to sibling folders in `<vault-path>` (currently `Foo`, `Bar`). Treat as raw source material — read but never write. If the user adds new sibling folders, ask whether to symlink them too.If no symlinks, remove the {{SYMLINKED_FOLDERS_NOTE}} line entirely (don't leave a blank).
{{IMAGE_HANDLING_SECTION}}If yes: insert the contents of assets/fragments/image-handling.md (heading included). If no: remove the placeholder line entirely.
{{SOURCE_TYPE_SPECIFICS}}Bullet block under the existing ## Source-type specifics heading. Include only chosen types.
- **Articles** (`raw/articles/`): usually clipped via Obsidian Web Clipper. Frontmatter from the clipper has `source` URL — preserve it in the source page.
- **Papers** (`raw/papers/`): PDFs. Capture authors, year, venue, abstract. Many papers warrant their own concept pages for the methods/ideas they introduce.
- **Transcripts** (`raw/transcripts/`): meeting/call/podcast transcripts (e.g. from Granola). Often messy and long. Extract decisions, action items, and noteworthy claims — most of the transcript is filler. Link to participants as `[[entities/<person>]]`.
- **Notes** (`raw/notes/`): the user's own writing. Treat with weight — these often contain current thinking, hypotheses, and goals. They can become topic seeds.{{SEARCH_TOOLING_SECTION}}If yes (question 6): insert the contents of assets/fragments/search-tooling.md. If no: remove the placeholder line.
{{MCP_INTEGRATIONS_SECTION}}Include only for work / team / business domains (question 3 options 2 or 4, or a combination including those). For pure research or personal knowledge wikis, remove the placeholder. When included: insert the contents of assets/fragments/mcp-integrations.md.
Replace {{BOOTSTRAP_ENTRY}} in log.md.template with this block, dropping conditional fragments (<...>) that don't apply:
## [YYYY-MM-DD HH:MM] schema | bootstrap
- Initialised wiki at `<target-path>` <from the pattern in `<pattern-doc-path>`>.
- Created `raw/{<chosen-types>,assets}/` and `wiki/{entities,concepts,topics,sources,synthesis}/`.
- Wrote `<schema-filename>` (e.g. `CLAUDE.md` or `AGENTS.md`) with conventions for ingest, query, lint, page frontmatter<, image handling><, search tooling><, MCP integrations>.
- Domain: <domain answer>. Source types: <chosen types>.
<- Symlinked: `<sibling-1>`, `<sibling-2>` from `<vault-path>` into `raw/`.>Use today's date and a 24h HH:MM time.
YYYY-MM-DD.index.md, or log.md, do NOT overwrite. Surface the conflict and ask the user how to proceed.