@growthub/cli 0.7.6 → 0.7.8
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/creative-strategist-v1/skills.md +13 -11
- package/assets/worker-kits/creative-strategist-v1/templates/brief-template.js +1 -1
- package/assets/worker-kits/creative-strategist-v1/workers/creative-strategist/CLAUDE.md +22 -21
- package/assets/worker-kits/growthub-ai-website-cloner-v1/.env.example +4 -2
- package/assets/worker-kits/growthub-ai-website-cloner-v1/QUICKSTART.md +4 -4
- package/assets/worker-kits/growthub-ai-website-cloner-v1/runtime-assumptions.md +1 -1
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/clone-fork.sh +1 -1
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/verify-env.mjs +1 -1
- package/assets/worker-kits/growthub-ai-website-cloner-v1/validation-checklist.md +1 -1
- package/assets/worker-kits/growthub-ai-website-cloner-v1/workers/ai-website-cloner-operator/CLAUDE.md +1 -1
- package/assets/worker-kits/growthub-geo-seo-v1/.env.example +5 -3
- package/assets/worker-kits/growthub-geo-seo-v1/setup/check-deps.sh +2 -2
- package/assets/worker-kits/growthub-geo-seo-v1/setup/clone-fork.sh +1 -1
- package/assets/worker-kits/growthub-geo-seo-v1/setup/verify-env.mjs +1 -1
- package/assets/worker-kits/growthub-geo-seo-v1/validation-checklist.md +1 -1
- package/assets/worker-kits/growthub-geo-seo-v1/workers/geo-seo-operator/CLAUDE.md +1 -1
- package/assets/worker-kits/growthub-hyperframes-studio-v1/.env.example +4 -2
- package/assets/worker-kits/growthub-hyperframes-studio-v1/docs/hyperframes-discovery-path.md +2 -2
- package/assets/worker-kits/growthub-hyperframes-studio-v1/setup/clone-fork.sh +2 -1
- package/assets/worker-kits/growthub-hyperframes-studio-v1/setup/verify-env.mjs +3 -2
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/.env.example +5 -0
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/QUICKSTART.md +1 -1
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/runtime-assumptions.md +1 -1
- package/assets/worker-kits/growthub-open-montage-studio-v1/.env.example +4 -2
- package/assets/worker-kits/growthub-open-montage-studio-v1/QUICKSTART.md +1 -1
- package/assets/worker-kits/growthub-open-montage-studio-v1/runtime-assumptions.md +1 -1
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/clone-fork.sh +2 -1
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/verify-env.mjs +5 -2
- package/assets/worker-kits/growthub-open-montage-studio-v1/validation-checklist.md +3 -3
- package/assets/worker-kits/growthub-open-montage-studio-v1/workers/open-montage-studio-operator/CLAUDE.md +2 -2
- package/assets/worker-kits/growthub-postiz-social-v1/.env.example +4 -2
- package/assets/worker-kits/growthub-postiz-social-v1/QUICKSTART.md +2 -2
- package/assets/worker-kits/growthub-postiz-social-v1/setup/clone-fork.sh +1 -1
- package/assets/worker-kits/growthub-postiz-social-v1/setup/verify-env.mjs +2 -1
- package/assets/worker-kits/growthub-postiz-social-v1/validation-checklist.md +1 -1
- package/assets/worker-kits/growthub-postiz-social-v1/workers/postiz-social-operator/CLAUDE.md +1 -1
- package/assets/worker-kits/growthub-twenty-crm-v1/.env.example +4 -2
- package/assets/worker-kits/growthub-twenty-crm-v1/QUICKSTART.md +1 -1
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/clone-fork.sh +1 -1
- package/assets/worker-kits/growthub-twenty-crm-v1/workers/twenty-crm-operator/CLAUDE.md +1 -1
- package/dist/index.js +1177 -326
- package/package.json +2 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Creative Strategist Worker Skill
|
|
2
2
|
## Video Creative Brief Production | Multi-Brand System
|
|
3
3
|
|
|
4
|
-
> **Who this is for:** Any Claude
|
|
4
|
+
> **Who this is for:** Any agent (Claude is first-party; Cursor / Codex / Gemini / custom harnesses are equally supported) operating inside `${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/` and producing a Video Creative Brief.
|
|
5
5
|
> Read this file fully before starting. Every section is a required step.
|
|
6
|
+
>
|
|
7
|
+
> **Workspace path:** all commands below reference the kit workspace via the `CREATIVE_STRATEGIST_HOME` env var. Default: `$HOME/creative-strategist`. Override it to any directory (e.g. `export CREATIVE_STRATEGIST_HOME=$HOME/claude-workers`) to mount your own brand/template tree without forking this kit.
|
|
6
8
|
|
|
7
9
|
---
|
|
8
10
|
|
|
@@ -53,7 +55,7 @@ Required fields: `client_name`, `slug`, `primary_service`, `landing_page`, `targ
|
|
|
53
55
|
## STEP 1b — READ THE BRAND KIT
|
|
54
56
|
|
|
55
57
|
```bash
|
|
56
|
-
cat /
|
|
58
|
+
cat ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<client-slug>/brand-kit.md
|
|
57
59
|
```
|
|
58
60
|
|
|
59
61
|
Load every field. The brief JS must pull colors, tone, and guardrails from this file — not memory.
|
|
@@ -88,7 +90,7 @@ Phone + Website: [from brand kit]
|
|
|
88
90
|
> **Do this first — every time.** A frozen format skips frame extraction entirely.
|
|
89
91
|
|
|
90
92
|
```
|
|
91
|
-
Read /
|
|
93
|
+
Read ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/templates/ad-formats/INDEX.md
|
|
92
94
|
```
|
|
93
95
|
|
|
94
96
|
**Match found?**
|
|
@@ -99,7 +101,7 @@ Read /Users/antonio/claude-workers/templates/ad-formats/INDEX.md
|
|
|
99
101
|
|
|
100
102
|
**Then load scene modules:**
|
|
101
103
|
```
|
|
102
|
-
Read /
|
|
104
|
+
Read ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/templates/scene-modules/INDEX.md
|
|
103
105
|
```
|
|
104
106
|
Pull each module listed under "Scene Modules Used" in the format file.
|
|
105
107
|
|
|
@@ -123,7 +125,7 @@ Add rows to templates/scene-modules/INDEX.md
|
|
|
123
125
|
**3-pass grep method (fast):**
|
|
124
126
|
|
|
125
127
|
```bash
|
|
126
|
-
CSV
|
|
128
|
+
CSV=${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/templates/hooks-library/500-winning-hooks.csv
|
|
127
129
|
|
|
128
130
|
# Pass 1 — client niche / pain-point keywords
|
|
129
131
|
grep -i "KEYWORD1\|KEYWORD2" "$CSV" | head -10
|
|
@@ -218,13 +220,13 @@ APPENDIX — AI video generation prompts (Veo 3 / Runway) — labele
|
|
|
218
220
|
|
|
219
221
|
```bash
|
|
220
222
|
# Copy and fill the template
|
|
221
|
-
cp /
|
|
223
|
+
cp ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/templates/brief-template.js /tmp/docx_work/<slug>_brief_v1.js
|
|
222
224
|
# Edit: fill CONFIG (colors from brand kit) + BRIEF (all content)
|
|
223
225
|
|
|
224
226
|
# Run
|
|
225
227
|
cd /tmp/docx_work && npm install docx # once per session
|
|
226
228
|
node <slug>_brief_v1.js
|
|
227
|
-
# Output: /
|
|
229
|
+
# Output: $HOME/Downloads/<slug>_VideoBrief_<concept>_v1_<YYYYMMDD>.docx
|
|
228
230
|
```
|
|
229
231
|
|
|
230
232
|
**JS non-negotiables:**
|
|
@@ -242,7 +244,7 @@ node <slug>_brief_v1.js
|
|
|
242
244
|
## STEP 5 — OPEN IN GOOGLE DOCS
|
|
243
245
|
|
|
244
246
|
```bash
|
|
245
|
-
open -R "/
|
|
247
|
+
open -R "$HOME/Downloads/<filename>.docx"
|
|
246
248
|
osascript -e 'tell application "Google Chrome" to open location "https://drive.google.com/drive/my-drive"'
|
|
247
249
|
```
|
|
248
250
|
|
|
@@ -254,7 +256,7 @@ Tell the user: "File revealed in Finder. Drag into the Google Drive browser wind
|
|
|
254
256
|
|
|
255
257
|
```bash
|
|
256
258
|
echo "- $(date +%Y-%m-%d) | Video Creative Brief v1 | ~/Downloads/<filename>.docx" \
|
|
257
|
-
>> /
|
|
259
|
+
>> ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<client-slug>/brand-kit.md
|
|
258
260
|
```
|
|
259
261
|
|
|
260
262
|
---
|
|
@@ -313,7 +315,7 @@ Change only the 6 color constants at the top of the JS file — pull from `brand
|
|
|
313
315
|
## FOLDER STRUCTURE
|
|
314
316
|
|
|
315
317
|
```
|
|
316
|
-
/
|
|
318
|
+
${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/
|
|
317
319
|
├── skills.md ← this file — read first, every session
|
|
318
320
|
├── README.md ← kit overview + template library summary
|
|
319
321
|
├── templates/
|
|
@@ -25,7 +25,7 @@ const CONFIG = {
|
|
|
25
25
|
doctor_name: "[DR. NAME, CREDENTIALS]", // e.g. "Dr. Anthony Carabasi, DO"
|
|
26
26
|
campaign_name: "[CAMPAIGN NAME]", // e.g. "Regenerative Medicine — Spring 2026"
|
|
27
27
|
date: "[MONTH YEAR]", // e.g. "April 2026"
|
|
28
|
-
output_path:
|
|
28
|
+
output_path: `${process.env.HOME}/Downloads/[ClientSlug]_Video_Creative_Brief_v1_[DATE].docx`,
|
|
29
29
|
|
|
30
30
|
// Brief metadata
|
|
31
31
|
video_length: "[XX seconds]",
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# Creative Strategist Worker — Operating Instructions
|
|
2
|
-
> You are a creative strategist agent operating inside
|
|
2
|
+
> You are a creative strategist agent operating inside `${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/`.
|
|
3
3
|
> Read this file completely before taking any action. Every section is enforced.
|
|
4
4
|
>
|
|
5
|
+
> **Agent compatibility:** Claude is first-party (this file is what Claude Code loads), but the kit is agent-agnostic — Cursor, Codex, Gemini, or any harness reading this file can run the same workflow. All workspace paths resolve through the `CREATIVE_STRATEGIST_HOME` env var (default `$HOME/creative-strategist`); override it to mount an existing tree (e.g. `export CREATIVE_STRATEGIST_HOME=$HOME/claude-workers`).
|
|
6
|
+
>
|
|
5
7
|
> Last updated: 2026-04-08
|
|
6
8
|
|
|
7
9
|
---
|
|
@@ -24,7 +26,7 @@ You do NOT produce:
|
|
|
24
26
|
Everything about format, docx rules, design system, and frame analysis lives here:
|
|
25
27
|
|
|
26
28
|
```
|
|
27
|
-
/
|
|
29
|
+
${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/skills.md
|
|
28
30
|
```
|
|
29
31
|
|
|
30
32
|
**Read it first. Every session. No exceptions.**
|
|
@@ -39,13 +41,13 @@ When they conflict, skills.md wins on technical rules; this file wins on workflo
|
|
|
39
41
|
|
|
40
42
|
```bash
|
|
41
43
|
# Read the master skill doc
|
|
42
|
-
cat /
|
|
44
|
+
cat ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/skills.md
|
|
43
45
|
|
|
44
46
|
# Check for existing briefs for this client (if returning client)
|
|
45
|
-
ls /
|
|
47
|
+
ls ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<slug>/
|
|
46
48
|
|
|
47
49
|
# Check the deliverables log for any prior brief output
|
|
48
|
-
grep "docx" /
|
|
50
|
+
grep "docx" ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<slug>/brand-kit.md
|
|
49
51
|
```
|
|
50
52
|
|
|
51
53
|
**Also check for working JS examples in `/tmp/docx_work/` — use the most recent one for this
|
|
@@ -64,7 +66,7 @@ Existing brief JS files to reference (in priority order):
|
|
|
64
66
|
### STEP 2 — Load the Brand Kit
|
|
65
67
|
|
|
66
68
|
```bash
|
|
67
|
-
cat /
|
|
69
|
+
cat ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<slug>/brand-kit.md
|
|
68
70
|
```
|
|
69
71
|
|
|
70
72
|
Load every field into context:
|
|
@@ -76,9 +78,9 @@ Load every field into context:
|
|
|
76
78
|
|
|
77
79
|
If the brand kit does not exist → copy the template and fill from context:
|
|
78
80
|
```bash
|
|
79
|
-
cp /
|
|
80
|
-
/
|
|
81
|
-
mkdir -p /
|
|
81
|
+
cp ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/_template/brand-kit.md \
|
|
82
|
+
${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<new-slug>/brand-kit.md
|
|
83
|
+
mkdir -p ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<new-slug>/assets
|
|
82
84
|
```
|
|
83
85
|
|
|
84
86
|
---
|
|
@@ -158,7 +160,7 @@ If a muse/reference video exists — **do not skip this step. It is not optional
|
|
|
158
160
|
|
|
159
161
|
Follow the complete frame analysis workflow documented in:
|
|
160
162
|
```
|
|
161
|
-
/
|
|
163
|
+
${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/skills.md → SKILL MODULE: FRAME-BY-FRAME VIDEO ANALYSIS
|
|
162
164
|
```
|
|
163
165
|
|
|
164
166
|
Quick reference:
|
|
@@ -211,10 +213,9 @@ Save to: `/tmp/docx_work/<slug>_brief_v<N>.js`
|
|
|
211
213
|
### STEP 6 — RUN THE SCRIPT
|
|
212
214
|
|
|
213
215
|
```bash
|
|
214
|
-
mkdir -p /tmp/docx_work
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
cd /tmp/docx_work && node <slug>_brief_v<N>.js
|
|
216
|
+
mkdir -p /tmp/docx_work
|
|
217
|
+
cd /tmp/docx_work && npm install docx # once per session
|
|
218
|
+
node <slug>_brief_v<N>.js
|
|
218
219
|
```
|
|
219
220
|
|
|
220
221
|
If it errors: read the exact error line, fix in place, re-run. Do NOT start over from scratch.
|
|
@@ -225,7 +226,7 @@ If it errors: read the exact error line, fix in place, re-run. Do NOT start over
|
|
|
225
226
|
|
|
226
227
|
```bash
|
|
227
228
|
# Reveal file in Finder
|
|
228
|
-
open -R "/
|
|
229
|
+
open -R "$HOME/Downloads/<filename>.docx"
|
|
229
230
|
|
|
230
231
|
# Open Google Drive in Chrome
|
|
231
232
|
osascript -e 'tell application "Google Chrome" to open location "https://drive.google.com/drive/my-drive"'
|
|
@@ -246,7 +247,7 @@ osascript -e 'tell application "Google Chrome" to open location "<URL>"'
|
|
|
246
247
|
|
|
247
248
|
```bash
|
|
248
249
|
echo "- $(date +%Y-%m-%d) | Video Creative Brief v<N> — <Campaign Name> | ~/Downloads/<filename>.docx" \
|
|
249
|
-
>> /
|
|
250
|
+
>> ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<slug>/brand-kit.md
|
|
250
251
|
```
|
|
251
252
|
|
|
252
253
|
---
|
|
@@ -357,9 +358,9 @@ Use Chrome for the following tasks:
|
|
|
357
358
|
|
|
358
359
|
```bash
|
|
359
360
|
# 1. Create brand folder
|
|
360
|
-
cp /
|
|
361
|
-
/
|
|
362
|
-
mkdir -p /
|
|
361
|
+
cp ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/_template/brand-kit.md \
|
|
362
|
+
${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<new-slug>/brand-kit.md
|
|
363
|
+
mkdir -p ${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<new-slug>/assets
|
|
363
364
|
|
|
364
365
|
# 2. Fill all YAML fields from conversation
|
|
365
366
|
# 3. Mark unknown fields: "TBD — confirm with client"
|
|
@@ -374,8 +375,8 @@ mkdir -p /Users/antonio/claude-workers/brands/<new-slug>/assets
|
|
|
374
375
|
|-----------|-----------|
|
|
375
376
|
| Brief JS | `/tmp/docx_work/<slug>_brief_v<N>.js` |
|
|
376
377
|
| Output docx | `~/Downloads/<ClientName>_VideoBrief_<CampaignSlug>_v<N>_<YYYYMMDD>.docx` |
|
|
377
|
-
| Brand kit |
|
|
378
|
-
| Assets |
|
|
378
|
+
| Brand kit | `${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<slug>/brand-kit.md` |
|
|
379
|
+
| Assets | `${CREATIVE_STRATEGIST_HOME:-$HOME/creative-strategist}/brands/<slug>/assets/<filename>` |
|
|
379
380
|
| Muse frames | `/tmp/muse_frames/frame_Xs.jpg` |
|
|
380
381
|
|
|
381
382
|
---
|
|
@@ -3,5 +3,7 @@
|
|
|
3
3
|
# No API key is required for this kit.
|
|
4
4
|
|
|
5
5
|
# Optional: override local fork path.
|
|
6
|
-
#
|
|
7
|
-
AI_CLONER_FORK_PATH
|
|
6
|
+
# Canonical env var: AI_WEBSITE_CLONER_HOME (uniform pattern across all worker kits)
|
|
7
|
+
# Legacy alias: AI_CLONER_FORK_PATH (still accepted by the CLI)
|
|
8
|
+
# Default when unset: $HOME/ai-website-cloner-template
|
|
9
|
+
AI_WEBSITE_CLONER_HOME=$HOME/ai-website-cloner-template
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
bash setup/clone-fork.sh
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
This clones the `ai-website-cloner-template` fork to
|
|
22
|
+
This clones the `ai-website-cloner-template` fork to `$HOME/ai-website-cloner-template` and runs `npm install`.
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
@@ -85,12 +85,12 @@ The agent will:
|
|
|
85
85
|
|
|
86
86
|
All artifacts land in:
|
|
87
87
|
```
|
|
88
|
-
|
|
88
|
+
$HOME/ai-website-cloner-template/output/<client-slug>/<project-slug>/
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
The cloned Next.js components live in:
|
|
92
92
|
```
|
|
93
|
-
|
|
93
|
+
$HOME/ai-website-cloner-template/src/components/
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
---
|
|
@@ -98,7 +98,7 @@ The cloned Next.js components live in:
|
|
|
98
98
|
## Running the cloned site
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
|
-
cd
|
|
101
|
+
cd $HOME/ai-website-cloner-template
|
|
102
102
|
npm run dev
|
|
103
103
|
```
|
|
104
104
|
|
|
@@ -10,7 +10,7 @@ This kit assumes the `ai-website-cloner-template` fork is checked out and instal
|
|
|
10
10
|
|
|
11
11
|
| Assumption | Default | Override |
|
|
12
12
|
|---|---|---|
|
|
13
|
-
| Fork directory |
|
|
13
|
+
| Fork directory | `$HOME/ai-website-cloner-template` | `AI_WEBSITE_CLONER_HOME` (legacy: `AI_CLONER_FORK_PATH`) env var |
|
|
14
14
|
| Fork repo URL | `https://github.com/JCodesMore/ai-website-cloner-template` | n/a |
|
|
15
15
|
| Node.js version | 24+ (strict) | n/a — minimum requirement |
|
|
16
16
|
| Package manager | npm | n/a |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Run from any location. Installs to ~/ai-website-cloner-template (or AI_CLONER_FORK_PATH).
|
|
4
4
|
set -e
|
|
5
5
|
|
|
6
|
-
FORK_DIR="${AI_CLONER_FORK_PATH:-$HOME/ai-website-cloner-template}"
|
|
6
|
+
FORK_DIR="${AI_WEBSITE_CLONER_HOME:-${AI_CLONER_FORK_PATH:-$HOME/ai-website-cloner-template}}"
|
|
7
7
|
REPO_URL="https://github.com/JCodesMore/ai-website-cloner-template.git"
|
|
8
8
|
|
|
9
9
|
echo "=== Growthub AI Website Cloner — Fork Setup ==="
|
|
@@ -5,7 +5,7 @@ import { execSync } from "node:child_process";
|
|
|
5
5
|
import { resolve } from "node:path";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
|
|
8
|
-
const FORK_PATH = process.env.AI_CLONER_FORK_PATH || resolve(homedir(), "ai-website-cloner-template");
|
|
8
|
+
const FORK_PATH = process.env.AI_WEBSITE_CLONER_HOME || process.env.AI_CLONER_FORK_PATH || resolve(homedir(), "ai-website-cloner-template");
|
|
9
9
|
|
|
10
10
|
let passed = 0;
|
|
11
11
|
let failed = 0;
|
|
@@ -8,7 +8,7 @@ Run through this checklist before producing the platform handoff.
|
|
|
8
8
|
|
|
9
9
|
## Environment validation
|
|
10
10
|
|
|
11
|
-
- [ ] Fork exists at
|
|
11
|
+
- [ ] Fork exists at `$HOME/ai-website-cloner-template` (or `AI_WEBSITE_CLONER_HOME` (legacy: `AI_CLONER_FORK_PATH`))
|
|
12
12
|
- [ ] Node.js 24+ confirmed (`node --version`)
|
|
13
13
|
- [ ] `node_modules/` installed in fork root
|
|
14
14
|
- [ ] AI agent is active and running in the fork directory
|
|
@@ -55,7 +55,7 @@ Before loading any methodology, verify the environment is ready.
|
|
|
55
55
|
|
|
56
56
|
**Check 1 — Fork directory exists:**
|
|
57
57
|
|
|
58
|
-
Confirm the fork is checked out at
|
|
58
|
+
Confirm the fork is checked out at `$HOME/ai-website-cloner-template` (or `AI_WEBSITE_CLONER_HOME` (legacy: `AI_CLONER_FORK_PATH`) if set).
|
|
59
59
|
|
|
60
60
|
If missing, tell the user:
|
|
61
61
|
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
# Copy this file to .env and fill in your values.
|
|
3
3
|
# Never commit .env to version control.
|
|
4
4
|
|
|
5
|
-
# Path to your local clone of the geo-seo-claude fork
|
|
6
|
-
#
|
|
7
|
-
# GEO_SEO_FORK_PATH
|
|
5
|
+
# Path to your local clone of the geo-seo-claude fork.
|
|
6
|
+
# Canonical env var: GEO_SEO_HOME (uniform pattern across all worker kits)
|
|
7
|
+
# Legacy alias: GEO_SEO_FORK_PATH (still accepted by the CLI)
|
|
8
|
+
# Default when unset: $HOME/geo-seo-claude
|
|
9
|
+
# GEO_SEO_HOME=/path/to/your/geo-seo-claude
|
|
8
10
|
|
|
9
11
|
# Anthropic API key — required for agent-enhanced analysis (Steps 5-9)
|
|
10
12
|
# Core Python audit commands work without this key
|
|
@@ -54,14 +54,14 @@ if command -v playwright >/dev/null 2>&1; then
|
|
|
54
54
|
fi
|
|
55
55
|
|
|
56
56
|
# Check for the fork directory
|
|
57
|
-
FORK_DIR="${GEO_SEO_FORK_PATH:-$HOME/geo-seo-claude}"
|
|
57
|
+
FORK_DIR="${GEO_SEO_HOME:-${GEO_SEO_FORK_PATH:-$HOME/geo-seo-claude}}"
|
|
58
58
|
if [ -d "$FORK_DIR" ]; then
|
|
59
59
|
echo "OK geo-seo-claude fork at $FORK_DIR"
|
|
60
60
|
PASS=$((PASS+1))
|
|
61
61
|
else
|
|
62
62
|
echo "MISS geo-seo-claude fork not found at $FORK_DIR"
|
|
63
63
|
echo " Run: bash setup/clone-fork.sh"
|
|
64
|
-
echo " Or set GEO_SEO_FORK_PATH to your fork path in .env"
|
|
64
|
+
echo " Or set GEO_SEO_HOME (legacy alias: GEO_SEO_FORK_PATH) to your fork path in .env"
|
|
65
65
|
FAIL=$((FAIL+1))
|
|
66
66
|
fi
|
|
67
67
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Usage: bash setup/clone-fork.sh
|
|
4
4
|
set -e
|
|
5
5
|
|
|
6
|
-
FORK_DIR="${GEO_SEO_FORK_PATH:-$HOME/geo-seo-claude}"
|
|
6
|
+
FORK_DIR="${GEO_SEO_HOME:-${GEO_SEO_FORK_PATH:-$HOME/geo-seo-claude}}"
|
|
7
7
|
REPO_URL="https://github.com/zubair-trabzada/geo-seo-claude"
|
|
8
8
|
|
|
9
9
|
echo "=== Growthub GEO SEO Studio — Fork Setup ==="
|
|
@@ -68,7 +68,7 @@ console.log("--- Fork Path Check ---");
|
|
|
68
68
|
|
|
69
69
|
// ─── Fork Path ─────────────────────────────────────────────────────────────
|
|
70
70
|
|
|
71
|
-
const forkPathRaw = config["GEO_SEO_FORK_PATH"] || join(homedir(), "geo-seo-claude");
|
|
71
|
+
const forkPathRaw = config["GEO_SEO_HOME"] || config["GEO_SEO_FORK_PATH"] || join(homedir(), "geo-seo-claude");
|
|
72
72
|
const forkPath = resolve(forkPathRaw);
|
|
73
73
|
|
|
74
74
|
if (existsSync(forkPath)) {
|
|
@@ -7,7 +7,7 @@ Use this checklist before starting a session, when validating a kit installation
|
|
|
7
7
|
## PRE-SESSION CHECKLIST
|
|
8
8
|
|
|
9
9
|
### Environment
|
|
10
|
-
- [ ] geo-seo-claude fork is present at `GEO_SEO_FORK_PATH` (
|
|
10
|
+
- [ ] geo-seo-claude fork is present at `GEO_SEO_HOME` / `GEO_SEO_FORK_PATH` (default `$HOME/geo-seo-claude`) — OR agent-only mode is confirmed
|
|
11
11
|
- [ ] Python 3.8+ is installed (`python3 --version`)
|
|
12
12
|
- [ ] Playwright is installed (`playwright --version`)
|
|
13
13
|
- [ ] Playwright chromium browser is installed (`playwright install chromium` — or already done)
|
|
@@ -68,7 +68,7 @@ If `python3` is not found, stop and tell the user:
|
|
|
68
68
|
|
|
69
69
|
**Check 2 — Fork exists (local-fork mode only):**
|
|
70
70
|
|
|
71
|
-
Check whether geo-seo-claude is cloned at `
|
|
71
|
+
Check whether geo-seo-claude is cloned at `GEO_SEO_HOME` (legacy alias: `GEO_SEO_FORK_PATH`; default `$HOME/geo-seo-claude`).
|
|
72
72
|
|
|
73
73
|
If the clone is missing and the user wants local-fork mode, stop and tell the user:
|
|
74
74
|
|
|
@@ -3,5 +3,7 @@
|
|
|
3
3
|
# Never commit .env to version control.
|
|
4
4
|
|
|
5
5
|
# Absolute path to your local Hyperframes clone.
|
|
6
|
-
#
|
|
7
|
-
HYPERFRAMES_LOCAL_PATH
|
|
6
|
+
# Canonical env var: HYPERFRAMES_HOME (uniform pattern across all worker kits)
|
|
7
|
+
# Legacy alias: HYPERFRAMES_LOCAL_PATH (still accepted by the CLI)
|
|
8
|
+
# Default when unset: $HOME/hyperframes
|
|
9
|
+
HYPERFRAMES_HOME=$HOME/hyperframes
|
package/assets/worker-kits/growthub-hyperframes-studio-v1/docs/hyperframes-discovery-path.md
CHANGED
|
@@ -8,5 +8,5 @@ Discovery path:
|
|
|
8
8
|
|
|
9
9
|
Feature branch demo checks:
|
|
10
10
|
|
|
11
|
-
- `
|
|
12
|
-
- `
|
|
11
|
+
- `bash scripts/demo-cli.sh cli kit list --family studio`
|
|
12
|
+
- `bash scripts/demo-cli.sh cli kit inspect hyperframes`
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
|
|
4
4
|
REPO_URL="${HYPERFRAMES_REPO_URL:-https://github.com/heygen-com/hyperframes}"
|
|
5
|
-
|
|
5
|
+
# Canonical: HYPERFRAMES_HOME. Legacy alias: HYPERFRAMES_LOCAL_PATH.
|
|
6
|
+
LOCAL_PATH="${HYPERFRAMES_HOME:-${HYPERFRAMES_LOCAL_PATH:-./.hyperframes}}"
|
|
6
7
|
|
|
7
8
|
if [ -d "${LOCAL_PATH}/.git" ]; then
|
|
8
9
|
git -C "${LOCAL_PATH}" fetch origin
|
|
@@ -8,8 +8,9 @@ if (!fs.existsSync(envPath)) {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
const raw = fs.readFileSync(envPath, "utf8");
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
// Canonical: HYPERFRAMES_HOME. Legacy alias: HYPERFRAMES_LOCAL_PATH.
|
|
12
|
+
if (!raw.includes("HYPERFRAMES_HOME=") && !raw.includes("HYPERFRAMES_LOCAL_PATH=")) {
|
|
13
|
+
console.error("HYPERFRAMES_HOME (or legacy HYPERFRAMES_LOCAL_PATH) is required in .env");
|
|
13
14
|
process.exit(1);
|
|
14
15
|
}
|
|
15
16
|
|
|
@@ -7,3 +7,8 @@ MUAPI_API_KEY=your_muapi_key_here
|
|
|
7
7
|
|
|
8
8
|
# Muapi base URL — do not change unless self-hosting
|
|
9
9
|
MUAPI_BASE_URL=https://api.muapi.io
|
|
10
|
+
|
|
11
|
+
# Optional: override local fork path for Open-Higgsfield-AI clone.
|
|
12
|
+
# Canonical env var: OPEN_HIGGSFIELD_HOME (uniform pattern across all worker kits)
|
|
13
|
+
# Default when unset: $HOME/open-higgsfield-ai
|
|
14
|
+
# OPEN_HIGGSFIELD_HOME=$HOME/open-higgsfield-ai
|
|
@@ -50,7 +50,7 @@ Checks for `node`, `npm`, `git`, and `ffmpeg`. All four are required for local-f
|
|
|
50
50
|
bash setup/clone-fork.sh
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
Clones the Open Higgsfield AI repo to
|
|
53
|
+
Clones the Open Higgsfield AI repo to `$HOME/open-higgsfield-ai`, installs dependencies, **automatically applies the CORS proxy patch** (see `setup/patch-cors-proxy.sh`), and starts the dev server at `http://localhost:3001`.
|
|
54
54
|
|
|
55
55
|
The CORS patch is required — the upstream repo calls `api.muapi.ai` directly from the browser, which modern browsers block. The patch routes all API calls through the local Next.js server instead.
|
|
56
56
|
|
|
@@ -60,7 +60,7 @@ Next.js proxies them to `api.muapi.ai` from the server where CORS does not apply
|
|
|
60
60
|
**To apply manually if not already patched:**
|
|
61
61
|
```bash
|
|
62
62
|
bash setup/patch-cors-proxy.sh [path-to-fork]
|
|
63
|
-
# defaults to
|
|
63
|
+
# defaults to $HOME/open-higgsfield-ai
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
**Affected functions in muapi.js:**
|
|
@@ -31,8 +31,10 @@ XAI_API_KEY=your_xai_key_here
|
|
|
31
31
|
|
|
32
32
|
# ─── OpenMontage Fork Path ───
|
|
33
33
|
# Absolute path to your local OpenMontage clone.
|
|
34
|
-
#
|
|
35
|
-
# OPENMONTAGE_PATH
|
|
34
|
+
# Canonical env var: OPEN_MONTAGE_HOME (uniform pattern across all worker kits)
|
|
35
|
+
# Legacy alias: OPENMONTAGE_PATH (still accepted by the CLI)
|
|
36
|
+
# Default when unset: $HOME/OpenMontage
|
|
37
|
+
# OPEN_MONTAGE_HOME=$HOME/OpenMontage
|
|
36
38
|
|
|
37
39
|
# ─── GrowthHub CMS Node Bridge ───
|
|
38
40
|
# When using CMS nodes for video/image generation, the bridge
|
|
@@ -58,7 +58,7 @@ bash setup/check-deps.sh # Check Python, FFmpeg, Node.js, Git
|
|
|
58
58
|
bash setup/clone-fork.sh # Clone OpenMontage and run make setup
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
This clones OpenMontage to
|
|
61
|
+
This clones OpenMontage to `$HOME/OpenMontage`, installs all dependencies (Python packages, Remotion, Piper TTS), and verifies the tool registry.
|
|
62
62
|
|
|
63
63
|
Skip this step if you are using agent-only or hybrid mode.
|
|
64
64
|
|
|
@@ -27,7 +27,7 @@ This file documents the runtime environment expectations for the Open Montage St
|
|
|
27
27
|
|
|
28
28
|
### OpenMontage Clone
|
|
29
29
|
|
|
30
|
-
- Default path:
|
|
30
|
+
- Default path: `$HOME/OpenMontage` (override with `OPEN_MONTAGE_HOME` (legacy: `OPENMONTAGE_PATH`) in `.env`)
|
|
31
31
|
- Setup: `git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup`
|
|
32
32
|
- The clone includes Python requirements, Remotion composer, and Piper TTS
|
|
33
33
|
|
|
@@ -4,7 +4,8 @@ set -euo pipefail
|
|
|
4
4
|
# Clone and set up OpenMontage for local-fork execution mode.
|
|
5
5
|
# Usage: bash setup/clone-fork.sh [target-dir]
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
# Canonical: OPEN_MONTAGE_HOME. Legacy alias: OPENMONTAGE_PATH.
|
|
8
|
+
TARGET_DIR="${1:-${OPEN_MONTAGE_HOME:-${OPENMONTAGE_PATH:-$HOME/OpenMontage}}}"
|
|
8
9
|
|
|
9
10
|
echo "=== OpenMontage Fork Setup ==="
|
|
10
11
|
echo "Target directory: $TARGET_DIR"
|
|
@@ -89,8 +89,11 @@ if (configured.length === 0) {
|
|
|
89
89
|
|
|
90
90
|
console.log(`[summary] ${configured.length} provider(s) configured, ${missing.length} not set.`);
|
|
91
91
|
|
|
92
|
-
// Check OpenMontage path
|
|
93
|
-
const omPath =
|
|
92
|
+
// Check OpenMontage path — canonical OPEN_MONTAGE_HOME, legacy alias OPENMONTAGE_PATH.
|
|
93
|
+
const omPath =
|
|
94
|
+
env.OPEN_MONTAGE_HOME ||
|
|
95
|
+
env.OPENMONTAGE_PATH ||
|
|
96
|
+
resolve(process.env.HOME || "~", "OpenMontage");
|
|
94
97
|
if (existsSync(omPath)) {
|
|
95
98
|
console.log(`[ok] OpenMontage clone found at: ${omPath}`);
|
|
96
99
|
} else {
|
|
@@ -16,9 +16,9 @@ Run through this checklist before your first generation session.
|
|
|
16
16
|
- [ ] Python 3.10+ installed: `python3 --version`
|
|
17
17
|
- [ ] FFmpeg installed: `ffmpeg -version`
|
|
18
18
|
- [ ] Node.js 18+ installed: `node --version`
|
|
19
|
-
- [ ] OpenMontage clone exists at `$OPENMONTAGE_PATH` (default
|
|
20
|
-
- [ ] OpenMontage setup completed: `cd
|
|
21
|
-
- [ ] Remotion dependencies installed: `cd
|
|
19
|
+
- [ ] OpenMontage clone exists at `$OPENMONTAGE_PATH` (default `$HOME/OpenMontage`)
|
|
20
|
+
- [ ] OpenMontage setup completed: `cd $HOME/OpenMontage && python -c "from tools.tool_registry import registry; registry.discover(); print('OK')"`
|
|
21
|
+
- [ ] Remotion dependencies installed: `cd $HOME/OpenMontage/remotion-composer && node -e "require('remotion')"`
|
|
22
22
|
|
|
23
23
|
## CMS Node Validation (skip if local-fork only)
|
|
24
24
|
|
|
@@ -76,7 +76,7 @@ If none are set, check whether the user has a GrowthHub session for CMS node gen
|
|
|
76
76
|
|
|
77
77
|
**Check 3 — OpenMontage clone (local-fork mode only):**
|
|
78
78
|
|
|
79
|
-
If using `local-fork` execution mode, check whether the clone exists at the path in `OPENMONTAGE_PATH` (default
|
|
79
|
+
If using `local-fork` execution mode, check whether the clone exists at the path in `OPEN_MONTAGE_HOME` (legacy: `OPENMONTAGE_PATH`) (default `$HOME/OpenMontage`).
|
|
80
80
|
|
|
81
81
|
If not found:
|
|
82
82
|
|
|
@@ -148,7 +148,7 @@ remotion-composer/ # React/Remotion composition engine
|
|
|
148
148
|
Run capability discovery if local fork is available:
|
|
149
149
|
|
|
150
150
|
```bash
|
|
151
|
-
cd
|
|
151
|
+
cd $HOME/OpenMontage && python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))"
|
|
152
152
|
```
|
|
153
153
|
|
|
154
154
|
If the user is not pointing at a fork checkout, proceed using the assumptions frozen in this kit and explicitly mark the plan as `repo-unverified`.
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
# Never commit .env to version control.
|
|
4
4
|
|
|
5
5
|
# Optional override for your local Postiz fork path.
|
|
6
|
-
#
|
|
7
|
-
# POSTIZ_FORK_PATH
|
|
6
|
+
# Canonical env var: POSTIZ_HOME (uniform pattern across all worker kits)
|
|
7
|
+
# Legacy alias: POSTIZ_FORK_PATH (still accepted by the CLI)
|
|
8
|
+
# Default when unset: $HOME/postiz-app
|
|
9
|
+
# POSTIZ_HOME=/path/to/your/postiz-app
|
|
8
10
|
|
|
9
11
|
# Base URL for the local Postiz API.
|
|
10
12
|
POSTIZ_API_URL=http://localhost:3000
|
|
@@ -43,7 +43,7 @@ node setup/verify-env.mjs
|
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
This checks:
|
|
46
|
-
- Whether the Postiz fork is cloned at `POSTIZ_FORK_PATH` (default:
|
|
46
|
+
- Whether the Postiz fork is cloned at `POSTIZ_HOME` (legacy: `POSTIZ_FORK_PATH`) (default: `$HOME/postiz-app`)
|
|
47
47
|
- Whether the Postiz API is reachable on port 3000
|
|
48
48
|
- Whether `ANTHROPIC_API_KEY` is valid format (if set for AI caption enhancement)
|
|
49
49
|
- No OAuth tokens are validated here — those are managed inside Postiz
|
|
@@ -62,7 +62,7 @@ Verifies that `node`, `docker`, `docker compose`, and `git` are available. Check
|
|
|
62
62
|
bash setup/clone-fork.sh
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
This clones `postiz-app` to
|
|
65
|
+
This clones `postiz-app` to `$HOME/postiz-app` (or `POSTIZ_HOME` (legacy: `POSTIZ_FORK_PATH`) if set), runs `docker compose up -d` to start Redis, PostgreSQL, and the Postiz API, and waits for the API healthcheck to pass.
|
|
66
66
|
|
|
67
67
|
Skip this step if you are using **agent-only mode** — the operator can plan campaigns, draft captions, and produce content calendars without a running Postiz instance.
|
|
68
68
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Usage: bash setup/clone-fork.sh
|
|
4
4
|
set -e
|
|
5
5
|
|
|
6
|
-
FORK_DIR="${POSTIZ_FORK_PATH:-$HOME/postiz-app}"
|
|
6
|
+
FORK_DIR="${POSTIZ_HOME:-${POSTIZ_FORK_PATH:-$HOME/postiz-app}}"
|
|
7
7
|
REPO_URL="https://github.com/gitroomhq/postiz-app"
|
|
8
8
|
|
|
9
9
|
echo "=== Growthub Postiz Social Media Studio — Fork Setup ==="
|
|
@@ -29,7 +29,8 @@ console.log("=".repeat(60));
|
|
|
29
29
|
console.log("");
|
|
30
30
|
|
|
31
31
|
// --- Check 1: Postiz fork path ---
|
|
32
|
-
|
|
32
|
+
// Canonical: POSTIZ_HOME. Legacy alias: POSTIZ_FORK_PATH.
|
|
33
|
+
const forkPath = process.env.POSTIZ_HOME ?? process.env.POSTIZ_FORK_PATH ?? join(homedir(), "postiz-app");
|
|
33
34
|
const forkExists = existsSync(forkPath);
|
|
34
35
|
check("Postiz fork directory exists", forkExists, forkExists ? forkPath : `Not found at ${forkPath}`);
|
|
35
36
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
### Local-Fork Mode (skip if agent-only)
|
|
17
17
|
|
|
18
|
-
- [ ] Postiz fork is cloned at `POSTIZ_FORK_PATH` (default:
|
|
18
|
+
- [ ] Postiz fork is cloned at `POSTIZ_HOME` (legacy: `POSTIZ_FORK_PATH`) (default: `$HOME/postiz-app`)
|
|
19
19
|
- [ ] `docker compose ps` shows `postiz`, `postiz-postgres`, `postiz-redis` all running
|
|
20
20
|
- [ ] `curl http://localhost:3000/api/healthcheck` returns a 200 response
|
|
21
21
|
- [ ] At least one platform integration is connected and authorized in the Postiz admin UI
|