@growthub/cli 0.7.7 → 0.7.9

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 (30) hide show
  1. package/assets/worker-kits/growthub-video-use-studio-v1/.env.example +13 -0
  2. package/assets/worker-kits/growthub-video-use-studio-v1/QUICKSTART.md +47 -0
  3. package/assets/worker-kits/growthub-video-use-studio-v1/brands/NEW-CLIENT.md +3 -0
  4. package/assets/worker-kits/growthub-video-use-studio-v1/brands/_template/brand-kit.md +7 -0
  5. package/assets/worker-kits/growthub-video-use-studio-v1/brands/growthub/brand-kit.md +6 -0
  6. package/assets/worker-kits/growthub-video-use-studio-v1/bundles/growthub-video-use-studio-v1.json +49 -0
  7. package/assets/worker-kits/growthub-video-use-studio-v1/docs/provider-adapter-layer.md +15 -0
  8. package/assets/worker-kits/growthub-video-use-studio-v1/docs/video-use-discovery-path.md +13 -0
  9. package/assets/worker-kits/growthub-video-use-studio-v1/docs/video-use-fork-integration.md +35 -0
  10. package/assets/worker-kits/growthub-video-use-studio-v1/examples/video-brief-sample.md +11 -0
  11. package/assets/worker-kits/growthub-video-use-studio-v1/growthub-meta/README.md +3 -0
  12. package/assets/worker-kits/growthub-video-use-studio-v1/growthub-meta/kit-standard.md +6 -0
  13. package/assets/worker-kits/growthub-video-use-studio-v1/kit.json +100 -0
  14. package/assets/worker-kits/growthub-video-use-studio-v1/output/README.md +9 -0
  15. package/assets/worker-kits/growthub-video-use-studio-v1/output-standards.md +19 -0
  16. package/assets/worker-kits/growthub-video-use-studio-v1/runtime-assumptions.md +9 -0
  17. package/assets/worker-kits/growthub-video-use-studio-v1/setup/check-deps.sh +21 -0
  18. package/assets/worker-kits/growthub-video-use-studio-v1/setup/clone-fork.sh +18 -0
  19. package/assets/worker-kits/growthub-video-use-studio-v1/setup/install-skill.sh +23 -0
  20. package/assets/worker-kits/growthub-video-use-studio-v1/setup/verify-env.mjs +23 -0
  21. package/assets/worker-kits/growthub-video-use-studio-v1/skills.md +21 -0
  22. package/assets/worker-kits/growthub-video-use-studio-v1/templates/edit-decision-list.md +17 -0
  23. package/assets/worker-kits/growthub-video-use-studio-v1/templates/edit-strategy.md +11 -0
  24. package/assets/worker-kits/growthub-video-use-studio-v1/templates/qa-checklist.md +21 -0
  25. package/assets/worker-kits/growthub-video-use-studio-v1/templates/render-plan.md +40 -0
  26. package/assets/worker-kits/growthub-video-use-studio-v1/templates/video-brief.md +11 -0
  27. package/assets/worker-kits/growthub-video-use-studio-v1/validation-checklist.md +11 -0
  28. package/assets/worker-kits/growthub-video-use-studio-v1/workers/video-use-studio-operator/CLAUDE.md +71 -0
  29. package/dist/index.js +13 -1
  30. package/package.json +2 -2
@@ -0,0 +1,13 @@
1
+ # Growthub Video Use Studio — Environment Config
2
+ # Copy this file to .env and fill in your local values.
3
+ # Never commit .env to version control.
4
+
5
+ # Absolute path to your local video-use clone.
6
+ # Canonical env var: VIDEO_USE_HOME (uniform pattern across all worker kits)
7
+ # Legacy alias: VIDEO_USE_FORK_PATH (still accepted by setup scripts)
8
+ # Default when unset: $HOME/video-use
9
+ VIDEO_USE_HOME=$HOME/video-use
10
+
11
+ # ElevenLabs Scribe key — required for transcript generation.
12
+ # Get one at https://elevenlabs.io/app/settings/api-keys
13
+ ELEVENLABS_API_KEY=your_elevenlabs_key_here
@@ -0,0 +1,47 @@
1
+ # Video Use Studio Quickstart
2
+
3
+ ## 1) Prepare environment
4
+
5
+ ```bash
6
+ cp .env.example .env
7
+ bash setup/check-deps.sh
8
+ node setup/verify-env.mjs
9
+ ```
10
+
11
+ Required in `.env`:
12
+
13
+ - `VIDEO_USE_HOME` — absolute path to your local video-use clone (default `$HOME/video-use`)
14
+ - `ELEVENLABS_API_KEY` — ElevenLabs Scribe key for transcript generation
15
+
16
+ ## 2) Clone the video-use upstream
17
+
18
+ ```bash
19
+ bash setup/clone-fork.sh
20
+ ```
21
+
22
+ Clones [`browser-use/video-use`](https://github.com/browser-use/video-use) into `${VIDEO_USE_HOME:-$HOME/video-use}` and runs `pip install -e .`.
23
+
24
+ ## 3) Register as a Claude Code skill
25
+
26
+ ```bash
27
+ bash setup/install-skill.sh
28
+ ```
29
+
30
+ Symlinks the fork into `~/.claude/skills/video-use` per the upstream contract, so Claude Code can load the conversational edit pipeline from any working directory.
31
+
32
+ ## 4) Start work
33
+
34
+ - Point your agent Working Directory to this exported folder.
35
+ - Follow `workers/video-use-studio-operator/CLAUDE.md`.
36
+ - Place raw footage in `${VIDEO_USE_HOME}/<project>/` and open Claude Code from that directory.
37
+ - Write planning outputs to `output/<client-slug>/<project-slug>/`.
38
+ - Rendered video lands at `${VIDEO_USE_HOME}/<project>/edit/final.mp4` per the upstream contract.
39
+
40
+ ## Execution modes
41
+
42
+ | Mode | When to use |
43
+ |---|---|
44
+ | `claude-code-skill` | Conversational editing through Claude Code with video-use symlinked as a skill |
45
+ | `local-cli` | Direct Python pipeline runs inside the fork (inventory → transcribe → pack → render) |
46
+
47
+ See `docs/video-use-fork-integration.md` for the upstream pipeline contract.
@@ -0,0 +1,3 @@
1
+ # NEW CLIENT
2
+
3
+ Copy `brands/_template/brand-kit.md` into a new client folder before planning.
@@ -0,0 +1,7 @@
1
+ # Brand Kit Template
2
+
3
+ - Brand:
4
+ - Audience:
5
+ - Voice:
6
+ - Visual style:
7
+ - Must avoid:
@@ -0,0 +1,6 @@
1
+ # Growthub Brand Kit
2
+
3
+ - Brand: Growthub
4
+ - Audience: operators and builders
5
+ - Voice: direct, practical
6
+ - Visual style: clear typography, high contrast, low-motion transitions
@@ -0,0 +1,49 @@
1
+ {
2
+ "schemaVersion": 2,
3
+ "bundle": {
4
+ "id": "growthub-video-use-studio-v1",
5
+ "version": "1.0.0",
6
+ "kitId": "growthub-video-use-studio-v1",
7
+ "workerId": "video-use-studio-operator"
8
+ },
9
+ "briefType": "video-use-conversational-edit",
10
+ "publicExampleBrandPaths": [
11
+ "brands/growthub/brand-kit.md"
12
+ ],
13
+ "requiredFrozenAssets": [
14
+ "QUICKSTART.md",
15
+ ".env.example",
16
+ "skills.md",
17
+ "output-standards.md",
18
+ "runtime-assumptions.md",
19
+ "validation-checklist.md",
20
+ "workers/video-use-studio-operator/CLAUDE.md",
21
+ "brands/_template/brand-kit.md",
22
+ "brands/growthub/brand-kit.md",
23
+ "brands/NEW-CLIENT.md",
24
+ "setup/clone-fork.sh",
25
+ "setup/install-skill.sh",
26
+ "setup/verify-env.mjs",
27
+ "setup/check-deps.sh",
28
+ "output/README.md",
29
+ "templates/video-brief.md",
30
+ "templates/edit-strategy.md",
31
+ "templates/edit-decision-list.md",
32
+ "templates/render-plan.md",
33
+ "templates/qa-checklist.md",
34
+ "examples/video-brief-sample.md",
35
+ "docs/video-use-fork-integration.md",
36
+ "docs/provider-adapter-layer.md",
37
+ "docs/video-use-discovery-path.md",
38
+ "growthub-meta/README.md",
39
+ "growthub-meta/kit-standard.md"
40
+ ],
41
+ "optionalPresets": [],
42
+ "export": {
43
+ "folderName": "growthub-agent-worker-kit-video-use-studio-v1",
44
+ "zipFileName": "growthub-agent-worker-kit-video-use-studio-v1.zip"
45
+ },
46
+ "activationModes": [
47
+ "export"
48
+ ]
49
+ }
@@ -0,0 +1,15 @@
1
+ # Provider Adapter Layer
2
+
3
+ This kit is a custom workspace package and does not add a new server adapter or agent harness.
4
+
5
+ It relies on:
6
+
7
+ - Worker kit export contract
8
+ - Working Directory execution
9
+ - Upstream `browser-use/video-use` fork
10
+ - ElevenLabs Scribe (transcription) via `ELEVENLABS_API_KEY`
11
+ - Local FFmpeg for render
12
+ - Optional `yt-dlp` for pulling online sources
13
+ - Claude Code skill loader at `~/.claude/skills/video-use`
14
+
15
+ No credentials are stored in this repo. All secrets live in the per-export `.env`.
@@ -0,0 +1,13 @@
1
+ # Video Use Discovery Path
2
+
3
+ Discovery path:
4
+
5
+ - `growthub discover` → `Worker Kits` → `Custom Workspaces`
6
+ - `growthub kit list --family studio`
7
+ - `growthub kit download video-use`
8
+
9
+ Feature branch demo checks:
10
+
11
+ - `bash scripts/demo-cli.sh cli kit list --family studio`
12
+ - `bash scripts/demo-cli.sh cli kit inspect video-use`
13
+ - `bash scripts/demo-cli.sh cli kit download video-use`
@@ -0,0 +1,35 @@
1
+ # Video Use Fork Integration
2
+
3
+ Upstream repository:
4
+
5
+ - `https://github.com/browser-use/video-use`
6
+
7
+ Primary execution flow:
8
+
9
+ 1. Clone + install with `setup/clone-fork.sh` (runs `pip install -e .` inside the fork).
10
+ 2. Register as a Claude Code skill with `setup/install-skill.sh` (symlinks the fork into `~/.claude/skills/video-use`).
11
+ 3. Stage raw footage under `${VIDEO_USE_HOME}/<project>/`.
12
+ 4. Launch `claude` from the project directory and start the conversational edit loop.
13
+
14
+ Pipeline contract (upstream):
15
+
16
+ ```
17
+ inventory → transcribe (ElevenLabs Scribe) → pack phrase-level transcript
18
+ → converse + propose strategy (4–8 sentences)
19
+ → user confirmation
20
+ → EDL generation (word-boundary cuts)
21
+ → render (FFmpeg + Manim / Remotion / PIL overlays)
22
+ → self-evaluation (up to 3 iterations)
23
+ → final.mp4 at <project>/edit/final.mp4
24
+ ```
25
+
26
+ Session persistence:
27
+
28
+ - Every confirmed decision is appended to `project.md` inside the source video directory.
29
+
30
+ Two-layer architecture:
31
+
32
+ - Layer 1 — ElevenLabs Scribe transcript (word-level, speaker-tagged, audio-event markers). The packed transcript is the editor's primary reading view (≈12 KB text + occasional PNGs).
33
+ - Layer 2 — Visual composites (filmstrip / waveform / word labels) generated on-demand for ambiguous decision points only.
34
+
35
+ Token budget: orders of magnitude lower than raw frame processing.
@@ -0,0 +1,11 @@
1
+ # Sample Video Brief
2
+
3
+ - Goal: Cut founder interview into a 60-second launch teaser
4
+ - Audience: prospective operators browsing the landing page
5
+ - Source footage directory: `${VIDEO_USE_HOME}/launch-teaser/raw/`
6
+ - Duration target: 00:60
7
+ - Aspect ratio: 9:16 (vertical)
8
+ - Delivery format: MP4 (h264 / aac)
9
+ - Aesthetic direction: high-contrast, minimal overlays, captions on every beat
10
+ - Speakers / on-camera subjects: 1 (founder)
11
+ - External sources to pull via `yt-dlp`: none
@@ -0,0 +1,3 @@
1
+ # Video Use Workspace Meta
2
+
3
+ This directory stores metadata and standards for `growthub-video-use-studio-v1`.
@@ -0,0 +1,6 @@
1
+ # Kit Standard
2
+
3
+ - schemaVersion: 2
4
+ - family: studio
5
+ - executionMode: export
6
+ - activationModes: export
@@ -0,0 +1,100 @@
1
+ {
2
+ "schemaVersion": 2,
3
+ "kit": {
4
+ "id": "growthub-video-use-studio-v1",
5
+ "version": "1.0.0",
6
+ "name": "Growthub Agent Worker Kit — Video Use Studio",
7
+ "description": "Self-contained local execution environment for conversational video editing with browser-use/video-use. Produces implementation-ready video briefs, transcript-driven edit strategies, edit decision lists, render plans, and QA handoff artifacts for ElevenLabs Scribe + FFmpeg workflows.",
8
+ "type": "worker",
9
+ "visibility": "public-open-source",
10
+ "sourceRepo": "growthub-local",
11
+ "family": "studio"
12
+ },
13
+ "entrypoint": {
14
+ "workerId": "video-use-studio-operator",
15
+ "path": "workers/video-use-studio-operator/CLAUDE.md"
16
+ },
17
+ "workerIds": [
18
+ "video-use-studio-operator"
19
+ ],
20
+ "agentContractPath": "workers/video-use-studio-operator/CLAUDE.md",
21
+ "brandTemplatePath": "brands/_template/brand-kit.md",
22
+ "publicExampleBrandPaths": [
23
+ "brands/growthub/brand-kit.md"
24
+ ],
25
+ "frozenAssetPaths": [
26
+ "QUICKSTART.md",
27
+ ".env.example",
28
+ "skills.md",
29
+ "output-standards.md",
30
+ "runtime-assumptions.md",
31
+ "validation-checklist.md",
32
+ "workers/video-use-studio-operator/CLAUDE.md",
33
+ "brands/_template/brand-kit.md",
34
+ "brands/growthub/brand-kit.md",
35
+ "brands/NEW-CLIENT.md",
36
+ "setup/clone-fork.sh",
37
+ "setup/install-skill.sh",
38
+ "setup/verify-env.mjs",
39
+ "setup/check-deps.sh",
40
+ "output/README.md",
41
+ "templates/video-brief.md",
42
+ "templates/edit-strategy.md",
43
+ "templates/edit-decision-list.md",
44
+ "templates/render-plan.md",
45
+ "templates/qa-checklist.md",
46
+ "examples/video-brief-sample.md",
47
+ "docs/video-use-fork-integration.md",
48
+ "docs/provider-adapter-layer.md",
49
+ "docs/video-use-discovery-path.md",
50
+ "growthub-meta/README.md",
51
+ "growthub-meta/kit-standard.md"
52
+ ],
53
+ "setupPaths": {
54
+ "quickstart": "QUICKSTART.md",
55
+ "envExample": ".env.example",
56
+ "setupDir": "setup/",
57
+ "outputDir": "output/"
58
+ },
59
+ "outputStandard": {
60
+ "type": "working-directory",
61
+ "description": "Exported folder is intended to be pointed at directly by the agent Working Directory. All planning outputs are markdown files written to output/<client-slug>/<project-slug>/. Rendered video artifacts land at ${VIDEO_USE_HOME}/<videos_dir>/edit/final.mp4 per the upstream video-use contract.",
62
+ "requiredPaths": [
63
+ "QUICKSTART.md",
64
+ ".env.example",
65
+ "kit.json",
66
+ "bundles/growthub-video-use-studio-v1.json",
67
+ "skills.md",
68
+ "workers/video-use-studio-operator/CLAUDE.md",
69
+ "brands/_template/brand-kit.md",
70
+ "brands/growthub/brand-kit.md",
71
+ "brands/NEW-CLIENT.md",
72
+ "setup/clone-fork.sh",
73
+ "setup/install-skill.sh",
74
+ "setup/verify-env.mjs",
75
+ "setup/check-deps.sh",
76
+ "output/README.md",
77
+ "templates",
78
+ "docs",
79
+ "growthub-meta"
80
+ ]
81
+ },
82
+ "bundles": [
83
+ {
84
+ "id": "growthub-video-use-studio-v1",
85
+ "version": "1.0.0",
86
+ "path": "bundles/growthub-video-use-studio-v1.json"
87
+ }
88
+ ],
89
+ "executionMode": "export",
90
+ "activationModes": [
91
+ "export"
92
+ ],
93
+ "compatibility": {
94
+ "cliMinVersion": "0.4.3"
95
+ },
96
+ "provenance": {
97
+ "sourceRepo": "growthub-local",
98
+ "frozenAt": "2026-04-23T00:00:00.000Z"
99
+ }
100
+ }
@@ -0,0 +1,9 @@
1
+ # Output Directory
2
+
3
+ Save planning outputs under:
4
+
5
+ - `output/<client-slug>/<project-slug>/`
6
+
7
+ Rendered video artifacts are produced by the upstream pipeline at:
8
+
9
+ - `${VIDEO_USE_HOME}/<project>/edit/final.mp4`
@@ -0,0 +1,19 @@
1
+ # Output Standards
2
+
3
+ Planning deliverables — write to:
4
+
5
+ - `output/<client-slug>/<project-slug>/`
6
+
7
+ Minimum required planning artifacts:
8
+
9
+ - `video-brief.md`
10
+ - `edit-strategy.md`
11
+ - `edit-decision-list.md`
12
+ - `render-plan.md`
13
+ - `qa-checklist.md`
14
+
15
+ Rendered video artifact — produced by the upstream pipeline:
16
+
17
+ - `${VIDEO_USE_HOME}/<project>/edit/final.mp4`
18
+
19
+ Every decision appended to `project.md` inside the source video directory per the upstream video-use session-persistence contract.
@@ -0,0 +1,9 @@
1
+ # Runtime Assumptions
2
+
3
+ - Upstream project: `https://github.com/browser-use/video-use`
4
+ - Python `>=3.11` with `pip` available
5
+ - `ffmpeg` available in PATH (required)
6
+ - `yt-dlp` available in PATH (optional — only for downloading online sources)
7
+ - `ELEVENLABS_API_KEY` set in `.env` — required for transcript generation via ElevenLabs Scribe
8
+ - `~/.claude/skills/video-use` symlink present — set up by `setup/install-skill.sh`
9
+ - Commands run from an exported working directory; raw footage lives under `${VIDEO_USE_HOME}/<project>/`
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ need_cmd() {
5
+ command -v "$1" >/dev/null 2>&1 || {
6
+ echo "Missing dependency: $1" >&2
7
+ exit 1
8
+ }
9
+ }
10
+
11
+ optional_cmd() {
12
+ if ! command -v "$1" >/dev/null 2>&1; then
13
+ echo "Optional dependency not found: $1 (only needed for downloading online sources)" >&2
14
+ fi
15
+ }
16
+
17
+ need_cmd python3
18
+ need_cmd pip3
19
+ need_cmd git
20
+ need_cmd ffmpeg
21
+ optional_cmd yt-dlp
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ REPO_URL="${VIDEO_USE_REPO_URL:-https://github.com/browser-use/video-use}"
5
+ # Canonical: VIDEO_USE_HOME. Legacy alias: VIDEO_USE_FORK_PATH.
6
+ LOCAL_PATH="${VIDEO_USE_HOME:-${VIDEO_USE_FORK_PATH:-$HOME/video-use}}"
7
+
8
+ if [ -d "${LOCAL_PATH}/.git" ]; then
9
+ git -C "${LOCAL_PATH}" fetch origin
10
+ git -C "${LOCAL_PATH}" pull --ff-only
11
+ else
12
+ git clone "${REPO_URL}" "${LOCAL_PATH}"
13
+ fi
14
+
15
+ # Install the upstream package in editable mode so the CLI + skill resolve correctly.
16
+ if command -v pip3 >/dev/null 2>&1; then
17
+ (cd "${LOCAL_PATH}" && pip3 install -e .)
18
+ fi
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Register the video-use fork as a Claude Code skill per the upstream README contract.
5
+ # Canonical: VIDEO_USE_HOME. Legacy alias: VIDEO_USE_FORK_PATH.
6
+ LOCAL_PATH="${VIDEO_USE_HOME:-${VIDEO_USE_FORK_PATH:-$HOME/video-use}}"
7
+ SKILLS_DIR="${CLAUDE_SKILLS_DIR:-$HOME/.claude/skills}"
8
+ LINK_PATH="${SKILLS_DIR}/video-use"
9
+
10
+ if [ ! -d "${LOCAL_PATH}" ]; then
11
+ echo "video-use fork not found at ${LOCAL_PATH}. Run setup/clone-fork.sh first." >&2
12
+ exit 1
13
+ fi
14
+
15
+ mkdir -p "${SKILLS_DIR}"
16
+
17
+ if [ -L "${LINK_PATH}" ] || [ -e "${LINK_PATH}" ]; then
18
+ echo "Skill entry already present at ${LINK_PATH}. Leaving as-is." >&2
19
+ exit 0
20
+ fi
21
+
22
+ ln -s "${LOCAL_PATH}" "${LINK_PATH}"
23
+ echo "Linked ${LOCAL_PATH} -> ${LINK_PATH}"
@@ -0,0 +1,23 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+
4
+ const envPath = path.resolve(process.cwd(), ".env");
5
+ if (!fs.existsSync(envPath)) {
6
+ console.error(".env not found. Run: cp .env.example .env");
7
+ process.exit(1);
8
+ }
9
+
10
+ const raw = fs.readFileSync(envPath, "utf8");
11
+
12
+ // Canonical: VIDEO_USE_HOME. Legacy alias: VIDEO_USE_FORK_PATH.
13
+ if (!raw.includes("VIDEO_USE_HOME=") && !raw.includes("VIDEO_USE_FORK_PATH=")) {
14
+ console.error("VIDEO_USE_HOME (or legacy VIDEO_USE_FORK_PATH) is required in .env");
15
+ process.exit(1);
16
+ }
17
+
18
+ if (!/ELEVENLABS_API_KEY=\S/.test(raw) || /ELEVENLABS_API_KEY=your_elevenlabs_key_here/.test(raw)) {
19
+ console.error("ELEVENLABS_API_KEY is required in .env (for ElevenLabs Scribe transcription)");
20
+ process.exit(1);
21
+ }
22
+
23
+ console.log("Environment check passed.");
@@ -0,0 +1,21 @@
1
+ # Video Use Studio Skills
2
+
3
+ 1. Read `runtime-assumptions.md`.
4
+ 2. Read `docs/video-use-fork-integration.md`.
5
+ 3. Confirm target format: content type, target length, aesthetic direction.
6
+ 4. Produce, in order:
7
+ - `templates/video-brief.md` — source inventory, goal, audience, duration
8
+ - `templates/edit-strategy.md` — 4–8 sentence proposed approach, wait for confirmation
9
+ - `templates/edit-decision-list.md` — transcript-anchored EDL with word-boundary cuts
10
+ - `templates/render-plan.md` — FFmpeg commands, overlay tool choice (Manim / Remotion / PIL)
11
+ - `templates/qa-checklist.md` — twelve production rules pass, subtitles-last validation
12
+
13
+ Non-negotiable rules enforced by this kit:
14
+
15
+ - Subtitles are applied last, after all overlays.
16
+ - 30 ms audio fades at every segment boundary.
17
+ - Word-boundary snapping for every cut; never cut inside a word.
18
+ - Overlays use `setpts=PTS-STARTPTS+T/TB` for timing.
19
+ - Cached transcripts are reused; never re-transcribe a source twice.
20
+
21
+ Use deterministic command paths. Resolve workspace with `${VIDEO_USE_HOME:-$HOME/video-use}`. Never expose `ELEVENLABS_API_KEY` in output artifacts.
@@ -0,0 +1,17 @@
1
+ # Edit Decision List
2
+
3
+ Every cut is snapped to a word boundary from the packed transcript. Timestamps are source-relative (HH:MM:SS.mmm). Never cut inside a word.
4
+
5
+ | # | Source file | In (word-boundary) | Out (word-boundary) | Pad (ms) | Overlay | Notes |
6
+ |---|---|---|---|---|---|---|
7
+ | | | | | | | |
8
+
9
+ ## Overlay references
10
+
11
+ - Overlay tool (Manim / Remotion / PIL):
12
+ - Timing shift formula: `setpts=PTS-STARTPTS+T/TB`
13
+
14
+ ## Caption strategy
15
+
16
+ - Packed phrase-level transcript path:
17
+ - Subtitles applied last, after all overlays.
@@ -0,0 +1,11 @@
1
+ # Edit Strategy
2
+
3
+ 4–8 sentences describing the proposed edit approach. The user must confirm this document in plain English before an EDL is generated.
4
+
5
+ - Opening hook:
6
+ - Core through-line:
7
+ - Pacing bias (tight / breathing / mixed):
8
+ - Aesthetic direction (grade, overlay tool, typography):
9
+ - Captions strategy:
10
+ - Target length + rationale:
11
+ - Risks to surface during self-evaluation:
@@ -0,0 +1,21 @@
1
+ # QA Checklist — Twelve Production Rules
2
+
3
+ - [ ] Subtitles applied last, after every overlay
4
+ - [ ] 30 ms audio fade at every segment boundary
5
+ - [ ] Overlays shifted with `setpts=PTS-STARTPTS+T/TB`
6
+ - [ ] Every cut snapped to a word boundary
7
+ - [ ] Cut edges padded 30–200 ms
8
+ - [ ] No cut inside a word
9
+ - [ ] No re-transcription of a cached source
10
+ - [ ] Caption alignment matches the packed phrase-level transcript
11
+ - [ ] 30 ms fade-out on every overlay exit
12
+ - [ ] Subtitle sequencing respects speaker turns
13
+ - [ ] Output validated (duration, codec, resolution) before handoff
14
+ - [ ] Every destructive edit decision appended to `project.md`
15
+
16
+ ## Delivery checks
17
+
18
+ - [ ] Duration matches brief (± 500 ms)
19
+ - [ ] Aspect ratio correct
20
+ - [ ] Audio sync verified
21
+ - [ ] `${VIDEO_USE_HOME}/<project>/edit/final.mp4` exists and plays end-to-end
@@ -0,0 +1,40 @@
1
+ # Render Plan
2
+
3
+ ## Source resolution
4
+
5
+ ```bash
6
+ WORKSPACE="${VIDEO_USE_HOME:-${VIDEO_USE_FORK_PATH:-$HOME/video-use}}"
7
+ PROJECT_DIR="${WORKSPACE}/<project>"
8
+ ```
9
+
10
+ ## Transcription (idempotent — never re-transcribe a cached source)
11
+
12
+ ```bash
13
+ cd "${PROJECT_DIR}"
14
+ # ElevenLabs Scribe, keyed by ELEVENLABS_API_KEY from .env
15
+ python -m video_use.transcribe --source <input.mp4>
16
+ ```
17
+
18
+ ## Render
19
+
20
+ ```bash
21
+ cd "${PROJECT_DIR}"
22
+ python -m video_use.render \
23
+ --edl ../output/<client-slug>/<project-slug>/edit-decision-list.md \
24
+ --overlay <manim|remotion|pil> \
25
+ --out edit/final.mp4
26
+ ```
27
+
28
+ ## FFmpeg hard constraints
29
+
30
+ - 30 ms audio fade at every segment boundary.
31
+ - Word-boundary snapping for all cuts; pad edges 30–200 ms.
32
+ - Overlays shifted with `setpts=PTS-STARTPTS+T/TB`.
33
+ - Subtitles are applied last.
34
+
35
+ ## Checks
36
+
37
+ - Output path: `${PROJECT_DIR}/edit/final.mp4`
38
+ - Duration matches brief (± 500 ms)
39
+ - Codec: h264, audio: aac
40
+ - Self-evaluation loop runs up to 3 times before surfacing output
@@ -0,0 +1,11 @@
1
+ # Video Brief
2
+
3
+ - Goal:
4
+ - Audience:
5
+ - Source footage directory (`${VIDEO_USE_HOME}/<project>/`):
6
+ - Duration target:
7
+ - Aspect ratio:
8
+ - Delivery format: MP4 (h264)
9
+ - Aesthetic direction:
10
+ - Speakers / on-camera subjects:
11
+ - External sources to pull via `yt-dlp` (optional):
@@ -0,0 +1,11 @@
1
+ # Validation Checklist
2
+
3
+ - [ ] `bash setup/check-deps.sh` — Python, pip, git, ffmpeg present
4
+ - [ ] `node setup/verify-env.mjs` — `VIDEO_USE_HOME` and `ELEVENLABS_API_KEY` set
5
+ - [ ] `bash setup/clone-fork.sh` — video-use cloned and `pip install -e .` succeeded
6
+ - [ ] `bash setup/install-skill.sh` — `~/.claude/skills/video-use` symlink in place
7
+ - [ ] Source footage staged under `${VIDEO_USE_HOME}/<project>/`
8
+ - [ ] Planning artifacts written to `output/<client-slug>/<project-slug>/`
9
+ - [ ] `edit-strategy.md` confirmed before EDL generation
10
+ - [ ] Twelve production rules checklist passes in `qa-checklist.md`
11
+ - [ ] Final render exists at `${VIDEO_USE_HOME}/<project>/edit/final.mp4`
@@ -0,0 +1,71 @@
1
+ # Video Use Studio Operator
2
+
3
+ **Kit:** `growthub-video-use-studio-v1`
4
+ **Worker ID:** `video-use-studio-operator`
5
+ **Version:** `1.0.0`
6
+
7
+ ## Role
8
+
9
+ You convert raw footage and edit intent into implementation-ready video-use artifacts: a brief, a confirmed edit strategy, a transcript-anchored EDL, a render plan, and a QA pass. You operate the upstream [browser-use/video-use](https://github.com/browser-use/video-use) pipeline (transcription → packing → LLM reasoning → EDL → render → self-eval) from an exported working directory.
10
+
11
+ ## Required startup
12
+
13
+ 1. Read `skills.md`.
14
+ 2. Read `runtime-assumptions.md`.
15
+ 3. Read `docs/video-use-fork-integration.md`.
16
+ 4. Resolve `WORKSPACE="${VIDEO_USE_HOME:-${VIDEO_USE_FORK_PATH:-$HOME/video-use}}"`.
17
+ 5. Verify environment with `node setup/verify-env.mjs`.
18
+
19
+ If setup checks fail, stop and return remediation only. Do not invent API keys or hardcode machine paths.
20
+
21
+ ## Input contract
22
+
23
+ - Raw footage already staged under `${VIDEO_USE_HOME}/<project>/`.
24
+ - Brand kit at `brands/<client>/brand-kit.md` (copied from `brands/_template/`).
25
+ - User-supplied goal, target length, aesthetic direction.
26
+
27
+ ## Output artifacts
28
+
29
+ Write every planning deliverable to `output/<client-slug>/<project-slug>/`:
30
+
31
+ - `video-brief.md` — goal, audience, duration, ratio, delivery format
32
+ - `edit-strategy.md` — 4–8 sentence proposed approach, wait for explicit user confirmation before proceeding
33
+ - `edit-decision-list.md` — transcript-anchored cut list with word-boundary timestamps and overlay markers
34
+ - `render-plan.md` — FFmpeg filter graph, overlay tool choice, caption sequencing
35
+ - `qa-checklist.md` — twelve production rules pass
36
+
37
+ Rendered output is the upstream pipeline's responsibility:
38
+
39
+ - `${VIDEO_USE_HOME}/<project>/edit/final.mp4`
40
+
41
+ ## Fork integration
42
+
43
+ - Upstream contract: conversational edits via Claude Code skill at `~/.claude/skills/video-use`.
44
+ - Transcription: ElevenLabs Scribe (word-level, speaker-tagged, audio-event markers).
45
+ - Overlays: Manim / Remotion / PIL — operator chooses per project aesthetic.
46
+ - Session persistence: append each decision to `project.md` inside the source video directory.
47
+ - Self-evaluation loop: up to three iterative fixes before surfacing output to the user.
48
+
49
+ ## Non-negotiable production rules
50
+
51
+ 1. Subtitles last — applied after every overlay.
52
+ 2. 30 ms audio fade at every segment boundary.
53
+ 3. Overlays shifted with `setpts=PTS-STARTPTS+T/TB`.
54
+ 4. Word-boundary snapping for every cut.
55
+ 5. Pad cut edges with a 30–200 ms working window.
56
+ 6. Never cut inside a word.
57
+ 7. Never re-transcribe a cached source.
58
+ 8. Caption alignment matches the packed phrase-level transcript.
59
+ 9. 30 ms fade-out on every overlay exit.
60
+ 10. Subtitle sequencing respects speaker turns.
61
+ 11. Output is validated (duration, codec, resolution) before user handoff.
62
+ 12. Every destructive edit decision is logged to `project.md`.
63
+
64
+ ## Troubleshooting
65
+
66
+ - Missing `ELEVENLABS_API_KEY` → re-run `node setup/verify-env.mjs`.
67
+ - CORS / network failures on transcription → check the ElevenLabs key is active.
68
+ - `~/.claude/skills/video-use` missing → re-run `bash setup/install-skill.sh`.
69
+ - `ffmpeg`/`yt-dlp` not found → re-run `bash setup/check-deps.sh`.
70
+
71
+ Never write `.env` secrets into any output artifact. Never hardcode absolute user paths; always resolve through `${VIDEO_USE_HOME}` with a `$HOME/video-use` fallback.
package/dist/index.js CHANGED
@@ -8563,6 +8563,15 @@ var init_catalog = __esm({
8563
8563
  executionMode: "export",
8564
8564
  activationModes: ["export"],
8565
8565
  family: "studio"
8566
+ },
8567
+ {
8568
+ id: "growthub-video-use-studio-v1",
8569
+ packageDirName: "growthub-video-use-studio-v1",
8570
+ defaultBundleId: "growthub-video-use-studio-v1",
8571
+ type: "worker",
8572
+ executionMode: "export",
8573
+ activationModes: ["export"],
8574
+ family: "studio"
8566
8575
  }
8567
8576
  ];
8568
8577
  }
@@ -21389,10 +21398,13 @@ Examples:
21389
21398
  $ growthub kit list --json # machine-readable output
21390
21399
  $ growthub kit download higgsfield # fuzzy slug \u2014 resolves automatically
21391
21400
  $ growthub kit download hyperframes # Hyperframes custom workspace
21401
+ $ growthub kit download video-use # browser-use/video-use custom workspace
21392
21402
  $ growthub kit download growthub-open-higgsfield-studio-v1
21393
21403
  $ growthub kit download growthub-hyperframes-studio-v1
21404
+ $ growthub kit download growthub-video-use-studio-v1
21394
21405
  $ growthub kit inspect higgsfield-studio-v1
21395
21406
  $ growthub kit inspect hyperframes
21407
+ $ growthub kit inspect video-use
21396
21408
  $ growthub kit families # show family taxonomy
21397
21409
 
21398
21410
  Fork Sync Agent:
@@ -21521,7 +21533,7 @@ Examples:
21521
21533
  });
21522
21534
  kit.command("families").description("Show the kit family taxonomy with descriptions and examples").action(() => {
21523
21535
  const defs = [
21524
- { family: "studio", tagline: "AI generation studio backed by a local fork", surfaces: "local-fork, browser-hosted, desktop-app", example: "growthub-open-higgsfield-studio-v1, growthub-hyperframes-studio-v1, growthub-zernio-social-v1" },
21536
+ { family: "studio", tagline: "AI generation studio backed by a local fork", surfaces: "local-fork, browser-hosted, desktop-app", example: "growthub-open-higgsfield-studio-v1, growthub-hyperframes-studio-v1, growthub-video-use-studio-v1, growthub-zernio-social-v1" },
21525
21537
  { family: "workflow", tagline: "Multi-step pipeline operator across tools or APIs", surfaces: "browser-hosted (primary)", example: "creative-strategist-v1" },
21526
21538
  { family: "operator", tagline: "Domain vertical specialist \u2014 one provider, structured deliverables", surfaces: "browser-hosted", example: "growthub-email-marketing-v1" },
21527
21539
  { family: "ops", tagline: "Infrastructure / toolchain operator (provider optional)", surfaces: "local-fork (primary)", example: "(coming soon)" }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@growthub/cli",
3
- "version": "0.7.7",
3
+ "version": "0.7.9",
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": {
@@ -42,7 +42,7 @@
42
42
  "dependencies": {
43
43
  "@aws-sdk/client-s3": "^3.888.0",
44
44
  "@clack/prompts": "^0.10.0",
45
- "@growthub/api-contract": "workspace:*",
45
+ "@growthub/api-contract": "1.0.0-alpha.1",
46
46
  "ajv": "^8.18.0",
47
47
  "ajv-formats": "^3.0.1",
48
48
  "better-auth": "1.4.18",