Recommended workflow

How to query the corpus without drowning in context.

The site is intentionally redundant: the same corpus is exposed as Markdown, JSON, `llms.txt`, SQLite FTS, Pagefind search, and a small OpenAPI manifest. An agent should use the smallest surface that answers the task.

Default path

2. Query locally

Use SQLite FTS or `rg` to find the exact fragments you need, then open only those Markdown files.

Artifact selection

`llms.txt`

Best starting point for an external agent. Small, curated, and task-aware.

`animation-index.json`

Best for programmatic routing when you need module, lesson, section, and path metadata.

`openapi.json`

Best when the caller prefers API-shaped contracts and typed path discovery.

`animation-content.sqlite`

Best for precise keyword retrieval across section bodies without a hosted service.

`/md/` fragments

Best for the final context load once you know which lesson or section matters.

Pagefind

Best for manual browsing in the deployed site. It stays fully static after build.

Local commands

bun run search -- "transform origin" --limit 5
sqlite3 public/db/animation-content.sqlite \
'SELECT lesson_title, heading, url_path
 FROM sections_fts
 WHERE sections_fts MATCH ''prefers reduced motion''
 LIMIT 5;'
rg -n "ease-out|spring|scale\\(0\\)" public/md

Task paths

5 curated routes