@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.
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/.env.example +28 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/QUICKSTART.md +118 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/SKILL.md +124 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/.env.example +20 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/README.md +33 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/api/pipeline/route.js +27 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/globals.css +203 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/layout.jsx +14 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/page.jsx +131 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/settings/keys/page.jsx +154 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/lib/adapters/env.js +14 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/lib/adapters/generative/index.js +31 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/lib/domain/pipeline.js +30 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/next.config.js +10 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/package-lock.json +17 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/package.json +17 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/postcss.config.mjs +3 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/vercel.json +5 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/brands/NEW-CLIENT.md +21 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/brands/_template/brand-kit.md +123 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/brands/growthub/brand-kit.md +123 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/bundles/growthub-creative-video-pipeline-v1.json +87 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/adapter-contracts.md +73 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/governed-workspace-primitives.md +50 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/pipeline-architecture.md +61 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/starter-kit-overview.md +33 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/vercel-deployment.md +42 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/examples/pipeline-brief-sample.md +56 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/growthub-meta/README.md +9 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/growthub-meta/kit-standard.md +24 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/README.md +9 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/check-generative-adapter.sh +41 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/check-pipeline-health.sh +154 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/run-pipeline.sh +30 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/kit.json +154 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/output/README.md +23 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/output-standards.md +63 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/pipeline.manifest.json +83 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/runtime-assumptions.md +61 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/check-deps.sh +63 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/clone-fork.sh +18 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/install-skill.sh +10 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/verify-env.mjs +50 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/README.md +11 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/brief-generation/SKILL.md +42 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/generative-execution/SKILL.md +86 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/video-edit/SKILL.md +41 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills.md +302 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/index.html +12 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/package-lock.json +20 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/package.json +20 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/serve.mjs +41 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/src/App.jsx +210 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/src/app.css +194 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/src/main.jsx +10 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/vite.config.js +8 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/edit-plan.md +66 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/generative-plan.md +83 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/pipeline-brief.md +129 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/project.md +68 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/self-eval.md +67 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/validation/e2e-reference.md +166 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/validation-checklist.md +56 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/workers/creative-video-pipeline-operator/CLAUDE.md +109 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/workspace.dependencies.json +26 -0
- package/dist/index.js +3032 -1676
- 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
|
+
}
|