@growthub/cli 0.8.1 → 0.9.0

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.
Files changed (67) hide show
  1. package/assets/worker-kits/growthub-creative-video-pipeline-v1/.env.example +28 -0
  2. package/assets/worker-kits/growthub-creative-video-pipeline-v1/QUICKSTART.md +118 -0
  3. package/assets/worker-kits/growthub-creative-video-pipeline-v1/SKILL.md +124 -0
  4. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/.env.example +20 -0
  5. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/README.md +33 -0
  6. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/api/pipeline/route.js +27 -0
  7. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/globals.css +203 -0
  8. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/layout.jsx +14 -0
  9. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/page.jsx +131 -0
  10. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/settings/keys/page.jsx +154 -0
  11. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/lib/adapters/env.js +14 -0
  12. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/lib/adapters/generative/index.js +31 -0
  13. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/lib/domain/pipeline.js +30 -0
  14. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/next.config.js +10 -0
  15. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/package-lock.json +17 -0
  16. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/package.json +17 -0
  17. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/postcss.config.mjs +3 -0
  18. package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/vercel.json +5 -0
  19. package/assets/worker-kits/growthub-creative-video-pipeline-v1/brands/NEW-CLIENT.md +21 -0
  20. package/assets/worker-kits/growthub-creative-video-pipeline-v1/brands/_template/brand-kit.md +123 -0
  21. package/assets/worker-kits/growthub-creative-video-pipeline-v1/brands/growthub/brand-kit.md +123 -0
  22. package/assets/worker-kits/growthub-creative-video-pipeline-v1/bundles/growthub-creative-video-pipeline-v1.json +87 -0
  23. package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/adapter-contracts.md +73 -0
  24. package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/governed-workspace-primitives.md +50 -0
  25. package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/pipeline-architecture.md +61 -0
  26. package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/starter-kit-overview.md +33 -0
  27. package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/vercel-deployment.md +42 -0
  28. package/assets/worker-kits/growthub-creative-video-pipeline-v1/examples/pipeline-brief-sample.md +56 -0
  29. package/assets/worker-kits/growthub-creative-video-pipeline-v1/growthub-meta/README.md +9 -0
  30. package/assets/worker-kits/growthub-creative-video-pipeline-v1/growthub-meta/kit-standard.md +24 -0
  31. package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/README.md +9 -0
  32. package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/check-generative-adapter.sh +41 -0
  33. package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/check-pipeline-health.sh +154 -0
  34. package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/run-pipeline.sh +30 -0
  35. package/assets/worker-kits/growthub-creative-video-pipeline-v1/kit.json +154 -0
  36. package/assets/worker-kits/growthub-creative-video-pipeline-v1/output/README.md +23 -0
  37. package/assets/worker-kits/growthub-creative-video-pipeline-v1/output-standards.md +63 -0
  38. package/assets/worker-kits/growthub-creative-video-pipeline-v1/pipeline.manifest.json +83 -0
  39. package/assets/worker-kits/growthub-creative-video-pipeline-v1/runtime-assumptions.md +61 -0
  40. package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/check-deps.sh +63 -0
  41. package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/clone-fork.sh +18 -0
  42. package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/install-skill.sh +10 -0
  43. package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/verify-env.mjs +50 -0
  44. package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/README.md +11 -0
  45. package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/brief-generation/SKILL.md +42 -0
  46. package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/generative-execution/SKILL.md +86 -0
  47. package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/video-edit/SKILL.md +41 -0
  48. package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills.md +302 -0
  49. package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/index.html +12 -0
  50. package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/package-lock.json +20 -0
  51. package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/package.json +20 -0
  52. package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/serve.mjs +41 -0
  53. package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/src/App.jsx +210 -0
  54. package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/src/app.css +194 -0
  55. package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/src/main.jsx +10 -0
  56. package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/vite.config.js +8 -0
  57. package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/edit-plan.md +66 -0
  58. package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/generative-plan.md +83 -0
  59. package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/pipeline-brief.md +129 -0
  60. package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/project.md +68 -0
  61. package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/self-eval.md +67 -0
  62. package/assets/worker-kits/growthub-creative-video-pipeline-v1/validation/e2e-reference.md +166 -0
  63. package/assets/worker-kits/growthub-creative-video-pipeline-v1/validation-checklist.md +56 -0
  64. package/assets/worker-kits/growthub-creative-video-pipeline-v1/workers/creative-video-pipeline-operator/CLAUDE.md +109 -0
  65. package/assets/worker-kits/growthub-creative-video-pipeline-v1/workspace.dependencies.json +26 -0
  66. package/dist/index.js +3032 -1676
  67. package/package.json +2 -2
@@ -0,0 +1,129 @@
1
+ # Pipeline Brief — [CLIENT NAME] / [CAMPAIGN NAME]
2
+ > Stage 1 output. Write this file to `output/<client-slug>/<project-slug>/brief/pipeline-brief.md`.
3
+ > Pull all brand values from `brands/<client-slug>/brand-kit.md`. Do not invent brand detail.
4
+
5
+ ---
6
+
7
+ ## BRAND CONSTRAINTS
8
+
9
+ > ⚠️ This ad must NEVER:
10
+ > - [Pull from brand-kit.md `messaging_guardrails`]
11
+ > - [Pull from brand-kit.md `do_not_attract`]
12
+
13
+ ---
14
+
15
+ ## BRIEF OVERVIEW
16
+
17
+ | Field | Value |
18
+ |---|---|
19
+ | Client | |
20
+ | Campaign | |
21
+ | Date | |
22
+ | Format | (UGC / AI Avatar / Explainer / Performance) |
23
+ | Length | (seconds) |
24
+ | Primary Goal | (Conversion / Awareness / Education) |
25
+ | Hook Variations | (default 5 — A through E) |
26
+ | Scene Count | |
27
+ | Aspect Ratios | (9:16 + 1:1 minimum) |
28
+ | Captions | ON |
29
+ | CTA Offer | |
30
+ | Landing Page | |
31
+
32
+ ---
33
+
34
+ ## SCENE STRUCTURE
35
+
36
+ | Scene | Name | Timecode | Beat |
37
+ |---|---|---|---|
38
+ | 1 | Hook | 0:00–0:05 | N hook variations A–E |
39
+ | 2 | Problem | 0:05–0:15 | Consistent across all hooks |
40
+ | 3 | Solution | 0:15–0:25 | Consistent across all hooks |
41
+ | N | CTA | 0:25–0:30 | Consistent across all hooks |
42
+
43
+ ---
44
+
45
+ ## SCENE 1 — HOOK (N VARIATIONS)
46
+
47
+ > All variations share the same Scene 2–N structure. Only Scene 1 differs.
48
+
49
+ ### Hook A — [Type]
50
+ **Visual:**
51
+ **On-Screen Text:**
52
+ **VO:**
53
+
54
+ ### Hook B — [Type]
55
+ **Visual:**
56
+ **On-Screen Text:**
57
+ **VO:**
58
+
59
+ ### Hook C — [Type]
60
+ **Visual:**
61
+ **On-Screen Text:**
62
+ **VO:**
63
+
64
+ ### Hook D — [Type]
65
+ **Visual:**
66
+ **On-Screen Text:**
67
+ **VO:**
68
+
69
+ ### Hook E — [Type]
70
+ **Visual:**
71
+ **On-Screen Text:**
72
+ **VO:**
73
+
74
+ ---
75
+
76
+ ## SCENES 2–N (CONSISTENT ACROSS ALL HOOK VARIATIONS)
77
+
78
+ ### Scene 2 — [Name]
79
+ **Visual:**
80
+ **On-Screen Text:**
81
+ **VO:**
82
+
83
+ ### Scene 3 — [Name]
84
+ **Visual:**
85
+ **On-Screen Text:**
86
+ **VO:**
87
+
88
+ ### Scene N — CTA
89
+ **Visual:**
90
+ **On-Screen Text:**
91
+ **VO:** `[CTA text from brand kit]`
92
+
93
+ ---
94
+
95
+ ## EDITING GUIDELINES
96
+
97
+ - **Pacing:** Cut every ~3s unless specified otherwise
98
+ - **Music:** [direction]
99
+ - **Captions:** ON — match VO rhythm
100
+ - **Color grade:** [direction]
101
+ - **Aspect ratios:** 9:16 primary, 1:1 secondary
102
+ - **NO list:** [pull from brand-kit.md messaging_guardrails]
103
+
104
+ ---
105
+
106
+ ## APPENDIX — AI GENERATION PROMPTS (OPTIONAL)
107
+
108
+ > These prompts feed Stage 2 of the pipeline. Each prompt maps to one scene / one clip.
109
+ > Keep prompts in this appendix only. Never inline in scene blocks above.
110
+
111
+ ### Video prompt — Scene 1 (Hook A)
112
+
113
+ ```
114
+ [Scene description for video-generation CMS node]
115
+ Brand: [brand name], style: [style from brand kit], no text overlays,
116
+ [aspect ratio], [duration]s
117
+ ```
118
+
119
+ ### Video prompt — Scene 2
120
+
121
+ ```
122
+ [Scene description]
123
+ ```
124
+
125
+ ### Image prompt — [Scene N background / reference]
126
+
127
+ ```
128
+ [Image description]
129
+ ```
@@ -0,0 +1,68 @@
1
+ ---
2
+ # .growthub-fork/project.md — session memory primitive (v1)
3
+ #
4
+ # Seeded by `growthub kit fork register` from this template.
5
+ # Replaceable tokens: {{KIT_ID}} {{FORK_ID}} {{STARTED_AT}} {{SOURCE}} {{SOURCE_REF}}
6
+
7
+ kitId: "{{KIT_ID}}"
8
+ forkId: "{{FORK_ID}}"
9
+ startedAt: "{{STARTED_AT}}"
10
+ source: "{{SOURCE}}"
11
+ sourceRef: "{{SOURCE_REF}}"
12
+ skillManifestVersion: 1
13
+ approvals: []
14
+ selfEvalHistory: []
15
+ subSkillRuns: []
16
+
17
+ # Pipeline state (update after each stage)
18
+ pipelineState:
19
+ stage1Brief:
20
+ status: pending # pending | in_progress | complete
21
+ clientSlug: ""
22
+ projectSlug: ""
23
+ briefPath: ""
24
+ sceneCount: 0
25
+ hookVariations: 0
26
+ completedAt: ""
27
+ stage2Generative:
28
+ status: pending # pending | in_progress | complete
29
+ adapter: "" # growthub-pipeline | byo-api-key
30
+ provider: ""
31
+ artifactCount: 0
32
+ manifestPath: ""
33
+ completedAt: ""
34
+ stage3Edit:
35
+ status: pending # pending | in_progress | complete
36
+ videoUseForkPath: ""
37
+ finalVideoPath: ""
38
+ durationTarget: ""
39
+ qaPass: false
40
+ completedAt: ""
41
+ ---
42
+
43
+ # Project journal — fork `{{FORK_ID}}`
44
+
45
+ Baseline primitive: `{{KIT_ID}}`. Seeded at `{{STARTED_AT}}` from `{{SOURCE}}` (`{{SOURCE_REF}}`).
46
+
47
+ ## How to use this file
48
+
49
+ 1. **Session start.** Read the last 3 entries below + tail 20 events in `.growthub-fork/trace.jsonl`. Update `pipelineState` to reflect actual completion.
50
+ 2. **Stage completion.** Record a dated entry in "Session log" with: stage, client, project, key paths, self-eval outcome.
51
+ 3. **Material change.** Append a dated bullet here AND a typed event to `trace.jsonl`.
52
+ 4. **Self-eval boundary.** Append to `selfEvalHistory`: `attempt`, `criteria`, `outcome`, `notes`.
53
+ 5. **Sub-skill spawn.** Append to `subSkillRuns`: `subSkill`, `startedAt`, `result`.
54
+
55
+ ## Session log
56
+
57
+ <!-- Append entries below, newest at the bottom.
58
+
59
+ ### YYYY-MM-DD HH:mm UTC · creative-video-pipeline-operator
60
+ - **Plan.** What you intend to do this session.
61
+ - **Stage.** Which stage (1/2/3) and what sub-task.
62
+ - **Changes.** What you actually did (each must correspond to a trace event).
63
+ - **Outcome.** Pass / fail / parked. Reference the selfEval criteria checked.
64
+ - **Next.** What the next session should pick up.
65
+
66
+ -->
67
+
68
+ _No sessions recorded yet. This block is populated as the fork is operated._
@@ -0,0 +1,67 @@
1
+ # Self-evaluation template — v1 primitive (Growthub, capability-agnostic)
2
+
3
+ A skill's `selfEval` contract declares **what good looks like** (`criteria[]`) and **the retry ceiling** (`maxRetries`). The agent drives the loop; this file is the pattern the agent follows at every unit of work.
4
+
5
+ The contract is defined in `@growthub/api-contract/skills::SkillSelfEval` and is **capability-agnostic** — the same primitive applies to code edits, copy drafts, CRM rules, API payloads, asset renders, audit passes, and every other domain. The "unit of work" is the smallest reversible change the skill operates on; concrete boundaries are defined in the kit's own `skills.md` operator runbook, not here.
6
+
7
+ ## Loop
8
+
9
+ ```
10
+ for attempt in 1..maxRetries: # default maxRetries = 3
11
+ generate — produce a proposal (whatever the skill produces)
12
+ apply — materialise the proposal against the fork
13
+ self-evaluate — for each criterion in skill.selfEval.criteria:
14
+ check → pass / fail / needs-confirmation
15
+ record — append to project.md (human) + trace.jsonl (machine)
16
+
17
+ if all criteria pass: break
18
+ if attempt == maxRetries: park with needs_confirmation note. Stop.
19
+ ```
20
+
21
+ ## What each attempt writes
22
+
23
+ ### Human row — append to `.growthub-fork/project.md` "Session log"
24
+
25
+ ```md
26
+ ### 2026-04-24 · creative-video-pipeline-operator
27
+ - **Plan.** What you intend to do this unit of work.
28
+ - **Changes.** Material change applied (must correspond to a trace event).
29
+ - **Self-eval.** attempt 2/3 — criterion "<one of skill.selfEval.criteria>" ✗ (<note>). Retrying.
30
+ - **Outcome.** retry-pending / pass / parked.
31
+ - **Next.** What the next attempt (or next session) should pick up.
32
+ ```
33
+
34
+ ### Machine row — append to `.growthub-fork/trace.jsonl`
35
+
36
+ ```json
37
+ {
38
+ "ts": "2026-04-24T00:00:00.000Z",
39
+ "forkId": "<fork-id>",
40
+ "kitId": "growthub-creative-video-pipeline-v1",
41
+ "type": "self_eval_recorded",
42
+ "summary": "attempt 2/3 failed on <criterion>",
43
+ "detail": {
44
+ "skill": "<skill-slug>",
45
+ "attempt": 2,
46
+ "maxRetries": 3,
47
+ "criterion": "<one of skill.selfEval.criteria>",
48
+ "outcome": "fail",
49
+ "notes": "<short explanation>"
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## Hard rules
55
+
56
+ 1. **Never exceed `maxRetries`.** At the ceiling, park with a `needs_confirmation` note and stop.
57
+ 2. **Record every attempt.** Even the first pass.
58
+ 3. **Keep `project.md` and `trace.jsonl` in sync.**
59
+ 4. **Preserve prior entries.** Append-only. Never rewrite history.
60
+
61
+ ## Kit-specific self-eval units
62
+
63
+ | Stage | Unit of work |
64
+ |---|---|
65
+ | Stage 1 — Brief | Completed `pipeline-brief.md` for one creative concept |
66
+ | Stage 2 — Generate | `manifest.json` with one artifact URL per scene |
67
+ | Stage 3 — Edit | `final.mp4` exists, duration ±10% of target, QA pass |
@@ -0,0 +1,166 @@
1
+ # E2E Reference Validation — Creative Video Pipeline
2
+
3
+ This is the **reproducible target** for the end-to-end QA preserved in
4
+ commit `7eb832d` ("ship creative video pipeline worker kit").
5
+
6
+ A new operator (human or agent) should be able to follow this document and
7
+ re-produce a passing run. If you cannot, the kit is not v1-ready.
8
+
9
+ **Reference convention:** [`docs/PIPELINE_KIT_CONTRACT_V1.md`](../../../../../docs/PIPELINE_KIT_CONTRACT_V1.md).
10
+
11
+ ---
12
+
13
+ ## Test inputs
14
+
15
+ | Input | Value |
16
+ |---|---|
17
+ | Test brand | `brands/growthub/brand-kit.md` (shipped in this kit) |
18
+ | Client slug | `growthub` |
19
+ | Project slug | `e2e-reference` |
20
+ | Adapter mode | `growthub-pipeline` (primary) — see "BYOK variant" below |
21
+ | Stage 2 model | `veo-3.1-generate-001` (CMS node `video-generation`) |
22
+
23
+ ---
24
+
25
+ ## Required environment
26
+
27
+ | Var | Required for | Real key required? |
28
+ |---|---|---|
29
+ | `CREATIVE_VIDEO_PIPELINE_GENERATIVE_ADAPTER=growthub-pipeline` | Stage 2 selection | no — string literal |
30
+ | `GROWTHUB_BRIDGE_ACCESS_TOKEN` | Stage 2 hosted execution | yes |
31
+ | `GROWTHUB_BRIDGE_BASE_URL` | Stage 2 hosted execution | yes |
32
+ | `growthub auth whoami --json` returns OK | Stage 2 pre-flight | yes (run `growthub auth login` first) |
33
+ | `VIDEO_USE_HOME` | Stage 3 delegation | yes — must point at a real `video-use` clone |
34
+ | `ELEVENLABS_API_KEY` | Stage 3 transcription | yes |
35
+
36
+ Run `bash helpers/check-pipeline-health.sh` to validate before starting.
37
+
38
+ ---
39
+
40
+ ## Stage 1 — Brief
41
+
42
+ **Input:** `brands/growthub/brand-kit.md`
43
+
44
+ **Sub-skill:** `skills/brief-generation/SKILL.md`
45
+
46
+ **Run:** through the operator (Claude Code, Cursor, etc.) — no shell command.
47
+
48
+ **Expected output:** `output/growthub/e2e-reference/brief/pipeline-brief.md`
49
+
50
+ **Acceptance:**
51
+
52
+ - Brief contains brand-constraints box, scene table, hook variations A–E,
53
+ editing guidelines.
54
+ - AI generation prompts appear in the Appendix only — never inline in scene
55
+ blocks.
56
+ - `.growthub-fork/project.md` has a "Stage 1 Complete — brief-generation"
57
+ entry.
58
+ - `.growthub-fork/trace.jsonl` has a `stage-complete` line for Stage 1
59
+ (and, when v1 trace adoption lands,
60
+ `pipeline_stage_completed`).
61
+
62
+ ---
63
+
64
+ ## Stage 2 — Generate
65
+
66
+ **Input:** Stage 1 brief.
67
+
68
+ **Sub-skill:** `skills/generative-execution/SKILL.md`
69
+
70
+ **Run:**
71
+
72
+ ```bash
73
+ bash helpers/check-generative-adapter.sh
74
+ bash helpers/run-pipeline.sh '<DynamicRegistryPipeline JSON assembled from brief>'
75
+ ```
76
+
77
+ The CLI streams NDJSON `ExecutionEvent` lines (typed by
78
+ `@growthub/api-contract`).
79
+
80
+ **Expected output:** `output/growthub/e2e-reference/generative/manifest.json`
81
+
82
+ ```json
83
+ {
84
+ "kitId": "growthub-creative-video-pipeline-v1",
85
+ "adapter": "growthub-pipeline",
86
+ "executionId": "<uuid from complete event>",
87
+ "createdAt": "<iso>",
88
+ "artifacts": [
89
+ { "id": "...", "type": "video", "provider": "veo", "url": "https://...", "prompt": "..." }
90
+ ]
91
+ }
92
+ ```
93
+
94
+ **Acceptance:**
95
+
96
+ - `manifest.json` is valid JSON.
97
+ - Each entry has `id`, `type`, `provider`, `url`, `prompt`.
98
+ - Artifact count matches scene count in Stage 1 brief.
99
+ - No API keys appear in any artifact file.
100
+ - `.growthub-fork/project.md` has a "Stage 2 Complete — generative-execution"
101
+ entry recording the adapter mode used.
102
+
103
+ ---
104
+
105
+ ## Stage 3 — Edit
106
+
107
+ **Input:** Stage 2 `manifest.json` + Stage 1 `pipeline-brief.md`.
108
+
109
+ **Sub-skill:** `skills/video-edit/SKILL.md`
110
+
111
+ **Run:** via the `VIDEO_USE_HOME` fork. The kit MUST NOT inline video-use
112
+ logic. The handoff is `output/growthub/e2e-reference/final/edit-plan.md`.
113
+
114
+ **Expected output:** `output/growthub/e2e-reference/final/final.mp4`
115
+
116
+ **Acceptance:**
117
+
118
+ - `final.mp4` exists and is playable.
119
+ - Duration within ±10% of the target declared in the edit plan.
120
+ - Audio fades at segment boundaries (~30 ms).
121
+ - Subtitles are applied last.
122
+ - No secrets appear in any output artifact.
123
+
124
+ ---
125
+
126
+ ## BYOK variant
127
+
128
+ To re-run with `byo-api-key`:
129
+
130
+ 1. Set `CREATIVE_VIDEO_PIPELINE_GENERATIVE_ADAPTER=byo-api-key`.
131
+ 2. Set `VIDEO_MODEL_PROVIDER` to `veo` | `fal` | `runway`.
132
+ 3. Set the matching provider key (`GOOGLE_AI_API_KEY` / `FAL_API_KEY` /
133
+ `RUNWAY_API_KEY`).
134
+
135
+ The Stage 2 `manifest.json` shape is **identical** to the
136
+ `growthub-pipeline` adapter — that is the entire point of the adapter
137
+ contract.
138
+
139
+ ---
140
+
141
+ ## What can be mocked
142
+
143
+ | Element | Mockable? | How |
144
+ |---|---|---|
145
+ | Brand kit | yes | use any `brands/<slug>/brand-kit.md` |
146
+ | Stage 1 LLM | yes | the brief stage is operator-driven; any agent can produce it |
147
+ | Stage 2 hosted execution | **no** — uses real provider credits |
148
+ | Stage 2 BYOK | **no** — uses real provider credits |
149
+ | Stage 3 ElevenLabs transcription | **no** — uses real ElevenLabs credits |
150
+ | Stage 3 FFmpeg | yes — `video-use` runs locally |
151
+
152
+ For pure shape validation (no spend), the legacy
153
+ `validation-checklist.md` covers the structural checks without
154
+ provider calls.
155
+
156
+ ---
157
+
158
+ ## Cross-references
159
+
160
+ - [`validation-checklist.md`](../validation-checklist.md) — structural QA
161
+ - [`docs/pipeline-architecture.md`](../docs/pipeline-architecture.md) —
162
+ kit-local architecture
163
+ - [`pipeline.manifest.json`](../pipeline.manifest.json) — machine-readable
164
+ stage map
165
+ - [`workspace.dependencies.json`](../workspace.dependencies.json) —
166
+ external `video-use` dependency declaration
@@ -0,0 +1,56 @@
1
+ # Validation Checklist — Creative Video Pipeline
2
+
3
+ Run before calling the kit v1-ready or before a Vercel deployment.
4
+
5
+ For the **reproducible end-to-end run** (Stages 1–3 against real provider
6
+ keys), follow [`validation/e2e-reference.md`](./validation/e2e-reference.md).
7
+
8
+ ## Environment
9
+
10
+ - [ ] `bash setup/check-deps.sh` passes (FFmpeg, Python 3, pip, git, node)
11
+ - [ ] `node setup/verify-env.mjs` passes
12
+ - [ ] `bash helpers/check-generative-adapter.sh` shows expected adapter and keys
13
+ - [ ] `bash helpers/check-pipeline-health.sh` exits 0 (composes all of the above)
14
+ - [ ] `VIDEO_USE_HOME` resolves to an existing `video-use` clone
15
+
16
+ ## Growthub CLI (growthub-pipeline adapter)
17
+
18
+ - [ ] `growthub auth whoami --json` returns authenticated user
19
+ - [ ] `growthub kit list --family studio` includes `growthub-creative-video-pipeline-v1`
20
+ - [ ] `growthub kit fork status <fork-id>` shows no unexpected drift
21
+
22
+ ## Stage 1 — Brief
23
+
24
+ - [ ] Brand kit exists at `brands/<client-slug>/brand-kit.md`
25
+ - [ ] `pipeline-brief.md` written to `output/<client>/<project>/brief/`
26
+ - [ ] Brief contains: brand constraints box, scene table, hook variations A–E, editing guidelines
27
+ - [ ] AI generation prompts in Appendix only (not inline in scene blocks)
28
+
29
+ ## Stage 2 — Generate
30
+
31
+ - [ ] `output/<client>/<project>/generative/manifest.json` exists and is valid JSON
32
+ - [ ] Each manifest entry has `id`, `type`, `provider`, `url`, `prompt`
33
+ - [ ] No API keys appear in any artifact file
34
+ - [ ] Artifact count matches scene count in brief
35
+
36
+ ## Stage 3 — Edit
37
+
38
+ - [ ] `output/<client>/<project>/final/final.mp4` exists
39
+ - [ ] Duration within ±10% of target from edit plan
40
+ - [ ] Audio fades at segment boundaries (30 ms)
41
+ - [ ] Subtitles applied last
42
+ - [ ] No secrets in any output artifact
43
+
44
+ ## Local shell
45
+
46
+ - [ ] `cd studio && npm install && npm run build` succeeds
47
+ - [ ] `cd apps/creative-video-pipeline && npm install && npm run build` succeeds
48
+ - [ ] Studio Vite shell renders pipeline stage status without errors
49
+ - [ ] Next.js `/settings/keys` page renders adapter config
50
+
51
+ ## Governed primitives
52
+
53
+ - [ ] `.growthub-fork/project.md` has entries for all completed stages
54
+ - [ ] `.growthub-fork/trace.jsonl` has typed events for all material changes
55
+ - [ ] `growthub skills validate` passes
56
+ - [ ] `growthub skills list` shows this kit's SKILL.md tree
@@ -0,0 +1,109 @@
1
+ # Creative Video Pipeline Operator
2
+
3
+ **Kit:** `growthub-creative-video-pipeline-v1`
4
+ **Worker ID:** `creative-video-pipeline-operator`
5
+ **Version:** `1.0.0`
6
+
7
+ ## Role
8
+
9
+ You produce end-to-end video content: a brand-grounded creative brief (Stage 1), generative image/video assets via the growthub pipeline or BYOK provider (Stage 2), and a fully edited final video via the video-use fork (Stage 3). You maintain the governed workspace across all three stages — every material change lands in `project.md` and `trace.jsonl`.
10
+
11
+ ## Required startup
12
+
13
+ 1. Read `skills.md`.
14
+ 2. Read `runtime-assumptions.md`.
15
+ 3. Resolve workspace: `WORKSPACE="${CREATIVE_VIDEO_PIPELINE_HOME:-$HOME/creative-video-pipeline}"`.
16
+ 4. Verify environment: `bash setup/check-deps.sh && node setup/verify-env.mjs`.
17
+ 5. Check generative adapter: `bash helpers/check-generative-adapter.sh`.
18
+ 6. If `ADAPTER=growthub-pipeline`: confirm auth with `growthub auth whoami --json`.
19
+
20
+ If setup checks fail, stop and return remediation only. Do not invent keys or hardcode paths.
21
+
22
+ ## Source of truth (read in this order)
23
+
24
+ 1. `.growthub-fork/project.md` — session memory
25
+ 2. `SKILL.md` — routing menu and selfEval criteria
26
+ 3. `skills.md` — full 3-stage operator runbook ← ground truth for all stage decisions
27
+ 4. `docs/adapter-contracts.md` — generative adapter detail
28
+ 5. `docs/pipeline-architecture.md` — chain composition
29
+ 6. `runtime-assumptions.md` — host requirements
30
+ 7. `validation-checklist.md` — pre-flight and post-pipeline checks
31
+
32
+ When `skills.md` and this file conflict, `skills.md` wins on stage execution detail. This file wins on startup order and non-negotiable rules.
33
+
34
+ ## Input contract
35
+
36
+ - Brand kit at `brands/<client-slug>/brand-kit.md` (copied from `brands/_template/`).
37
+ - User-supplied campaign intent, target length, and aesthetic direction.
38
+ - Optional: reference images for Stage 2 generative bindings.
39
+ - Optional: `${CREATIVE_STRATEGIST_HOME}/templates/hooks-library/500-winning-hooks.csv` for hook selection.
40
+
41
+ ## Output artifacts
42
+
43
+ ```
44
+ output/<client-slug>/<project-slug>/
45
+ ├── brief/pipeline-brief.md Stage 1
46
+ ├── generative/manifest.json Stage 2
47
+ ├── generative/*.mp4 / *.jpg Stage 2
48
+ └── final/final.mp4 Stage 3
49
+ ```
50
+
51
+ ## Stage execution summary
52
+
53
+ **Stage 1 — Brief**
54
+ - Load brand kit → scene structure → hook selection → write `pipeline-brief.md`
55
+ - Spawn sub-skill: `skills/brief-generation/SKILL.md` for heavy context work
56
+ - Self-eval: brief sourced from brand-kit.md, not memory; brand constraints box present
57
+
58
+ **Stage 2 — Generate**
59
+ - Check adapter (`bash helpers/check-generative-adapter.sh`)
60
+ - Growthub-pipeline path: `bash helpers/run-pipeline.sh` with `video-generation` CMS node
61
+ - BYOK path: `lib/adapters/generative/index.js` routes to provider SDK
62
+ - Both paths write `manifest.json` through the adapter contract using official CLI/SDK execution events
63
+ - Spawn sub-skill: `skills/generative-execution/SKILL.md`
64
+ - Self-eval: manifest.json has one artifact URL per scene; no secrets in artifacts
65
+
66
+ **Stage 3 — Edit**
67
+ - Verify `VIDEO_USE_HOME` → stage clips → write `edit-plan.md` → hand off to video-use agent
68
+ - video-use fork: Scribe transcription → EDL → FFmpeg render → final.mp4
69
+ - Spawn sub-skill: `skills/video-edit/SKILL.md`
70
+ - Self-eval: `final.mp4` exists, duration ±10% of target, QA checklist passes
71
+
72
+ ## Non-negotiable rules
73
+
74
+ 1. Brief content sourced from `brand-kit.md` only — no brand detail from memory.
75
+ 2. Generative execution routes through the adapter contract — no raw API calls outside it.
76
+ 3. Stage 3 delegates to `VIDEO_USE_HOME` fork — never duplicate its pipeline inline.
77
+ 4. `output/<client>/<project>/` is the only write root for pipeline artifacts.
78
+ 5. `ELEVENLABS_API_KEY` and provider keys never appear in output artifacts.
79
+ 6. AI generation prompts in brief Appendix only — never inline in scene blocks.
80
+ 7. Append to `.growthub-fork/project.md` at every stage boundary.
81
+ 8. `maxRetries: 3` enforced per selfEval criteria — park with `needs_confirmation` at ceiling.
82
+
83
+ ## Troubleshooting
84
+
85
+ - Missing `ELEVENLABS_API_KEY` → re-run `node setup/verify-env.mjs`.
86
+ - `growthub auth whoami` fails → run `growthub auth login`.
87
+ - `VIDEO_USE_HOME` not found → run `bash setup/clone-fork.sh`.
88
+ - `~/.claude/skills/video-use` missing → run `bash setup/install-skill.sh`.
89
+ - `ffmpeg` not found → re-run `bash setup/check-deps.sh`.
90
+
91
+ ---
92
+
93
+ ## Governed-workspace primitives (v1.2)
94
+
95
+ This workspace carries the six architectural primitives every Growthub fork inherits. The contract is capability-agnostic (`@growthub/api-contract/skills::SkillManifest`); kit-specific specialisation lives in `skills.md` above.
96
+
97
+ 1. **`SKILL.md`** at the kit root — the discovery entry / routing menu. Read before `skills.md`.
98
+ 2. **Repo-root `AGENTS.md` pointer** — Cursor / Claude / Codex all read the same contract.
99
+ 3. **`.growthub-fork/project.md`** — session memory, seeded at init/import from `templates/project.md`. Append a dated entry after every material change.
100
+ 4. **Self-evaluation (`selfEval.criteria` + `maxRetries`)** — generate → apply → evaluate → record; retry up to 3; every attempt writes to both `project.md` (human) and `trace.jsonl` (machine). Use `recordSelfEval` (`cli/src/skills/self-eval.ts`); never bypass the fork-trace primitive.
101
+ 5. **Nested `skills/<slug>/SKILL.md`** — `brief-generation`, `generative-execution`, `video-edit` lanes.
102
+ 6. **`helpers/<verb>.{sh,mjs,py}`** — `run-pipeline.sh`, `check-generative-adapter.sh`.
103
+
104
+ Command surface from inside this fork:
105
+
106
+ - `growthub skills list` — enumerate this fork's SKILL.md tree
107
+ - `growthub skills validate` — strict shape check
108
+ - `growthub skills session show` — print `.growthub-fork/project.md`
109
+ - `growthub skills session init --kit growthub-creative-video-pipeline-v1` — (re-)seed session memory
@@ -0,0 +1,26 @@
1
+ {
2
+ "version": 1,
3
+ "kitId": "growthub-creative-video-pipeline-v1",
4
+ "dependencies": [
5
+ {
6
+ "id": "video-use",
7
+ "kind": "git-fork",
8
+ "env": "VIDEO_USE_HOME",
9
+ "setup": "setup/clone-fork.sh",
10
+ "install": "setup/install-skill.sh",
11
+ "health": "setup/verify-env.mjs",
12
+ "usedByStages": ["video-edit"],
13
+ "interfaceArtifact": "output/<client>/<project>/generative/manifest.json",
14
+ "handoffArtifact": "output/<client>/<project>/final/final.mp4",
15
+ "description": "External video editing fork. Stage 3 delegates entirely to this repo via edit-plan.md. The kit MUST NOT inline video-use logic."
16
+ }
17
+ ],
18
+ "convention": {
19
+ "spec": "docs/WORKER_KIT_CONTRACT_V1.md",
20
+ "sdkType": "@growthub/api-contract/workspaces#WorkspaceDependencyManifest",
21
+ "sdkVersion": 1,
22
+ "version": 1,
23
+ "interpretedBy": ["growthub kit dependencies inspect", "agents", "operators"],
24
+ "runtimeEnforcement": "none"
25
+ }
26
+ }