← Docs hub

Refresh the demo vault

scripts/refresh_demo.py is the one command that takes changed product documentation, summarises it into the example vault, and rebuilds the demo site.

It is a local maintainer tool. It never runs in CI, is not a CLI subcommand, and is not part of a packaged install.

What it does

  1. Reads the last-refreshed git revision from demo/.demo-source-rev.
  2. Asks git which files under docs/ changed since that revision (git diff --name-status) and which still have uncommitted working-tree edits (git status --porcelain), so a maintainer can preview before committing.
  3. Builds a plan: added pages are added, deleted pages are removed, modified or renamed pages are removed and then re-added (llmwiki cannot update an already-ingested document in place).
  4. Drives the existing CLI against demo/: add / remove, then synth --docs-only scoped with --path to each raw doc this plan just added (not every pending document in the vault), then build --out demo/site, and lint. After synth it checks that every plan-added raw doc has a matching wiki/sources/ page and refuses to write .demo-source-rev when coverage is incomplete (lint alone is not enough). Remove-only plans skip synth and do not require a reachable backend.
  5. Writes HEAD into demo/.demo-source-rev only after that coverage check passes.
  6. Prints the full lint report. Warnings do not fail the run; they are the maintainer's sight of warning-severity defects under the errors-only CI gate.

Maintainer docs under docs/maintainers/ are not part of the product corpus and never enter the plan.

Prerequisites

Usage

From the repository root:

python3 scripts/refresh_demo.py --dry-run
python3 scripts/refresh_demo.py
python3 scripts/refresh_demo.py --force
python3 scripts/refresh_demo.py --base HEAD~5
python3 scripts/refresh_demo.py --verify-slugs reference-cli,upgrading
Flag Effect
--dry-run Print the plan and write nothing. Does not need a synthesis backend.
--force Treat every product doc under docs/ as changed (remove-then-add each). Use this for a first refresh when demo/.demo-source-rev does not exist yet.
--base <rev> Diff against this revision instead of the SHA in demo/.demo-source-rev.
--verify-slugs <a,b> Local coverage gate only: exit 1 if any listed raw/docs/<slug>/ file lacks a matching wiki/sources/ page. Used by the /release skill after a manual path-scoped synth; does not run a refresh.

The command reports the plan before it does any work. --dry-run is the preview that changes nothing.

What this does not do

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date