refresh-demo-snapshot
Tooling to refresh demo snapshots, reseeding data and validating prose for consistent demonstration.
Install
mkdir -p .claude/skills/refresh-demo-snapshot && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17173" && unzip -o skill.zip -d .claude/skills/refresh-demo-snapshot && rm skill.zipInstalls to .claude/skills/refresh-demo-snapshot
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Regenerate the public demo-season snapshot fixture that the unauthenticated /demo route serves — reseed the fictional league, re-derive it through the real grading → awards → Wrapped → recap pipeline, and eyeball the frozen prose before committing. Use when Doug says "refresh the demo", "regenerate the demo snapshot", after shipping a marketing-worthy feature the demo season should show off, or when the CI drift-guard fails because a demo surface outgrew the fixture. It does NOT touch prod data (the snapshot is a build artifact, ADR-0026) and is separate from cut-release / start-issue.Key capabilities
- →Seed a fictional league into local Supabase
- →Start the application for export endpoint execution
- →Regenerate the demo-season snapshot fixture
- →Bake real LLM prose into Wrapped/recap using local credentials
- →Eyeball the demo surfaces for content and persona
- →Validate and commit the regenerated snapshot
How it works
The skill regenerates the public demo-season snapshot fixture by reseeding a fictional league, running the application to execute the export endpoint, and baking real LLM prose. It then requires manual review and validation before committing.
Inputs & outputs
When to use refresh-demo-snapshot
- →Refresh demo data snapshot
- →Validate demo prose quality
- →Update demo after feature changes
About this skill
Refresh the demo snapshot
Regenerate src/lib/server/demo/demo-snapshot.json — the committed fixture the public
/demo route group renders (#460, ADR-0026). The fixture is a generated build artifact:
the mechanical part is pnpm demo:snapshot; this skill wraps the judgment around it (curate
the season, pick a real LLM run, eyeball prose quality). No prod data is ever touched — the
demo is structurally isolated (there are no demo rows in production tables).
When to run it
- A new marketing-worthy feature shipped that the demo season should exercise (the coverage-drift half of ADR-0026 — the CI guard can't catch a feature the fixture simply doesn't happen to show).
- The CI drift-guard test (
src/lib/server/demo/__tests__/demo-snapshot.test.ts) failed because a demo-rendered component grew a data dependency the frozen fixture doesn't satisfy. - You want real LLM prose in the frozen Wrapped/recap rather than the deterministic fallback (the local run bakes fallback prose; see step 4).
Steps
-
Seed the fictional league into local Supabase (Docker Desktop must be running — if a
pnpm db:*command fails withECONNREFUSED 127.0.0.1:54322the stack is down, sosupabase startfirst):pnpm db:reset:demo # reset migrations + seed the demo league (deterministic) # or, on an already-seeded DB: pnpm db:seed:demo (idempotent, no migration reset)This builds the curated multi-season league the snapshot draws from. The featured completed season, persona (its champion), and frozen live week are all derived from this seed — so this is where you curate the narrative (rivalry, comeback, a signature All-In) if you want to sharpen it. The roast tone is the featured group's
spiceinsupabase/scripts/seed-demo/index.ts("Sunday Bets" is seededspicy— full villain-mode Commissioner is the marketing hook); change it there if the voice needs more/less edge. Keep seed edits additive;db:reset:demoalso backs local dev. -
Start the app so the export endpoint can run inside the SvelteKit runtime (it reuses the real read-model / Wrapped-generation layer, which can't be imported by a bare script):
pnpm dev --port 5173 # or point at a deploy — see step 4 -
Regenerate the fixture:
pnpm demo:snapshot # GETs /api/cron/demo-snapshot, writes demo-snapshot.jsonThe persona defaults to the featured season's champion; override the featured identity with
DEMO_SNAPSHOT_GROUP/DEMO_SNAPSHOT_PERSONA/DEMO_SNAPSHOT_SEASONenv vars if needed. -
Real LLM prose (do this for anything that ships). The voice layer only makes a real gateway call when
AI_GATEWAY_URL+AI_GATEWAY_TOKENare set (ADR-0008); without them it serves deterministic fallback copy and the script printsAI prose: fallback(the demo still presents it as finished copy — provenance lives inmeta.aiProse). The repeatable way to get genuine prose is to run locally with the creds in.env.local— no deploy needed:# .env.local (gitignored). URL is the public gateway host; token is the per-project secret # from the Vercel project env (dashboard → Settings → Environment Variables, or `vercel env pull`). AI_GATEWAY_URL=https://ai-gateway.vercel.sh AI_GATEWAY_TOKEN=<vercel-ai-gateway-key>With those set, the normal local loop (steps 2–3) bakes real
openai/gpt-5.4prose and the script printsAI prose: live. Verify with the probe if a run unexpectedly falls back: aPOST {AI_GATEWAY_URL}/v1/chat/completionswithAuthorization: Bearer <token>andmax_tokens >= 16should return HTTP 200.Don't point
DEMO_SNAPSHOT_BASE_URLat a stock Vercel deploy to borrow its creds: a normal deploy connects to prod, which has no demo rows (ADR-0026 isolation), so the endpoint can't find the demo league there. Local-creds is the supported path. (A deploy only works if its own DB carries the demo seed — not the case for prod or previews.) -
Eyeball the result. Load the four demo surfaces logged out and read them as a stranger:
# /demo (frozen live week) · /demo/leaderboard · /demo/wrapped · /demo/recapCheck the persona reads aspirationally, the recap/Wrapped voice lands, and every surface is populated. Confirm
meta.aiProseand the persona/season in the script output are what you intended. -
Validate + commit. Run the drift-guard + lint:
pnpm test:unit -- src/lib/server/demo/__tests__/demo-snapshot.test.ts pnpm lint && pnpm checkCommit the regenerated
demo-snapshot.json(a large but clean, pretty-printed diff).
Remember
- The snapshot is fully fictional and a build artifact — never derived from a real league, never written to production tables (ADR-0026).
- The CI drift-guard covers shape drift; this skill + the
AGENTS.mddelivery-workflow rule cover coverage drift (a shipped feature the demo doesn't exercise). - Keep the fixture's
meta.aiProsehonest:liveonly when a real gateway call produced the prose.
See also
docs/adr/0026-public-demo-season-snapshot.mdsupabase/scripts/demo-snapshot/index.tsandsrc/routes/(app)/api/cron/demo-snapshot/AGENTS.md§"Delivery workflow" (the refresh rule)
When not to use it
- →When touching production data
- →When pointing `DEMO_SNAPSHOT_BASE_URL` at a stock Vercel deploy to borrow its creds
- →When the goal is to cut a release or start an issue
Limitations
- →The skill does not touch production data.
- →The skill requires Docker Desktop to be running for local Supabase seeding.
- →The skill requires manual eyeballing of the demo surfaces for validation.
How it compares
This workflow automates the regeneration of a demo snapshot with curated data and real LLM prose, ensuring alignment with new features and prose quality, unlike a simple data refresh.
Compared to similar skills
refresh-demo-snapshot side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| refresh-demo-snapshot (this skill) | 0 | 1mo | Review | Intermediate |
| unity-editor-toolkit | 10 | 7mo | Review | Advanced |
| bullmq-specialist | 25 | 6mo | No flags | Intermediate |
| testing-workflow | 16 | 9mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
unity-editor-toolkit
Dev-GOM
Automate and control Unity Editor with 500+ commands, real-time WebSocket communication, and SQLite integration for efficient game development.
bullmq-specialist
davila7
BullMQ expert for Redis-backed job queues, background processing, and reliable async execution in Node.js/TypeScript applications. Use when: bullmq, bull queue, redis queue, background job, job queue.
testing-workflow
amo-tech-ai
Comprehensive testing workflow for E2E, integration, and unit tests. Use when testing applications layer-by-layer, validating user journeys, or running test suites.
web3-testing
wshobson
Test smart contracts comprehensively using Hardhat and Foundry with unit tests, integration tests, and mainnet forking. Use when testing Solidity contracts, setting up blockchain test suites, or validating DeFi protocols.
sqlite-inspector
mikopbx
Проверка консистентности данных в SQLite баз данных MikoPBX после операций REST API. Использовать при валидации результатов API, отладке проблем с данными, проверке связей внешних ключей или инспектировании CDR записей для тестирования.
generating-database-seed-data
jeremylongshore
Process this skill enables AI assistant to generate realistic test data and database seed scripts for development and testing environments. it uses faker libraries to create realistic data, maintains relational integrity, and allows configurable data volumes. u... Use when working with databases or data models. Trigger with phrases like 'database', 'query', or 'schema'.