Demo Media¶
The README reserves one short demo GIF slot immediately after the badges block.
The source of truth for the terminal sequence is docs/assets/demo.cast, a
deterministic asciinema v2 cast rendered with scripts/generate_synthetic_demo.py.
Synthetic Cast¶
Generate or refresh the deterministic cast with:
pnpm run assets:demo
The generator writes docs/assets/demo.cast with fixed timestamps and redacted,
realistic JSON output. It does not include real hostnames, local paths, tokens,
or project-specific secrets. The sequence is approximately 30 seconds long:
kicad-mcp-pro health --json- redacted health JSON
kicad-mcp-pro doctor --json- redacted doctor JSON
kicad-mcp-pro serve- startup banner and cursor fade
If agg is available on PATH, pnpm run assets:demo also converts the cast to
docs/assets/demo.gif with:
agg --speed 1.2 --theme monokai --font-size 18 docs/assets/demo.cast docs/assets/demo.gif
If agg is not available, the command writes a deterministic fallback
docs/assets/demo.gif with Pillow so README rendering and link checks still
pass. The fallback is intentionally simple and should be replaced by the agg
terminal render before final marketplace submission when the tool is available.
Re-recording Flow¶
For a fresh terminal capture, install both asciinema and agg, then run:
bash scripts/record_demo.sh
The script records docs/assets/demo.cast with an idle limit of 2 seconds and
converts it to docs/assets/demo.gif using the Monokai theme. If the resulting
GIF exceeds 2 MB, the script retries the conversion with a smaller font size and
prints a warning. Keep the final GIF small enough for GitHub README rendering.
Replacement Rules¶
- Preserve the filenames
docs/assets/demo.castanddocs/assets/demo.gif. - Keep the demo under 45 seconds.
- Do not include real local paths, hostnames, bearer tokens, API keys, or auth cookies.
- Keep the first visible command focused on
health --json. - Keep the final visible state on
serveso reviewers see the stdio MCP server startup posture.