llm-wiki-starter
llm-wiki-starter
Guide the user through scaffolding an LLM Wiki knowledge base end-to-end: detect what's already installed, install what's missing across OS/package-manager combinations, create the vault from the official template, and configure Obsidian.
The user is already running an AI CLI to invoke this Skill — do NOT prompt them to install another AI agent.
When to use
- Natural language: user says 创建 llm-wiki 知识库, 创建知识库, create llm wiki, scaffold llm wiki, set up knowledge base.
- Explicit command:
/llm-wiki-starter(optionally with--bash,--name <wiki-name>,--lang <en|zh>,--dir <path>,--only-tools,--only-wiki,--only-obsidian). See Parameter reference below for full semantics.
If explicit command is used with parameters, skip the matching interactive prompts.
Global principles (apply to every stage)
- Detect before install. Each step: check if target exists → print ✓ skip / ↓ install / ⚠ fail. Never reinstall.
- Failures do not block. On single-item failure, record it to a "manual install" list and continue. Print the full list at the end.
- Respect OS and shell. Detect with
uname -s(macOS / Linux / Windows-via-Git-Bash). If running under native Windows cmd/PowerShell (nouname), use winget/choco/scoop directly — do not assume bash. - Use the host CLI's native interaction. If you are Claude Code, use AskUserQuestion. If Codex or another CLI, use its native prompt mechanism. Do not hardcode a UI shape.
- Idempotent for tools, NOT for wiki creation. Re-running detects already-installed tools and skips them. But Stage 4 (create wiki) is the workflow's purpose: every invocation MUST prompt for a new wiki name / lang / dir and produce a NEW vault. The existence of a previously-created wiki (e.g.
~/Documents/CODE/my-wiki) is NOT grounds to skip Stage 4 — ask the user for a new name and create a fresh vault next to it. - Never prompt for login / API keys / tokens / extra AI CLIs. The user is already running an AI CLI — leave their AI tooling alone.
- Windows line endings. When writing files the user will commit, use LF (Unix) line endings.
- Act, don't narrate. Don't pre-announce what you're about to do. Don't recap which Stage you're in. Don't say "需要确认 X" / "I'll now ask you about Y" / "进入 Stage N" / "稍后会提醒"; just take the action — ask the question, run the command, write the file. The user only needs ONE concise line per outcome (
✓ <name>,⚠ <name>: <reason>), not a play-by-play. - Report each item individually, not in aggregate. "✓ kepano/obsidian-skills installed" + "✓ axtonliu/visual-skills installed" — not "Both Agent Skills are installed". Lists of items get one line each.
- Each warning appears ONCE. Don't pre-warn at detection time and then re-warn at finalize. If something needs the user's attention, surface it in the final summary only — not midway through the run.
Workflow (6 stages)
Execute stages in order. Read the matching reference file before each stage. Do not skip reference files — they contain exact commands.
| # | Stage | Reference |
|---|---|---|
| 0 | Entry alignment (OS detect, plan, confirm) | SKILL.md (this file, section below) |
| 1 | Base tools (Node / Git / jq / curl) | references/02-install-base.md |
| 2 | Agent Skills (kepano + axtonliu) | references/03-install-skills.md |
| 3 | Obsidian app + Web Clipper | references/04-install-obsidian.md |
| 4 | Create wiki from template | references/05-create-wiki.md |
| 5 | Obsidian plugins + Minimal theme | references/06-install-plugins.md |
| 6 | Finalize (git, summary) | references/07-finalize.md |
Detection rules shared across stages: see references/01-detect-tools.md.
Stage 0: Entry alignment
-
Run
uname -sto detect OS. Record asOS= macos / linux / windows. -
Parameter hint (only when triggered by bare
/llm-wiki-starterwith NO parameters): print ONE concise line listing available flags before anything else, so the user discovers them. List--bashfirst since power users invoke it most often:Parameters (optional): --bash --name <wiki-name> --lang <en|zh> --dir <path> --only-tools --only-wiki --only-obsidian No params given — continuing interactively.Skip this hint if: (a) the user passed any parameter, OR (b) triggered via natural language (not the slash command).
-
Parse any CLI parameters passed with
/llm-wiki-starter. Remember them for later stages. If an unknown flag appears, print ONE line:Unknown parameter: <flag>. Valid: --bash, --name, --lang, --dir, --only-tools, --only-wiki, --only-obsidian. Ignoring.and continue. The three--only-*flags are mutually exclusive — if more than one is passed, keep the last and warnConflicting --only-* flags; using <last>. -
If
--bashwas passed: short-circuit to bash mode. Do NOT read any other reference files, do NOT run the 6-stage SOP. Instead, run a single bash command that pipes the upstreaminstall.shinto bash, forwarding the other parameters:curl -fsSL https://raw.githubusercontent.com/eleven-net-cn/llm-wiki-starter/main/install.sh \ | bash -s -- --yes <forwarded params>Forward only parameters install.sh understands:
--name,--lang,--dir,--only-tools,--only-wiki,--only-obsidian. Always append--yesso install.sh runs non-interactively.Example:
/llm-wiki-starter --bash --name foo --lang zh→ runscurl ... | bash -s -- --yes --name foo --lang zh.After install.sh exits, relay its exit status (success / failure) in ONE line. Do NOT layer a Skill-style summary on top — install.sh prints its own summary already.
-
Go directly to Stage 1. Do NOT ask "Proceed?" or any other confirmation — the user's request to create a wiki IS the confirmation. Global principle #8 (Act, don't narrate) applies to trigger paths too.
Reminder: even if the user has run this Skill before and has an existing wiki on disk, the goal of this run is to create a NEW wiki. Stage 4 will prompt for a fresh name/dir. Do not interpret a prior wiki as "the work is already done."
Parameter reference
Names mirror install.sh so the two install paths stay aligned. Listed in suggested-display order (most commonly used first).
| Flag | Default | Behavior |
|---|---|---|
--bash |
(off) | Bypass the 6-stage SOP. Execute upstream install.sh in one shell call (non-interactive, --yes) and forward the other flags. Minimizes AI token cost. The AI reads only SKILL.md Stage 0 step 4, no other reference files. |
--name <wiki-name> |
(prompt) | Wiki directory name. Collision → re-prompt. |
--lang <en|zh> |
en (or prompt) |
Language overlay for template. |
--dir <path> |
$(pwd) (or prompt) |
Parent directory; wiki created at <dir>/<name>. |
--only-tools |
(off) | Run Stages 1-3 only (base tools / Agent Skills / Obsidian app). Skip Stages 4-6 — no wiki created. |
--only-wiki |
(off) | Skip Stages 1-3 (assumes tools already installed). Run Stage 4 (create wiki) + Stage 5 (plugins/theme) + Stage 6 (finalize). |
--only-obsidian |
(off) | Skip Stages 1-4. Run Stage 5 only (install plugins + theme into an existing vault) + a brief Stage 6 summary. Requires --dir pointing at a vault containing CLAUDE.md. |
Then proceed to stage 1 (or skip ahead per the --only-* flag in effect).
Canvas constraint (already encoded in template)
The template's AGENTS.md instructs future AI sessions inside the new vault to use obsidian-canvas-creator (axtonliu/visual-skills) for .canvas creation, not json-canvas (which kepano/obsidian-skills bundles). You don't need to repeat this in the user-facing finalize summary — that line is for AI coordination, and AGENTS.md already carries it into the vault.