@vibeframe/cli 0.113.27 → 0.113.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTEXT.md +11 -9
- package/dist/commands/_shared/init-templates.d.ts +6 -6
- package/dist/commands/_shared/scene-project.d.ts +10 -10
- package/dist/commands/_shared/walkthroughs/walkthroughs.d.ts +3 -3
- package/dist/index.js +205 -200
- package/dist/tools/manifest/index.js +94 -96
- package/package.json +16 -8
|
@@ -26064,12 +26064,12 @@ colors:
|
|
|
26064
26064
|
---
|
|
26065
26065
|
|
|
26066
26066
|
`;
|
|
26067
|
-
const intro = style ? `Visual identity for **${name}**, scaffolded from the **${style.name}** style (after ${style.designer}). Customise freely
|
|
26068
|
-
const moodLine = style ? `**Mood:** ${style.mood} \xB7 **Best for:** ${style.bestFor}` : `**Mood:** _(one line
|
|
26067
|
+
const intro = style ? `Visual identity for **${name}**, scaffolded from the **${style.name}** style (after ${style.designer}). Customise freely - this file is the single source of truth for every scene's palette, typography, and motion.` : `Visual identity for **${name}**. Fill the sections below before authoring any scene HTML or generating any backdrop. Pick a named style with \`vibe scene list-styles\` if you want a credible starting point.`;
|
|
26068
|
+
const moodLine = style ? `**Mood:** ${style.mood} \xB7 **Best for:** ${style.bestFor}` : `**Mood:** _(one line - what should the viewer FEEL?)_`;
|
|
26069
26069
|
const palette = style ? `${style.palette.map((c) => `- \`${c}\``).join("\n")}
|
|
26070
26070
|
|
|
26071
|
-
${style.paletteNotes}` : `- _hex_
|
|
26072
|
-
- _hex_
|
|
26071
|
+
${style.paletteNotes}` : `- _hex_ - primary
|
|
26072
|
+
- _hex_ - accent
|
|
26073
26073
|
|
|
26074
26074
|
_2\u20133 colours max. Declare explicit hex values; never name colours abstractly._`;
|
|
26075
26075
|
const typography = style ? style.typography : `_One family, two weights. State the role of each (headline / label / body)._`;
|
|
@@ -26083,7 +26083,7 @@ _2\u20133 colours max. Declare explicit hex values; never name colours abstractl
|
|
|
26083
26083
|
const avoid = style ? style.avoid.map((a) => `- ${a}`).join("\n") : `- _anti-pattern 1_
|
|
26084
26084
|
- _anti-pattern 2_
|
|
26085
26085
|
- _anti-pattern 3_`;
|
|
26086
|
-
return `${frontmatter}# ${name}
|
|
26086
|
+
return `${frontmatter}# ${name} - Design
|
|
26087
26087
|
|
|
26088
26088
|
> **Hard-gate (BUILD flow only).** This file is the visual contract for
|
|
26089
26089
|
> the scene-project flow (\`vibe build\`, \`vibe scene ...\`, composition
|
|
@@ -26131,8 +26131,8 @@ ${style ? `_This file was seeded by \`vibe scene init --visual-style "${style.na
|
|
|
26131
26131
|
`;
|
|
26132
26132
|
}
|
|
26133
26133
|
function buildScriptMd(name, kind = DEFAULT_SCENE_KIND) {
|
|
26134
|
-
const intent = kind === "product" ? "Product walkthrough
|
|
26135
|
-
return `# ${name}
|
|
26134
|
+
const intent = kind === "product" ? "Product walkthrough - what each section demonstrates, in order." : kind === "motion" ? "Motion piece - the message and the beats of on-screen text/graphics." : kind === "aivideo" ? "AI-video script - the spoken/voiced narrative the generated shots illustrate." : "Narrative script - scene-by-scene story, dialogue, and voiceover.";
|
|
26135
|
+
return `# ${name} - Script
|
|
26136
26136
|
|
|
26137
26137
|
> **Authoring order:** SCRIPT.md (this file) \u2192 STORYBOARD.md (beats + cues)${kindHasCast(kind) ? " \u2192 CHARACTERS.md (cast bible)" : ""}.
|
|
26138
26138
|
> ${intent}
|
|
@@ -26160,7 +26160,7 @@ Voiceover / on-screen: \u2026
|
|
|
26160
26160
|
`;
|
|
26161
26161
|
}
|
|
26162
26162
|
function buildCharactersMd(name) {
|
|
26163
|
-
return `# ${name}
|
|
26163
|
+
return `# ${name} - Characters
|
|
26164
26164
|
|
|
26165
26165
|
> Each character is referenced from STORYBOARD beats via the \`characters:\` cue.
|
|
26166
26166
|
> The reference sheet + identity block keep keyframes and image-to-video on-model
|
|
@@ -26169,8 +26169,8 @@ function buildCharactersMd(name) {
|
|
|
26169
26169
|
## hero
|
|
26170
26170
|
|
|
26171
26171
|
- **Reference sheet:** \`assets/characters/hero.png\` (a clean, front-lit full-body
|
|
26172
|
-
or portrait sheet
|
|
26173
|
-
- **Identity:** one paragraph of fixed, on-model traits
|
|
26172
|
+
or portrait sheet - the identity anchor for keyframe edits).
|
|
26173
|
+
- **Identity:** one paragraph of fixed, on-model traits - age, build, hair,
|
|
26174
26174
|
wardrobe, palette. Keep this stable across every beat.
|
|
26175
26175
|
- **Range:** expressions / poses this character should hit.
|
|
26176
26176
|
|
|
@@ -26188,14 +26188,14 @@ tts: auto
|
|
|
26188
26188
|
imageProvider: openai
|
|
26189
26189
|
---
|
|
26190
26190
|
|
|
26191
|
-
# ${name}
|
|
26191
|
+
# ${name} - Storyboard
|
|
26192
26192
|
|
|
26193
26193
|
Edit these beats before running \`vibe build\`. Each beat starts with
|
|
26194
26194
|
YAML cues that drive narration, backdrop generation, and timing.
|
|
26195
26195
|
Pacing: keep beats 6-15 seconds (split longer ones); a 90s video should
|
|
26196
26196
|
have 6-8 beats, not 3 long ones.
|
|
26197
26197
|
|
|
26198
|
-
## Beat hook
|
|
26198
|
+
## Beat hook - Hook
|
|
26199
26199
|
|
|
26200
26200
|
\`\`\`yaml
|
|
26201
26201
|
narration: "Introduce the promise in one crisp sentence."
|
|
@@ -26206,7 +26206,7 @@ duration: 4
|
|
|
26206
26206
|
Show the core visual identity immediately. Keep copy short enough for one
|
|
26207
26207
|
screen and one spoken breath.
|
|
26208
26208
|
|
|
26209
|
-
## Beat proof
|
|
26209
|
+
## Beat proof - Proof
|
|
26210
26210
|
|
|
26211
26211
|
\`\`\`yaml
|
|
26212
26212
|
narration: "Show the mechanism or proof point that makes the promise believable."
|
|
@@ -26217,7 +26217,7 @@ duration: 4
|
|
|
26217
26217
|
Use this beat for the concrete differentiator: command, workflow, metric, or
|
|
26218
26218
|
before/after.
|
|
26219
26219
|
|
|
26220
|
-
## Beat close
|
|
26220
|
+
## Beat close - Close
|
|
26221
26221
|
|
|
26222
26222
|
\`\`\`yaml
|
|
26223
26223
|
narration: "Close with the action the viewer should remember."
|
|
@@ -26230,7 +26230,7 @@ final beat.
|
|
|
26230
26230
|
`;
|
|
26231
26231
|
}
|
|
26232
26232
|
function buildProjectAgentsMd(name) {
|
|
26233
|
-
return `# ${name}
|
|
26233
|
+
return `# ${name} - Scene Authoring Project
|
|
26234
26234
|
|
|
26235
26235
|
This is the canonical cross-agent guidance file for this scene project.
|
|
26236
26236
|
Claude Code imports it through \`CLAUDE.md\`; Codex, Cursor, Aider,
|
|
@@ -26269,7 +26269,7 @@ contradict DESIGN.md are rejected by the Hyperframes \`hyperframes\`
|
|
|
26269
26269
|
skill.
|
|
26270
26270
|
|
|
26271
26271
|
Single-asset requests (\`vibe generate image|video|speech|...\`) do NOT
|
|
26272
|
-
consult this file
|
|
26272
|
+
consult this file - run the generate command directly.
|
|
26273
26273
|
|
|
26274
26274
|
Browse named styles: \`vibe scene list-styles\`. Re-seed from one with
|
|
26275
26275
|
\`vibe scene init . --visual-style "Swiss Pulse"\` (idempotent).
|
|
@@ -26284,8 +26284,9 @@ after init, those two files are the working source of truth.
|
|
|
26284
26284
|
Use \`media/\` for user-provided source files: product photos, screenshots,
|
|
26285
26285
|
logos, B-roll, recorded narration, or reference clips. Keep those inputs
|
|
26286
26286
|
inside this project so build references stay project-relative. Do not put user
|
|
26287
|
-
media in \`references/\`;
|
|
26288
|
-
rules
|
|
26287
|
+
media in \`references/\`; older VibeFrame versions vendored composition rules
|
|
26288
|
+
there, and current installs keep the rules under \`.agents/skills/hyperframes/\`
|
|
26289
|
+
via \`vibe scene install-skill\`.
|
|
26289
26290
|
|
|
26290
26291
|
When a beat should reuse a local file, reference it from \`STORYBOARD.md\`
|
|
26291
26292
|
with a project-relative path:
|
|
@@ -26341,7 +26342,7 @@ project-level agent loop; it provides \`--json\` commands, dry runs, cost caps,
|
|
|
26341
26342
|
\`requiresConfirmation\`, \`fixOwner\`, deterministic repair, and render
|
|
26342
26343
|
inspection for the host agent to reason over.
|
|
26343
26344
|
|
|
26344
|
-
Copy-paste agent prompts
|
|
26345
|
+
Copy-paste agent prompts - plain prompts, not a built-in command:
|
|
26345
26346
|
|
|
26346
26347
|
\`\`\`text
|
|
26347
26348
|
Build this VibeFrame project into renders/final.mp4. Use --json for every
|
|
@@ -26369,13 +26370,13 @@ target duration/aspect ratio, clean render inspection, any AI review score >= 90
|
|
|
26369
26370
|
no unresolved unacknowledged host-agent issues.
|
|
26370
26371
|
\`\`\`
|
|
26371
26372
|
|
|
26372
|
-
## Skills
|
|
26373
|
+
## Skills - USE THESE FIRST
|
|
26373
26374
|
|
|
26374
|
-
**Load the \`hyperframes\` skill before authoring scenes**
|
|
26375
|
+
**Load the \`hyperframes\` skill before authoring scenes** - it encodes the
|
|
26375
26376
|
composition rules, motion principles, type system, and visual-identity gate.
|
|
26376
26377
|
If your agent has it installed globally it is already available; otherwise run
|
|
26377
|
-
\`vibe scene install-skill
|
|
26378
|
-
|
|
26378
|
+
\`vibe scene install-skill\`, which runs upstream's installer and writes
|
|
26379
|
+
\`.agents/skills/hyperframes/SKILL.md\`. Read that file before authoring.
|
|
26379
26380
|
|
|
26380
26381
|
**Always invoke the relevant skill before authoring scenes.** Skills encode
|
|
26381
26382
|
framework-specific patterns (GSAP timeline registration, data-attribute
|
|
@@ -26383,7 +26384,7 @@ semantics, VibeFrame pipeline conventions) that are NOT in generic web docs.
|
|
|
26383
26384
|
|
|
26384
26385
|
| Skill | Command | When to use |
|
|
26385
26386
|
| ----------------- | ---------------- | ------------------------------------------------------------------------------------- |
|
|
26386
|
-
| **hyperframes** | \`/hyperframes\` | Cinematic-quality composition
|
|
26387
|
+
| **hyperframes** | \`/hyperframes\` | Cinematic-quality composition - DESIGN.md hard-gate, named styles, motion principles |
|
|
26387
26388
|
| **vibe-scene** | \`/vibe-scene\` | VibeFrame's authoring loop, AI assets, lint feedback, pipeline integration |
|
|
26388
26389
|
| **gsap** | \`/gsap\` | GSAP tweens, timelines, easing |
|
|
26389
26390
|
|
|
@@ -26394,22 +26395,22 @@ npx skills add heygen-com/hyperframes
|
|
|
26394
26395
|
\`\`\`
|
|
26395
26396
|
|
|
26396
26397
|
Restart your agent session (or reload the skill list) after installing.
|
|
26397
|
-
If skills aren't available, follow the **Key Rules** below
|
|
26398
|
+
If skills aren't available, follow the **Key Rules** below - they cover
|
|
26398
26399
|
the framework-level minimum, not the cinematic craft layer.
|
|
26399
26400
|
|
|
26400
26401
|
## Project structure
|
|
26401
26402
|
|
|
26402
|
-
- \`DESIGN.md\`
|
|
26403
|
-
- \`STORYBOARD.md\`
|
|
26404
|
-
- \`media/\`
|
|
26405
|
-
- \`index.html\`
|
|
26406
|
-
- \`compositions/scene-*.html\`
|
|
26407
|
-
- \`assets/\`
|
|
26408
|
-
-
|
|
26409
|
-
- \`transcript.json\`
|
|
26410
|
-
- \`hyperframes.json\`
|
|
26411
|
-
- \`vibe.config.json\`
|
|
26412
|
-
- \`renders/\`
|
|
26403
|
+
- \`DESIGN.md\` - visual identity contract (palette, type, motion, transitions)
|
|
26404
|
+
- \`STORYBOARD.md\` - per-beat narration/backdrop/duration cues for \`vibe build\`
|
|
26405
|
+
- \`media/\` - user-provided source files (photos, logos, clips, voice recordings)
|
|
26406
|
+
- \`index.html\` - root composition (timeline)
|
|
26407
|
+
- \`compositions/scene-*.html\` - per-scene HTML authored by you or the agent
|
|
26408
|
+
- \`assets/\` - generated/canonical build media (narration audio, images, video)
|
|
26409
|
+
- \`.agents/skills/hyperframes/\` - upstream composition rules, when installed here rather than globally
|
|
26410
|
+
- \`transcript.json\` - Whisper word-level transcript (if narration exists)
|
|
26411
|
+
- \`hyperframes.json\` - HF registry config (speak to both toolchains)
|
|
26412
|
+
- \`vibe.config.json\` - canonical VibeFrame config (providers, budget)
|
|
26413
|
+
- \`renders/\` - output MP4s
|
|
26413
26414
|
|
|
26414
26415
|
## Commands
|
|
26415
26416
|
|
|
@@ -26419,7 +26420,7 @@ vibe build # STORYBOARD.md \u219
|
|
|
26419
26420
|
vibe scene lint # Validate scenes (in-process HF linter)
|
|
26420
26421
|
vibe render # Render to MP4
|
|
26421
26422
|
|
|
26422
|
-
# Hyperframes CLI (if installed
|
|
26423
|
+
# Hyperframes CLI (if installed - works in this project too)
|
|
26423
26424
|
npx hyperframes preview
|
|
26424
26425
|
npx hyperframes render
|
|
26425
26426
|
\`\`\`
|
|
@@ -26427,7 +26428,7 @@ npx hyperframes render
|
|
|
26427
26428
|
## Key Rules (for hand-authored scene HTML)
|
|
26428
26429
|
|
|
26429
26430
|
1. Every timed element needs \`data-start\`, \`data-duration\`, and \`data-track-index\`.
|
|
26430
|
-
2. Elements with timing **MUST** have \`class="clip"\`
|
|
26431
|
+
2. Elements with timing **MUST** have \`class="clip"\` - the framework uses this for visibility control.
|
|
26431
26432
|
3. Timelines must be paused and registered on \`window.__timelines\`:
|
|
26432
26433
|
\`\`\`js
|
|
26433
26434
|
window.__timelines = window.__timelines || {};
|
|
@@ -26439,12 +26440,12 @@ npx hyperframes render
|
|
|
26439
26440
|
\`filter\` tweens to \`.scene-content\` or any ancestor containing live text.
|
|
26440
26441
|
Animate background/media layers instead; text/cards should enter briefly and
|
|
26441
26442
|
then hold still at their final CSS positions.
|
|
26442
|
-
7. Only deterministic logic
|
|
26443
|
+
7. Only deterministic logic - no \`Date.now()\`, \`Math.random()\`, or network fetches.
|
|
26443
26444
|
|
|
26444
|
-
## Linting
|
|
26445
|
+
## Linting - run after changes
|
|
26445
26446
|
|
|
26446
26447
|
\`\`\`bash
|
|
26447
|
-
vibe scene lint # preferred
|
|
26448
|
+
vibe scene lint # preferred - in-process, no network
|
|
26448
26449
|
vibe scene lint --fix # auto-fix mechanical issues
|
|
26449
26450
|
vibe scene lint --json # structured output for agent loops
|
|
26450
26451
|
\`\`\`
|
|
@@ -26453,7 +26454,7 @@ vibe scene lint --json # structured output for agent loops
|
|
|
26453
26454
|
function buildProjectClaudeMd(name) {
|
|
26454
26455
|
return `@AGENTS.md
|
|
26455
26456
|
|
|
26456
|
-
# ${name}
|
|
26457
|
+
# ${name} - Claude Code Overrides
|
|
26457
26458
|
|
|
26458
26459
|
This file imports \`AGENTS.md\`; keep cross-agent VibeFrame and
|
|
26459
26460
|
Hyperframes instructions there so Codex, Cursor, Aider, Gemini CLI, and
|
|
@@ -26462,15 +26463,16 @@ only when this project needs them.
|
|
|
26462
26463
|
`;
|
|
26463
26464
|
}
|
|
26464
26465
|
function buildSceneGitignore() {
|
|
26465
|
-
return `# VibeFrame
|
|
26466
|
+
return `# VibeFrame - caches, checkpoints, and project-scope config.yaml (may contain API keys)
|
|
26466
26467
|
.vibeframe/
|
|
26467
26468
|
|
|
26468
26469
|
# Render outputs
|
|
26469
26470
|
renders/*.mp4
|
|
26470
26471
|
tmp/
|
|
26471
26472
|
|
|
26472
|
-
#
|
|
26473
|
-
#
|
|
26473
|
+
# Hyperframes skill copies left by older VibeFrame versions. Nothing writes
|
|
26474
|
+
# these now - upstream's installer owns the rules and puts them under
|
|
26475
|
+
# .agents/skills/hyperframes/, which is yours to commit or ignore.
|
|
26474
26476
|
/SKILL.md
|
|
26475
26477
|
/references/
|
|
26476
26478
|
/.claude/skills/hyperframes/
|
|
@@ -26508,12 +26510,7 @@ function describeSceneScaffold(opts) {
|
|
|
26508
26510
|
];
|
|
26509
26511
|
}
|
|
26510
26512
|
if (profile === "agent" || profile === "full") {
|
|
26511
|
-
groups.agent = [
|
|
26512
|
-
resolve8(dir, "AGENTS.md"),
|
|
26513
|
-
resolve8(dir, "SKILL.md"),
|
|
26514
|
-
resolve8(dir, "references"),
|
|
26515
|
-
resolve8(dir, "CLAUDE.md")
|
|
26516
|
-
];
|
|
26513
|
+
groups.agent = [resolve8(dir, "AGENTS.md"), resolve8(dir, "CLAUDE.md")];
|
|
26517
26514
|
}
|
|
26518
26515
|
return groups;
|
|
26519
26516
|
}
|
|
@@ -54724,7 +54721,7 @@ var sceneComposePromptsTool = defineTool({
|
|
|
54724
54721
|
cost: "free",
|
|
54725
54722
|
title: "Get Scene Authoring Prompts",
|
|
54726
54723
|
annotations: { readOnly: true, openWorld: false },
|
|
54727
|
-
description: "Emit the per-beat compose plan for the host agent to author scene HTML itself. Reads STORYBOARD.md + DESIGN.md and returns each beat's outputPath + userPrompt + cues + body, plus
|
|
54724
|
+
description: "Emit the per-beat compose plan for the host agent to author scene HTML itself. Reads STORYBOARD.md + DESIGN.md and returns each beat's outputPath + userPrompt + cues + body, plus the path to the Hyperframes rules (skillReference) and DESIGN.md (visual identity). The host agent writes each compositions/scene-<id>.html file directly \u2014 VibeFrame makes NO LLM call here, and there is no internal-LLM fallback: authoring is always the host agent's job. Hosts that cannot write files (e.g. Claude Desktop) submit each authored beat with scene_submit instead. Pairs with scene_install_skill, which fetches the rules from upstream when the agent does not already have them.",
|
|
54728
54725
|
schema: sceneComposePromptsSchema,
|
|
54729
54726
|
async execute(args, ctx) {
|
|
54730
54727
|
const projectDir = resolve27(ctx.workingDirectory, args.projectDir);
|
|
@@ -62548,13 +62545,15 @@ var agentOnlyTools = [
|
|
|
62548
62545
|
var SCENE_WALKTHROUGH = `# Scene authoring with vibe
|
|
62549
62546
|
|
|
62550
62547
|
A scene project is a directory that is **bilingual**: it works with both
|
|
62551
|
-
\`vibe\` and \`npx hyperframes\`.
|
|
62552
|
-
|
|
62548
|
+
\`vibe\` and \`npx hyperframes\`. Scene composition is Hyperframes' job:
|
|
62549
|
+
each scene is one HTML file with scoped CSS and a paused GSAP timeline,
|
|
62550
|
+
authored to upstream's composition rules (install them with
|
|
62551
|
+
\`vibe scene install-skill\`). Cheap to edit, cheap to lint, expensive only
|
|
62553
62552
|
at render.
|
|
62554
62553
|
|
|
62555
|
-
\`vibe build\`
|
|
62556
|
-
|
|
62557
|
-
|
|
62554
|
+
\`vibe build\` is the supported one-shot driver from a written storyboard
|
|
62555
|
+
to an MP4. The host agent authors the per-beat HTML - the CLI makes no
|
|
62556
|
+
internal LLM call.
|
|
62558
62557
|
|
|
62559
62558
|
## Three authoring paths
|
|
62560
62559
|
|
|
@@ -62569,20 +62568,20 @@ narration / backdrop intent.
|
|
|
62569
62568
|
|
|
62570
62569
|
## High-craft path
|
|
62571
62570
|
|
|
62572
|
-
1. \`vibe init my-promo --visual-style "Swiss Pulse"\`
|
|
62571
|
+
1. \`vibe init my-promo --visual-style "Swiss Pulse"\` - seeds
|
|
62573
62572
|
\`DESIGN.md\` (palette, typography, motion, transitions) plus the
|
|
62574
62573
|
\`vibe.config.json\` / \`hyperframes.json\` / \`index.html\` scaffold.
|
|
62575
|
-
|
|
62576
|
-
|
|
62577
|
-
|
|
62578
|
-
|
|
62579
|
-
2. Read
|
|
62574
|
+
It does **not** install the composition rules; if your agent does not
|
|
62575
|
+
already have the \`hyperframes\` skill, run
|
|
62576
|
+
\`vibe scene install-skill\` to fetch them from upstream into
|
|
62577
|
+
\`.agents/skills/hyperframes/\`.
|
|
62578
|
+
2. Read \`.agents/skills/hyperframes/SKILL.md\` (or your global copy) -
|
|
62580
62579
|
framework rules, motion principles, type system, transition recipes.
|
|
62581
|
-
3. Read \`DESIGN.md\`
|
|
62580
|
+
3. Read \`DESIGN.md\` - project-specific palette / typography / motion
|
|
62582
62581
|
signature (visual identity hard-gate).
|
|
62583
62582
|
4. Author each scene HTML directly under \`compositions/scene-<id>.html\`
|
|
62584
62583
|
using the rules from steps 2 and 3. The skill enforces the visual
|
|
62585
|
-
identity contract
|
|
62584
|
+
identity contract - scenes that contradict DESIGN.md fail lint.
|
|
62586
62585
|
5. \`vibe scene lint --fix\` for mechanical issues, \`vibe render my-promo\`
|
|
62587
62586
|
to MP4.
|
|
62588
62587
|
|
|
@@ -62596,16 +62595,16 @@ vibe scene lint
|
|
|
62596
62595
|
vibe render my-promo
|
|
62597
62596
|
\`\`\`
|
|
62598
62597
|
|
|
62599
|
-
\`vibe init\` is **idempotent**
|
|
62598
|
+
\`vibe init\` is **idempotent** - running it on an existing Hyperframes
|
|
62600
62599
|
directory merges \`hyperframes.json\` instead of clobbering it. Safe to
|
|
62601
62600
|
invoke on user-provided projects.
|
|
62602
62601
|
|
|
62603
62602
|
## Subcommands
|
|
62604
62603
|
|
|
62605
62604
|
\`\`\`bash
|
|
62606
|
-
# Project flow (top-level
|
|
62605
|
+
# Project flow (top-level - preferred entry points)
|
|
62607
62606
|
vibe init <dir> [-r 16:9|9:16|1:1|4:5] [-d <sec>] [--visual-style "<name>"]
|
|
62608
|
-
vibe build [<dir>] [--
|
|
62607
|
+
vibe build [<dir>] [--composer template] # agent authors scenes by default
|
|
62609
62608
|
vibe render [<dir>] [--fps 30] [--quality standard] [--format mp4]
|
|
62610
62609
|
|
|
62611
62610
|
# Lower-level scene authoring
|
|
@@ -62618,11 +62617,11 @@ vibe scene lint [<root>] [--json] [--fix]
|
|
|
62618
62617
|
|
|
62619
62618
|
## Style presets (for \`vibe scene add --style\`)
|
|
62620
62619
|
|
|
62621
|
-
- **simple**
|
|
62622
|
-
- **announcement**
|
|
62623
|
-
- **explainer**
|
|
62624
|
-
- **kinetic-type**
|
|
62625
|
-
- **product-shot**
|
|
62620
|
+
- **simple** - backdrop + bottom caption (default)
|
|
62621
|
+
- **announcement** - single huge headline, gradient text
|
|
62622
|
+
- **explainer** - kicker + title + subtitle stack
|
|
62623
|
+
- **kinetic-type** - words animate in word-by-word
|
|
62624
|
+
- **product-shot** - corner label + bottom headline + slow zoom
|
|
62626
62625
|
|
|
62627
62626
|
All presets accept \`--narration <text|file>\`, \`--visuals <prompt>\`,
|
|
62628
62627
|
\`--headline\`, \`--kicker\`. With \`--narration\`, scene duration auto-derives
|
|
@@ -62632,21 +62631,19 @@ from the generated TTS audio.
|
|
|
62632
62631
|
|
|
62633
62632
|
\`\`\`bash
|
|
62634
62633
|
vibe init my-promo --visual-style "Swiss Pulse" -d 12
|
|
62635
|
-
# (edit STORYBOARD.md with per-beat YAML cues
|
|
62634
|
+
# (edit STORYBOARD.md with per-beat YAML cues - narration, backdrop, duration)
|
|
62636
62635
|
vibe build my-promo
|
|
62637
62636
|
\`\`\`
|
|
62638
62637
|
|
|
62639
62638
|
\`vibe build\` reads the STORYBOARD frontmatter + per-beat cues,
|
|
62640
62639
|
dispatches TTS + image-gen per beat, then either:
|
|
62641
62640
|
|
|
62642
|
-
-
|
|
62643
|
-
\`
|
|
62644
|
-
|
|
62645
|
-
|
|
62646
|
-
- **\`--
|
|
62647
|
-
|
|
62648
|
-
|
|
62649
|
-
\`VIBE_BUILD_MODE\` env var overrides the auto-resolve.
|
|
62641
|
+
- **Agent authoring** (default) - emits a \`needs-author\` plan via
|
|
62642
|
+
\`vibe scene compose-prompts\`. The host agent authors each
|
|
62643
|
+
\`compositions/scene-<id>.html\` itself, then re-invoking \`vibe build\`
|
|
62644
|
+
proceeds to lint + render. The CLI makes no internal LLM call.
|
|
62645
|
+
- **\`--composer template\`** - the deterministic no-model composer
|
|
62646
|
+
(concat background + lower-thirds), for when no agent is available.
|
|
62650
62647
|
|
|
62651
62648
|
## Lint feedback loop
|
|
62652
62649
|
|
|
@@ -62656,7 +62653,7 @@ vibe scene lint --json --fix
|
|
|
62656
62653
|
|
|
62657
62654
|
Returns structured findings. The recommended loop: 1) run lint with
|
|
62658
62655
|
\`--fix\` (mechanical fixes applied), 2) if \`errorCount > 0\`, edit the
|
|
62659
|
-
scene HTML, 3) re-lint. Cap retries at 3
|
|
62656
|
+
scene HTML, 3) re-lint. Cap retries at 3 - if errors persist, fall back
|
|
62660
62657
|
to a template preset (\`vibe scene add <id> --style simple --force\`)
|
|
62661
62658
|
and surface the error to the user.
|
|
62662
62659
|
|
|
@@ -62732,9 +62729,9 @@ The full set lives in \`packages/cli/src/pipeline/executor.ts\`.
|
|
|
62732
62729
|
|
|
62733
62730
|
## Variable references
|
|
62734
62731
|
|
|
62735
|
-
- \`$<step-id>.output\`
|
|
62736
|
-
- \`$<step-id>.result.<field>\`
|
|
62737
|
-
- \`\${ENV_VAR}\`
|
|
62732
|
+
- \`$<step-id>.output\` - previous step's output path
|
|
62733
|
+
- \`$<step-id>.result.<field>\` - structured field from JSON result
|
|
62734
|
+
- \`\${ENV_VAR}\` - environment variable
|
|
62738
62735
|
- Values can be templated: \`"\${SCRIPT_TITLE} - Episode \${EPISODE}"\`
|
|
62739
62736
|
|
|
62740
62737
|
## Running
|
|
@@ -62751,12 +62748,12 @@ Checkpoints land next to the YAML: \`pipeline.yaml.checkpoint.json\`.
|
|
|
62751
62748
|
|
|
62752
62749
|
## Authoring tips
|
|
62753
62750
|
|
|
62754
|
-
1. **Start from a tiny YAML**
|
|
62751
|
+
1. **Start from a tiny YAML** - keep it in your project directory and run
|
|
62755
62752
|
\`vibe run pipeline.yaml --dry-run\` before spending provider budget.
|
|
62756
|
-
2. **Dry-run first**
|
|
62753
|
+
2. **Dry-run first** - you see estimated cost and resolved variable
|
|
62757
62754
|
graph before spending API credits.
|
|
62758
62755
|
3. **Keep step ids short and descriptive** (\`intro\`, \`scene1\`, \`voice\`,
|
|
62759
|
-
\`bgm\`)
|
|
62756
|
+
\`bgm\`) - they appear in logs and variable refs.
|
|
62760
62757
|
4. **Name outputs** with extensions matching the action (\`.mp4\`, \`.mp3\`,
|
|
62761
62758
|
\`.png\`, \`.json\`).
|
|
62762
62759
|
5. **Declare \`budget:\`** on expensive pipelines:
|
|
@@ -62780,9 +62777,9 @@ When the user has a working shell sequence, extract steps:
|
|
|
62780
62777
|
- Wrap the entire chain in a \`name:\` + \`steps:\` skeleton
|
|
62781
62778
|
|
|
62782
62779
|
The \`compose\` action is the catch-all assembly step (audio mux, video
|
|
62783
|
-
overlay, etc.)
|
|
62780
|
+
overlay, etc.) - useful at the tail of a pipeline.
|
|
62784
62781
|
`;
|
|
62785
|
-
var ARCHITECTURE_WALKTHROUGH = `# vibe agent / build / run
|
|
62782
|
+
var ARCHITECTURE_WALKTHROUGH = `# vibe agent / build / run - when to pick which
|
|
62786
62783
|
|
|
62787
62784
|
The CLI has three orchestrating commands that coordinate other primitives:
|
|
62788
62785
|
\`vibe agent\`, \`vibe build\`, \`vibe run\`. New users routinely ask which one
|
|
@@ -62811,14 +62808,14 @@ built-in fallback when you do not already have an agent host.
|
|
|
62811
62808
|
- "I have a finished script + visual identity" \u2192 \`vibe build\`
|
|
62812
62809
|
- "I want this to run again next month" \u2192 \`vibe run\`
|
|
62813
62810
|
|
|
62814
|
-
If two seem to fit, pick the rightmost one
|
|
62811
|
+
If two seem to fit, pick the rightmost one - more reproducible, less surprise.
|
|
62815
62812
|
|
|
62816
62813
|
## Cost-tier awareness (v0.83+)
|
|
62817
62814
|
|
|
62818
62815
|
Every primitive subcommand carries a cost tier (\`free\` / \`low\` / \`high\` /
|
|
62819
62816
|
\`very-high\`). \`vibe schema --list\` exposes the tier as JSON, and each
|
|
62820
62817
|
\`vibe <group> <sub> --help\` page shows it as a colored footer. Use
|
|
62821
|
-
\`vibe doctor --test-keys\` before kicking off any high-cost orchestrator
|
|
62818
|
+
\`vibe doctor --test-keys\` before kicking off any high-cost orchestrator -
|
|
62822
62819
|
a single bad key wastes time and money.
|
|
62823
62820
|
|
|
62824
62821
|
## Cross-command primitives
|
|
@@ -62906,9 +62903,10 @@ var META = {
|
|
|
62906
62903
|
title: "Scene authoring with vibe",
|
|
62907
62904
|
summary: "Author per-scene HTML compositions and render to MP4 (BUILD flow)",
|
|
62908
62905
|
steps: [
|
|
62909
|
-
'Run `vibe init <dir> --visual-style "<style name>"` to scaffold the project
|
|
62906
|
+
'Run `vibe init <dir> --visual-style "<style name>"` to scaffold the project.',
|
|
62907
|
+
"Run `vibe scene install-skill` unless your agent already has the `hyperframes` skill; `vibe doctor` tells you which.",
|
|
62910
62908
|
"Edit `STORYBOARD.md` with per-beat YAML cues (narration / backdrop / duration).",
|
|
62911
|
-
"Read
|
|
62909
|
+
"Read `.agents/skills/hyperframes/SKILL.md` for the framework rules and `DESIGN.md` for the visual-identity hard-gate.",
|
|
62912
62910
|
"Run `vibe build <dir>`. With an agent host detected, the CLI emits a `needs-author` plan; the host agent authors each `compositions/scene-<id>.html` and re-invokes to render.",
|
|
62913
62911
|
"Run `vibe build <dir> --stage sync` to assemble index.html, `vibe scene lint <dir> --fix` to validate, then `vibe render <dir>` to produce the MP4."
|
|
62914
62912
|
],
|
|
@@ -62927,7 +62925,7 @@ var META = {
|
|
|
62927
62925
|
title: "YAML pipelines (Video as Code)",
|
|
62928
62926
|
summary: "Author and run reproducible multi-step video workflows",
|
|
62929
62927
|
steps: [
|
|
62930
|
-
"Sketch the workflow as YAML
|
|
62928
|
+
"Sketch the workflow as YAML - `name`, `description`, then `steps:` with `id` + `action` + inputs/outputs.",
|
|
62931
62929
|
"Reference previous step outputs via `$<step-id>.output` (or `$<step-id>.result.<field>` for structured returns).",
|
|
62932
62930
|
"Run `vibe run pipeline.yaml --dry-run` to see the resolved graph + cost estimate before spending API budget.",
|
|
62933
62931
|
"Add a `budget:` block (tokens / cost_usd / max_tool_errors) to cap expensive runs.",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeframe/cli",
|
|
3
|
-
"version": "0.113.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.113.29",
|
|
4
|
+
"description": "Frontier AI video generation for coding agents - Seedance, Runway, Veo, and Kling on your own keys, behind a hard cost cap",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -12,13 +12,21 @@
|
|
|
12
12
|
"bugs": {
|
|
13
13
|
"url": "https://github.com/vericontext/vibeframe/issues"
|
|
14
14
|
},
|
|
15
|
+
"homepage": "https://vibeframe.ai",
|
|
15
16
|
"keywords": [
|
|
16
17
|
"vibeframe",
|
|
17
18
|
"cli",
|
|
18
|
-
"video
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
19
|
+
"ai-video",
|
|
20
|
+
"video-generation",
|
|
21
|
+
"text-to-video",
|
|
22
|
+
"image-to-video",
|
|
23
|
+
"seedance",
|
|
24
|
+
"runway",
|
|
25
|
+
"veo",
|
|
26
|
+
"kling",
|
|
27
|
+
"ai-agent",
|
|
28
|
+
"mcp",
|
|
29
|
+
"ffmpeg"
|
|
22
30
|
],
|
|
23
31
|
"type": "module",
|
|
24
32
|
"bin": {
|
|
@@ -83,8 +91,8 @@
|
|
|
83
91
|
"tsx": "^4.21.0",
|
|
84
92
|
"typescript": "^5.3.3",
|
|
85
93
|
"vitest": "^1.2.2",
|
|
86
|
-
"@vibeframe/ai-providers": "0.113.
|
|
87
|
-
"@vibeframe/core": "0.113.
|
|
94
|
+
"@vibeframe/ai-providers": "0.113.29",
|
|
95
|
+
"@vibeframe/core": "0.113.29"
|
|
88
96
|
},
|
|
89
97
|
"engines": {
|
|
90
98
|
"node": ">=20"
|