| name | comfy-qa |
| description | Generate high-quality narrated QA demo videos for Comfy-Org products. Takes a PR, issue, feature doc, or product URL as input and produces a story, Playwright spec, and MP4 video with TTS narration and HUD overlay. |
comfy-qa
Automated QA demo video generator for Comfy-Org's public-facing products. Given a target (PR, issue, feature, or product URL), it generates narrated browser demo videos showing real user workflows.
What this project does
Input: PR / issue / feature doc / product URL
↓
Phase 1: Probe → discover site structure (headless browser)
Phase 2: Story → generate .comfy-qa/02-stories/<product>.story.md
Phase 3: Spec → generate .comfy-qa/03-spec/<product>.spec.ts
Phase 4: Video → render .comfy-qa/04-videos/<product>.mp4
↓
Output: Narrated MP4 with TTS, cursor HUD, subtitles
Quick start
bun install
bun run prepare
bunx playwright test .comfy-qa/03-spec/<product>.spec.ts
bunx playwright test
bun tmp/review-videos.ts
Project structure
src/
├── agent/
│ ├── demo-research.ts ← explores sites, generates stories
│ ├── demo-editor.ts ← post-processes raw recordings
│ ├── browser-agent.ts ← AI-driven browser automation
│ ├── orchestrator.ts ← full QA pipeline (fetch → research → record → report)
│ └── research.ts ← PR/issue analysis agent
├── cli.ts ← CLI entry point (comfy-qa)
└── utils/ ← GitHub API, URL parsing, ComfyUI helpers
demo/
├── fixtures/
│ ├── fixture.ts ← Playwright fixture (HUD + Gemini TTS + audio)
│ └── mux-reporter.ts ← video + audio → MP4 muxer
.claude/skills/
├── demo-spec-author/SKILL.md ← spec authoring rules and patterns
.comfy-qa/ ← ALL generated output (gitignored)
├── spec/ ← generated Playwright spec files
├── stories/ ← generated story markdown files
├── checklists/ ← generated feature checklists (YAML)
├── videos/ ← rendered MP4 videos
└── .tmp/ ← intermediate Playwright artifacts
Key principles
1. User journeys, not museum tours
Every demo must show a complete user workflow — search, click, navigate, type, copy — not just hover over elements. See .claude/skills/demo-spec-author/SKILL.md for the full spec-authoring guide.
2. Segment classification
Each video segment is classified as NAVIGATE (page transitions via setup callback), INTERACT (clicks, typing), or OBSERVE (hover/scroll). At least 50% of segments must be NAVIGATE or INTERACT.
3. Coverage scoring
Demo quality is measured by enumerating all CRUD operations on the target site and calculating coverage as a ratio (e.g., 13/22 = 59%). Never use simple pass/fail.
4. Zero idle frames
Every segment must have continuous cursor movement during narration. No segment where the mouse sits still while the narrator talks.
Environment variables (.env.local)
GEMINI_API_KEY=...
CLOUD_USERNAME=...
CLOUD_PASSWORD=...
GOOGLE_USERNAME=...
GOOGLE_PASSWORD=...
Submodule: demowright
lib/demowright provides cursor HUD overlay, TTS integration, and video production via createVideoScript(). After pulling, run bun run prepare to sync it.
CLI
comfy-qa pr <owner/repo#number>
comfy-qa issue <owner/repo#number>
comfy-qa full <owner/repo>