write the voice-over, demo script first, voiceover instead of PRD, voiceover-first development, align on the demo, script the demo, ship a feature demo-first. The whole demo-driven journey — approve t
The skill file stays in the publisher's repository.
Paste the copied command in a terminal. It installs this SKILL.md into that agent.
npx skills add Devin-AXIS/iPolloWork --skill voiceover -a cursor -y
write the voice-over, demo script first, voiceover instead of PRD, voiceover-first development, align on the demo, script the demo, ship a feature demo-first. The whole demo-driven journey — approve the narration BEFORE any code, then build on a fresh worktree until the demo holds and open the PR with the proof on it. Use when a feature request arrives, or when the user runs /voiceover.
write the voice-over, demo script first, voiceover instead of PRD, voiceover-first development, align on the demo, script the demo, ship a feature demo-first. The whole demo-driven journey — approve the narration BEFORE any code, then build on a fresh worktree until the demo holds and open the PR with the proof on it. Use when a feature request arrives, or when the user runs /voiceover.
The voice-over is the spec. Instead of a PRD, a feature starts as the demo narration the user would record if the feature had already shipped. This skill owns the whole journey: script → worktree → build → fraimz → PR.
The contract: no code until the script is approved.
On approval, set up an isolated workspace so the user's checkout stays untouched:
git fetch origin dev
git worktree add ../_worktrees/ipollowork-<flow-id> -b feat/<flow-id> origin/dev
Then, inside the worktree:
evals/voiceovers/<flow-id>.md: a title, optional
context prose, then the numbered frame paragraphs. From this point the file
is what the code gets held to — the runner fails any flow whose narration
drifts from it.pnpm fraimz scaffold <flow-id> generates
evals/flows/<flow-id>.flow.mjs with one ctx.prove stub per paragraph,
narration pre-wired via loadVoiceoverParagraphs. Do not renumber or
reword paragraphs after this without re-approval.executor subagent; the fraimz loop (see the fraimz
skill) is how the orchestrator verifies each round — drive the demo
against the real app, repair, and re-run until every frame passes.git push -u origin feat/<flow-id>
gh pr create --base dev --fill
pnpm fraimz --flow <flow-id> --pr # posts the frame-by-frame proof as a PR comment
The PR review is the demo review: verdict, claims, voiceovers, and assertions, frame by frame.
# <flow-id> — <one-line claim>
Optional context prose (not narrated).
1. First frame narration, one or two spoken sentences.
2. Second frame narration.
Only numbered paragraphs become frames. Keep each to one or two sentences a human could speak over the screen while it shows exactly that state.
evals/runner/voiceover.mjs — parser, drift check, scaffolder.evals/voiceovers/voiceover-first-dx.md — the reference script (this
workflow demoing itself, worktree and PR included).fraimz skill — the validate/repair/verdict loop inside Phase 3.