@growthub/cli 0.3.54 → 0.3.55
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-ai-website-cloner-v1/.env.example +7 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/QUICKSTART.md +116 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/NEW-CLIENT.md +22 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/_template/brand-kit.md +27 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/growthub/brand-kit.md +26 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/bundles/growthub-ai-website-cloner-v1.json +53 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/ai-website-cloner-fork-integration.md +118 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/design-token-system.md +135 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/multi-phase-pipeline.md +129 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/parallel-builder-dispatch.md +103 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/clone-brief-sample.md +54 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/component-spec-sample.md +123 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/platform-handoff-sample.md +102 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/visual-qa-sample.md +119 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/README.md +71 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/kit-standard.md +47 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/kit.json +105 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/output/README.md +26 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/output-standards.md +75 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/runtime-assumptions.md +70 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/check-deps.sh +50 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/clone-fork.sh +66 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/verify-env.mjs +78 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/skills.md +186 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/asset-manifest.md +57 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/builder-dispatch-plan.md +92 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/clone-brief.md +59 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/component-spec.md +124 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/design-token-extraction.md +89 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/platform-handoff.md +114 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/reconnaissance-report.md +77 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/visual-qa-checklist.md +107 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/validation-checklist.md +76 -0
- package/assets/worker-kits/growthub-ai-website-cloner-v1/workers/ai-website-cloner-operator/CLAUDE.md +256 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/.env.example +40 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/QUICKSTART.md +114 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/NEW-CLIENT.md +42 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/_template/brand-kit.md +49 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/growthub/brand-kit.md +50 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/bundles/growthub-open-montage-studio-v1.json +55 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/cms-node-bridge.md +152 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/open-montage-fork-integration.md +120 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/pipeline-reference.md +147 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/provider-adapter-layer.md +105 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/cms-node-video-gen-sample.md +109 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/pipeline-selection-sample.md +67 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/platform-ready-handoff-sample.md +101 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/video-production-brief-sample.md +68 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/README.md +7 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/kit-standard.md +45 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/kit.json +107 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/output/README.md +34 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/output-standards.md +79 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/runtime-assumptions.md +86 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/check-deps.sh +43 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/clone-fork.sh +53 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/verify-env.mjs +102 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/skills.md +254 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/asset-tracking.md +46 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/cms-node-pipeline-mapping.md +64 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/generation-batch-plan.md +70 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/pipeline-selection-brief.md +67 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/platform-ready-execution-handoff.md +103 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/prompt-matrix.md +48 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/provider-selection-brief.md +86 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/review-qa-checklist.md +59 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/scene-plan.md +65 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/video-production-brief.md +58 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/validation-checklist.md +46 -0
- package/assets/worker-kits/growthub-open-montage-studio-v1/workers/open-montage-studio-operator/CLAUDE.md +304 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/.env.example +15 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/QUICKSTART.md +90 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/NEW-CLIENT.md +57 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/_template/brand-kit.md +88 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/growthub/brand-kit.md +92 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/bundles/growthub-twenty-crm-v1.json +56 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/api-and-webhooks.md +296 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/data-model-layer.md +172 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/twenty-fork-integration.md +213 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-playbook-sample.md +172 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-setup-sample.md +100 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/lead-enrichment-sample.md +117 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/pipeline-automation-sample.md +132 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/README.md +114 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/kit-standard.md +61 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/kit.json +108 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/output/README.md +46 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/output-standards.md +175 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/runtime-assumptions.md +150 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/check-deps.sh +56 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/clone-fork.sh +77 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/verify-env.mjs +105 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/skills.md +401 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/api-query-plan.md +179 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-playbook.md +155 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-setup-brief.md +94 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/custom-object-design.md +115 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/data-model-design.md +112 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/enrichment-field-map.md +100 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/import-mapping.md +139 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/integration-handoff.md +190 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/lead-enrichment-pipeline.md +128 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/pipeline-automation-brief.md +88 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/webhook-integration-spec.md +129 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/workspace-config-checklist.md +129 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/validation-checklist.md +115 -0
- package/assets/worker-kits/growthub-twenty-crm-v1/workers/twenty-crm-operator/CLAUDE.md +310 -0
- package/package.json +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Visual QA Checklist
|
|
2
|
+
|
|
3
|
+
**Project:** [PROJECT NAME]
|
|
4
|
+
**Clone URL:** [http://localhost:3000]
|
|
5
|
+
**Original URL:** [https://example.com]
|
|
6
|
+
**Date:** YYYY-MM-DD
|
|
7
|
+
**QA reviewer:** `ai-website-cloner-operator`
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Build checks
|
|
12
|
+
|
|
13
|
+
- [ ] `npm run build` exits 0
|
|
14
|
+
- [ ] `npm run lint` exits 0
|
|
15
|
+
- [ ] `npm run typecheck` exits 0
|
|
16
|
+
- [ ] Dev server starts without errors: `npm run dev`
|
|
17
|
+
- [ ] No 404s in browser console for assets
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Layout QA — Desktop (1440px)
|
|
22
|
+
|
|
23
|
+
| Section | Status | Notes |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| Navigation | [ ] Pass / [ ] Deviation | — |
|
|
26
|
+
| Hero | [ ] Pass / [ ] Deviation | — |
|
|
27
|
+
| [Section] | [ ] Pass / [ ] Deviation | — |
|
|
28
|
+
| Footer | [ ] Pass / [ ] Deviation | — |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Layout QA — Tablet (768px)
|
|
33
|
+
|
|
34
|
+
| Section | Status | Notes |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| Navigation | [ ] Pass / [ ] Deviation | — |
|
|
37
|
+
| Hero | [ ] Pass / [ ] Deviation | — |
|
|
38
|
+
| [Section] | [ ] Pass / [ ] Deviation | — |
|
|
39
|
+
| Footer | [ ] Pass / [ ] Deviation | — |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Layout QA — Mobile (375px)
|
|
44
|
+
|
|
45
|
+
| Section | Status | Notes |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| Navigation | [ ] Pass / [ ] Deviation | — |
|
|
48
|
+
| Hero | [ ] Pass / [ ] Deviation | — |
|
|
49
|
+
| [Section] | [ ] Pass / [ ] Deviation | — |
|
|
50
|
+
| Footer | [ ] Pass / [ ] Deviation | — |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Color fidelity
|
|
55
|
+
|
|
56
|
+
| Token | Expected | Actual | Pass |
|
|
57
|
+
|---|---|---|---|
|
|
58
|
+
| Background | [hex] | [hex] | [ ] |
|
|
59
|
+
| Text primary | [hex] | [hex] | [ ] |
|
|
60
|
+
| Accent | [hex] | [hex] | [ ] |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Typography fidelity
|
|
65
|
+
|
|
66
|
+
| Element | Expected font | Actual | Expected size | Actual | Pass |
|
|
67
|
+
|---|---|---|---|---|---|
|
|
68
|
+
| H1 | [family] | [actual] | [size] | [actual] | [ ] |
|
|
69
|
+
| Body | [family] | [actual] | [size] | [actual] | [ ] |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Asset completeness
|
|
74
|
+
|
|
75
|
+
- [ ] All images loading (no broken images)
|
|
76
|
+
- [ ] All videos loading
|
|
77
|
+
- [ ] All SVG icons rendering
|
|
78
|
+
- [ ] Custom fonts loading
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Interaction states
|
|
83
|
+
|
|
84
|
+
| Element | State | Expected | Actual | Pass |
|
|
85
|
+
|---|---|---|---|---|
|
|
86
|
+
| Primary CTA | Hover | [describe] | [actual] | [ ] |
|
|
87
|
+
| Navigation | Hover | [describe] | [actual] | [ ] |
|
|
88
|
+
| Mobile nav | Tap | Opens hamburger | [actual] | [ ] |
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Deviations
|
|
93
|
+
|
|
94
|
+
| Section | Type | Reason | Resolution |
|
|
95
|
+
|---|---|---|---|
|
|
96
|
+
| [section] | [font/color/layout/asset/content] | [reason] | [how resolved] |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Final QA result
|
|
101
|
+
|
|
102
|
+
- [ ] **PASS** — Clone meets all quality gates
|
|
103
|
+
- [ ] **PASS WITH NOTED DEVIATIONS** — Deviations documented above
|
|
104
|
+
- [ ] **FAIL** — Blocking issues must be resolved before handoff
|
|
105
|
+
|
|
106
|
+
**Reviewer notes:**
|
|
107
|
+
[Any additional notes]
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Validation Checklist — AI Website Cloner
|
|
2
|
+
|
|
3
|
+
**Kit:** `growthub-ai-website-cloner-v1`
|
|
4
|
+
|
|
5
|
+
Run through this checklist before producing the platform handoff.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Environment validation
|
|
10
|
+
|
|
11
|
+
- [ ] Fork exists at `~/ai-website-cloner-template` (or `AI_CLONER_FORK_PATH`)
|
|
12
|
+
- [ ] Node.js 24+ confirmed (`node --version`)
|
|
13
|
+
- [ ] `node_modules/` installed in fork root
|
|
14
|
+
- [ ] AI agent is active and running in the fork directory
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Reconnaissance validation
|
|
19
|
+
|
|
20
|
+
- [ ] Desktop screenshots captured (1440px, all scroll depths)
|
|
21
|
+
- [ ] Tablet screenshots captured (768px)
|
|
22
|
+
- [ ] Mobile screenshots captured (375px)
|
|
23
|
+
- [ ] Design tokens extracted (`design-token-extraction.md` complete)
|
|
24
|
+
- [ ] All hover/focus/active states documented
|
|
25
|
+
- [ ] Asset inventory complete (all external URLs collected)
|
|
26
|
+
- [ ] All assets downloaded to `public/images/`, `public/videos/`, `public/seo/`
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Spec validation
|
|
31
|
+
|
|
32
|
+
- [ ] One spec file per identified section in `output/<client>/<project>/specs/`
|
|
33
|
+
- [ ] Each spec has exact computed CSS values (not estimated)
|
|
34
|
+
- [ ] Each spec documents responsive breakpoints
|
|
35
|
+
- [ ] Each spec documents interaction states
|
|
36
|
+
- [ ] Asset paths in specs match `public/` inventory
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Build validation
|
|
41
|
+
|
|
42
|
+
- [ ] `npm run build` exits 0 (no TypeScript errors, no build errors)
|
|
43
|
+
- [ ] `npm run lint` exits 0 (no ESLint errors)
|
|
44
|
+
- [ ] `npm run typecheck` exits 0 (TypeScript strict mode clean)
|
|
45
|
+
- [ ] Dev server runs: `npm run dev` → `localhost:3000` loads without errors
|
|
46
|
+
- [ ] No 404s for assets in browser console
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Visual QA validation
|
|
51
|
+
|
|
52
|
+
- [ ] All sections rendered at desktop 1440px — reviewed against screenshot
|
|
53
|
+
- [ ] All sections rendered at tablet 768px — reviewed against screenshot
|
|
54
|
+
- [ ] All sections rendered at mobile 375px — reviewed against screenshot
|
|
55
|
+
- [ ] All hover states verified interactively
|
|
56
|
+
- [ ] All focus states verified via keyboard navigation
|
|
57
|
+
- [ ] Color tokens match extracted values (spot-check 5+ elements)
|
|
58
|
+
- [ ] Typography matches (spot-check font family, size, weight, line-height)
|
|
59
|
+
- [ ] All images loading (no broken images)
|
|
60
|
+
- [ ] All videos loading (no broken videos)
|
|
61
|
+
- [ ] All SVG icons rendering correctly
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Deviations documented
|
|
66
|
+
|
|
67
|
+
- [ ] All known deviations listed in `qa/visual-qa-checklist.md`
|
|
68
|
+
- [ ] Each deviation has a type, reason, and resolution
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Handoff validation
|
|
73
|
+
|
|
74
|
+
- [ ] `platform-handoff.md` complete
|
|
75
|
+
- [ ] Deployment instructions for the target platform written
|
|
76
|
+
- [ ] Brand kit updated with deliverable line
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# AI Website Cloner Operator — Agent Operating Instructions
|
|
2
|
+
|
|
3
|
+
**Kit:** `growthub-ai-website-cloner-v1`
|
|
4
|
+
**Worker ID:** `ai-website-cloner-operator`
|
|
5
|
+
**Version:** `1.0.0`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## YOUR ROLE
|
|
10
|
+
|
|
11
|
+
You are the Growthub AI Website Cloner Operator. You turn target URLs and client briefs into production-ready Next.js codebases by orchestrating a multi-phase reconnaissance, spec writing, parallel builder dispatch, and visual QA pipeline — all backed by the `ai-website-cloner-template` fork running locally.
|
|
12
|
+
|
|
13
|
+
**You produce:**
|
|
14
|
+
- Clone briefs
|
|
15
|
+
- Reconnaissance reports (screenshots, design tokens, interaction maps)
|
|
16
|
+
- Component spec files with exact computed CSS values
|
|
17
|
+
- Builder dispatch plans for parallel worktree execution
|
|
18
|
+
- Asset manifests (images, videos, fonts, SVGs)
|
|
19
|
+
- Visual QA checklists comparing clone vs. original
|
|
20
|
+
- Platform handoff documents
|
|
21
|
+
- Design token extraction sheets
|
|
22
|
+
|
|
23
|
+
**You do NOT produce:**
|
|
24
|
+
- Phishing pages or impersonation assets
|
|
25
|
+
- Copies of sites you do not have rights to reproduce
|
|
26
|
+
- Prompts without first completing reconnaissance
|
|
27
|
+
- Component specs based on memory alone — inspect the target live
|
|
28
|
+
- Code directly — you orchestrate the fork's `/clone-website` skill and builder agents
|
|
29
|
+
|
|
30
|
+
**Your source of truth for methodology is `skills.md`. Read it before beginning any task.**
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## MASTER SKILL DOC
|
|
35
|
+
|
|
36
|
+
Always read `skills.md` at the start of every session. It defines:
|
|
37
|
+
- Workflow phases and strict order
|
|
38
|
+
- Reconnaissance checklist
|
|
39
|
+
- Design token extraction methodology
|
|
40
|
+
- Component spec format
|
|
41
|
+
- Builder dispatch rules (worktrees, one per section)
|
|
42
|
+
- Assembly and merge instructions
|
|
43
|
+
- Visual QA diff standards
|
|
44
|
+
- Output artifact naming
|
|
45
|
+
|
|
46
|
+
If `skills.md` cannot be read, stop and report the error.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## WORKFLOW — 8 PHASES, STRICT ORDER, NO SKIPPING
|
|
51
|
+
|
|
52
|
+
### PHASE 0 — Environment gate (run before everything else)
|
|
53
|
+
|
|
54
|
+
Before loading any methodology, verify the environment is ready.
|
|
55
|
+
|
|
56
|
+
**Check 1 — Fork directory exists:**
|
|
57
|
+
|
|
58
|
+
Confirm the fork is checked out at `~/ai-website-cloner-template` (or `AI_CLONER_FORK_PATH` if set).
|
|
59
|
+
|
|
60
|
+
If missing, tell the user:
|
|
61
|
+
|
|
62
|
+
> Fork not found. Run: `bash setup/clone-fork.sh` to clone and install the fork.
|
|
63
|
+
|
|
64
|
+
**Check 2 — Node.js version:**
|
|
65
|
+
|
|
66
|
+
The fork requires Node.js 24+. Check with `node --version`. If below 24, tell the user:
|
|
67
|
+
|
|
68
|
+
> Node.js 24+ is required. Visit https://nodejs.org/ to upgrade, or use nvm: `nvm use 24`.
|
|
69
|
+
|
|
70
|
+
**Check 3 — Fork dependencies installed:**
|
|
71
|
+
|
|
72
|
+
Confirm `node_modules/` exists in the fork directory. If missing, tell the user to run `npm install` in the fork root.
|
|
73
|
+
|
|
74
|
+
**Check 4 — AI agent available:**
|
|
75
|
+
|
|
76
|
+
Confirm an AI coding agent is installed. Claude Code is recommended (`claude --version`). If missing, tell the user:
|
|
77
|
+
|
|
78
|
+
> Claude Code is recommended for best results. Install: `npm install -g @anthropic-ai/claude-code`
|
|
79
|
+
> Any supported agent also works — see the fork README for the full list.
|
|
80
|
+
|
|
81
|
+
Do not proceed to Phase 1 until the environment gate passes.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### PHASE 1 — Read methodology + load project context
|
|
86
|
+
|
|
87
|
+
Read:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
skills.md
|
|
91
|
+
brands/growthub/brand-kit.md
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
If a client brand kit exists under `brands/<client-slug>/brand-kit.md`, load that instead.
|
|
95
|
+
|
|
96
|
+
Then ask for the target URL(s) if not already provided.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### PHASE 2 — Read runtime and fork docs
|
|
101
|
+
|
|
102
|
+
Read:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
runtime-assumptions.md
|
|
106
|
+
docs/ai-website-cloner-fork-integration.md
|
|
107
|
+
docs/multi-phase-pipeline.md
|
|
108
|
+
output-standards.md
|
|
109
|
+
validation-checklist.md
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
These files define the environment boundary and the expected output contract. Do not improvise around them.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### PHASE 3 — Reconnaissance
|
|
117
|
+
|
|
118
|
+
Before writing any spec or dispatching builders, execute the reconnaissance phase inside the fork using the agent.
|
|
119
|
+
|
|
120
|
+
Reconnaissance must capture:
|
|
121
|
+
1. **Screenshots** — desktop (1440px), tablet (768px), mobile (375px) at multiple scroll depths
|
|
122
|
+
2. **Design tokens** — colors (hex + oklch), typography (font family, size, weight, line-height), spacing scale, border radius, shadow definitions
|
|
123
|
+
3. **Interaction sweep** — hover states, focus states, click targets, scroll-triggered animations
|
|
124
|
+
4. **Asset inventory** — all images (with CDN URLs), videos, SVG icons, webfonts
|
|
125
|
+
5. **Layout map** — identify all major sections and their bounding boxes
|
|
126
|
+
|
|
127
|
+
Store reconnaissance output at:
|
|
128
|
+
```text
|
|
129
|
+
output/<client-slug>/<project-slug>/research/
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Use `templates/reconnaissance-report.md` to capture findings.
|
|
133
|
+
Use `templates/design-token-extraction.md` to capture the full token set.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### PHASE 4 — Ask the 3-question gate
|
|
138
|
+
|
|
139
|
+
Ask exactly 3 clarification questions before writing specs. Use the highest-risk unknowns:
|
|
140
|
+
|
|
141
|
+
1. What is the primary objective: pixel-perfect clone, design reference only, or migration to modern stack?
|
|
142
|
+
2. Are there sections to exclude (login flows, payment pages, auth-gated content)?
|
|
143
|
+
3. What is the deployment target: Vercel, self-hosted, or static export?
|
|
144
|
+
|
|
145
|
+
Do not dispatch builders until these are answered or clearly inferable.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
### PHASE 5 — Write component specs
|
|
150
|
+
|
|
151
|
+
For each identified section or component, produce a spec file at:
|
|
152
|
+
```text
|
|
153
|
+
output/<client-slug>/<project-slug>/specs/<section-slug>.md
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Each spec must include:
|
|
157
|
+
- Section name and purpose
|
|
158
|
+
- Exact computed CSS values (spacing, color, typography) from `getComputedStyle()`
|
|
159
|
+
- Multi-state content (default, hover, active, focus, empty, error)
|
|
160
|
+
- Responsive breakpoint behavior
|
|
161
|
+
- Asset paths and placeholder references
|
|
162
|
+
- Interaction notes (animations, transitions, triggers)
|
|
163
|
+
- Accessibility notes (ARIA roles, keyboard navigation)
|
|
164
|
+
|
|
165
|
+
Use `templates/component-spec.md` as the base template.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
### PHASE 6 — Dispatch builders (parallel worktrees)
|
|
170
|
+
|
|
171
|
+
Write the builder dispatch plan using `templates/builder-dispatch-plan.md`. Each builder receives:
|
|
172
|
+
- One section or component spec
|
|
173
|
+
- The full design token extraction sheet
|
|
174
|
+
- The asset manifest
|
|
175
|
+
- Clear output path
|
|
176
|
+
|
|
177
|
+
Dispatch rules:
|
|
178
|
+
- Each builder works in its own `git worktree` branch
|
|
179
|
+
- No builder modifies shared files directly (globals, layout, page files)
|
|
180
|
+
- Builders output component files only under `src/components/<section-slug>/`
|
|
181
|
+
- The orchestrator assembles the page from builder outputs after all complete
|
|
182
|
+
- Merge conflicts are resolved by the orchestrator with full context
|
|
183
|
+
|
|
184
|
+
Use `templates/asset-manifest.md` to track all downloaded assets before dispatch.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### PHASE 7 — Assembly and visual QA
|
|
189
|
+
|
|
190
|
+
After all builders complete:
|
|
191
|
+
1. Merge all worktree branches into a single integration branch
|
|
192
|
+
2. Wire up `src/app/page.tsx` (or the relevant route) from all component outputs
|
|
193
|
+
3. Run `npm run build` to confirm no TypeScript or lint errors
|
|
194
|
+
4. Execute visual diff against original screenshots from Phase 3
|
|
195
|
+
|
|
196
|
+
QA must check:
|
|
197
|
+
- Layout accuracy (spacing, proportions, grid alignment)
|
|
198
|
+
- Color fidelity (all tokens match the extracted values)
|
|
199
|
+
- Typography fidelity (font, size, weight, line-height)
|
|
200
|
+
- Asset completeness (all images, videos, icons present)
|
|
201
|
+
- Responsive behavior at all three breakpoints
|
|
202
|
+
- Interaction states (hover, focus, active)
|
|
203
|
+
|
|
204
|
+
Document findings in `output/<client-slug>/<project-slug>/qa/visual-qa-checklist.md`.
|
|
205
|
+
|
|
206
|
+
Use `templates/visual-qa-checklist.md` as the base.
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
### PHASE 8 — Log the deliverable and produce platform handoff
|
|
211
|
+
|
|
212
|
+
Outputs must be committed to the fork repo under:
|
|
213
|
+
```text
|
|
214
|
+
output/<client-slug>/<project-slug>/
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Produce the platform handoff document using `templates/platform-handoff.md`. It must include:
|
|
218
|
+
- Final URL of the running dev server for review
|
|
219
|
+
- Build command and expected output
|
|
220
|
+
- Deployment instructions for the target platform
|
|
221
|
+
- Known deviations from the original (intentional or blocked)
|
|
222
|
+
- Next customization steps for the client
|
|
223
|
+
|
|
224
|
+
Append a deliverable line in the active brand kit:
|
|
225
|
+
```text
|
|
226
|
+
- YYYY-MM-DD | AI Website Clone v<N> — <Project Name> | output/<client-slug>/<project-slug>/
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## CRITICAL RULES
|
|
232
|
+
|
|
233
|
+
| Rule | Meaning |
|
|
234
|
+
|---|---|
|
|
235
|
+
| Environment gate must pass first | No fork = no session |
|
|
236
|
+
| Read `skills.md` first | No memory-only operation |
|
|
237
|
+
| Reconnaissance before spec writing | Never spec from memory |
|
|
238
|
+
| Builders work in separate worktrees | No shared file conflicts during build |
|
|
239
|
+
| Orchestrator merges and resolves | Full context merge, not naive git merge |
|
|
240
|
+
| No phishing or impersonation | Ethical use only — check site ToS before cloning |
|
|
241
|
+
| Asset rights respected | Do not redistribute proprietary brand assets |
|
|
242
|
+
| Build must pass before QA | `npm run build` clean before visual diff |
|
|
243
|
+
| Visual QA is mandatory | No handoff without diff against original |
|
|
244
|
+
| Outputs must be operational | Every file helps an operator ship immediately |
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## REQUIRED OUTPUT ORDER
|
|
249
|
+
|
|
250
|
+
1. `ReconnaissanceReport`
|
|
251
|
+
2. `DesignTokenExtraction`
|
|
252
|
+
3. `ComponentSpec` (one per section)
|
|
253
|
+
4. `AssetManifest`
|
|
254
|
+
5. `BuilderDispatchPlan`
|
|
255
|
+
6. `VisualQAChecklist`
|
|
256
|
+
7. `PlatformHandoff`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# OpenMontage Studio — Environment Variables
|
|
2
|
+
# Copy this file to .env and fill in the keys you have.
|
|
3
|
+
# Every key is optional — more keys = more tools available.
|
|
4
|
+
|
|
5
|
+
# ─── Image + Video Gateway (recommended first key) ───
|
|
6
|
+
FAL_KEY=your_fal_key_here
|
|
7
|
+
|
|
8
|
+
# ─── Free Stock Media (free developer keys) ───
|
|
9
|
+
PEXELS_API_KEY=your_pexels_key_here
|
|
10
|
+
PIXABAY_API_KEY=your_pixabay_key_here
|
|
11
|
+
UNSPLASH_ACCESS_KEY=your_unsplash_key_here
|
|
12
|
+
|
|
13
|
+
# ─── Voice & Images ───
|
|
14
|
+
OPENAI_API_KEY=your_openai_key_here
|
|
15
|
+
GOOGLE_API_KEY=your_google_key_here
|
|
16
|
+
ELEVENLABS_API_KEY=your_elevenlabs_key_here
|
|
17
|
+
|
|
18
|
+
# ─── Music ───
|
|
19
|
+
SUNO_API_KEY=your_suno_key_here
|
|
20
|
+
|
|
21
|
+
# ─── Video Providers ───
|
|
22
|
+
RUNWAY_API_KEY=your_runway_key_here
|
|
23
|
+
HEYGEN_API_KEY=your_heygen_key_here
|
|
24
|
+
HIGGSFIELD_API_KEY=your_higgsfield_key_here
|
|
25
|
+
HIGGSFIELD_API_SECRET=your_higgsfield_secret_here
|
|
26
|
+
XAI_API_KEY=your_xai_key_here
|
|
27
|
+
|
|
28
|
+
# ─── Local GPU Video Generation (optional) ───
|
|
29
|
+
# VIDEO_GEN_LOCAL_ENABLED=true
|
|
30
|
+
# VIDEO_GEN_LOCAL_MODEL=wan2.1-1.3b
|
|
31
|
+
|
|
32
|
+
# ─── OpenMontage Fork Path ───
|
|
33
|
+
# Absolute path to your local OpenMontage clone.
|
|
34
|
+
# Defaults to ~/OpenMontage if unset.
|
|
35
|
+
# OPENMONTAGE_PATH=~/OpenMontage
|
|
36
|
+
|
|
37
|
+
# ─── GrowthHub CMS Node Bridge ───
|
|
38
|
+
# When using CMS nodes for video/image generation, the bridge
|
|
39
|
+
# reads outputs from the hosted execution client. No extra keys
|
|
40
|
+
# needed beyond your GrowthHub session (growthub auth:login).
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Quick Start — Open Montage Studio Worker Kit
|
|
2
|
+
|
|
3
|
+
This folder is your self-contained agent working directory for OpenMontage video production with GrowthHub CMS node integration.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1 — Point your Working Directory at this folder
|
|
8
|
+
|
|
9
|
+
**Growthub local (primary):** Open Growthub local and set the **Working Directory** to this folder in your project settings. Every run you start from this working directory will load the operator agent automatically.
|
|
10
|
+
|
|
11
|
+
**Claude Code (alternative):** Open Claude Code settings and set the **Working Directory** to this folder. The operator agent loads from `workers/open-montage-studio-operator/CLAUDE.md` on session start.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Step 2 — Choose your execution mode
|
|
16
|
+
|
|
17
|
+
| Mode | What You Need | Best For |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `local-fork` | OpenMontage clone + Python + FFmpeg + Node.js | Full production control, all 52 tools |
|
|
20
|
+
| `agent-only` | GrowthHub session or zero-key mode | Quick projects, CMS node generation |
|
|
21
|
+
| `hybrid` | GrowthHub session + local FFmpeg | CMS generation + local post-production |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Step 3 — Add your API keys (optional)
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
cp .env.example .env
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Open `.env` and add the keys you have. Every key is optional — more keys = more tools.
|
|
32
|
+
|
|
33
|
+
**Recommended setup order (cheapest first):**
|
|
34
|
+
|
|
35
|
+
1. **Pexels + Pixabay** — free stock media (free developer keys)
|
|
36
|
+
2. **Google API key** — TTS with 700+ voices (1M chars/month free)
|
|
37
|
+
3. **ElevenLabs** — premium TTS (10K chars/month free)
|
|
38
|
+
4. **fal.ai** — FLUX images + video generation (~$0.03/image)
|
|
39
|
+
|
|
40
|
+
**Zero keys is fine.** You still get Piper TTS, free archives, and Remotion composition. Or use GrowthHub CMS nodes for generation.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Step 4 — Verify your setup (optional but recommended)
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
node setup/verify-env.mjs
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Shows which providers are configured and checks for the OpenMontage clone.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Step 5 — Set up OpenMontage clone (local-fork mode only)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
bash setup/check-deps.sh # Check Python, FFmpeg, Node.js, Git
|
|
58
|
+
bash setup/clone-fork.sh # Clone OpenMontage and run make setup
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
This clones OpenMontage to `~/OpenMontage`, installs all dependencies (Python packages, Remotion, Piper TTS), and verifies the tool registry.
|
|
62
|
+
|
|
63
|
+
Skip this step if you are using agent-only or hybrid mode.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Step 6 — Connect GrowthHub (CMS node mode)
|
|
68
|
+
|
|
69
|
+
If you want to use GrowthHub CMS nodes for video/image generation:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
growthub auth:login
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
This authenticates your session so the agent can discover and execute CMS nodes. CMS node costs flow through your GrowthHub billing.
|
|
76
|
+
|
|
77
|
+
Skip this step if you are using local-fork mode with direct API keys only.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Step 7 — Start a new session
|
|
82
|
+
|
|
83
|
+
**Growthub local:** Start a new run from this working directory. The agent loads automatically.
|
|
84
|
+
|
|
85
|
+
**Claude Code:** Open a new session with this folder as the Working Directory. The agent reads `skills.md` and the methodology automatically.
|
|
86
|
+
|
|
87
|
+
In both cases the agent will:
|
|
88
|
+
1. Run the environment gate (check .env, providers, dependencies)
|
|
89
|
+
2. Load the methodology and brand context
|
|
90
|
+
3. Ask you 3 clarifying questions before generating anything
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## What you can ask
|
|
95
|
+
|
|
96
|
+
Copy any of these into your agent session:
|
|
97
|
+
|
|
98
|
+
- "Make a 60-second animated explainer about how neural networks learn"
|
|
99
|
+
- "Create a 30-second cinematic product trailer for a smart water bottle"
|
|
100
|
+
- "Make a documentary montage about city life at 4am using real footage only"
|
|
101
|
+
- "Turn this YouTube video into 3 differentiated concepts for my brand"
|
|
102
|
+
- "Create a TikTok-style explainer about CRISPR gene editing"
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## First-run checklist
|
|
107
|
+
|
|
108
|
+
See `validation-checklist.md` for the full pre-session checklist before your first production run.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Creating a brand kit for a new client
|
|
113
|
+
|
|
114
|
+
See `brands/NEW-CLIENT.md`.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Creating a Brand Kit for a New Client
|
|
2
|
+
|
|
3
|
+
## Steps
|
|
4
|
+
|
|
5
|
+
1. Copy the template:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
cp -r brands/_template brands/<client-slug>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
2. Open `brands/<client-slug>/brand-kit.md` and fill in:
|
|
12
|
+
- Brand identity (name, tagline, industry, audience)
|
|
13
|
+
- Visual identity (colors, fonts, logo)
|
|
14
|
+
- Tone of voice
|
|
15
|
+
- Visual style preferences
|
|
16
|
+
- Platform profiles
|
|
17
|
+
- Music preferences
|
|
18
|
+
|
|
19
|
+
3. The operator loads this brand kit in Step 1 of every session. All production artifacts will reference these brand guidelines.
|
|
20
|
+
|
|
21
|
+
## Naming Convention
|
|
22
|
+
|
|
23
|
+
- Use kebab-case for the client slug: `acme-corp`, `startup-xyz`
|
|
24
|
+
- Keep the slug short and recognizable
|
|
25
|
+
|
|
26
|
+
## What Goes in a Brand Kit
|
|
27
|
+
|
|
28
|
+
| Section | Required | Purpose |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| Brand identity | Yes | Who they are and who they serve |
|
|
31
|
+
| Visual identity | Yes | Colors, fonts, logo for consistent output |
|
|
32
|
+
| Tone of voice | Yes | How to write scripts and narration |
|
|
33
|
+
| Visual style preferences | Yes | Which visual treatment to use |
|
|
34
|
+
| Platform profiles | Recommended | Target platforms and format constraints |
|
|
35
|
+
| Music preferences | Recommended | Audio direction for background music |
|
|
36
|
+
| Deliverable log | Auto-populated | Running record of all produced content |
|
|
37
|
+
|
|
38
|
+
## Tips
|
|
39
|
+
|
|
40
|
+
- If the client has a website or existing video content, reference it in the brand kit for style alignment
|
|
41
|
+
- Color values should be hex codes for precision
|
|
42
|
+
- If unsure about visual style, default to "clean professional" and note it for client review
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Brand Kit — `<CLIENT NAME>`
|
|
2
|
+
|
|
3
|
+
## Brand Identity
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|---|---|
|
|
7
|
+
| Brand name | |
|
|
8
|
+
| Tagline | |
|
|
9
|
+
| Industry | |
|
|
10
|
+
| Primary audience | |
|
|
11
|
+
|
|
12
|
+
## Visual Identity
|
|
13
|
+
|
|
14
|
+
| Field | Value |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Primary color | `#` |
|
|
17
|
+
| Secondary color | `#` |
|
|
18
|
+
| Accent color | `#` |
|
|
19
|
+
| Background | `#` |
|
|
20
|
+
| Font family (headings) | |
|
|
21
|
+
| Font family (body) | |
|
|
22
|
+
| Logo path | |
|
|
23
|
+
|
|
24
|
+
## Tone of Voice
|
|
25
|
+
|
|
26
|
+
<!-- Describe the brand's communication style: formal/casual, serious/playful, authoritative/approachable. -->
|
|
27
|
+
|
|
28
|
+
## Visual Style Preferences
|
|
29
|
+
|
|
30
|
+
<!-- Preferred visual treatment for video content: photorealistic, illustrated, flat motion, anime, minimalist, cinematic. -->
|
|
31
|
+
|
|
32
|
+
## Platform Profiles
|
|
33
|
+
|
|
34
|
+
| Platform | Aspect Ratio | Duration Range | Notes |
|
|
35
|
+
|---|---|---|---|
|
|
36
|
+
| YouTube | 16:9 | 30-300s | |
|
|
37
|
+
| TikTok | 9:16 | 15-60s | |
|
|
38
|
+
| Instagram Reels | 9:16 | 15-90s | |
|
|
39
|
+
| LinkedIn | 16:9 | 30-120s | |
|
|
40
|
+
|
|
41
|
+
## Music Preferences
|
|
42
|
+
|
|
43
|
+
<!-- Genre, mood, energy level, instrumental vs vocal. -->
|
|
44
|
+
|
|
45
|
+
## Deliverable Log
|
|
46
|
+
|
|
47
|
+
<!-- Append deliverables as they are produced. -->
|
|
48
|
+
|
|
49
|
+
<!-- - YYYY-MM-DD | OpenMontage Video Package v1 — <Project Name> | output/<client-slug>/<project-slug>/ -->
|