Slash commands reference
Every /wiki-* command llmwiki install-agent-kit ships — what it does,
what it runs under the hood, and a realistic invocation example. Use these
inside Claude Code. The command files live in the installable package and
land in an agent directory via llmwiki install-agent-kit --dest PATH.
Maintainer and AWOS delivery commands (/release, /fix-bug, /implement-feature) are not part of the vault pipeline and are not installed by the agent kit — they are described in ../maintainers/README.md.
All 12 commands in the vault pipeline, in the order you meet them:
| Command | What it does |
|---|---|
/wiki-init |
Scaffold an empty vault (raw/, wiki/, site/) |
/wiki-sync |
Convert new agent sessions into raw/ |
/wiki-ingest |
Ingest one file or folder into raw/ |
/wiki-synth |
Synthesize pending raw into wiki/sources/, then harvest candidates |
/wiki-candidates |
Triage pending candidate stubs |
/wiki-query |
Answer a free-form question from the wiki |
/wiki-update |
Edit one wiki page in place |
/wiki-lint |
Check wiki quality — orphans, broken links, stale pages |
/wiki-graph |
Build the knowledge graph from [[wikilinks]] |
/wiki-reflect |
Higher-order reflection pass over the whole wiki |
/wiki-build |
Regenerate the static HTML site |
/wiki-all |
Run the whole pipeline end-to-end |
Decision tree: which tool runs when?
CLI vs slash
| You want to… | Use |
|---|---|
| …run a check in CI, a cron job, or a shell script | CLI (python3 -m llmwiki …) |
…chain commands with && / pipe to jq |
CLI |
| …have the model read output + take follow-up actions | slash (inside Claude Code / Codex) |
| …answer a free-form question ("what did I decide about X?") | slash (/wiki-query) |
| …do one-shot builds, graph generation | either — slashes wrap the CLI |
Rule of thumb: if the output is for you to read + act on manually, use the CLI. If the output should feed back into an LLM turn, use the slash — the model sees the full stdout and can chain into the next step.
Lint (wiki quality)
Structural and content quality for the wiki is llmwiki lint / /wiki-lint — there is no separate eval subcommand.
| Command | Checks | Severity model | When to run |
|---|---|---|---|
llmwiki lint / /wiki-lint |
Frontmatter completeness, [[wikilink]] integrity, orphans, duplicate titles, stale pages, cache-tier consistency, tag-topic convention, stale references, and the rest of the registered rules |
Rules with error / warning / info severities; --fail-on-errors exits non-zero only on errors |
After every /wiki-sync or /wiki-build, and in CI |
Reach for lint when a page or the corpus looks wrong: orphans, broken [[wikilinks]], missing frontmatter, stale summaries. Use --fail-on-errors (or the automation lint-fail policy) when a non-zero exit should block a pipeline.
Wiki pipeline
/wiki-init
What: scaffolds an empty llmwiki — creates raw/, wiki/, site/
and seeds wiki/index.md, wiki/log.md, wiki/overview.md, plus the
nine navigation files (CRITICAL_FACTS.md, MEMORY.md, SOUL.md,
hints.md, hot.md, dashboard.md).
Wraps: python3 -m llmwiki init.
When to use: first time in a fresh repo, or after deleting wiki/
to start over.
Example:
/wiki-init
Claude Code will respond by running init and surfacing which files were seeded.
/wiki-sync
What: convert new Claude Code (+ Codex + Cursor + etc.) .jsonl
sessions into markdown under raw/sessions/, then ingest into wiki/.
Wraps: python3 -m llmwiki sync.
Arguments Claude may pass through: --dry-run, --since,
--project, --force, --vault. Say any of them in natural language
— "sync but only sessions from this week" becomes
--since $(date -v-7d +%Y-%m-%d). Durable lookback in config (filters.since / adapters.*.since) applies on bare /wiki-sync when --since is omitted — see configuration-reference.md.
When to use: at the end of each coding block. Also the only command
that triggers auto-ingest of new pages into wiki/.
Example:
/wiki-sync
/wiki-sync only my llm-wiki project
/wiki-sync but don't auto-build afterwards
/wiki-sync into my Obsidian vault at ~/Documents/Obsidian Vault
Expected output (narrated):
==> claude_code: 3 new sessions since last sync
✓ wrote 3 pages under raw/sessions/
✓ ingested into wiki/sources/
✓ auto-build: site/ rebuilt (690 HTML files)
/wiki-ingest <path>
What: ingest one source document or folder into wiki/, or enrich / discuss pending candidates during review. Reads the file, creates / updates the matching wiki/sources/<slug>.md, and may propose entity/concept candidates. Trusted hubs still require review (/wiki-candidates or llmwiki candidates promote|merge|discard) — ingest is not an auto-promote escape hatch.
Wraps: the Ingest Workflow in CLAUDE.md (no single CLI — it's a slash-command-driven workflow that the model orchestrates).
When to use: you dropped a source file manually (a PDF, a Jira ticket export, a meeting transcript), or Home / Analytics show a To review backlog and you want agent-led discussion over candidates. For bulk stub generation from already-synthesized sources, prefer llmwiki synth --candidates-only.
Examples:
/wiki-ingest raw/sources/2026-04-17-incident.md
/wiki-ingest raw/jira/
/wiki-ingest ~/Downloads/meeting-transcript.vtt
/wiki-synth
What: synthesize pending raw sessions/docs into wiki/sources/, then harvest entity/concept candidates into wiki/candidates/ (default). Use --sources-only for the legacy sources-only path. Sources are two LLM jobs per run (known-names prepare + one ask per queued file); harvest is offline. Ctrl+C harvests from written pages (or prints synth --candidates-only after --sources-only) and exits 130. Do not run a separate consolidate-topics step — known-names prepare is part of synth.
Wraps: python3 -m llmwiki synth.
Example:
/wiki-synth
/wiki-synth with a cost estimate
/wiki-synth force a re-run of every source
/wiki-synth sources only
/wiki-candidates
What: triage pending candidates — promote, flip-promote, merge, discard, or batch apply --actions.
Wraps: python3 -m llmwiki candidates list + follow-ups (apply --actions for batches). Same intents site/candidates.html lists, whose copyable batch feeds the same command.
When to use: Home Candidates / Analytics Candidates to review is non-zero, /wiki-lint reported stale_candidates, or you just ran llmwiki synth / synth --candidates-only.
Promote fills an empty ## Key Facts offline from source fact: bullets (and harvest stubs); Dummy / no backend is fine (#147). Prefer the CLI action for the common case. Opt-in llmwiki candidates rewrite-key-facts --slug <Name> (or --all) still needs an LLM for trusted pages with regex-era Key Facts or pasted harvest-stub ## Candidate merge blocks. Prefer flip-promote over hand-moving stubs between candidates/entities and candidates/concepts.
Example:
/wiki-candidates
Claude will walk the queue one at a time and offer actions per candidate.
/wiki-query <question>
What: answer a question from the wiki. Reads wiki/index.md +
wiki/overview.md + any cache_tier: L1 pages, then walks relevant
source / entity / concept pages and synthesises an answer with inline
[[wikilinks]] back to the originals.
Wraps: the Query Workflow in CLAUDE.md.
When to use: "have I solved this before?" / "when did I add X?" / "which sessions touched Y?".
Examples:
/wiki-query when did I add the lint rules?
/wiki-query which agent did I use for refactoring the cache-tier module?
/wiki-query summarize every session about Obsidian integration
Save prompt: if the answer runs 3+ paragraphs, Claude will offer to
save it under wiki/syntheses/<slug>.md.
/wiki-update <page>
What: surgically edit one wiki page without re-ingesting. Useful
for fixing broken wikilinks, updating stale frontmatter, adding a
missing ## Connections line.
When to use: lint flagged something, you know the fix, you don't want to re-run sync.
Example:
/wiki-update wiki/entities/RAG.md add a Connections section linking to Karpathy and llm-wiki
/wiki-lint
What: run every registered lint rule (16 at last count — all structural / deterministic). The live number is printed by llmwiki lint --help.
Wraps: python3 -m llmwiki lint.
Rules, in order:
frontmatter_completenessfrontmatter_validitylink_integrityorphan_detectioncontent_freshnessduplicate_detectionindex_synccontradiction_detection— non-filler## Contradictionssectionsclaim_verification— entity/concept claims without sourcessummary_accuracy— emptysummary:frontmatterstale_candidatestags_topics_convention(G-16 · #302)stale_reference_detection(G-17 · #303)frontmatter_count_consistencytools_consistencystub_source_pages
Example:
/wiki-lint
/wiki-lint just the link_integrity rule
/wiki-graph
What: build the knowledge graph. Nodes = wiki pages, edges =
[[wikilinks]]. Emits graph/graph.json + graph/graph.html.
Wraps: python3 -m llmwiki graph.
Example:
/wiki-graph
Then open site/graph.html (auto-copied from graph/graph.html during
build) in a browser.
/wiki-reflect
What: higher-order self-reflection pass over the whole wiki. Looks for gaps, patterns, duplicated-topic clusters, areas where a synthesis page would help.
No CLI wrapper — it's a model-orchestrated workflow that reads the index + overview + sample of pages and outputs suggestions.
Example:
/wiki-reflect
Use sparingly; it's the most token-heavy command.
/wiki-build
What: regenerate the static HTML site.
Wraps: python3 -m llmwiki build.
When to use: after manual edits to wiki/, or when you want to see
a fresh site without running the full sync pipeline.
Example:
/wiki-build
/wiki-build to ~/public_html
/wiki-build in tree search mode
/wiki-all
What: run the full pipeline end-to-end — sync → synth → build → graph → lint. Every stage runs unless you opt out of it. AI-consumable exports (llms.txt, sitemap.xml, etc.) are written by build, not a separate step.
Wraps: python3 -m llmwiki all.
When to use: after /wiki-sync, when you want a CI-ready site in one shot
instead of chaining /wiki-build + /wiki-graph + /wiki-lint yourself.
Example:
/wiki-all
/wiki-all --no-synth
/wiki-all --graph-engine builtin
/wiki-all --skip-graph --strict
Pass --strict to turn any lint warning into a non-zero exit, which is exactly what CI wants. Pass --skip-graph or --graph-engine builtin when the optional Graphify backend is not installed. Pass --no-sync or --no-synth to leave session conversion or synthesis out of the run — --no-synth is the one that keeps the run away from your AI provider.
How the slash commands get installed
llmwiki install-agent-kit --dest PATH copies the packaged
wiki-*.md command files into an agent directory — --dest .claude for the
project you are working in, or a user-level agent directory. Claude Code picks
them up from there with no further setup.
For Codex CLI / Cursor / Gemini CLI / other agents, point --dest at (or
copy the installed wiki-*.md files into) the corresponding skill directory
for that agent (typically .codex/skills/ or .agents/skills/) — the file
format is portable across agents.
Extending
To add a new slash command:
- Create
llmwiki/agent_kit/commands/wiki-<name>.mdwith a one-line docstring on line 1 (that's the summary Claude Code surfaces). - Describe the workflow in prose. Reference existing CLI commands rather than embedding shell in the body.
- Run
/wiki-lint— thedocs/reference/guardrail test (seetests/test_docs_structure.py) will pick up the new command. - Document it here — the CI guard requires every
llmwiki/agent_kit/commands/*.mdfile to have a matching###entry, and the count line above to match how many there are. A maintainer-only command goes in.claude/commands/and is described in../maintainers/README.mdinstead.
Related
- CLI reference — the underlying
python3 -m llmwiki …surface. - UI reference — every screen on the compiled site, with what's reachable from where.
- Tutorial 03 — Use with Claude Code — the minimum daily loop built on these commands.