product-demo-seeding
GitHub为产品演示视频和截图生成可复现、隔离的虚假数据场景,确保UI状态真实且与当前主分支一致,严格隔离开发环境。
Trigger Scenarios
Install
npx skills add kdlbs/kandev --skill product-demo-seeding -g -y
SKILL.md
Frontmatter
{
"name": "product-demo-seeding",
"description": "Seed coherent, disposable Kandev demo scenarios for screenshots, product films, landing-page media, and reproducible UI captures. Use when media needs believable tasks, workflows, agents, executors, integrations, plans, sessions, diffs, reviews, or native-mobile states; invoke before product-video-capture and never use a developer's main instance or data."
}
Product Demo Seeding
Build a truthful product state before recording pixels. Treat narrative, data, and UI route as one artifact.
Current-Main Source Gate
Product capture represents current Kandev, so old checkouts and old builds are invalid even when their scripts still run.
- Fetch
origin/mainimmediately before capture setup. - Create a clean detached capture worktree from
origin/main; do not reuse the task worktree or a landing branch. - Record both SHAs and prove
HEADequalsorigin/main. Require an emptygit status --porcelainbefore building and before capture. - Install dependencies and build frontend/backend from that worktree. Verify it contains
scripts/dev-isolatedandapps/web/e2e/. - Stage specs, raw masters, configs, proofs, logs, and delivery candidates under a fresh artifact root outside production assets.
Reject stale UI, selector, script, or capture choreography until current source is built and the complete route passes rehearsal. Never substitute an old server, cached bundle, or last month's working selectors for this gate.
Workflow
- Read
/e2eand the relevant existing specs/page objects underapps/web/e2e/. - Write a one-sentence story: user goal, visible action, visible result.
- Identify separate desktop and native-mobile routes. Mobile must use native mobile surfaces, not a desktop crop.
- Explore manually with
scripts/dev-isolated --webwhen needed. For reproducible capture, use the worker-scoped E2E fixture andApiClient. - Create a fresh fictional repository, workspace, workflow, tasks, sessions, and provider state through supported E2E/API methods.
- Seed only enough state to make the story legible. Dense believable data beats empty fixtures; excessive data hides the action.
- Open the intended UI and verify every visible label, control, and transition before recording.
- Rehearse without a recorder, discard rehearsal mutations, then reseed an identical pristine baseline for each take.
- Hand the scenario, routes, selectors, semantic target bounds, complete intentional pointer journeys, provenance, and cleanup command to
/product-video-capture.
Safety Contract
- Allocate a fresh temp
HOME,KANDEV_HOME_DIR, database, repository/worktree root, unique ports, unique display, unique browser profile, and artifact root. Names and ownership must identify one take. - Use deterministic mock GitHub and Jira providers plus a controlled agent. Use fixed IDs and timestamps, authors, titles, bodies, states, checks, and ordering.
- No credentials or network access to real provider services is permitted. Unset provider tokens and fail closed if mock routing cannot be proven in backend logs.
- Never copy the developer's database for marketing capture.
scripts/dev-isolated --copy-dbis outside this workflow. - Never query, mutate, stop, or reuse the developer's instance, DB, or data.
- Keep temporary capture specs or harness code under
CAPTURE_ROOT, outside the source worktree. If the runner requires an in-worktree file, write only its exact path to a take-owned excludes file underCAPTURE_ROOTand pass it through command-localcore.excludesFileconfiguration inherited by the capture process. Prove the clean-worktree status gate still returns an emptygit status --porcelain, stage a source copy, then remove the file and exclusion during teardown. Never mutate the shared.git/info/exclude; linked worktrees and sibling agents may depend on it. - Stop if isolation cannot be proven from process args, ports, paths, and logs.
Read isolation-and-seeding.md before starting an instance.
Truthfulness Contract
- Seed real records and drive real controls. Do not fabricate menu items, executor families, integrations, checks, or agent support in the DOM.
- Prefer coherent API-seeded labels over capture-time text replacement. If fixture sanitation is unavoidable, document exact substitutions; never add controls, hide product bugs, or change behavior.
- Use current product capabilities. Inspect selectors and API helpers again instead of copying an old capture spec blindly.
- If a responsive surface is broken, report the product bug and choose another truthful native route only when it demonstrates the same capability.
- Keep local paths, test directives, generic mock responses, fixture names, and host identity out of visible frames.
- Give capture-only mock executors a logical command label such as
mock-agent; never expose the temporary executable's absolute host path in a visible command, profile, or session label.
Per-Take State Contract
Rehearsal changes product state: integration flows create tasks. A successful rehearsal therefore cannot share recording state.
- Start from a fresh database for every recorded take. An equivalent reset is acceptable only when it deletes all scenario records and reseeds one canonical baseline with a verified seed hash.
- Use a rehearsal reset or discard its entire temp root before RECORD. Restart backend/browser ownership as needed so cached client state cannot survive.
- Before each take, assert exact workspace/workflow/task/provider counts, unique IDs, unique visible task titles, and expected ordering. Reject duplicate or accumulated tasks, fixtures, sessions, or provider-created records.
- Give desktop GitHub, mobile GitHub, desktop Jira, and mobile Jira independent state ownership. One failed or repeated take must not contaminate another.
- Never clean visible state with DOM deletion, CSS hiding, or capture-time text replacement. Fix the seed or start fresh.
Story Selection
Use story-recipes.md for Plan, Coordinate, Prepare, Run, Review, integrations, editor/terminal, and mobile recipes. Recipes are patterns, not frozen scripts.
Acceptance Gate
Before capture, verify:
- Story has a clear initial state, action, and result. Treat 7-11 seconds as a target, never a reason to omit an honest route step, rush readability, or shorten the settled loop.
- Desktop and mobile each have a native script and safe composition.
- Visible data forms one fictional project narrative.
- No production endpoint, credential, local path, fixture copy, or unsupported control is visible.
- Current build and all story-critical routes passed a recorder-free rehearsal; rehearsal state was reset or discarded.
- Exact baseline record counts prove no duplicate fixture accumulation before RECORD.
- Seed teardown removes temporary profiles, specs, processes, ports, database, and repository.
Report seed name, story, source SHA, seed hash, fixed provider fixture version, separate desktop/native-mobile routes, process args, ports, display, browser profile, database/temp/artifact roots, mock-routing proof, any sanitation, and teardown result. This provenance must map every delivered take to its isolated baseline and current-main source.
Version History
- b4239d8 Current 2026-07-24 17:32


