{"_id":"@dekai/demokit","_rev":"9-4e7b09a8da4c603c5d13c4f50c7f70cd","name":"@dekai/demokit","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@dekai/demokit","version":"0.1.0","keywords":["demo","video","screen-recording","playwright","ffmpeg","cap","agent","claude-code","skill"],"license":"MIT","_id":"@dekai/demokit@0.1.0","maintainers":[{"name":"dekai","email":"lidekai2008@gmail.com"}],"homepage":"https://github.com/improdead/demokit#readme","bugs":{"url":"https://github.com/improdead/demokit/issues"},"os":["darwin","linux"],"bin":{"demokit":"bin/demokit"},"dist":{"shasum":"f1ef162d7c8bb6e2900f6640a7f14a4435a6c99b","tarball":"https://registry.npmjs.org/@dekai/demokit/-/demokit-0.1.0.tgz","fileCount":30,"integrity":"sha512-A72ReUxhTnaSwX9ea7IviBrbSke7htKEzaZqDUK3j5kTn+nGS5p4CM8Oc0N6kmtQYwvs8fKXrzV7BFcfYx7wcA==","signatures":[{"sig":"MEYCIQDXjP70qo8Simviya2RFjxamgcd8OKumv1aAju2e0YcdwIhAPJdb/oBFqZaIbXMpdmC48ZdapmXs0hhmz5MdMPzMZ5f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":440493},"engines":{"node":">=18"},"gitHead":"bb8f8bec8901c1fc67c3797e7eb3b9661f09f1ec","scripts":{"postinstall":"node -e \"console.log('demokit: installed. First run downloads a headless Chromium (~100MB). Rendering needs python3 with Pillow and numpy: pip3 install pillow numpy')\""},"_npmUser":{"name":"dekai","email":"lidekai2008@gmail.com"},"deprecated":"Published declaring MIT in error: the renderer derives from Cap (AGPLv3). The project is AGPL-3.0-or-later from 0.4.0. See https://github.com/improdead/demokit/blob/main/NOTICE","repository":{"url":"git+https://github.com/improdead/demokit.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent-native demo videos: plan from the codebase, record a deterministic flow in headless Chromium, render it the way Cap does (spring zoom on clicks, real cursor shapes, wallpaper, squircle, shadow), fast-forward dead air, and verify the feature actually","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ffmpeg-static":"^5.3.0","ffprobe-static":"^3.1.0","playwright-core":"^1.62.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/demokit_0.1.0_1788315854261_0.7436170260536232","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dekai/demokit","version":"0.2.0","keywords":["demo","video","screen-recording","playwright","ffmpeg","cap","agent","claude-code","skill"],"license":"MIT","_id":"@dekai/demokit@0.2.0","maintainers":[{"name":"dekai","email":"lidekai2008@gmail.com"}],"homepage":"https://github.com/improdead/demokit#readme","bugs":{"url":"https://github.com/improdead/demokit/issues"},"os":["darwin","linux"],"bin":{"demokit":"bin/demokit"},"dist":{"shasum":"11cbf41c023c1398282a5c43813bfc7a1c4b9153","tarball":"https://registry.npmjs.org/@dekai/demokit/-/demokit-0.2.0.tgz","fileCount":30,"integrity":"sha512-KFMZ3wP/cjJJqZc3DMZscf/MReabhO2PWTT5cC31Ws3kJxUPSV6/mc/GIT6i5KspfLbFJRh0CBCeq2I/HxV+Jw==","signatures":[{"sig":"MEUCICi9EUT3Bgeg3PFdIwZq1Ose+VTBp26fSScFHtXu6/SQAiEAs0UBrY0uPc30BbbLx1gzVbLaEk2rzcyx+/swcaxH1Ls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD1kIs25gGjlMpsywzMbYMzUPOx1NBzwP7FefM+lwTCNgIgZNxWq5KptABX61PfLSP3cxlbxwn8ck+oV2gcjIGTErg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443648},"engines":{"node":">=18"},"gitHead":"eabed710f0ab990f22de0b8a8b5bc55cf807fad1","scripts":{"postinstall":"node -e \"console.log('demokit ready. Run: demokit local <flow.json> <out.mp4>')\""},"_npmUser":{"name":"dekai","email":"lidekai2008@gmail.com"},"deprecated":"Published declaring MIT in error: the renderer derives from Cap (AGPLv3). The project is AGPL-3.0-or-later from 0.4.0. See https://github.com/improdead/demokit/blob/main/NOTICE","repository":{"url":"git+https://github.com/improdead/demokit.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent-native demo videos in one command: plan from the codebase, record a deterministic flow in headless Chromium, render it the way Cap does (spring zoom on clicks, real cursor shapes, wallpaper, squircle, shadow), fast-forward dead air, and verify the f","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ffmpeg-static":"^5.3.0","ffprobe-static":"^3.1.0","playwright-core":"^1.62.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/demokit_0.2.0_1788416013199_0.9233975159871997","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@dekai/demokit","version":"0.2.1","keywords":["demo","video","screen-recording","playwright","ffmpeg","cap","agent","claude-code","skill"],"license":"MIT","_id":"@dekai/demokit@0.2.1","maintainers":[{"name":"dekai","email":"lidekai2008@gmail.com"}],"homepage":"https://github.com/improdead/demokit#readme","bugs":{"url":"https://github.com/improdead/demokit/issues"},"os":["darwin","linux"],"bin":{"demokit":"bin/demokit"},"dist":{"shasum":"fe8f8e94c4121537c99ec52b6eaf19af55ca3885","tarball":"https://registry.npmjs.org/@dekai/demokit/-/demokit-0.2.1.tgz","fileCount":30,"integrity":"sha512-JUGRC1ecFGZR24HB7E2P5dVe9e1q/UVo2lq4u3llnEtDCX5b65I0jJQtlASLJHOo5Tjo5Ii5VeeodxnSXW+RoQ==","signatures":[{"sig":"MEUCIQDWTWIGCQI0+t/DavMknxOWZGGhhmh5/78IFpvBcnPWAAIgNFK8ShmaJ0E8AG+HETlZ1GEyl8KPL7uK37cuWo9i5N8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH0yjUiDgDpL5UsvKEh6+Tq/CfqKFQkFwD4+Mhbkp7yBAiEAoVGCeveVmeWp/cV+ABcOAyaMxrZGJV+yU+NCxp3XsDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443648},"engines":{"node":">=18"},"gitHead":"80e577c734dd00544f9f22d9def4210496a670ca","scripts":{"postinstall":"node -e \"console.log('demokit ready. Run: demokit local <flow.json> <out.mp4>')\""},"_npmUser":{"name":"dekai","email":"lidekai2008@gmail.com"},"deprecated":"Published declaring MIT in error: the renderer derives from Cap (AGPLv3). The project is AGPL-3.0-or-later from 0.4.0. See https://github.com/improdead/demokit/blob/main/NOTICE","repository":{"url":"git+https://github.com/improdead/demokit.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent-native demo videos in one command: plan from the codebase, record a deterministic flow in headless Chromium, render it the way Cap does (spring zoom on clicks, real cursor shapes, wallpaper, squircle, shadow), fast-forward dead air, and verify the f","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ffmpeg-static":"^5.3.0","ffprobe-static":"^3.1.0","playwright-core":"^1.62.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/demokit_0.2.1_1788416290124_0.36194504656483284","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dekai/demokit","version":"0.3.0","keywords":["demo","video","screen-recording","playwright","ffmpeg","cap","agent","claude-code","skill"],"license":"MIT","_id":"@dekai/demokit@0.3.0","maintainers":[{"name":"dekai","email":"lidekai2008@gmail.com"}],"homepage":"https://github.com/improdead/demokit#readme","bugs":{"url":"https://github.com/improdead/demokit/issues"},"os":["darwin","linux"],"bin":{"demokit":"bin/demokit"},"dist":{"shasum":"689221fe93f8a54127ea49bb3fc8c89f01f08435","tarball":"https://registry.npmjs.org/@dekai/demokit/-/demokit-0.3.0.tgz","fileCount":31,"integrity":"sha512-q6ggF1KygKCzUeuxGL0rTEk2asPTE98JaGvGMzs1RqTOFQlQLPmU2pIZph+mZaJY0g4CunYL0CYTZ/wZgdQnFA==","signatures":[{"sig":"MEQCIADCpZIE0kDxxg/ovXINy8uMyWg5fbWlfr+eaZ9bc3P/AiBF70p86EgzhtE8zwjYYXLiDcfjrmkqrhUp/Aoh7aVJRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCZ0zBprfpgedqQ9QE8lJZpF6Ol1mI/kv7V+Fe1/ohvWQIgKrCr/gxwUa3qF/Va5qKTKcRAnb036Vl4fC06i1nvOo0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":455912},"engines":{"node":">=18"},"gitHead":"a688c753959a146637cd514692d06e26f295c6a6","scripts":{"postinstall":"node -e \"console.log('demokit ready. Run: demokit local <flow.json> <out.mp4>')\""},"_npmUser":{"name":"dekai","email":"lidekai2008@gmail.com"},"deprecated":"Published declaring MIT in error: the renderer derives from Cap (AGPLv3). The project is AGPL-3.0-or-later from 0.4.0. See https://github.com/improdead/demokit/blob/main/NOTICE","repository":{"url":"git+https://github.com/improdead/demokit.git","type":"git"},"_npmVersion":"11.16.0","description":"Agent-native demo videos in one command: plan from the codebase, record a deterministic flow in headless Chromium, render it the way Cap does (spring zoom on clicks, real cursor shapes, wallpaper, squircle, shadow), fast-forward dead air, and verify the f","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ffmpeg-static":"^5.3.0","ffprobe-static":"^3.1.0","playwright-core":"^1.62.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/demokit_0.3.0_1788418179777_0.4519069095040491","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"os":["darwin","linux"],"_id":"@dekai/demokit@0.4.0","bin":{"demokit":"bin/demokit"},"bugs":{"url":"https://github.com/improdead/demokit/issues"},"dist":{"shasum":"e8bd844106366664afb6286c49b707dda5f2ba4e","tarball":"https://registry.npmjs.org/@dekai/demokit/-/demokit-0.4.0.tgz","fileCount":47,"integrity":"sha512-rwX1VnicxqBJeQ6FUTHZxGFZ6dqasuSDKWQnQ07qkbTe3tmGE2BSEzv0XHEpfcUEdUGvi9TVuV9oTh4Iim8Otw==","signatures":[{"sig":"MEUCIH7pzu2YUc+0Axfo4gP0UIQJa8eczZ7u8TchdCd7ryNGAiEA/WbAEeUY6gKif83EpcZVjXTaA3puoCKUtBDhmX2WXX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICameRPMlJkDP6LIgKHfjX+D7VGNkvhLIjWNT70up6IPAiBSpqLqP/3KiSGULwT3VZiJugv+xpIZSqp0qNmrZzrIEg=="}],"unpackedSize":468520},"name":"@dekai/demokit","engines":{"node":">=20"},"gitHead":"f45c702aa6dce99365850b9b337be13eb467ea43","license":"AGPL-3.0-or-later","scripts":{"test":"node --test tests/*.test.mjs","test:smoke":"node tests/smoke.mjs"},"version":"0.4.0","_npmUser":{"name":"dekai","email":"lidekai2008@gmail.com"},"homepage":"https://github.com/improdead/demokit#readme","keywords":["demo","video","screen-recording","playwright","ffmpeg","cap","agent","claude-code","skill"],"repository":{"url":"git+https://github.com/improdead/demokit.git","type":"git"},"_npmVersion":"11.16.0","description":"Record repeatable local product demos with cursor effects, zoom, pacing, and feature-verification evidence. CLI plus agent skill.","directories":{},"maintainers":[{"name":"dekai","email":"lidekai2008@gmail.com"}],"_nodeVersion":"24.18.0","dependencies":{"ffmpeg-static":"^5.3.0","ffprobe-static":"^3.1.0","playwright-core":"^1.62.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/demokit_0.4.0_1788659351066_0.8640150796674699"}}},"time":{"created":"2026-09-02T02:24:14.139Z","modified":"2026-09-06T01:49:11.425Z","0.1.0":"2026-09-02T02:24:14.404Z","0.2.0":"2026-09-03T06:13:33.315Z","0.2.1":"2026-09-03T06:18:10.230Z","0.3.0":"2026-09-03T06:49:39.870Z","0.4.0":"2026-09-06T01:49:11.158Z"},"bugs":{"url":"https://github.com/improdead/demokit/issues"},"license":"AGPL-3.0-or-later","homepage":"https://github.com/improdead/demokit#readme","keywords":["demo","video","screen-recording","playwright","ffmpeg","cap","agent","claude-code","skill"],"repository":{"url":"git+https://github.com/improdead/demokit.git","type":"git"},"description":"Record repeatable local product demos with cursor effects, zoom, pacing, and feature-verification evidence. CLI plus agent skill.","maintainers":[{"name":"dekai","email":"lidekai2008@gmail.com"}],"readme":"# DemoKit\n\nScript a product workflow, record it locally, and export an edited MP4 with cursor\nmotion, zoom, pacing, and evidence that the demonstrated feature worked.\n\n**Release status:** this branch prepares installation and documentation fixes for\n0.3.1. npm currently serves 0.3.0; the new `init`, `skill`, and help commands below\nare not yet published. A renderer licensing/provenance issue must be resolved before\nthe next release. See [the audit](docs/AUDIT-2026-09-04.md).\n\nDemoKit is a **CLI and an agent skill**, not an MCP server. The default browser path\nuses local headless Chromium. Existing Chrome sessions can use optional Playwriter.\nThere is no hosted upload requirement, account, narration, or caption generation.\n\n## Install and try it\n\nRequires **Node 20+**, **Python 3 with venv**, and **macOS or Linux**. Windows is not\nsupported. Linux may require system browser libraries; see troubleshooting below.\n\nFor the current published version:\n\n```bash\nnpm install -g @dekai/demokit@0.3.0\n# Supply your own existing flow; see the linked flow reference.\ndemokit local flow.json out/demo.mp4\n```\n\nTo test the improvements in this branch:\n\n```bash\ngit clone --branch codex/demokit-install-audit https://github.com/improdead/demokit.git\ncd demokit\nnpm ci\n./bin/demokit --help\n./bin/demokit init\n./bin/demokit local demokit-example/flow.json out/demo.mp4\n```\n\n`init` creates a self-contained task-board example; no server, account, fixture\ndownload, or API is needed. Clicking its button actually updates the example UI.\nThe first recording may download Chromium and install Pillow/numpy into a cached\nPython environment. Network access and disk space are needed for those downloads.\nFFmpeg/ffprobe are used from the system or installed npm dependencies.\n\nThe release-candidate package also supports global installation or\n`npx @dekai/demokit@<released-version>` after publication. Do not assume `npx` of\n0.3.0 has the commands introduced here.\n\n## Install the agent skill\n\nWith this branch's CLI, copy the bundled skill and its references to your agent:\n\n```bash\n# Codex; use your configured CODEX_HOME instead if customized\n./bin/demokit skill install ~/.codex/skills/demo-video\n# Claude Code\n./bin/demokit skill install ~/.claude/skills/demo-video\n# Cursor\n./bin/demokit skill install ~/.cursor/skills/demo-video\n```\n\nUse `demokit` without `./bin/` after global installation. Existing destination\nfolders are never overwritten. Move the old installation explicitly before an\nupdate. `demokit skill path` prints the bundled directory for other integrations.\nThe skill is not automatically installed by npm and no MCP configuration is needed.\nThen ask your agent to record a specific workflow and inspect the resulting video.\n\n## Record your app\n\n```bash\ndemokit probe http://localhost:3000\ndemokit local flows/signup.json out/signup.mp4\n# On this branch, omitting `local` is equivalent:\ndemokit flows/signup.json out/signup.mp4\n```\n\nA probe loads the URL and reports selectors, text and request metadata without\nclicking. It does not guarantee that a page load is side-effect-free or that an\nempty/auth heuristic is correct. Check the real UI before writing a flow.\n\n[Flow reference](skill/references/flows.md) ·\n[Capture modes and authentication](skill/references/capture.md) ·\n[Verification and editing](skill/references/verification.md)\n\nPrimary flow, shot, and output paths resolve from your working directory, including\nspaces. Supply absolute paths for optional renderer config/assets and critic patches. Fixture\npaths inside a flow resolve from the flow file. Work files go to `./.demokit/` or\n`DEMOKIT_WORK`; an internal ignore file protects new captures from accidental Git\nadds. Add your exported-video directory to `.gitignore` too. Captures contain raw\nframes and page text; don't publish them implicitly. A repeated flow name replaces\nits take, and simultaneous jobs need separate work directories.\n\n## Sign in once\n\n```bash\ndemokit login https://app.example.com\ndemokit local flows/app.json out/app.mp4\n```\n\nSign in in the browser window. DemoKit saves a Playwright storage state under\n`~/.cache/demokit/auth/<host>.json`, outside your project, with mode 0600. Subsequent\nlocal captures reuse it until the app expires the session. Set `DEMOKIT_CACHE` to\nchange the cache location, or `DEMOKIT_AUTH` to choose a storage-state file.\n`DEMOKIT_COOKIES` and `login --from-cookies <file>` support existing cookie exports;\nthese files are credentials and must remain private.\n\nTo inspect or record through **your existing Chrome**, install Playwriter and its\nextension separately, create a session in the intended work directory, then use\n`demokit --session <id> probe <url>` or `demokit --session <id> flow.json out.mp4`.\nSee [Playwriter](https://playwriter.dev). This legacy path has less complete\nsemantic verification than `local`; inspect the browser and exported frames. Its\nautomatic result can be inconclusive (nonzero exit). Use `--no-verify` only for an\nexplicit exploratory render, and report that manual verification is still needed.\n\n## Verify and re-render\n\n```bash\ndemokit raw .demokit/shot-signup\ndemokit verify .demokit/shot-signup out/signup.mp4\ndemokit critic .demokit/shot-signup out/signup.mp4\ndemokit --render-only .demokit/shot-signup out/signup.mp4 --tailhold 3\n```\n\nVerification combines DOM assertions, source pixels, and delivered frames.\n`verified`, `failed`, and `inconclusive` are different results. The contact sheets\nstill need human/agent visual review. Encoding successfully does not prove the app\nworked. The updated local pipeline exits nonzero when browser verification fails\nor is inconclusive; `--no-verify` is an explicit exploratory-render option.\n\nThe renderer draws a cursor and window presentation; it is not a recording of the\nphysical pointer. No audio, subtitles, or motion blur are generated. The local\nrecorder's CSS magnification can alter viewport-unit/fullscreen layouts, so inspect\ncapture geometry. Full-document navigation can drop presentation decorations.\nSee [rendering notes](docs/rendering.md) for engine differences and units.\n\n## Troubleshooting\n\n- **`ffmpeg` missing:** npm must allow `ffmpeg-static`'s install script to download\n  its binary, or provide `ffmpeg` and `ffprobe` on PATH. With npm versions that block\n  scripts, review/approve that dependency using npm's install-script controls and\n  reinstall it. Do not blindly enable all dependency scripts.\n- **Python setup fails:** install Python with `venv`/pip support. On macOS, Homebrew\n  Python works. On Debian/Ubuntu, `python3-venv` may be a separate system package.\n  DemoKit's first-run setup needs network access; it does not bundle Python.\n- **Linux Chromium cannot launch:** install its OS libraries. From this checkout:\n  `node node_modules/playwright-core/cli.js install --with-deps chromium-headless-shell`.\n  This can require administrator access. Merely downloading Chromium is insufficient.\n- **Authentication expired:** rerun `demokit login <url>`. Session storage and\n  special SSO/browser-profile requirements may need the existing Chrome route.\n- **A step fails:** inspect the selector and result at the recorded viewport. Use\n  `later: true` only when an earlier step creates the target. Don't weaken evidence\n  to hide a broken behavior.\n- **Large work folder:** source PNGs can consume hundreds of MB. Keep desired takes\n  for re-rendering and remove only your own discarded captures.\n\n## Development and release\n\n```bash\nnpm ci\nnpm test                 # CLI, paths, package content\nnpm run test:smoke       # capture, render, and verify the bundled example\nnpm pack --dry-run      # inspect precisely what npm will ship\n```\n\nCI checks macOS/Linux CLI behavior and runs the Linux end-to-end example. See\n[contributing and release checks](CONTRIBUTING.md). Dependencies may perform network\ndownloads during a clean smoke run. Capture artifacts and auth state are never\nuploaded by CI.\n\n## Alternatives and provenance\n\nThere are alternatives. [The comparison](docs/ALTERNATIVES.md) covers Cap's\n`cap-demo`, Pagecast, ScreenCI, screencli, OpenScreen and Screen Studio, with primary\nsources and a research date. DemoKit's useful focus is reproducible local flows\nwith explicit behavior evidence; that is a design focus, not a claim of exclusivity.\n\nThe existing package declares MIT, but `src/caprender.py` explicitly describes a\nport of Cap rendering behavior/code. Cap's relevant source is AGPLv3, outside its\nlisted MIT exceptions. This needs a provenance/licensing resolution before another\nrelease; the audit does **not** certify the current package as cleanly MIT.\n","readmeFilename":"README.md"}