CtrlK
BlogDocsLog inGet started
Tessl Logo

maria/setup-llm-wiki

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.

87

2.24x
Quality

90%

Does it follow best practices?

Impact

83%

2.24x

Average score across 4 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files
name:
setup-llm-wiki
description:
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.

setup-llm-wiki

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.

Inputs to gather

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.

  1. Target folder (free text). The path where the wiki will live. Expand ~ 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.
  2. Pattern doc location (optional). Default ~/Documents/vault/llm-wiki.md. If present, read it for context. If not, proceed without it — the templates encode the pattern's essentials.
  3. Domain / purpose (single-select, allow combination via "Other"). Options: research deep-dive · personalised work wiki · personal knowledge base · business/team wiki · reading a book (companion / fan wiki). Shapes the framing paragraphs in CLAUDE.md.
  4. Source types (multi-select). Options: web articles & blog posts · academic papers (PDFs) · meeting/podcast transcripts · own notes & journal entries. Each chosen type maps to a raw/ subdirectory and an entry under "Source-type specifics" in CLAUDE.md.
  5. Image handling (yes/no). If yes, include the image-handling section and the raw/assets/ conventions.
  6. Search tooling note (yes/no). If yes, include a ## 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.
  7. Schema filename (single-select, default 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.
  8. Symlinks (conditional). If the target sits inside an Obsidian vault — i.e. an ancestor folder contains .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.

Workflow

After gathering inputs:

  1. Create the directory tree. Run 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.
  2. Write the schema file. Read 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.
  3. Write index.md. Copy assets/index.md.template to <target>/index.md verbatim.
  4. Write log.md. Copy assets/log.md.template and substitute {{BOOTSTRAP_ENTRY}} (see "Bootstrap log entry" below). Write to <target>/log.md.
  5. Write 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.
  6. Create symlinks if requested. Use relative paths so the wiki survives moves: cd <target>/raw && ln -s "../../<sibling>" "<sibling>".
  7. Configure Obsidian graph view if .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.
  8. Summarise what was created — final tree, where to edit the schema, the graph filter that was set (or the manual one to apply per Case B), and a suggested first move (drop a source into raw/<type>/ and ask to ingest it).

CLAUDE.md template placeholders

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:

  • Research deep-dive: "going deep on a topic over weeks/months with an evolving thesis, fed by papers, articles, and reports."
  • Personalised work wiki: "supporting day-to-day work, fed by Slack threads, meeting/call transcripts, project documents, and own notes."
  • Personal knowledge base: "tracking goals, health, psychology, and self-improvement — filing journal entries, articles, podcast notes, and building up a structured picture over time."
  • Business/team wiki: "an internal knowledge base maintained from team artifacts — meetings, customer calls, project docs, with humans reviewing updates."
  • Reading a book (companion / fan wiki): "filing each chapter as it's read, building out pages for characters, themes, plot threads, places, languages, and how they connect. By the end, a rich companion wiki — like Tolkien Gateway, but personal."

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

Bootstrap log entry

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.

Notes

  • File naming for wiki pages: kebab-case slugs.
  • Date format everywhere: ISO YYYY-MM-DD.
  • Don't bake any specific user identity (name, email, employer) into the generated schema unless the user has explicitly disclosed and confirmed it.
  • If the target folder already contains the chosen schema file, index.md, or log.md, do NOT overwrite. Surface the conflict and ask the user how to proceed.
  • Don't initialise a git repo unless the user asks — the folder may already be part of a larger vault repo. (The pattern doc notes the wiki is just a git repo of markdown — version history, branching, collaboration come for free if the user later opts in.)
  • Maintain the spirit from the pattern doc: everything in the schema is optional and modular. If a section turns out not to apply (e.g. the user has no images and never will), let the user prune it. Don't force-include all sections.
Workspace
maria
Visibility
Public
Created
Last updated
Publish Source
CLI
Badge
maria/setup-llm-wiki badge