First real splash — four-act narrative, Pagefind, and live deploy
Context Vigilance gets its public face: a dark-default engineer's-clipboard splash that walks readers through Hook → Practice → Proof → Invitation, opens with a Google-style 'what context do you need?' prompt over the 587-doc corpus, and ships to GitHub Pages on every push.
Why Care?
The kit had a splash before tonight, but it was a v0 — a hero plus a flat catalog dump. No story, no search, no shareable cards, no public face. The narrative brief in ai-labs/context-v/plans/Context-Vigilance-Splash-Page-Narrative.md had been waiting for someone to sit with it.
Tonight it got built. The splash now opens with the central claim — treat context with the same vigilance as code, and the context becomes the parent to the code — followed by a Google/OpenAI-homepage-sized search prompt asking "what context do you need?" over the live corpus of 587 docs. Below it, three acts: a 6-cell matrix of the codified practice (specs / prompts / blueprints / reminders / explorations / issues, color-coded by cognitive mode) plus an honest long-tail row of the surfaces we haven't fit into the matrix yet; a teaser of the most-recently-modified corpus entries; and a three-CTA closer mapped to the three audiences we keep optimizing for (developers, peer practitioners, and the curious public).
The splash also goes live tonight: pushing this commit deploys it via the new .github/workflows/pages.yml to https://lossless-group.github.io/context-vigilance-kit/.
What's New?
Four-act homepage narrative at
/— Hook (asymmetric hero with the strikethrough-on-"code" headline + prominent search prompt + live stats card), Practice (the 6-cell matrix + long-tail counts), Proof (catalog teaser), Invitation (three audience-mapped CTAs). Each act gets its own.foliosection number (§ 01–§ 04).Engineer's-clipboard visual identity — dark default, JetBrains Mono as the display face (not just the chip face), Inter as body, amber + sodium-orange + lime brand spine, hairline borders, slowly drifting dot-grid background, blinking caret on the hero search and 404. Deliberately distinct from sibling Lossless splashes (lfm = bookish-serif, memopop = cyan-radial, content-farm = same family). Codified end-to-end in
splash/DESIGN.md.Pagefind search — keyword index built at deploy time, three SearchBox variants (compact for the header, full for
/search/, and a cvk-specific hero variant for the homepage prompt). Hidden filter spans on every corpus detail page emitkind:,tag:, and a cvk-specificfrom:<repo>facet so readers can filter to "everything from<repo>" — natural axis when the corpus pulls from 28 repos./corpus/route with the full 587-doc catalog, grouped bysource_repo_slug, alpha-sorted (deliberately not "best-first" per the brief — the disorder is part of the proof). SortControls supports Modified / Created / Title / Repo with per-page persisted preferences inlocalStorage./corpus/<slug>/detail pages withdata-pagefind-bodymarkers,data-pagefind-ignoreon chrome, derivedkindlabels (specs / prompts / blueprints / reminders / explorations / issues / habits / workflow / plans / journals / etc. +Otherbucket), and afrom-tagribbon showing the source repo./search/page — full Pagefind panel withautoFocus, kind/tag/from filters.Funny 404 — a blinking amber caret followed by "the agent guessed." The rest of the splash is not funny; the 404 is allowed to be.
Live numbers from
corpus-manifest.md— a tiny YAML-subset frontmatter parser insplash/src/lib/manifest.tsreads the manifest at build time and feeds the homepage stats (587 docs, 28 projects, 110 worked-on, 263 idea-started, 210 stubs). When the manifest is regenerated, the splash numbers update on the next build.Open Graph cards via Ideogram — four imagekit-hosted variants (banner 1200×630, portrait 1024×1536, square 1024×1024, preferred 1024×1280) saved as a named
OG_IMAGESmap insplash/src/lib/seo.ts. The 1024×1536 portrait variant is the default, since it renders most prominently in iMessage and WhatsApp share-card previews. Pages can override per-route. The Ideogram creative brief — Style notes / Body / Brand alignment / Negative prompt — lives at the bottom ofDESIGN.md.GitHub Pages workflow at
.github/workflows/pages.yml—actions/deploy-pages@v4withenablement: trueso the workflow bootstraps Pages on first run. Triggers onmaster,main, anddevelopmentplusworkflow_dispatch.Custom domain pending —
astro.config.mjsis onlossless-group.github.io/context-vigilance-kit/until DNS forcontextvigilance.comlands. Switching is a two-line change (site→ the domain,base→'/').
How the splash stays consistent
Everything lives in splash/ at the repo root. pnpm install --ignore-workspace && pnpm build from there produces splash/dist/, which the workflow uploads as a Pages artifact. No backend, no database, no runtime — the corpus is read at build time as plain file IO from ../corpus/, the manifest is parsed at build time, and Pagefind walks the rendered HTML. Search runs entirely client-side from the static index.
The corpus is committed to git (8.8 MB across 587 markdown files) — necessary because the source repos that the collator pulls from aren't available in the CI checkout. When the user re-runs the collator locally, the diff in corpus/ gets committed alongside whatever changed.
What this splash deliberately is not
A marketing site for a SaaS product. The CTAs are intentionally low-commitment: Browse the corpus, Read the spec, Fork the kit, Get in touch. The audience we expect — engineers who have been burned by coding agents that "almost" worked — bounces fast on Sign-Up walls and lingers on receipts. The receipts are the corpus.
A literary site. lfm/splash gets the manuscript-flavored aesthetic; this one is its operator-toned counterpart. Same architectural shape (Astro, two-tier tokens, three-mode contract, Pagefind, lenient schemas, sort controls, from-tag provenance), different voice.
Open follow-ups
First deploy — push to a triggering branch and verify the Pages source is set to "GitHub Actions" in repo settings. The workflow uses
enablement: trueso it'll bootstrap, but the source toggle is one-time-manual.Custom domain —
contextvigilance.com(primary, no hyphen);context-vigilance.comregistered defensively to 301 to primary. When DNS lands: updateastro.config.mjs, redeploy.OG card iteration — first Ideogram run produced a Fallout-style bot scene that's on-message but filled the canvas edge-to-edge, leaving no clean zone for a future SVG title overlay. The
DESIGN.mdIdeogram brief has been tightened twice; the next round needs the empty-half rule respected.Semantic search via local Chroma — aspirational v1+ per the narrative brief. The Chroma setup work has been started (
scripts/,requirements.txt); the splash will gain a second SearchBox variant when it's ready.More OG variants — banner/square/portrait/preferred are wired but pages don't yet differentiate (all default to the portrait variant). Per-corpus-entry cards generated at content-publish time would be a nice escalation.
See also
The narrative brief:
ai-labs/context-v/plans/Context-Vigilance-Splash-Page-Narrative.mdThe skill:
lossless-monorepo/context-v/skills/maintain-splash-pages/SKILL.mdThe reference splash:
lfm/splash/(sibling, bookish-serif counterpart)The design system:
splash/DESIGN.md
