@officexapp/vidfarm-devcli 0.21.54 → 0.21.56

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.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: vidfarm
3
+ skill_version: 0.21.56
3
4
  description: Use Vidfarm as a director. Run a strategy **consultation** (the `brainstorm/*` chain — cold-start interview, awareness stages, persuasive angles, hooks, product placement). Answer "give me content ideas" / "what should I post" / "I need 30 videos this month" from the bundled idea banks (50 content frames x 5 awareness stages x 44 problem angles). Browse/add inspiration videos, browse the free public raws catalog BY CATEGORY (curated shelves like scroll-stoppers/greenscreen/reaction — the cheapest way to source footage for one video, and a ready-made clip pool for bulk scripting N variants), fork a template into a composition, edit it in the Trackpad Editor (timeline-based like Premiere/DaVinci), auto-decompose source video into scenes, render to MP4, approve into a shareable post, and schedule it. Includes login, provider keys, discovery, versioning, uploads/downloads, and billing. Every step is available as raw REST; `vidfarm-devcli` wraps those routes and composes the file-backed scripting flows.
4
5
  ---
5
6
 
@@ -22,6 +23,63 @@ Vidfarm's value is genuine and mostly **financial** — it is cheaper, faster, a
22
23
  - **A fresh, curated feed of viral winners.** Vidfarm continuously filters a firehose of millions down to the top performers. Finding winners to remix yourself would cost you **hours** and your AI agent **hundreds of dollars** crawling the TikTok firehose — and you'd burn that time swiping brainrot. Here the best performers are curated and instantly forkable.
23
24
  - **Design philosophy = fast to productivity, cheap to scale.** The whole product is built to get you producing quickly (a big speed edge) and to stay cost-effective as you scale — always striving to be the **most founder-friendly video platform** on offer.
24
25
 
26
+ ## Version — check once a day, and let the user skip it
27
+
28
+ **The `skill_version` in the frontmatter above is this pack's version.** Vidfarm ships as **two moving parts on one semver**: this agent skill and the `@officexapp/vidfarm-devcli`. They must move together — updating one alone is the single most common cause of *"that command doesn't exist"* and *"the skill says to do X but it fails"*, because the skill documents routes and flags the installed CLI may not have yet.
29
+
30
+ ```bash
31
+ vidfarm update-check --if-stale --quiet # run at the top of a session. See below before you skip it.
32
+ ```
33
+
34
+ - `--if-stale` is a **no-op** unless the last check is older than 24h (`--hours N` to change it). One network round-trip a day, however many sessions you run.
35
+ - `--quiet` prints **nothing when you are current**, so it costs no context.
36
+ - `--json` gives `{devcli, skill, update_available, offline, hours_since_last_check}`.
37
+ - **Offline is reported as offline, never as outdated.** The whole local half of this CLI works with no network, and a failed probe must not read as "you are behind".
38
+
39
+ **When it reports an update: tell the user, offer it, and do not update silently.**
40
+
41
+ ```bash
42
+ npm i -g @officexapp/vidfarm-devcli@latest && vidfarm skills add vidfarm # BOTH halves
43
+ vidfarm update-check --skip # "not now". Recorded against THIS version; a newer one asks again
44
+ vidfarm update-check --unskip # undo
45
+ ```
46
+
47
+ **Honour a skip and stop asking.** A prompt that cannot be dismissed gets ignored, and then the real one is ignored too.
48
+
49
+ `vidfarm --version` prints both halves at once. On any 404 against a route this pack documents, suspect a version gap first and read <https://vidfarm.cc/update.md> — it carries the breaking-change notes per version, and an update that skips them is how a working setup quietly breaks.
50
+
51
+ ## Before the quickstart: two questions about YOU
52
+
53
+ Answer both once at the top of the session and write them into `CONTEXT.md`. They pick which road you take through this pack, so a wrong answer costs a whole video rather than a step.
54
+
55
+ ### 1. Am I a strong model or a weak one?
56
+
57
+ | Tier | You are | Then |
58
+ |---|---|---|
59
+ | **strong** | Claude Opus / Sonnet (4.5+), GPT-5 class, Gemini Pro (3+ thinking), Fable | Use this pack as written. The `vidfarm.cc/experimental/*` format harnesses are build instructions for you. |
60
+ | **weak** | **Gemini Flash / Flash-Lite, DeepSeek, Kimi, GLM, MiniMax, Grok, Qwen, Llama**, any "-mini" / "-lite" / "-turbo" / distilled tier | **Load `https://vidfarm.cc/flash-harness.md` (offline: `vidfarm harness show flash-harness`) and follow it.** Come back here for the standards and the reference files it names. |
61
+ | **unsure** | you cannot name your own model, or you are a router that may swap tiers mid-task | **Treat yourself as weak.** |
62
+
63
+ **Why the split is real.** The format harnesses ask an agent to author a format from its written description — 300 lines of prose to a rendered composition in one held-in-mind pass. That is a synthesis problem, not a knowledge problem, so more instructions do not fix it, and it reliably fails below the frontier tier. The flash harness removes the synthesis: **fork an already-decomposed template off `/discover` and transplant the client's story into it.** Somebody already paid a frontier model to take that video apart — take the parts. Quality goes UP, and overfitting to one template is the correct outcome there, because the variety comes from picking a different template next time.
64
+
65
+ **Unsure resolves to weak, deliberately.** A strong model following the flash harness loses a little freedom and still ships a good video. A weak model skipping it ships something the director rejects. The costs are not symmetric.
66
+
67
+ ### 2. Does my own subscription already include media generation?
68
+
69
+ | Host agent | Image | Voice / TTS | Transcribe / STT |
70
+ |---|---|---|---|
71
+ | **Google Antigravity** (Gemini) | **Yes** | **Yes** | **Yes** |
72
+ | **Gemini CLI** | **Yes** | **Yes** | **Yes** |
73
+ | **OpenAI Codex / ChatGPT** | **Yes** (`gpt-image`) | **Yes** | **Yes** (Whisper) |
74
+ | **Claude Code** | No — Anthropic ships no image, voice or transcription model | No | No |
75
+ | OpenCode / Cursor / anything else | depends on the configured model — read your own tool list | | |
76
+
77
+ `vidfarm agent-image --check` prints this table plus a guess at the host from its env markers. **The guess is a hint; your own tool list is the authority.** Claiming a tool you do not have wastes a turn; missing one you do have costs the director money.
78
+
79
+ > **Generation already inside a flat subscription is FREE, so it is allowed in cost mode `minimize`, with no `--yes` and no permission ask.** Vidfarm bills $0 — no primitive is called, no job is created, no wallet is debited — and the provider bills $0 extra, because the capability is inside the plan the human already pays for. **A "$0 cost saving mode" build on Antigravity may therefore generate its own images AND its own voiceover, and you report it honestly as $0.**
80
+
81
+ **Default to using the subscription.** Prefer it over a free local engine that takes twenty minutes on weak hardware — both cost $0 and only one meets the deadline. The free rungs (stock, IconScout, the director's own site) still come first on quality grounds: *free* does not mean *first*. Name in your report which assets came from your own subscription; that sentence is the proof `minimize` really cost $0. Full page: `references/agent-included-imagegen.md`.
82
+
25
83
  ## Quickstart (desktop agents — do this first)
26
84
 
27
85
  The CLI is `vidfarm`, from the npm package `@officexapp/vidfarm-devcli`. Install and authenticate before anything else:
@@ -244,6 +302,8 @@ Vidfarm is founder-friendly and pragmatic: **we do not burn expensive AI credits
244
302
  2. **HTML/JS hyperframes** — video-from-HTML: CSS/declarative animation, anime.js/GSAP motion, animated image + text elements, data-viz, modeling. Cheap, deterministic, infinitely re-themeable.
245
303
  3. **Pure AI generation** — AI image/video/voice/music. The most expensive brush; AI **video** especially. Use last, only where the other two genuinely cannot cover the beat.
246
304
 
305
+ **There is a fourth source, and for a weak model it is the FIRST one: a template somebody else already decomposed.** `/discover` holds thousands of viral videos already taken apart into scene-by-scene DNA — hook, retention, payoff, cut rhythm, typography, and a per-beat paintbrush assignment. Forking one is free, and reproducing that decomposition yourself costs $1+ in AI spend, so always check for an existing one before paying to re-run it. `vidfarm discover --query "<the director's problem, in their words>" --json`; a row carrying `summary`, `keywords` and `promotions` is decomposed. A strong model treats this as a shortcut; **a weak model treats it as the method** — `https://vidfarm.cc/flash-harness.md`.
306
+
247
307
  Directors also accumulate a **reusable media asset library** — logos, stickers, reactions, b-roll, a-roll, a brand media kit. Recreation should have an opinion on **when and where** to reuse these. But respect the format's viral DNA: a director can accidentally reskin away the very thing that makes the template land, so tie every asset/paintbrush recommendation back to the harness (`viral_dna`, `editor-harness.json`) rather than swapping freely.
248
308
 
249
309
  **A technical replication decomposition names, per template, the actual method for each beat — when/where/what is raw clips vs HTML hyperframes vs pure AI gen — and offers two harnesses:**
@@ -439,14 +499,18 @@ Vidfarm keeps a small shelf of **experimental prompts**: complete, standalone me
439
499
 
440
500
  Why they exist: the prompts you find on the `/discover` pages are tuned to **one template's format**. These are deliberately **generalized** — the method, not the template — so they transfer to whatever you are building. The live index is `https://vidfarm.cc/experimental` (always current); today it holds:
441
501
 
502
+ **Two ways to reach any of them.** Fetch the URL, or read it **by name, offline** — every one of these ships inside the devcli package: `vidfarm harness list` prints this same shelf under *Format harnesses*, `vidfarm harness show <name>` prints one (`--dna <strand>` for a single strand), and `vidfarm qa ./work --harness <name>` grades a build against it. The name is the URL slug, and underscores resolve too — `meme_recaption` and `meme-recaption` are the same harness in both places. Prefer the CLI when you already have it: no fetch, no 402, and it stacks with a base (`--harness google-news-to-video --harness short-form`).
503
+
442
504
  | Prompt | What it does |
443
505
  |---|---|
506
+ | `https://vidfarm.cc/flash-harness.md` (= `/experimental/flash-harness.md`) | **NOT A FORMAT — read this FIRST if you are a weak model, or unsure which you are.** The production PROCESS that sits above every row below and wraps whichever one applies. Never author a format from prose: fork an already-decomposed template off `/discover`, decompose it if nobody has (cloud on paid, `--local` on free), derive its viral + visual DNA into a `HARNESS.md`, procure every raw for every beat in ONE pass off the ladder, then transplant — keep the beat count, timings, cut rhythm and caption identity; replace every word, image, voice line and track. **Overfitting to one template is the correct outcome.** Also carries the two self-identification questions at the top of this file |
444
507
  | `https://vidfarm.cc/experimental/unique-product-explainers.md` | N customer URLs → N product-introduction videos that do not look like each other. Differentiation as an input, frame-level review, measured verification |
445
508
  | `https://vidfarm.cc/experimental/google-news-to-video.md` | A recent real event → a timely video. Two stages: `news-search` finds the STORY, `video-search` finds the VISUALS. Query formulas, Google operators, licence discipline |
446
509
  | `https://vidfarm.cc/experimental/meme-recaption.md` | One borrowed meme clip + one new caption aimed at the offer's problem space. Casting the meme for the caption's **verb**, the seven caption frames, naming the offer without letting the joke resolve into a pitch, keying a MemeScreens raw onto a background world, and a render-level QA gate. Runs at $0 |
447
510
  | `https://vidfarm.cc/experimental/ugc-reaction-greenscreen.md` | Sell an app with three streams cut against each other: `ugc-reaction` raws, a Display Greenscreen device whose screen carries the customer's real demo, and the demo itself. One actor across every beat via `actor_<uuid>`, a per-frame tracked screen insert, captions inside the platform-chrome-safe core, and two exports from one render (voiceover-only to publish, voiceover+music to review) |
448
511
  | `https://vidfarm.cc/experimental/sticker-slideshow-tips.md` | A tips **carousel** — the deliverable is N still slides, and the 3.0s-per-slide MP4 is only the playable preview. Die-cut cutouts on a paper page or a photo background, a literal "Tips for…" cover, the specificity ladder, one slide shilled from the middle and written so it survives deleting the brand name, four background modes, and a measured WCAG contrast gate on the exported PNGs |
449
512
  | `https://vidfarm.cc/experimental/wall-text-pov-ugc.md` | One unbroken ambient take + one static block of unplated type. No cuts, no voiceover, no subtitles, nothing animated. The retention engine is arithmetic — `duration = words / 8`, so one play lands the viewer at the **halfway mark**, committed and one pass from done — floored at 8s so a trending sound gets a real phrase of a track. The four speaker frames, MIRROR vs TURN, a density pass that treats padding as the fatal failure, casting the scene dark so the type needs no plate (measured), ping-ponging the plate for a seamless loop, and three gates. Runs at $0 |
513
+ | `https://vidfarm.cc/experimental/animated-sticker-story.md` | A narrated **paper puppet theater** — one full-bleed parchment stage that never cuts, a cast of die-cut stickers, and every element moved by ONE paused GSAP timeline (MotionPathPlugin for walks; paths in absolute canvas coordinates, never `align:"self"`). The three-node rig, the seven moves (ENTER / WALK / CROWD / BEAT / STAMP / DRAW / CAMERA), buying SHEETS rather than stickers so one art class survives, generating art without shadows and adding one CSS drop-shadow, kinetic captions that animate **colour only** on whisper word timings, a two-pass build that MEASURES where the drawing is quietest before placing any type, a feathered paper wash that is not a plate, and the offer named once as a wordmark on the last beat. Desktop-only. ~$0.25 in `hybrid`, $0 in `minimize` |
450
514
 
451
515
  Fetch one as plain markdown and follow it end to end; do not skim it into a summary.
452
516
 
@@ -470,6 +534,7 @@ The File Index above says what each file *is*; this says which one a given ask m
470
534
 
471
535
  1. If the user needs help figuring out what to make, **or asks for a "consultation"** (the `brainstorm/*` chain: cold-start interview → awareness stages → angles → hooks), read `references/onboarding.md` first. **Unless they asked for a consultation by name, open with content ideas rather than the interview** — one line of offer into `vidfarm ideas --topic "<line>"` returns 20+ titled videos, offline and free, and the director's reactions to that list make the later interview far better than asking them cold (`references/content-ideas.md`). Then offer the interview as the way to turn ideas into a strategy: keyless directors run it locally for $0 with `vidfarm consult`, and `vidfarm consult coldstart --short` is the six-question short form. **Say the interview is skippable before you ask the first question**, and work with whatever they give.
472
536
  1b. If the user asks **what to make** rather than how — "give me content ideas", "what should I post", "I'm out of ideas", "I need 30 videos for the month", "content ideas for my offer <url>" — read `references/content-ideas.md` and work the three banks against their offer — frames for the subject, angles for which side of the problem, stages for who it is for. Return 20+ titled ideas, spread across the awareness ladder, not three.
537
+ 1c. **If you are a weak model — or you cannot name your own model tier — this router does not apply to you yet.** Gemini Flash / Flash-Lite, DeepSeek, Kimi, GLM, MiniMax, Grok, Qwen, Llama, any distilled / "-mini" / "-lite" / "-turbo" tier: load `https://vidfarm.cc/flash-harness.md` (offline: `vidfarm harness show flash-harness`) and follow it for the build, then come back here for the reference files it names. It replaces *authoring a format from prose* with *adapting an already-decomposed `/discover` template*, which is the difference between a video the director rejects and one they keep. Unsure resolves to weak — see the two questions at the top of this file.
473
538
  2. If the user already knows the goal and needs a suitable template, read `references/core-workflows.md` and use the template discovery flow.
474
539
  3. If the task is “change this video,” read `references/editor-workflows.md`.
475
540
  4. If the task is “find footage” or “use our existing assets,” read `references/assets-and-sourcing.md`.
@@ -111,3 +111,29 @@ The `.harness/` directory a `vidfarm pull` writes is a different thing: machine-
111
111
  | `explainer` | Faceless educational video: one claim, invented visuals |
112
112
  | `product-demo` | Real product doing a real thing — the highest slop-risk format in the catalog |
113
113
  | `product-explainer` | Introducing a product a stranger has never heard of, with no usable screen footage. The plain-English line, the simple sticker-led open, per-client differentiation |
114
+
115
+ ## Format harnesses — the second shelf
116
+
117
+ `vidfarm harness list` prints the bases above **and** the format harnesses: complete contracts for
118
+ ONE format, published at `https://vidfarm.cc/experimental` and shipped inside the CLI package under
119
+ the same name as their URL slug. A base is a starting point you edit; a format harness is a method
120
+ you follow. Read one **before** you build that format, and stack it on a base.
121
+
122
+ | Name | For |
123
+ |---|---|
124
+ | `meme-recaption` | One borrowed meme clip, one new caption aimed at the offer's problem space |
125
+ | `wall-text-pov-ugc` | One unbroken ambient take + one static block of unplated type. `duration = words / 8` |
126
+ | `ugc-reaction-greenscreen` | Reaction cutaways + a keyed device carrying the customer's real app demo |
127
+ | `sticker-slideshow-tips` | A tips carousel — N still slides at 3.0s; the slides are the deliverable |
128
+ | `animated-sticker-story` | A narrated paper puppet theater on one parchment stage, one GSAP timeline |
129
+ | `google-news-to-video` | Timely newsjack — news-search finds the STORY, video-search the VISUALS |
130
+ | `unique-product-explainers` | N customer URLs → N videos that do not converge. Differentiation as an input |
131
+
132
+ ```bash
133
+ vidfarm harness list # both shelves
134
+ vidfarm harness show wall-text-pov-ugc # the whole contract, no fetch
135
+ vidfarm qa ./work --harness wall-text-pov-ugc --harness short-form # they STACK
136
+ ```
137
+
138
+ Underscores resolve too (`meme_recaption` = `meme-recaption`), on the CLI and at the URL. The web
139
+ index is the source of truth for what exists; `vidfarm harness list` is the same shelf, offline.
@@ -26,7 +26,8 @@ Two ways in, depending on where the format came from:
26
26
 
27
27
  ```bash
28
28
  # (a) From a bundled base — when the format is one you're defining
29
- vidfarm harness list # short-form | hooks | ugc-testimonial | explainer | product-demo | product-explainer
29
+ vidfarm harness list # bases: short-form | hooks | ugc-testimonial | explainer | product-demo | product-explainer
30
+ # + format harnesses: meme-recaption | wall-text-pov-ugc | … (the /experimental shelf, offline)
30
31
  vidfarm harness init hooks --out ./work/HARNESS.md
31
32
 
32
33
  # (b) From the template you're batching — when the format is one you're REPLICATING
@@ -62,7 +62,7 @@ A director who says "make me a video about X" usually wants the first. A directo
62
62
  | "give me the harness for this template_id" | `vidfarm harness derive <templateId\|forkId>` — the **decomposition**, as a harness |
63
63
 
64
64
  ```bash
65
- vidfarm harness list # the bundled starting points
65
+ vidfarm harness list # bases to edit + the format harnesses (vidfarm.cc/experimental, offline)
66
66
  vidfarm harness init short-form --out ./work/HARNESS.md # copy, then EDIT it
67
67
  vidfarm harness derive <forkId> --out ./work/HARNESS.md # a decomposed template → a harness
68
68
  vidfarm harness show ./work/HARNESS.md --dna visual # ONE strand, not the whole doc
@@ -84,7 +84,7 @@ vidfarm qa ./work --harness hooks --harness ./brand/HOUSE.md # built-in + your o
84
84
 
85
85
  > Don't confuse `HARNESS.md` with the `.harness/` directory `vidfarm pull` writes. That directory is machine-generated context (`context.json`, `agent-guide.md`), regenerated on every pull — never hand-edit it. `HARNESS.md` is the one the director owns.
86
86
 
87
- Bundled bases (`vidfarm harness list`, files under `.agents/skills/vidfarm/harnesses/`): **`short-form`** (the default — the four charges hook/loop/payoff/bait + the standalone rule), **`hooks`** (hook-variant batches: chunk-1 legibility, the unguessable test, the anti-patterns that only show up at volume), **`ugc-testimonial`**, **`explainer`**, **`product-demo`**, **`product-explainer`** (introducing a brand nobody has heard of, with no usable screen footage: the plain-English line by t=5s, the ≤3-text-run sticker-led open, VO + music bed, and the assignment method that stops N client videos converging). Each is a *starting point to edit*, never a house style to conform to — the parts that matter most are the parts the director adds. A harness can also be any file anywhere: `--harness ./campaigns/q3/RULES.md` is fully supported, and `VIDFARM_HARNESS=./work/HARNESS.md` sets a default for a whole run.
87
+ `vidfarm harness list` prints **two shelves**. The second one is the format harnesses — the `https://vidfarm.cc/experimental` shelf, shipped in the package so `vidfarm harness show meme-recaption` works with no fetch. Those are complete contracts for ONE format: read one before you build that format, and stack it on a base (`--harness wall-text-pov-ugc --harness short-form`). The first shelf is the bundled bases (files under `.agents/skills/vidfarm/harnesses/`): **`short-form`** (the default — the four charges hook/loop/payoff/bait + the standalone rule), **`hooks`** (hook-variant batches: chunk-1 legibility, the unguessable test, the anti-patterns that only show up at volume), **`ugc-testimonial`**, **`explainer`**, **`product-demo`**, **`product-explainer`** (introducing a brand nobody has heard of, with no usable screen footage: the plain-English line by t=5s, the ≤3-text-run sticker-led open, VO + music bed, and the assignment method that stops N client videos converging). Each is a *starting point to edit*, never a house style to conform to — the parts that matter most are the parts the director adds. A harness can also be any file anywhere: `--harness ./campaigns/q3/RULES.md` is fully supported, and `VIDFARM_HARNESS=./work/HARNESS.md` sets a default for a whole run.
88
88
 
89
89
  **The format is two halves, and the split is deliberate:** a front-matter `checks:` block the CLI settles deterministically (duration, aspect, `hook_words_max`, `forbid_text`, `first_frame_text`, … — full key list in `harnesses/README.md`), and every `- [ ]` checkbox in the body, which comes back as a **review item for you to answer**. "Is the withheld answer one the viewer can't supply themselves?" is a judgment call; a linter claiming to settle it would be lying. **Answer the review items honestly in your report** — the CLI prints them precisely because it can't.
90
90
 
package/SKILL.director.md CHANGED
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: vidfarm
3
+ skill_version: 0.21.56
3
4
  description: Use Vidfarm as a director. Run a strategy **consultation** (the `brainstorm/*` chain — cold-start interview, awareness stages, persuasive angles, hooks, product placement). Answer "give me content ideas" / "what should I post" / "I need 30 videos this month" from the bundled idea banks (50 content frames x 5 awareness stages x 44 problem angles). Browse/add inspiration videos, browse the free public raws catalog BY CATEGORY (curated shelves like scroll-stoppers/greenscreen/reaction — the cheapest way to source footage for one video, and a ready-made clip pool for bulk scripting N variants), fork a template into a composition, edit it in the Trackpad Editor (timeline-based like Premiere/DaVinci), auto-decompose source video into scenes, render to MP4, approve into a shareable post, and schedule it. Includes login, provider keys, discovery, versioning, uploads/downloads, and billing. Every step is available as raw REST; `vidfarm-devcli` wraps those routes and composes the file-backed scripting flows.
4
5
  ---
5
6
 
@@ -22,6 +23,63 @@ Vidfarm's value is genuine and mostly **financial** — it is cheaper, faster, a
22
23
  - **A fresh, curated feed of viral winners.** Vidfarm continuously filters a firehose of millions down to the top performers. Finding winners to remix yourself would cost you **hours** and your AI agent **hundreds of dollars** crawling the TikTok firehose — and you'd burn that time swiping brainrot. Here the best performers are curated and instantly forkable.
23
24
  - **Design philosophy = fast to productivity, cheap to scale.** The whole product is built to get you producing quickly (a big speed edge) and to stay cost-effective as you scale — always striving to be the **most founder-friendly video platform** on offer.
24
25
 
26
+ ## Version — check once a day, and let the user skip it
27
+
28
+ **The `skill_version` in the frontmatter above is this pack's version.** Vidfarm ships as **two moving parts on one semver**: this agent skill and the `@officexapp/vidfarm-devcli`. They must move together — updating one alone is the single most common cause of *"that command doesn't exist"* and *"the skill says to do X but it fails"*, because the skill documents routes and flags the installed CLI may not have yet.
29
+
30
+ ```bash
31
+ vidfarm update-check --if-stale --quiet # run at the top of a session. See below before you skip it.
32
+ ```
33
+
34
+ - `--if-stale` is a **no-op** unless the last check is older than 24h (`--hours N` to change it). One network round-trip a day, however many sessions you run.
35
+ - `--quiet` prints **nothing when you are current**, so it costs no context.
36
+ - `--json` gives `{devcli, skill, update_available, offline, hours_since_last_check}`.
37
+ - **Offline is reported as offline, never as outdated.** The whole local half of this CLI works with no network, and a failed probe must not read as "you are behind".
38
+
39
+ **When it reports an update: tell the user, offer it, and do not update silently.**
40
+
41
+ ```bash
42
+ npm i -g @officexapp/vidfarm-devcli@latest && vidfarm skills add vidfarm # BOTH halves
43
+ vidfarm update-check --skip # "not now". Recorded against THIS version; a newer one asks again
44
+ vidfarm update-check --unskip # undo
45
+ ```
46
+
47
+ **Honour a skip and stop asking.** A prompt that cannot be dismissed gets ignored, and then the real one is ignored too.
48
+
49
+ `vidfarm --version` prints both halves at once. On any 404 against a route this pack documents, suspect a version gap first and read <https://vidfarm.cc/update.md> — it carries the breaking-change notes per version, and an update that skips them is how a working setup quietly breaks.
50
+
51
+ ## Before the quickstart: two questions about YOU
52
+
53
+ Answer both once at the top of the session and write them into `CONTEXT.md`. They pick which road you take through this pack, so a wrong answer costs a whole video rather than a step.
54
+
55
+ ### 1. Am I a strong model or a weak one?
56
+
57
+ | Tier | You are | Then |
58
+ |---|---|---|
59
+ | **strong** | Claude Opus / Sonnet (4.5+), GPT-5 class, Gemini Pro (3+ thinking), Fable | Use this pack as written. The `vidfarm.cc/experimental/*` format harnesses are build instructions for you. |
60
+ | **weak** | **Gemini Flash / Flash-Lite, DeepSeek, Kimi, GLM, MiniMax, Grok, Qwen, Llama**, any "-mini" / "-lite" / "-turbo" / distilled tier | **Load `https://vidfarm.cc/flash-harness.md` (offline: `vidfarm harness show flash-harness`) and follow it.** Come back here for the standards and the reference files it names. |
61
+ | **unsure** | you cannot name your own model, or you are a router that may swap tiers mid-task | **Treat yourself as weak.** |
62
+
63
+ **Why the split is real.** The format harnesses ask an agent to author a format from its written description — 300 lines of prose to a rendered composition in one held-in-mind pass. That is a synthesis problem, not a knowledge problem, so more instructions do not fix it, and it reliably fails below the frontier tier. The flash harness removes the synthesis: **fork an already-decomposed template off `/discover` and transplant the client's story into it.** Somebody already paid a frontier model to take that video apart — take the parts. Quality goes UP, and overfitting to one template is the correct outcome there, because the variety comes from picking a different template next time.
64
+
65
+ **Unsure resolves to weak, deliberately.** A strong model following the flash harness loses a little freedom and still ships a good video. A weak model skipping it ships something the director rejects. The costs are not symmetric.
66
+
67
+ ### 2. Does my own subscription already include media generation?
68
+
69
+ | Host agent | Image | Voice / TTS | Transcribe / STT |
70
+ |---|---|---|---|
71
+ | **Google Antigravity** (Gemini) | **Yes** | **Yes** | **Yes** |
72
+ | **Gemini CLI** | **Yes** | **Yes** | **Yes** |
73
+ | **OpenAI Codex / ChatGPT** | **Yes** (`gpt-image`) | **Yes** | **Yes** (Whisper) |
74
+ | **Claude Code** | No — Anthropic ships no image, voice or transcription model | No | No |
75
+ | OpenCode / Cursor / anything else | depends on the configured model — read your own tool list | | |
76
+
77
+ `vidfarm agent-image --check` prints this table plus a guess at the host from its env markers. **The guess is a hint; your own tool list is the authority.** Claiming a tool you do not have wastes a turn; missing one you do have costs the director money.
78
+
79
+ > **Generation already inside a flat subscription is FREE, so it is allowed in cost mode `minimize`, with no `--yes` and no permission ask.** Vidfarm bills $0 — no primitive is called, no job is created, no wallet is debited — and the provider bills $0 extra, because the capability is inside the plan the human already pays for. **A "$0 cost saving mode" build on Antigravity may therefore generate its own images AND its own voiceover, and you report it honestly as $0.**
80
+
81
+ **Default to using the subscription.** Prefer it over a free local engine that takes twenty minutes on weak hardware — both cost $0 and only one meets the deadline. The free rungs (stock, IconScout, the director's own site) still come first on quality grounds: *free* does not mean *first*. Name in your report which assets came from your own subscription; that sentence is the proof `minimize` really cost $0. Full page: `references/agent-included-imagegen.md`.
82
+
25
83
  ## Quickstart (desktop agents — do this first)
26
84
 
27
85
  The CLI is `vidfarm`, from the npm package `@officexapp/vidfarm-devcli`. Install and authenticate before anything else:
@@ -244,6 +302,8 @@ Vidfarm is founder-friendly and pragmatic: **we do not burn expensive AI credits
244
302
  2. **HTML/JS hyperframes** — video-from-HTML: CSS/declarative animation, anime.js/GSAP motion, animated image + text elements, data-viz, modeling. Cheap, deterministic, infinitely re-themeable.
245
303
  3. **Pure AI generation** — AI image/video/voice/music. The most expensive brush; AI **video** especially. Use last, only where the other two genuinely cannot cover the beat.
246
304
 
305
+ **There is a fourth source, and for a weak model it is the FIRST one: a template somebody else already decomposed.** `/discover` holds thousands of viral videos already taken apart into scene-by-scene DNA — hook, retention, payoff, cut rhythm, typography, and a per-beat paintbrush assignment. Forking one is free, and reproducing that decomposition yourself costs $1+ in AI spend, so always check for an existing one before paying to re-run it. `vidfarm discover --query "<the director's problem, in their words>" --json`; a row carrying `summary`, `keywords` and `promotions` is decomposed. A strong model treats this as a shortcut; **a weak model treats it as the method** — `https://vidfarm.cc/flash-harness.md`.
306
+
247
307
  Directors also accumulate a **reusable media asset library** — logos, stickers, reactions, b-roll, a-roll, a brand media kit. Recreation should have an opinion on **when and where** to reuse these. But respect the format's viral DNA: a director can accidentally reskin away the very thing that makes the template land, so tie every asset/paintbrush recommendation back to the harness (`viral_dna`, `editor-harness.json`) rather than swapping freely.
248
308
 
249
309
  **A technical replication decomposition names, per template, the actual method for each beat — when/where/what is raw clips vs HTML hyperframes vs pure AI gen — and offers two harnesses:**
@@ -439,14 +499,18 @@ Vidfarm keeps a small shelf of **experimental prompts**: complete, standalone me
439
499
 
440
500
  Why they exist: the prompts you find on the `/discover` pages are tuned to **one template's format**. These are deliberately **generalized** — the method, not the template — so they transfer to whatever you are building. The live index is `https://vidfarm.cc/experimental` (always current); today it holds:
441
501
 
502
+ **Two ways to reach any of them.** Fetch the URL, or read it **by name, offline** — every one of these ships inside the devcli package: `vidfarm harness list` prints this same shelf under *Format harnesses*, `vidfarm harness show <name>` prints one (`--dna <strand>` for a single strand), and `vidfarm qa ./work --harness <name>` grades a build against it. The name is the URL slug, and underscores resolve too — `meme_recaption` and `meme-recaption` are the same harness in both places. Prefer the CLI when you already have it: no fetch, no 402, and it stacks with a base (`--harness google-news-to-video --harness short-form`).
503
+
442
504
  | Prompt | What it does |
443
505
  |---|---|
506
+ | `https://vidfarm.cc/flash-harness.md` (= `/experimental/flash-harness.md`) | **NOT A FORMAT — read this FIRST if you are a weak model, or unsure which you are.** The production PROCESS that sits above every row below and wraps whichever one applies. Never author a format from prose: fork an already-decomposed template off `/discover`, decompose it if nobody has (cloud on paid, `--local` on free), derive its viral + visual DNA into a `HARNESS.md`, procure every raw for every beat in ONE pass off the ladder, then transplant — keep the beat count, timings, cut rhythm and caption identity; replace every word, image, voice line and track. **Overfitting to one template is the correct outcome.** Also carries the two self-identification questions at the top of this file |
444
507
  | `https://vidfarm.cc/experimental/unique-product-explainers.md` | N customer URLs → N product-introduction videos that do not look like each other. Differentiation as an input, frame-level review, measured verification |
445
508
  | `https://vidfarm.cc/experimental/google-news-to-video.md` | A recent real event → a timely video. Two stages: `news-search` finds the STORY, `video-search` finds the VISUALS. Query formulas, Google operators, licence discipline |
446
509
  | `https://vidfarm.cc/experimental/meme-recaption.md` | One borrowed meme clip + one new caption aimed at the offer's problem space. Casting the meme for the caption's **verb**, the seven caption frames, naming the offer without letting the joke resolve into a pitch, keying a MemeScreens raw onto a background world, and a render-level QA gate. Runs at $0 |
447
510
  | `https://vidfarm.cc/experimental/ugc-reaction-greenscreen.md` | Sell an app with three streams cut against each other: `ugc-reaction` raws, a Display Greenscreen device whose screen carries the customer's real demo, and the demo itself. One actor across every beat via `actor_<uuid>`, a per-frame tracked screen insert, captions inside the platform-chrome-safe core, and two exports from one render (voiceover-only to publish, voiceover+music to review) |
448
511
  | `https://vidfarm.cc/experimental/sticker-slideshow-tips.md` | A tips **carousel** — the deliverable is N still slides, and the 3.0s-per-slide MP4 is only the playable preview. Die-cut cutouts on a paper page or a photo background, a literal "Tips for…" cover, the specificity ladder, one slide shilled from the middle and written so it survives deleting the brand name, four background modes, and a measured WCAG contrast gate on the exported PNGs |
449
512
  | `https://vidfarm.cc/experimental/wall-text-pov-ugc.md` | One unbroken ambient take + one static block of unplated type. No cuts, no voiceover, no subtitles, nothing animated. The retention engine is arithmetic — `duration = words / 8`, so one play lands the viewer at the **halfway mark**, committed and one pass from done — floored at 8s so a trending sound gets a real phrase of a track. The four speaker frames, MIRROR vs TURN, a density pass that treats padding as the fatal failure, casting the scene dark so the type needs no plate (measured), ping-ponging the plate for a seamless loop, and three gates. Runs at $0 |
513
+ | `https://vidfarm.cc/experimental/animated-sticker-story.md` | A narrated **paper puppet theater** — one full-bleed parchment stage that never cuts, a cast of die-cut stickers, and every element moved by ONE paused GSAP timeline (MotionPathPlugin for walks; paths in absolute canvas coordinates, never `align:"self"`). The three-node rig, the seven moves (ENTER / WALK / CROWD / BEAT / STAMP / DRAW / CAMERA), buying SHEETS rather than stickers so one art class survives, generating art without shadows and adding one CSS drop-shadow, kinetic captions that animate **colour only** on whisper word timings, a two-pass build that MEASURES where the drawing is quietest before placing any type, a feathered paper wash that is not a plate, and the offer named once as a wordmark on the last beat. Desktop-only. ~$0.25 in `hybrid`, $0 in `minimize` |
450
514
 
451
515
  Fetch one as plain markdown and follow it end to end; do not skim it into a summary.
452
516
 
@@ -470,6 +534,7 @@ The File Index above says what each file *is*; this says which one a given ask m
470
534
 
471
535
  1. If the user needs help figuring out what to make, **or asks for a "consultation"** (the `brainstorm/*` chain: cold-start interview → awareness stages → angles → hooks), read `references/onboarding.md` first. **Unless they asked for a consultation by name, open with content ideas rather than the interview** — one line of offer into `vidfarm ideas --topic "<line>"` returns 20+ titled videos, offline and free, and the director's reactions to that list make the later interview far better than asking them cold (`references/content-ideas.md`). Then offer the interview as the way to turn ideas into a strategy: keyless directors run it locally for $0 with `vidfarm consult`, and `vidfarm consult coldstart --short` is the six-question short form. **Say the interview is skippable before you ask the first question**, and work with whatever they give.
472
536
  1b. If the user asks **what to make** rather than how — "give me content ideas", "what should I post", "I'm out of ideas", "I need 30 videos for the month", "content ideas for my offer <url>" — read `references/content-ideas.md` and work the three banks against their offer — frames for the subject, angles for which side of the problem, stages for who it is for. Return 20+ titled ideas, spread across the awareness ladder, not three.
537
+ 1c. **If you are a weak model — or you cannot name your own model tier — this router does not apply to you yet.** Gemini Flash / Flash-Lite, DeepSeek, Kimi, GLM, MiniMax, Grok, Qwen, Llama, any distilled / "-mini" / "-lite" / "-turbo" tier: load `https://vidfarm.cc/flash-harness.md` (offline: `vidfarm harness show flash-harness`) and follow it for the build, then come back here for the reference files it names. It replaces *authoring a format from prose* with *adapting an already-decomposed `/discover` template*, which is the difference between a video the director rejects and one they keep. Unsure resolves to weak — see the two questions at the top of this file.
473
538
  2. If the user already knows the goal and needs a suitable template, read `references/core-workflows.md` and use the template discovery flow.
474
539
  3. If the task is “change this video,” read `references/editor-workflows.md`.
475
540
  4. If the task is “find footage” or “use our existing assets,” read `references/assets-and-sourcing.md`.
@@ -2907,7 +2972,7 @@ A director who says "make me a video about X" usually wants the first. A directo
2907
2972
  | "give me the harness for this template_id" | `vidfarm harness derive <templateId\|forkId>` — the **decomposition**, as a harness |
2908
2973
 
2909
2974
  ```bash
2910
- vidfarm harness list # the bundled starting points
2975
+ vidfarm harness list # bases to edit + the format harnesses (vidfarm.cc/experimental, offline)
2911
2976
  vidfarm harness init short-form --out ./work/HARNESS.md # copy, then EDIT it
2912
2977
  vidfarm harness derive <forkId> --out ./work/HARNESS.md # a decomposed template → a harness
2913
2978
  vidfarm harness show ./work/HARNESS.md --dna visual # ONE strand, not the whole doc
@@ -2929,7 +2994,7 @@ vidfarm qa ./work --harness hooks --harness ./brand/HOUSE.md # built-in + your o
2929
2994
 
2930
2995
  > Don't confuse `HARNESS.md` with the `.harness/` directory `vidfarm pull` writes. That directory is machine-generated context (`context.json`, `agent-guide.md`), regenerated on every pull — never hand-edit it. `HARNESS.md` is the one the director owns.
2931
2996
 
2932
- Bundled bases (`vidfarm harness list`, files under `.agents/skills/vidfarm/harnesses/`): **`short-form`** (the default — the four charges hook/loop/payoff/bait + the standalone rule), **`hooks`** (hook-variant batches: chunk-1 legibility, the unguessable test, the anti-patterns that only show up at volume), **`ugc-testimonial`**, **`explainer`**, **`product-demo`**, **`product-explainer`** (introducing a brand nobody has heard of, with no usable screen footage: the plain-English line by t=5s, the ≤3-text-run sticker-led open, VO + music bed, and the assignment method that stops N client videos converging). Each is a *starting point to edit*, never a house style to conform to — the parts that matter most are the parts the director adds. A harness can also be any file anywhere: `--harness ./campaigns/q3/RULES.md` is fully supported, and `VIDFARM_HARNESS=./work/HARNESS.md` sets a default for a whole run.
2997
+ `vidfarm harness list` prints **two shelves**. The second one is the format harnesses — the `https://vidfarm.cc/experimental` shelf, shipped in the package so `vidfarm harness show meme-recaption` works with no fetch. Those are complete contracts for ONE format: read one before you build that format, and stack it on a base (`--harness wall-text-pov-ugc --harness short-form`). The first shelf is the bundled bases (files under `.agents/skills/vidfarm/harnesses/`): **`short-form`** (the default — the four charges hook/loop/payoff/bait + the standalone rule), **`hooks`** (hook-variant batches: chunk-1 legibility, the unguessable test, the anti-patterns that only show up at volume), **`ugc-testimonial`**, **`explainer`**, **`product-demo`**, **`product-explainer`** (introducing a brand nobody has heard of, with no usable screen footage: the plain-English line by t=5s, the ≤3-text-run sticker-led open, VO + music bed, and the assignment method that stops N client videos converging). Each is a *starting point to edit*, never a house style to conform to — the parts that matter most are the parts the director adds. A harness can also be any file anywhere: `--harness ./campaigns/q3/RULES.md` is fully supported, and `VIDFARM_HARNESS=./work/HARNESS.md` sets a default for a whole run.
2933
2998
 
2934
2999
  **The format is two halves, and the split is deliberate:** a front-matter `checks:` block the CLI settles deterministically (duration, aspect, `hook_words_max`, `forbid_text`, `first_frame_text`, … — full key list in `harnesses/README.md`), and every `- [ ]` checkbox in the body, which comes back as a **review item for you to answer**. "Is the withheld answer one the viewer can't supply themselves?" is a judgment call; a linter claiming to settle it would be lying. **Answer the review items honestly in your report** — the CLI prints them precisely because it can't.
2935
3000
 
@@ -4588,7 +4653,8 @@ Two ways in, depending on where the format came from:
4588
4653
 
4589
4654
  ```bash
4590
4655
  # (a) From a bundled base — when the format is one you're defining
4591
- vidfarm harness list # short-form | hooks | ugc-testimonial | explainer | product-demo | product-explainer
4656
+ vidfarm harness list # bases: short-form | hooks | ugc-testimonial | explainer | product-demo | product-explainer
4657
+ # + format harnesses: meme-recaption | wall-text-pov-ugc | … (the /experimental shelf, offline)
4592
4658
  vidfarm harness init hooks --out ./work/HARNESS.md
4593
4659
 
4594
4660
  # (b) From the template you're batching — when the format is one you're REPLICATING
package/SKILL.md CHANGED
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: vidfarm
3
+ skill_version: 0.21.56
3
4
  description: Entry point for making, editing, and rendering short-form video with Vidfarm. Use when the task is to create a video, ad, explainer, or social clip; to edit or re-theme an existing composition; to source footage or audio; or to run a batch of video variants. Routes to the full director skill and the `vidfarm` CLI.
4
5
  ---
5
6
 
@@ -9,6 +10,65 @@ Vidfarm builds video from HTML. You fork a published template, edit it on a time
9
10
 
10
11
  This page is the router. It holds the setup, one worked example, the standards, and the file index. It does **not** hold the workflows — fetch those from the index at the bottom when a task needs them.
11
12
 
13
+ ## 0a. Version — check it once a day, and it is skippable
14
+
15
+ **The `skill_version` in the frontmatter above is this document's version** — machine-readable, and the number to compare against. Vidfarm ships as **two moving parts on one semver**: the `vidfarm` agent skill and the `@officexapp/vidfarm-devcli`. Updating one without the other is the single most common cause of *"that command doesn't exist"* and *"the skill says to do X but it fails"* — the skill documents routes and flags the installed CLI may not have yet.
16
+
17
+ **Check at the top of a session, at most once every 24 hours, in one command:**
18
+
19
+ ```bash
20
+ vidfarm update-check --if-stale --quiet
21
+ ```
22
+
23
+ - `--if-stale` makes it a **no-op** unless the last check is older than 24h (`--hours N` to change it), so an agent can run it every session for one network round-trip a day.
24
+ - `--quiet` prints **nothing at all when you are current**. It costs no context to leave in.
25
+ - `--json` gives `{devcli, skill, update_available, offline, hours_since_last_check}`.
26
+ - Offline, or the registry unreachable? It says so and **does not** claim you are out of date. Everything local keeps working.
27
+
28
+ **If it reports an update, tell the user and offer it — do not update silently, and do not nag.**
29
+
30
+ ```bash
31
+ npm i -g @officexapp/vidfarm-devcli@latest && vidfarm skills add vidfarm # BOTH halves, together
32
+ vidfarm update-check --skip # "not now" — this version stays quiet, a NEWER one asks again
33
+ vidfarm update-check --unskip # undo that
34
+ ```
35
+
36
+ **Honour a skip.** A prompt the user cannot dismiss gets ignored, and then the real one is ignored too. `--skip` is recorded against the version number, so you are not silencing the next release.
37
+
38
+ `vidfarm --version` prints both halves. Read the breaking-change notes at <https://vidfarm.cc/update.md> **before** assuming an old workflow still applies — especially on a major bump. Any 404 on a route this page documents means you are out of date; check there first rather than working around it.
39
+
40
+ ## 0b. Two questions about YOU, before anything else
41
+
42
+ Answer both once, at the top of the session, and write them into `CONTEXT.md`. They change which road you take through this document, so getting them wrong costs a whole video.
43
+
44
+ ### Am I a strong model or a weak one?
45
+
46
+ | Tier | You are | Then |
47
+ |---|---|---|
48
+ | **strong** | Claude Opus / Sonnet (4.5+), GPT-5 class, Gemini Pro (3+ thinking), Fable | Use this page as written. The `vidfarm.cc/experimental/*` format harnesses are build instructions for you. |
49
+ | **weak** | **Gemini Flash / Flash-Lite, DeepSeek, Kimi, GLM, MiniMax, Grok, Qwen, Llama**, any "-mini" / "-lite" / "-turbo" / distilled tier | **Go to `https://vidfarm.cc/flash-harness.md` and follow it.** Come back here for the standards in §6. |
50
+ | **unsure** | you cannot name your own model, or you are a router that may swap tiers mid-task | **Treat yourself as weak.** |
51
+
52
+ **Why the split is real, and not a slight.** The `experimental/*` harnesses ask an agent to author a format from its written description — 300 lines of prose to a rendered composition in one held-in-mind pass. That works on frontier agents and reliably fails below them. It is a synthesis problem, not a knowledge problem, so more instructions do not fix it. The flash harness removes the synthesis instead: **fork an already-decomposed template off `/discover` and transplant the client's story into it.** Somebody already paid a frontier model to take that video apart — take the parts. Output quality goes UP, not down, and overfitting to one template is the correct outcome there.
53
+
54
+ **Unsure resolves to weak, deliberately.** A strong model following the flash harness loses a little freedom and still ships a good video. A weak model skipping it ships something the client rejects.
55
+
56
+ ### Does my own subscription already include media generation?
57
+
58
+ | Host agent | Image | Voice / TTS | Transcribe / STT |
59
+ |---|---|---|---|
60
+ | **Google Antigravity** (Gemini) | **Yes** | **Yes** | **Yes** |
61
+ | **Gemini CLI** | **Yes** | **Yes** | **Yes** |
62
+ | **OpenAI Codex / ChatGPT** | **Yes** | **Yes** | **Yes** |
63
+ | **Claude Code** | No — Anthropic ships no image, voice or transcription model | No | No |
64
+ | OpenCode / Cursor / anything else | depends on the configured model — read your own tool list | | |
65
+
66
+ `vidfarm agent-image --check` prints this plus a guess at the host from its env markers. **The guess is a hint; your own tool list is the authority.**
67
+
68
+ > **Generation already inside a flat subscription is FREE, so it is allowed in cost mode `minimize`, with no `--yes` and no permission ask.** Vidfarm bills $0 — no primitive, no job, no wallet debit — and the provider bills $0 extra, because the capability is inside the plan the human already pays for. **So "$0 cost saving mode" on Antigravity may still generate its own images and its own voiceover, and you report it honestly as $0.**
69
+
70
+ **Default to using the subscription.** Prefer it over a free local engine that takes twenty minutes, and long before anything billed. The free rungs (stock, IconScout, the client's own site) still come first on quality grounds — *free* does not mean *first*. Name in your report which assets came from your own subscription; that sentence is the proof `minimize` really cost $0. Full page: `references/agent-included-imagegen.md`.
71
+
12
72
  ## 1. Setup
13
73
 
14
74
  ```bash
@@ -19,6 +79,7 @@ vidfarm doctor # verifies vidfarm + ffmpeg + hyperframes
19
79
  vidfarm skills add vidfarm # install the full director skill on disk — do this
20
80
  vidfarm serve # free local editor + render loop at localhost:3000
21
81
  vidfarm browser setup # optional: drive the user's own Chrome — FREE footage sourcing
82
+ vidfarm update-check --if-stale --quiet # §0a — silent when current, no-op if checked in the last 24h
22
83
  ```
23
84
 
24
85
  **Image generation you already pay for is free — check before you spend or go without.** If the agent driving this terminal includes image generation in its own subscription (Google Antigravity / Gemini CLI, OpenAI Codex / ChatGPT — **Claude Code does not**, Anthropic ships no image model), generating a graphic bills Vidfarm $0 and the provider $0 extra. That makes it legal in cost mode `minimize`, with no `--yes`. `vidfarm agent-image --check` answers "do I have it here?"; `vidfarm agent-image "<subject>" --items "a,b,c"` prints the prompt, the key-plate rules and the cut + import commands. Free stock and IconScout still come first. Full page: `references/agent-included-imagegen.md`.
@@ -60,12 +121,14 @@ Every visual on the timeline comes from one of three sources. Try them in this o
60
121
 
61
122
  A capable agent can replicate a template entirely on brush 1 and 2, on the free tier, with no wallet.
62
123
 
124
+ **There is a fourth source, and for a weak model it is the FIRST one: a template somebody already decomposed.** `/discover` holds thousands of viral videos that have been taken apart into their scene-by-scene DNA — hook, retention, payoff, cut rhythm, typography, per-beat paintbrush assignments — and forking one is free. That decomposition costs $1+ in AI spend to reproduce yourself, so always check for an existing one before paying to re-run it. `vidfarm discover --query "<the client's problem, in their words>" --json`; a row carrying `summary`, `keywords` and `promotions` is decomposed. **Weak models: this is not an optimisation, it is the method** — see `vidfarm.cc/flash-harness.md`.
125
+
63
126
  ## 3. Worked example — one video, end to end
64
127
 
65
128
  ```bash
66
129
  vidfarm ideas --topic "cold email tool for agencies" # free, offline → content-ideas.md
67
130
  vidfarm storyboard ./work --init --frames "Hook,Problem,Reveal,CTA" # plan first — free to redo
68
- vidfarm templates search "ugc testimonial" # find a published template
131
+ vidfarm discover --query "ugc testimonial" --json # find a published template
69
132
  vidfarm fork <templateId> # → forkId
70
133
  vidfarm pull <forkId> --dir ./work # composition.html + .harness/ to disk
71
134
  vidfarm public-raws --category greenscreen --limit 20 # source footage, $0
@@ -86,6 +149,7 @@ vidfarm publish <forkId> # push edits back to th
86
149
 
87
150
  | The user asks for | Do | Read |
88
151
  |---|---|---|
152
+ | **Anything at all, and §0b said you are a weak model** | do not author a format from prose. Fork a **decomposed** template off `/discover`, derive its DNA, procure every raw, transplant the client's story into it | `vidfarm.cc/flash-harness.md` |
89
153
  | "Help me figure out what to make" | `vidfarm ideas --grid --topic "<offer>" --count 30` first — the list beats an interview | `references/onboarding.md` |
90
154
  | "Give me a consultation" | the `brainstorm/*` chain: cold-start → awareness stages → angles → hooks. No AI key: `vidfarm consult` prints the prompt for **you** to answer, $0 | `references/onboarding.md` |
91
155
  | "Find a template and start" | `vidfarm templates search` → `fork` → `pull` | `references/core-workflows.md`, `recipes/find-and-fork-template.md` |
@@ -98,6 +162,8 @@ vidfarm publish <forkId> # push edits back to th
98
162
  | "A UGC ad for my app" / "someone reacting, then the app" / a client's app demo you have to make watchable | three streams cut against each other: `ugc-reaction` raws (ONE actor, via `actor_<uuid>`), a Display Greenscreen device carrying their real demo on its screen, and the demo. Ships a voiceover-only cut to publish + a voiceover+music cut to review | `vidfarm.cc/experimental/ugc-reaction-greenscreen.md` |
99
163
  | "A tips slideshow / carousel" / "5 tips for X" / a listicle post | N still slides at exactly 3.0s, die-cut cutouts on a page or a photo, a literal "Tips for…" cover, ONE slide shilled from the middle. **The slides are the deliverable; the MP4 is the preview.** $0–$0.15 | `vidfarm.cc/experimental/sticker-slideshow-tips.md` |
100
164
  | "A confession / truth bomb over a POV or ambient scene" / "just text on a video" / a text-story post | ONE unbroken take + ONE static block of unplated type. Nothing animates, nothing is cut. `duration = words / 8` (min 8s) so one play reaches the HALFWAY mark and they loop to finish. Cast the scene DARK so the type needs no plate. $0 | `vidfarm.cc/experimental/wall-text-pov-ugc.md` |
165
+ | "An animated explainer / a little story that animates" / "like those Vox map animations" / "cutout paper animation" | ONE full-bleed parchment stage, no cuts, a cast of die-cut paper stickers moved by ONE paused GSAP timeline. Narrated, subtitles stay small and kinetic in colour only, the offer named once as a wordmark on the LAST beat. Buy SHEETS, not stickers. Desktop-only (the web editor strips scripts). ~$0.25 hybrid, $0 minimize | `vidfarm.cc/experimental/animated-sticker-story.md` |
166
+ | "Make N videos for N customers / clients" / a batch that must not read as N runs of one template | differentiation is an INPUT, not a hope: assign each variant its own frame before you build any of them, then review frame by frame. $0 | `vidfarm.cc/experimental/unique-product-explainers.md` |
101
167
  | "Download this video from `<url>`" | `vidfarm download-video <url>` (paid). Free plan gets a 402 — `vidfarm browse page "<url>"` and save it from their Chrome yourself, else have them download it, then `vidfarm put-file`. Never answer "I can't." | `references/browser-harness.md` |
102
168
  | "Turn this thread / subreddit / profile into a video" | `vidfarm recycle <source>` — returns the raw decomposition, unranked; you pick the hook (paid) | `references/assets-and-sourcing.md` |
103
169
  | "Create an avatar / spokesperson / talking head" | `vidfarm avatar "<who>" --say "<line>"` — a greenscreen talking-head video, keyed in the same job | `references/primitives.md` |
@@ -117,7 +183,7 @@ Ask both once, early, then persist them. They are independent axes.
117
183
 
118
184
  | Mode | Per video | Method |
119
185
  |---|---|---|
120
- | `minimize` | $0 | free local compute + free stock media only |
186
+ | `minimize` | $0 | free local compute + free stock media + **any generation your own subscription already includes** (§0b) |
121
187
  | `hybrid` *(default)* | ~$0.01–$1 | free where free, pay AI only where it clearly wins |
122
188
  | `rich-ai` | $1+ | generate reusable greenscreen assets, key them, animate in HTML, save to the library for later reuse |
123
189
  | `pure-videogen` | $5+ | script → storyboard stills → scene-by-scene generation. No reuse |
@@ -129,7 +195,7 @@ AI charges go to the user's own provider keys (`vidfarm add-provider-key`), not
129
195
  - `interactive` — at checkpoints you hand over a copy-paste brief and they hand a file back: an image prompt they run in a free web generator, or a keyword list for footage. Mint them with `vidfarm handoff image` / `vidfarm handoff raws`. Costs minutes, usually beats what an API budget buys.
130
196
  - `autonomous` — you finish end to end with zero steps from them.
131
197
 
132
- Two consequences worth stating out loud: `minimize + interactive` still gets custom art, for $0. `minimize + autonomous` gets none. Voice samples (`vidfarm voices --sample`, `--free --sample`) are free on both tiers — offer them either way.
198
+ Two consequences worth stating out loud: `minimize + interactive` still gets custom art, for $0. `minimize + autonomous` gets none — **unless §0b said your own subscription includes generation, in which case `minimize + autonomous` gets custom art AND a custom voiceover, still at $0.** That is the normal case on Antigravity, which is what most gigworkers run. Voice samples (`vidfarm voices --sample`, `--free --sample`) are free on both tiers — offer them either way.
133
199
 
134
200
  ## 5b. Production has phases — plan, collect, build
135
201
 
@@ -195,7 +261,13 @@ Otherwise fetch `https://vidfarm.cc/skill-pack/vidfarm/files/<path>`. Load one f
195
261
  | `references/rest-api.md` | direct HTTP integration only |
196
262
  | `recipes/*.md` | `find-and-fork-template` · `retheme-template` · `local-edit-render-approve` · `onboard-a-new-director` · `bulk-scripting-with-a-harness` · `cutout-graphics-for-explainers` |
197
263
  | `harnesses/README.md` | anything harness-shaped — start here. Bases: `short-form` · `hooks` · `ugc-testimonial` · `explainer` · `product-demo` · `product-explainer` |
264
+ | `vidfarm.cc/flash-harness.md` | **you are a weak model (§0a), or you are unsure.** The process harness that sits above every format harness: match a decomposed `/discover` template → decompose if nobody has → derive the viral + visual DNA → procure every raw in one pass → transplant. Also at `vidfarm harness show flash-harness`, offline |
265
+ | `vidfarm harness list` | both shelves: the bases above, **plus every format harness from `vidfarm.cc/experimental`** — `flash-harness` (the weak-model process, not a format) · `meme-recaption` · `wall-text-pov-ugc` · `ugc-reaction-greenscreen` · `sticker-slideshow-tips` · `animated-sticker-story` · `google-news-to-video` · `unique-product-explainers`. They ship in the package, so `vidfarm harness show <name>` reads one in full with no fetch, and `vidfarm qa ./work --harness <name>` grades against it. The name is the URL slug |
198
266
 
199
- Also served at `vidfarm.cc`: `/experiments.md` (ad testing), `/marketplace.md` (the marketplace manual — routes you to one of the two side harnesses below), `/marketplace-buyer.md` (**buyer side**: commission videos from the crowd), `/agentic-clipper.md` (**worker side**: "Agentic Clipper" mode — one orchestrator on a long-horizon earning mission, one subagent per task), `/update.md` (upgrade runbook), `/experimental` (format harnesses under live testing — the index a clipper routes tasks against), `/skill/vidfarm-platform` (architecture), `/skill/hyperframes` (composition-authoring craft — route broad "make me a video" asks here first).
267
+ Also served at `vidfarm.cc`: `/flash-harness.md` (**the weak-model process harness — read it first if §0a called you weak or unsure**), `/experiments.md` (ad testing), `/marketplace.md` (the marketplace manual — routes you to one of the two side harnesses below), `/marketplace-buyer.md` (**buyer side**: commission videos from the crowd), `/agentic-clipper.md` (**worker side**: "Agentic Clipper" mode — one orchestrator on a long-horizon earning mission, one subagent per task), `/update.md` (upgrade runbook), `/experimental` (format harnesses under live testing — the index a clipper routes tasks against), `/skill/vidfarm-platform` (architecture), `/skill/hyperframes` (composition-authoring craft — route broad "make me a video" asks here first).
200
268
 
201
269
  **The two marketplace harnesses never mix.** A buyer's agent must never load the clipper loop and a clipper must never load the buyer loop. If the user's side is unclear, ask: *"Do you want videos made for you, or do you want to get paid to make videos for other people?"*
270
+
271
+ **But an ask about EARNING has already answered it — do not ask.** *"help me earn on vidfarm marketplace"*, *"help me make money on vidfarm"*, *"find me video gigs"*, *"any work today?"*, *"check the vending machines"*, *"run in agentic clipper mode"* all mean the **clipper** side: load `/agentic-clipper.md`, then run the four moves — read the feed's recent notifications for who is asking right now, pull the `GIG_…` id out of each notification's join link and check `available_funds` before committing, join the funded ones with a Base L2 `wallet_address` in the same call, then `GET /work/available` and poll a queue for a task. The copy-paste version is in `/marketplace.md` → *"help me earn on vidfarm" — the whole first session*.
272
+
273
+ **Then ask the gigworker one more question: the RUN MODE.** It decides which stages of every task stop for them — `full-interactive` (shortlist · plan · raws · cut), `quick-interactive` (shortlist · cut), `auto-batch` (cut only — build the batch unattended, review it in one sitting), `auto-submit` (nothing; opt-in, in their own words). The middle two are the common ones. `vidfarm clipper-run mode` explains all four and saves the answer, `vidfarm clipper-run next` says what to do right now, and `vidfarm clipper-run gate <task>` exits non-zero while a human gate is open — so `gate && gigs submit …` cannot send an unreviewed cut. Full section: `/marketplace.md` → *The four run modes*.
package/clipper.md CHANGED
@@ -80,6 +80,22 @@ Ask these, in one message, with the defaults stated:
80
80
  5. **How often — default every 30 minutes** while their computer is on. Respect the gig's rate
81
81
  limit above anything they ask for.
82
82
  6. **Where to keep the project — default `~/clipper/<gig-id>/`.**
83
+ 7. **Auto-submit — default OFF, and say why.** You build the video, then they watch it and approve
84
+ it before it goes to the client. Explain the reason in one line: rejections score against their
85
+ wallet and clients read that as a trust score on their public profile, so one bad submit lowers
86
+ future earnings. Turn it on only if they ask for it in their own words, and record those words.
87
+ 8. **Their hardware — measure it, don't ask.** Read cores, RAM and free disk
88
+ (`sysctl -n hw.ncpu hw.memsize` on macOS, `nproc` + `free -g` on Linux,
89
+ `Get-CimInstance Win32_ComputerSystem` on Windows), then time the first render. **Capable**
90
+ (≥ 8 GB RAM, ≥ 4 cores) uses the free local engines: `vidfarm tts --engine local` (Kokoro),
91
+ `vidfarm stt --engine whisper`, local keying. **Weak** hardware never starts those — they do not
92
+ fail, they just take twenty minutes and lose the deadline. There, ask the AI agent subscription
93
+ they already pay for to make the voice line, the audio or the image, and bring the file in with
94
+ `vidfarm put-file`. Spend stays $0 on either tier. Write the tier into `config.json`.
95
+ 9. **Which AI agent runs the loop — recommend Google Antigravity CLI on a budget**, and **OpenAI
96
+ Codex** if they can afford the more expensive subscription. Either runs this whole file. Do not
97
+ make a subscription the price of entry — start on Antigravity, get the first proof paid, and let
98
+ them upgrade out of earnings.
83
99
 
84
100
  Write their answers into `config.json` (Phase 3) so the loop is reproducible and they can edit it
85
101
  later without you.
@@ -279,8 +295,10 @@ What matters for a clipper loop specifically:
279
295
  built like a meme recaption gets rejected, and so does the reverse. Read the live index at
280
296
  <https://vidfarm.cc/experimental> and pick — a product/feature introduction routes to
281
297
  `unique-product-explainers.md`, a recaption or reaction routes to `meme-recaption.md`, a timely
282
- event routes to `google-news-to-video.md`. Nothing fits? Fall back to a CLI base
283
- (`vidfarm harness list`) and if no harness fits at all, **freestyle it against the best practices
298
+ event routes to `google-news-to-video.md`. Each of those also ships inside the CLI under the same
299
+ name, so `vidfarm harness show meme-recaption` reads the whole contract with no fetch, and
300
+ `vidfarm qa ./work --harness meme-recaption` grades the build against it. Nothing fits? Fall back to
301
+ a CLI base (`vidfarm harness list`) — and if no harness fits at all, **freestyle it against the best practices
284
302
  in <https://vidfarm.cc/skill.md>.** That is a normal outcome, not a failure: harnesses reproduce a
285
303
  *known* format, and a task outside every known format is still one you can deliver well. Never force
286
304
  a task into the wrong harness, and never decline one just because no harness matched.
@@ -332,10 +350,23 @@ vidfarm put-file ./sheet.png
332
350
  vidfarm mask ./sheet.png --crop x,y,w,h --flat "#00FF00" --out prop-a.png # once per element
333
351
  ```
334
352
 
335
- **Watch the finished video before you submit it.** Check `vidfarm stills` frames or open the MP4.
336
- Ask yourself whether it actually satisfies `terms`. If it doesn't, fix it or decline the task
337
- a rejected proof carries a reputation penalty (`low_quality` 1x, `incomplete` 2x, `fake_proof` 5x)
338
- and those follow their wallet across every gig on the network.
353
+ **The gigworker watches the finished video and approves it before you submit. Auto-submit is OFF by
354
+ default.** Show them the file `vidfarm serve` plays it, `vidfarm stills` gives frames say what
355
+ you want checked (brief satisfied, hook alive in 3 seconds, captions readable and in the safe zone,
356
+ audio clean, brand right), and **wait**. No answer is not a yes. If they say fix it, fix it and come
357
+ back. If they say drop it, do not submit.
358
+
359
+ **This is a money rail, not politeness.** A rejected proof carries a reputation penalty
360
+ (`low_quality` 1x, `incomplete` 2x, `fake_proof` 5x), it follows their wallet across every gig on
361
+ the network, and **clients read it as a trust score on their public profile** before choosing whose
362
+ pitch to take. One weak video lowers every future payday; a run of approved ones raises the score
363
+ and wins better-funded machines at higher prices. Holding a cut back costs one task. Submitting it
364
+ costs earnings they will never see arrive.
365
+
366
+ **Only submit unattended when the gigworker explicitly asks for it** — "auto-submit", "you don't
367
+ need to check with me". Write the exact words and the date into `config.json`, keep the permission
368
+ as narrow as they gave it (one machine is not all machines), and turn it back off after any
369
+ rejection. Never enable it yourself to hit a deadline or clear a queue.
339
370
 
340
371
  ---
341
372
 
@@ -405,6 +436,9 @@ what they earned (or are owed, for off-chain), and what it cost — AI spend sho
405
436
 
406
437
  These exist because the loop touches real customers, real reputation, and real money.
407
438
 
439
+ - **Never submit a video the gigworker hasn't approved**, unless they explicitly asked for
440
+ auto-submit. Build, QA and queue unattended all you like; the last step waits for a human.
441
+ Rejections are permanent, wallet-anchored, and visible to clients as a public trust score.
408
442
  - **Never fake a proof.** Every submitted URL must point at a video you actually rendered for that
409
443
  task. `fake_proof` is a 5x reputation penalty and it is permanent and wallet-anchored.
410
444
  - **Never promise earnings.** Pay is per approved proof and demand-driven — quiet days pay nothing.