@growthub/cli 0.8.1 → 0.8.2
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 +103 -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 +83 -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 +8 -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/run-pipeline.sh +30 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/kit.json +148 -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/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-checklist.md +52 -0
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/workers/creative-video-pipeline-operator/CLAUDE.md +109 -0
- package/dist/index.js +9 -0
- package/package.json +1 -1
|
@@ -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,52 @@
|
|
|
1
|
+
# Validation Checklist — Creative Video Pipeline
|
|
2
|
+
|
|
3
|
+
Run before calling the kit v1-ready or before a Vercel deployment.
|
|
4
|
+
|
|
5
|
+
## Environment
|
|
6
|
+
|
|
7
|
+
- [ ] `bash setup/check-deps.sh` passes (FFmpeg, Python 3, pip, git, node)
|
|
8
|
+
- [ ] `node setup/verify-env.mjs` passes
|
|
9
|
+
- [ ] `bash helpers/check-generative-adapter.sh` shows expected adapter and keys
|
|
10
|
+
- [ ] `VIDEO_USE_HOME` resolves to an existing `video-use` clone
|
|
11
|
+
|
|
12
|
+
## Growthub CLI (growthub-pipeline adapter)
|
|
13
|
+
|
|
14
|
+
- [ ] `growthub auth whoami --json` returns authenticated user
|
|
15
|
+
- [ ] `growthub kit list --family studio` includes `growthub-creative-video-pipeline-v1`
|
|
16
|
+
- [ ] `growthub kit fork status <fork-id>` shows no unexpected drift
|
|
17
|
+
|
|
18
|
+
## Stage 1 — Brief
|
|
19
|
+
|
|
20
|
+
- [ ] Brand kit exists at `brands/<client-slug>/brand-kit.md`
|
|
21
|
+
- [ ] `pipeline-brief.md` written to `output/<client>/<project>/brief/`
|
|
22
|
+
- [ ] Brief contains: brand constraints box, scene table, hook variations A–E, editing guidelines
|
|
23
|
+
- [ ] AI generation prompts in Appendix only (not inline in scene blocks)
|
|
24
|
+
|
|
25
|
+
## Stage 2 — Generate
|
|
26
|
+
|
|
27
|
+
- [ ] `output/<client>/<project>/generative/manifest.json` exists and is valid JSON
|
|
28
|
+
- [ ] Each manifest entry has `id`, `type`, `provider`, `url`, `prompt`
|
|
29
|
+
- [ ] No API keys appear in any artifact file
|
|
30
|
+
- [ ] Artifact count matches scene count in brief
|
|
31
|
+
|
|
32
|
+
## Stage 3 — Edit
|
|
33
|
+
|
|
34
|
+
- [ ] `output/<client>/<project>/final/final.mp4` exists
|
|
35
|
+
- [ ] Duration within ±10% of target from edit plan
|
|
36
|
+
- [ ] Audio fades at segment boundaries (30 ms)
|
|
37
|
+
- [ ] Subtitles applied last
|
|
38
|
+
- [ ] No secrets in any output artifact
|
|
39
|
+
|
|
40
|
+
## Local shell
|
|
41
|
+
|
|
42
|
+
- [ ] `cd studio && npm install && npm run build` succeeds
|
|
43
|
+
- [ ] `cd apps/creative-video-pipeline && npm install && npm run build` succeeds
|
|
44
|
+
- [ ] Studio Vite shell renders pipeline stage status without errors
|
|
45
|
+
- [ ] Next.js `/settings/keys` page renders adapter config
|
|
46
|
+
|
|
47
|
+
## Governed primitives
|
|
48
|
+
|
|
49
|
+
- [ ] `.growthub-fork/project.md` has entries for all completed stages
|
|
50
|
+
- [ ] `.growthub-fork/trace.jsonl` has typed events for all material changes
|
|
51
|
+
- [ ] `growthub skills validate` passes
|
|
52
|
+
- [ ] `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
|
package/dist/index.js
CHANGED
|
@@ -8528,6 +8528,15 @@ var init_catalog = __esm({
|
|
|
8528
8528
|
activationModes: ["export"],
|
|
8529
8529
|
family: "studio"
|
|
8530
8530
|
},
|
|
8531
|
+
{
|
|
8532
|
+
id: "growthub-creative-video-pipeline-v1",
|
|
8533
|
+
packageDirName: "growthub-creative-video-pipeline-v1",
|
|
8534
|
+
defaultBundleId: "growthub-creative-video-pipeline-v1",
|
|
8535
|
+
type: "worker",
|
|
8536
|
+
executionMode: "export",
|
|
8537
|
+
activationModes: ["export"],
|
|
8538
|
+
family: "studio"
|
|
8539
|
+
},
|
|
8531
8540
|
{
|
|
8532
8541
|
id: "growthub-twenty-crm-v1",
|
|
8533
8542
|
packageDirName: "growthub-twenty-crm-v1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@growthub/cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"description": "Growthub Local is a control plane for forked worker kits. The CLI is the executor, the hosted app is the identity authority, the worker kit is the unit of portable agent infrastructure, and the fork is the operator's personal branch of that infrastructure — policy-governed, trace-backed, and self-healing.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|