본문으로 건너뛰기
cccskills
무료GitHub에 공개

video-demo

Films a web app as narrated, zooming, cursor-driven demo videos with retina screenshots, either from a repo it builds and mocks or from a live URL as it is served. Use when the user asks for a demo video, product video, walkthrough, screencast, screen recording of an app or of a URL, hero or landing-page footage, app screenshots for a website, "show off this feature", "record a demo of <url>", or wants to add, re-film, re-narrate or fix a demo scene.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Playwright

실행 점수 미검증

설치 방법 보기

포함된 파일(41)

  • SKILL.md8.9 KB
  • engine/pin-build.mjs4.0 KB
  • engine/playwright.demo.ts4.8 KB
  • engine/run.mjs5.1 KB
  • engine/serve.mjs3.7 KB
  • engine/studio/actor.ts23.5 KB
  • engine/studio/config.ts13.4 KB
  • engine/studio/define.ts5.9 KB
  • engine/studio/overlay.ts12.0 KB
  • engine/studio/preview.ts7.0 KB
  • engine/studio/ready.ts3.6 KB
  • engine/studio/recorder.ts23.1 KB
  • engine/studio/run-id.ts1.8 KB
  • engine/studio/scene.ts6.0 KB
  • engine/studio/stage.ts5.4 KB
  • engine/studio/stitch.ts11.0 KB
  • engine/studio/voice.ts14.7 KB
  • examples/roadmap-search-poster.png187.3 KB
  • LICENSE1.0 KB
  • package-lock.json2.2 KB
  • package.json407 B
  • README.md1.6 KB
  • references/capture.md10.7 KB
  • references/config.md14.3 KB
  • references/mocking.md8.8 KB
  • references/narration.md8.1 KB
  • references/runs.md14.7 KB
  • references/scenes.md10.4 KB
  • references/troubleshooting.md20.3 KB
  • scripts/demo303 B
  • scripts/doctor.sh4.6 KB
  • scripts/gaps.mjs5.7 KB
  • scripts/install-voice.sh2.1 KB
  • scripts/install.sh3.9 KB
  • scripts/probe-fps.mjs8.7 KB
  • scripts/say.sh2.3 KB
  • scripts/scaffold.mjs11.4 KB
  • template/demo/demo.config.ts6.0 KB
  • template/demo/mock.ts4.1 KB
  • template/demo/scenes/smoke.scene.ts1.9 KB
  • template/demo/ui.ts1.1 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

/supergraph:video-demo

Films a web app as narrated, zooming, cursor-driven demo videos with retina screenshots, either from a repo it builds and mocks or from a live URL as it is served. Powered by Kokoro local voice-over, smooth camera zooms, natural cursor paths, and Playwright Chromium.

Announce: "🎬 /supergraph:video-demo — filming narrated, zooming, cursor-driven demo videos with retina screenshots..."

Invocations

  • Claude Code & Codex: /supergraph:video-demo [instructions]
  • DeepSeek Harness (DSH) & Antigravity: /video-demo [instructions] or skill(name="video-demo")
  • CLI Binary: sg-video-demo or npx supergraph sg-video-demo

Overview

scripts/demo films a web app and writes demo-out/ into that project's workspace: per scene an mp4 with voice-over, a poster, retina stills, plus full-tour.mp4, manifest.json and index.html. All local. The engine runs from this skill; nothing is installed into the app being filmed.

Non-negotiables

Each of these cost a run or a user's patience.

  1. A pinned build, never a dev server. Its module graph belongs to whoever is editing source. Copy it somewhere private and verify its API base by reading the bundle. A URL with no repo behind it is site mode; a URL on localhost is a dev server and is never filmed.
  2. In build mode, mock every request in-process and pin the clock. A corpus gets published, and a real account publishes real people's addresses. site mode trades both away knowingly: public pages only.
  3. Own your port and output directory. The studio refuses to adopt a server it did not start. Never pkill by pattern.
  4. 1080p60 video, 2x stills. They are separate settings. 4K video judders because throughput is a fixed pixels-per-second budget.
  5. Do the gesture, then narrate while pushed in on the result. One subject per line. Never narrate before the subject exists. Where the app has its own timer — an undo window, a toast — the gesture goes inside it and the words after, or the film shows a feature that does not work.
  6. One scene, then stop and ask (step 8). It caught four defects before twenty-six more scenes were filmed.
  7. Read the PNG, every time. A scene that passes while framing the wrong thing is a failure, and only an eye on the still catches it.
  8. Nothing is final until they say so. Any note about the words, the framing, the pace, what is covered or the voice is a re-film, not a negotiation: change it and film it again. They cannot see what you can, so "too long", "zoom in more" and "stop zooming so much" are all complete instructions, and a scene is cheap to shoot twice.

Workflow

  1. Pick the mode from what you were given. Do not ask. An http(s) URL on a public host is site, workspace ~/.video-demo/<host>/. A URL on localhost or a private address is a dev server: find the repo behind it and treat the request as that repo. No URL means the repo you are in, so walk up and look for a web app (a package.json with a build script beside a Vite, React Router, Next, Astro, SvelteKit or Remix config). Exactly one is build; several, ask which; none, ask for a URL or a path. A workspace whose .origin already names this repo is reused, not scaffolded again. Say the mode and the workspace path in one line and carry on.
  2. scripts/doctor.sh, then set yourself up before asking anything else of the user. They installed a skill; they did not sign up to run three scripts. Say what is missing in one line, say what you propose to install and roughly how big it is, and run it once they agree. scripts/install.sh covers the engine and Chromium (about 250MB) and installs ffmpeg too where a package manager allows it; scripts/install-voice.sh is the voice (~350MB), and filming silent is a fine answer if they would rather not. Never install anything without asking, and never hand them a doctor report to interpret. Two things it will not do, and nor should you: upgrade their Node, because which tool owns it is theirs to know, and run sudo, because a password prompt in a script nobody is watching just hangs. In both cases the script prints the one command and you pass it on.
  3. Discover, writing nothing. site: open the URL and read it, for what the page is for, the three things worth showing, and what is stable enough to point at. If it lands on a sign-in, stop: a signed-in app is filmed from its repo, so ask for that or for a public URL. build: the build command copied verbatim out of package.json; the output directory from the framework's config; any absolute API host in .env* (it goes in build.forbid); the key the theme boot script reads; an existing fixture API or MSW handlers; data-testid density; routes with no credential.
  4. scripts/scaffold.mjs <appRoot>, or scripts/scaffold.mjs --site <url>. Neither writes anything into the app.
  5. Fill in the workspace's demo.config.ts. A required field still unknown means discovery is not done. config.md
  6. build only: write mock.ts and seed/. Reuse the repo's own data fixtures where it has them, but never a file that imports @playwright/test: two copies in one run is an error Playwright refuses, and it fails the whole corpus rather than the one scene that did it. Then DEMO_VOICE=0 scripts/demo --grep smoke. Reuse the repo's fixture API if it has one (mocking.md). Read the still: signed in, seeded data, right theme, no login page. Read the capture line. Fix until both are right, then write demo/ui.ts with only what the smoke run proved.
  7. Film what they asked for, at the scope they asked for it. A named feature is one scene: write it, film it, hand it over. Do not answer "record the search on the home page" with a ten-scene proposal, and do not quietly widen the ask because the product has more in it. Only when the request is the whole product do you propose 6 to 10 scenes, each a title and a one-line blurb in tour order, and ask which to film first.
  8. STOP. Film that one scene with voice. Verify the spoken count matches the say calls, nothing overran, the rate held. Read every still. Give the user the mp4 path and ask about the writing's register, the zoom scale, the pacing and the voice. Write nothing else until they answer.
  9. Then batches of three or four via --grep; the manifest merges. Read the stills after every batch. DEMO_BUILD=0 scripts/demo skips the rebuild while iterating on a scene — twenty seconds instead of four minutes; drop it for the run that produces the corpus.
  10. Full run with DEMO_TRACE_FRAMES=1, then scripts/gaps.mjs and open demo-out/index.html. Report the capture table and any slow clips.

A scene

scene('tasks', { title: 'Your to-dos, beside your calendar', blurb: '...' },
  async ({ actor, page, shot }) => {
    await actor.click(page.getByRole('radio', { name: 'Today' }));
    await actor.settle();
    await actor.spotlight(
      row('Send Sam the feedback'),
      'And this one is from yesterday that I never got to, so it is flagged.',
      { scale: 1.8, stay: true }
    );
    await shot('overdue');
    await actor.unfocus();
  });

spotlight takes the narration mark, then moves camera and cursor over the line's opening words. Scale by subject: panel ~1.4, row ~1.7, single control ~2. A line about the whole screen gets a plain say and no zoom. unfocus is a hint rather than a movement: the camera only comes out when something needs it wide, so consecutive beats about the same region glide instead of bouncing. scenes.md · narration.md

Never

Subtitles (the voice is the channel). Cloud TTS (the film is of private data). Playwright's recordVideo (no control of rate, size or start; the recorder replaces it). 4K as a default. Music, intro cards or cross-fades. Scenes generated from a route crawl: a scene is choreography with a point. Retries: a retried scene is a different film.

Also

capture.md before changing any capture number. runs.md for builds, isolation and the manifest. troubleshooting.md when a run dies or a shot looks wrong. The engine runs from this skill, so a fix to engine/ reaches every project on the machine at once: edit it there, and nothing needs propagating.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

analyze

무료

Risk analysis and approach selection before planning. Use when requirements are ambiguous, approaches vary, or work touches hub/bridge nodes. Skip for typo fixes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

datit309/supergraph222026년 10월 23일 업데이트

Proactive architecture review — explore codebase structure, generate a self-contained HTML report with Mermaid diagrams and candidate improvements, then grill the findings. Use when planning a large refactor, onboarding to an unfamiliar codebase, or before a major architectural change.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

datit309/supergraph222026년 10월 23일 업데이트

Autonomous human-like browser control and professional QA/QC testing. Powered by agent-browser (Rust native CDP, zero Playwright) with ISTQB test matrix generation, automated testcase execution, console/network error tracing, and defect reporting.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

datit309/supergraph222026년 10월 23일 업데이트

caveman

무료

Persistent token-compression mode (~75% reduction) — now always-on by default. Strips filler while keeping code exact.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

datit309/supergraph222026년 10월 23일 업데이트

Database migration best practices for schema changes, data migrations, rollbacks, and zero-downtime deployments across PostgreSQL, MySQL, and common ORMs (Prisma, Drizzle, Kysely, Django, TypeORM, golang-migrate).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

datit309/supergraph222026년 10월 23일 업데이트

Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

datit309/supergraph222026년 10월 23일 업데이트

datit309의 스킬 모두 보기

이 스킬의 문제 신고