@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,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"kit": {
|
|
4
|
+
"id": "growthub-ai-website-cloner-v1",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"name": "Growthub Agent Worker Kit — AI Website Cloner",
|
|
7
|
+
"description": "Self-contained local workspace for cloning any website into a clean Next.js 16 + shadcn/ui + Tailwind CSS v4 codebase using AI coding agents. Produces pixel-perfect component clones from a target URL via multi-phase reconnaissance, spec writing, parallel builder dispatch, and visual QA — all driven by the ai-website-cloner-template fork.",
|
|
8
|
+
"type": "worker",
|
|
9
|
+
"visibility": "public-open-source",
|
|
10
|
+
"sourceRepo": "growthub-local",
|
|
11
|
+
"family": "studio"
|
|
12
|
+
},
|
|
13
|
+
"entrypoint": {
|
|
14
|
+
"workerId": "ai-website-cloner-operator",
|
|
15
|
+
"path": "workers/ai-website-cloner-operator/CLAUDE.md"
|
|
16
|
+
},
|
|
17
|
+
"workerIds": [
|
|
18
|
+
"ai-website-cloner-operator"
|
|
19
|
+
],
|
|
20
|
+
"agentContractPath": "workers/ai-website-cloner-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/ai-website-cloner-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/verify-env.mjs",
|
|
38
|
+
"setup/check-deps.sh",
|
|
39
|
+
"output/README.md",
|
|
40
|
+
"templates/clone-brief.md",
|
|
41
|
+
"templates/reconnaissance-report.md",
|
|
42
|
+
"templates/component-spec.md",
|
|
43
|
+
"templates/builder-dispatch-plan.md",
|
|
44
|
+
"templates/asset-manifest.md",
|
|
45
|
+
"templates/visual-qa-checklist.md",
|
|
46
|
+
"templates/platform-handoff.md",
|
|
47
|
+
"templates/design-token-extraction.md",
|
|
48
|
+
"examples/clone-brief-sample.md",
|
|
49
|
+
"examples/component-spec-sample.md",
|
|
50
|
+
"examples/visual-qa-sample.md",
|
|
51
|
+
"examples/platform-handoff-sample.md",
|
|
52
|
+
"docs/ai-website-cloner-fork-integration.md",
|
|
53
|
+
"docs/multi-phase-pipeline.md",
|
|
54
|
+
"docs/parallel-builder-dispatch.md",
|
|
55
|
+
"docs/design-token-system.md",
|
|
56
|
+
"growthub-meta/README.md",
|
|
57
|
+
"growthub-meta/kit-standard.md"
|
|
58
|
+
],
|
|
59
|
+
"setupPaths": {
|
|
60
|
+
"quickstart": "QUICKSTART.md",
|
|
61
|
+
"envExample": ".env.example",
|
|
62
|
+
"setupDir": "setup/",
|
|
63
|
+
"outputDir": "output/"
|
|
64
|
+
},
|
|
65
|
+
"outputStandard": {
|
|
66
|
+
"type": "working-directory",
|
|
67
|
+
"description": "Exported folder is intended to be pointed at directly by the agent Working Directory. All outputs are Markdown files written to output/<client-slug>/<project-slug>/.",
|
|
68
|
+
"requiredPaths": [
|
|
69
|
+
"QUICKSTART.md",
|
|
70
|
+
".env.example",
|
|
71
|
+
"kit.json",
|
|
72
|
+
"bundles/growthub-ai-website-cloner-v1.json",
|
|
73
|
+
"skills.md",
|
|
74
|
+
"workers/ai-website-cloner-operator/CLAUDE.md",
|
|
75
|
+
"brands/_template/brand-kit.md",
|
|
76
|
+
"brands/growthub/brand-kit.md",
|
|
77
|
+
"brands/NEW-CLIENT.md",
|
|
78
|
+
"setup/clone-fork.sh",
|
|
79
|
+
"setup/verify-env.mjs",
|
|
80
|
+
"setup/check-deps.sh",
|
|
81
|
+
"output/README.md",
|
|
82
|
+
"templates",
|
|
83
|
+
"docs",
|
|
84
|
+
"growthub-meta"
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"bundles": [
|
|
88
|
+
{
|
|
89
|
+
"id": "growthub-ai-website-cloner-v1",
|
|
90
|
+
"version": "1.0.0",
|
|
91
|
+
"path": "bundles/growthub-ai-website-cloner-v1.json"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"executionMode": "export",
|
|
95
|
+
"activationModes": [
|
|
96
|
+
"export"
|
|
97
|
+
],
|
|
98
|
+
"compatibility": {
|
|
99
|
+
"cliMinVersion": "0.3.54"
|
|
100
|
+
},
|
|
101
|
+
"provenance": {
|
|
102
|
+
"sourceRepo": "growthub-local",
|
|
103
|
+
"frozenAt": "2026-04-15T00:00:00.000Z"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Output Directory
|
|
2
|
+
|
|
3
|
+
This directory holds all work products from the AI Website Cloner operator.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
output/
|
|
9
|
+
<client-slug>/
|
|
10
|
+
<project-slug>/
|
|
11
|
+
research/
|
|
12
|
+
reconnaissance-report.md # Screenshots documented, design tokens noted
|
|
13
|
+
design-token-extraction.md # Complete token set with oklch conversions
|
|
14
|
+
asset-inventory.md # All external assets collected
|
|
15
|
+
specs/
|
|
16
|
+
<section-slug>.md # One file per cloned section (exact CSS values)
|
|
17
|
+
qa/
|
|
18
|
+
visual-qa-checklist.md # QA results vs. original screenshots
|
|
19
|
+
platform-handoff.md # Deployment-ready instructions
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Notes
|
|
23
|
+
|
|
24
|
+
- Never commit client brand assets or proprietary content to this repository.
|
|
25
|
+
- All files in `output/` are generated work products, not source-controlled code.
|
|
26
|
+
- Add `output/<client-slug>/` to `.gitignore` for client-confidential projects.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Output Standards — AI Website Cloner
|
|
2
|
+
|
|
3
|
+
**Kit:** `growthub-ai-website-cloner-v1`
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Output directory structure
|
|
8
|
+
|
|
9
|
+
All work products are stored inside the `ai-website-cloner-template` fork repository:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
~/ai-website-cloner-template/
|
|
13
|
+
output/
|
|
14
|
+
<client-slug>/
|
|
15
|
+
<project-slug>/
|
|
16
|
+
research/
|
|
17
|
+
reconnaissance-report.md
|
|
18
|
+
design-token-extraction.md
|
|
19
|
+
asset-inventory.md
|
|
20
|
+
specs/
|
|
21
|
+
<section-slug>.md (one per identified section)
|
|
22
|
+
qa/
|
|
23
|
+
visual-qa-checklist.md
|
|
24
|
+
platform-handoff.md
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Naming conventions
|
|
30
|
+
|
|
31
|
+
| Artifact | Naming pattern |
|
|
32
|
+
|---|---|
|
|
33
|
+
| Client slug | lowercase-kebab-case, e.g. `acme-corp` |
|
|
34
|
+
| Project slug | lowercase-kebab-case, e.g. `homepage-clone` |
|
|
35
|
+
| Section slug | lowercase-kebab-case matching section name, e.g. `hero-section` |
|
|
36
|
+
| Component files | PascalCase under `src/components/<section-slug>/`, e.g. `HeroSection.tsx` |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Required deliverables per project
|
|
41
|
+
|
|
42
|
+
Every completed clone project must have:
|
|
43
|
+
|
|
44
|
+
1. `reconnaissance-report.md` — screenshots documented, tokens noted
|
|
45
|
+
2. `design-token-extraction.md` — complete token set with oklch conversions
|
|
46
|
+
3. One `specs/<section-slug>.md` per section cloned
|
|
47
|
+
4. `asset-inventory.md` — all external assets downloaded to `public/`
|
|
48
|
+
5. `qa/visual-qa-checklist.md` — completed with pass/deviation notes
|
|
49
|
+
6. `platform-handoff.md` — deployment-ready instructions
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Quality gates
|
|
54
|
+
|
|
55
|
+
Before producing the platform handoff, the following must pass:
|
|
56
|
+
|
|
57
|
+
- `npm run build` — TypeScript compilation and Next.js build succeeds
|
|
58
|
+
- `npm run lint` — ESLint passes with no errors
|
|
59
|
+
- `npm run typecheck` — TypeScript strict mode passes
|
|
60
|
+
- Visual diff — all sections visually reviewed against original screenshots
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Deviation logging
|
|
65
|
+
|
|
66
|
+
If a section cannot be cloned exactly (auth-gated content, missing assets, proprietary fonts), log the deviation in `visual-qa-checklist.md` under the "Deviations" section:
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
## Deviations
|
|
70
|
+
|
|
71
|
+
| Section | Type | Reason | Resolution |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| hero-section | Font | Proprietary font not available | Replaced with closest system font; documented |
|
|
74
|
+
| pricing-table | Auth | Pricing content behind login | Placeholder content with noted limitation |
|
|
75
|
+
```
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Runtime Assumptions — AI Website Cloner
|
|
2
|
+
|
|
3
|
+
**Kit:** `growthub-ai-website-cloner-v1`
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Fork assumptions
|
|
8
|
+
|
|
9
|
+
This kit assumes the `ai-website-cloner-template` fork is checked out and installed:
|
|
10
|
+
|
|
11
|
+
| Assumption | Default | Override |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| Fork directory | `~/ai-website-cloner-template` | `AI_CLONER_FORK_PATH` env var |
|
|
14
|
+
| Fork repo URL | `https://github.com/JCodesMore/ai-website-cloner-template` | n/a |
|
|
15
|
+
| Node.js version | 24+ (strict) | n/a — minimum requirement |
|
|
16
|
+
| Package manager | npm | n/a |
|
|
17
|
+
| Dev server port | 3000 | Configurable via Next.js CLI |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Tech stack (locked by fork)
|
|
22
|
+
|
|
23
|
+
The fork uses a locked stack. Do not deviate inside the clone output:
|
|
24
|
+
|
|
25
|
+
| Layer | Version |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Next.js | 16 (App Router, React 19) |
|
|
28
|
+
| TypeScript | strict mode |
|
|
29
|
+
| shadcn/ui | Latest at fork commit |
|
|
30
|
+
| Tailwind CSS | v4 |
|
|
31
|
+
| Design tokens | oklch color space |
|
|
32
|
+
| Icons | Lucide React (default) + extracted SVGs |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Agent assumptions
|
|
37
|
+
|
|
38
|
+
- The AI coding agent is running in the fork's root directory
|
|
39
|
+
- The agent can access the internet for screenshots and asset downloads
|
|
40
|
+
- The agent can spawn parallel subagents / worktrees for builder dispatch
|
|
41
|
+
- Claude Code with `--chrome` flag is the recommended setup (enables browser automation)
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## What the fork's `/clone-website` skill does
|
|
46
|
+
|
|
47
|
+
The skill is defined in `.claude/skills/clone-website/SKILL.md` (and synced to other agents).
|
|
48
|
+
When invoked by the operator, it:
|
|
49
|
+
|
|
50
|
+
1. Opens Chrome DevTools (via `--chrome` flag for Claude Code, or Playwright for other agents)
|
|
51
|
+
2. Navigates to the target URL
|
|
52
|
+
3. Captures screenshots at all viewports
|
|
53
|
+
4. Extracts design tokens via `getComputedStyle()` console calls
|
|
54
|
+
5. Downloads all external assets to `public/`
|
|
55
|
+
6. Writes component specs to `docs/research/components/`
|
|
56
|
+
7. Dispatches builder subagents in git worktrees
|
|
57
|
+
8. Merges and assembles the page
|
|
58
|
+
9. Runs visual QA
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Ethical use constraints
|
|
63
|
+
|
|
64
|
+
This kit must not be used to:
|
|
65
|
+
- Create phishing pages or impersonation sites
|
|
66
|
+
- Clone sites with explicit prohibitions on reproduction in their Terms of Service
|
|
67
|
+
- Redistribute proprietary brand assets or copy
|
|
68
|
+
- Pass off cloned designs as original work
|
|
69
|
+
|
|
70
|
+
These constraints are enforced by operator instruction, not technical controls. The operator must verify site terms before initiating a clone.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# check-deps.sh — Verify all dependencies for the AI Website Cloner
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
echo "=== AI Website Cloner — Dependency Check ==="
|
|
6
|
+
echo ""
|
|
7
|
+
|
|
8
|
+
OK=0
|
|
9
|
+
|
|
10
|
+
check_cmd() {
|
|
11
|
+
local cmd="$1"
|
|
12
|
+
local label="$2"
|
|
13
|
+
local hint="$3"
|
|
14
|
+
if command -v "$cmd" &>/dev/null; then
|
|
15
|
+
echo " OK $label ($cmd: $(command -v "$cmd"))"
|
|
16
|
+
else
|
|
17
|
+
echo " MISS $label — $hint"
|
|
18
|
+
OK=1
|
|
19
|
+
fi
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
check_version() {
|
|
23
|
+
local cmd="$1"
|
|
24
|
+
local label="$2"
|
|
25
|
+
local min_major="$3"
|
|
26
|
+
local hint="$4"
|
|
27
|
+
if command -v "$cmd" &>/dev/null; then
|
|
28
|
+
local version
|
|
29
|
+
version=$("$cmd" --version 2>&1 | head -1)
|
|
30
|
+
echo " OK $label ($version)"
|
|
31
|
+
else
|
|
32
|
+
echo " MISS $label (required: $min_major+) — $hint"
|
|
33
|
+
OK=1
|
|
34
|
+
fi
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
check_version "node" "Node.js 24+" "24" "https://nodejs.org/"
|
|
38
|
+
check_cmd "npm" "npm" "Included with Node.js"
|
|
39
|
+
check_cmd "git" "git" "https://git-scm.com/"
|
|
40
|
+
|
|
41
|
+
echo ""
|
|
42
|
+
echo "Optional — recommended for Chrome/screenshot automation:"
|
|
43
|
+
check_cmd "claude" "Claude Code" "npm install -g @anthropic-ai/claude-code"
|
|
44
|
+
|
|
45
|
+
echo ""
|
|
46
|
+
if [ "$OK" -eq 0 ]; then
|
|
47
|
+
echo "All required dependencies are present."
|
|
48
|
+
else
|
|
49
|
+
echo "Some dependencies are missing. Install them before running the fork setup."
|
|
50
|
+
fi
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# clone-fork.sh — Clone and boot the ai-website-cloner-template fork
|
|
3
|
+
# Run from any location. Installs to ~/ai-website-cloner-template (or AI_CLONER_FORK_PATH).
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
FORK_DIR="${AI_CLONER_FORK_PATH:-$HOME/ai-website-cloner-template}"
|
|
7
|
+
REPO_URL="https://github.com/JCodesMore/ai-website-cloner-template.git"
|
|
8
|
+
|
|
9
|
+
echo "=== Growthub AI Website Cloner — Fork Setup ==="
|
|
10
|
+
echo ""
|
|
11
|
+
|
|
12
|
+
if [ -d "$FORK_DIR" ]; then
|
|
13
|
+
echo "Fork already exists at $FORK_DIR — skipping clone."
|
|
14
|
+
echo "To re-clone, remove the directory first: rm -rf $FORK_DIR"
|
|
15
|
+
else
|
|
16
|
+
echo "Cloning ai-website-cloner-template → $FORK_DIR"
|
|
17
|
+
git clone "$REPO_URL" "$FORK_DIR"
|
|
18
|
+
echo "Clone complete."
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo ""
|
|
22
|
+
echo "Installing dependencies..."
|
|
23
|
+
cd "$FORK_DIR"
|
|
24
|
+
npm install
|
|
25
|
+
echo "Dependencies installed."
|
|
26
|
+
|
|
27
|
+
echo ""
|
|
28
|
+
echo "Checking Node.js version..."
|
|
29
|
+
NODE_VERSION=$(node --version | sed 's/v//' | cut -d. -f1)
|
|
30
|
+
if [ "$NODE_VERSION" -lt 24 ]; then
|
|
31
|
+
echo "WARNING: Node.js $NODE_VERSION detected. Node.js 24+ is required."
|
|
32
|
+
echo "Visit https://nodejs.org/ to upgrade, or use nvm: nvm use 24"
|
|
33
|
+
else
|
|
34
|
+
echo "Node.js $(node --version) — OK"
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
echo ""
|
|
38
|
+
echo "Verifying fork structure..."
|
|
39
|
+
STRUCTURE_OK=0
|
|
40
|
+
for item in src/app src/components src/lib package.json next.config.ts; do
|
|
41
|
+
if [ -e "$FORK_DIR/$item" ]; then
|
|
42
|
+
echo " OK $item"
|
|
43
|
+
else
|
|
44
|
+
echo " MISS $item"
|
|
45
|
+
STRUCTURE_OK=1
|
|
46
|
+
fi
|
|
47
|
+
done
|
|
48
|
+
|
|
49
|
+
echo ""
|
|
50
|
+
if [ "$STRUCTURE_OK" -eq 0 ]; then
|
|
51
|
+
echo "Fork is ready at $FORK_DIR"
|
|
52
|
+
echo ""
|
|
53
|
+
echo "Next steps:"
|
|
54
|
+
echo " 1. Point your AI agent at the Growthub kit directory (this folder)"
|
|
55
|
+
echo " 2. Start Claude Code with: claude --chrome"
|
|
56
|
+
echo " 3. Run the clone skill: /clone-website <target-url>"
|
|
57
|
+
echo ""
|
|
58
|
+
echo "Dev server (after cloning a site):"
|
|
59
|
+
echo " cd $FORK_DIR && npm run dev"
|
|
60
|
+
else
|
|
61
|
+
echo "Fork cloned at $FORK_DIR — some expected files may differ in this version."
|
|
62
|
+
echo "Check the fork's README for the current structure."
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
echo ""
|
|
66
|
+
echo "Fork location: $FORK_DIR"
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// verify-env.mjs — Verify the AI Website Cloner environment is ready
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { execSync } from "node:child_process";
|
|
5
|
+
import { resolve } from "node:path";
|
|
6
|
+
import { homedir } from "node:os";
|
|
7
|
+
|
|
8
|
+
const FORK_PATH = process.env.AI_CLONER_FORK_PATH || resolve(homedir(), "ai-website-cloner-template");
|
|
9
|
+
|
|
10
|
+
let passed = 0;
|
|
11
|
+
let failed = 0;
|
|
12
|
+
|
|
13
|
+
function check(label, pass, detail) {
|
|
14
|
+
if (pass) {
|
|
15
|
+
console.log(` ✓ ${label}`);
|
|
16
|
+
passed++;
|
|
17
|
+
} else {
|
|
18
|
+
console.log(` ✗ ${label}${detail ? ` — ${detail}` : ""}`);
|
|
19
|
+
failed++;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
console.log("\nAI Website Cloner — Environment Check");
|
|
24
|
+
console.log("─".repeat(48));
|
|
25
|
+
|
|
26
|
+
// Check 1: Fork directory
|
|
27
|
+
check(
|
|
28
|
+
`Fork exists at ${FORK_PATH}`,
|
|
29
|
+
existsSync(FORK_PATH),
|
|
30
|
+
`Run: bash setup/clone-fork.sh`
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
// Check 2: Fork dependencies
|
|
34
|
+
check(
|
|
35
|
+
"Fork dependencies installed",
|
|
36
|
+
existsSync(resolve(FORK_PATH, "node_modules")),
|
|
37
|
+
`Run: cd ${FORK_PATH} && npm install`
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
// Check 3: Fork structure
|
|
41
|
+
for (const item of ["src/app", "src/components", "src/lib", "package.json", "next.config.ts"]) {
|
|
42
|
+
check(
|
|
43
|
+
`Fork has ${item}`,
|
|
44
|
+
existsSync(resolve(FORK_PATH, item)),
|
|
45
|
+
"Unexpected fork structure — check fork README"
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Check 4: Node.js version
|
|
50
|
+
try {
|
|
51
|
+
const version = process.versions.node.split(".")[0];
|
|
52
|
+
const isOk = parseInt(version, 10) >= 24;
|
|
53
|
+
check(
|
|
54
|
+
`Node.js 24+ (current: ${process.versions.node})`,
|
|
55
|
+
isOk,
|
|
56
|
+
"Upgrade at https://nodejs.org/ or use: nvm use 24"
|
|
57
|
+
);
|
|
58
|
+
} catch {
|
|
59
|
+
check("Node.js version check", false, "Could not determine version");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Check 5: Git available
|
|
63
|
+
try {
|
|
64
|
+
execSync("git --version", { stdio: "ignore" });
|
|
65
|
+
check("git available", true);
|
|
66
|
+
} catch {
|
|
67
|
+
check("git available", false, "Install git: https://git-scm.com/");
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
console.log("─".repeat(48));
|
|
71
|
+
console.log(` ${passed} passed · ${failed} failed`);
|
|
72
|
+
|
|
73
|
+
if (failed > 0) {
|
|
74
|
+
console.log("\n Run: bash setup/clone-fork.sh to fix setup issues.\n");
|
|
75
|
+
process.exit(1);
|
|
76
|
+
} else {
|
|
77
|
+
console.log("\n Environment is ready. Start your AI agent and run: /clone-website <url>\n");
|
|
78
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# AI Website Cloner Operator — Skills
|
|
2
|
+
|
|
3
|
+
**Kit:** `growthub-ai-website-cloner-v1`
|
|
4
|
+
**Worker ID:** `ai-website-cloner-operator`
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## SKILL: `/clone-website`
|
|
9
|
+
|
|
10
|
+
The primary skill. Accepts one or more target URLs and executes the full clone pipeline.
|
|
11
|
+
|
|
12
|
+
### Invocation
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/clone-website <target-url1> [<target-url2> ...]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Pipeline phases (strict order)
|
|
19
|
+
|
|
20
|
+
| Phase | Name | Key output |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| 0 | Environment gate | Pass/fail — fork exists, Node 24+, deps installed |
|
|
23
|
+
| 1 | Reconnaissance | Screenshots, design tokens, interaction map, asset inventory |
|
|
24
|
+
| 2 | Foundation | Design token extraction sheet, fonts, globals, layout scaffold |
|
|
25
|
+
| 3 | Component specs | One spec file per section with exact computed CSS values |
|
|
26
|
+
| 4 | Asset download | All images, videos, SVGs, fonts downloaded to `public/` |
|
|
27
|
+
| 5 | Builder dispatch | Parallel worktrees — one per section/component |
|
|
28
|
+
| 6 | Assembly | Merge all worktrees, wire up route, resolve conflicts |
|
|
29
|
+
| 7 | Visual QA | Diff against original screenshots, document deviations |
|
|
30
|
+
| 8 | Platform handoff | Build verified, deployment instructions, client deliverable |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## RECONNAISSANCE CHECKLIST
|
|
35
|
+
|
|
36
|
+
Before writing any spec, capture all of the following:
|
|
37
|
+
|
|
38
|
+
### Screenshots
|
|
39
|
+
- Desktop: 1440px wide, full scroll depth (every viewport height of content)
|
|
40
|
+
- Tablet: 768px wide, same depth
|
|
41
|
+
- Mobile: 375px wide, same depth
|
|
42
|
+
- Interactive states: hover states on navigation, CTAs, cards
|
|
43
|
+
|
|
44
|
+
### Design token extraction
|
|
45
|
+
- Color palette: exact hex values + oklch equivalents for CSS
|
|
46
|
+
- Typography: every font family, size, weight, line-height, letter-spacing combination in use
|
|
47
|
+
- Spacing: all margin/padding values used in the layout (identify the scale)
|
|
48
|
+
- Border radius: all border-radius values
|
|
49
|
+
- Box shadows: all box-shadow definitions
|
|
50
|
+
- Transitions: all transition/animation timing values
|
|
51
|
+
|
|
52
|
+
### Interaction sweep
|
|
53
|
+
- Navigation: all hover states, dropdowns, mobile hamburger
|
|
54
|
+
- CTAs and buttons: hover, active, focus, disabled states
|
|
55
|
+
- Cards: hover transforms, shadows
|
|
56
|
+
- Scroll-triggered: parallax, fade-ins, stickiness
|
|
57
|
+
- Forms: focus, validation, error states
|
|
58
|
+
|
|
59
|
+
### Asset inventory
|
|
60
|
+
- All `<img>` src values (CDN URLs)
|
|
61
|
+
- All `<video>` src values
|
|
62
|
+
- All background-image URLs
|
|
63
|
+
- All SVG icons (inline or file)
|
|
64
|
+
- All custom webfont sources
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## DESIGN TOKEN EXTRACTION METHODOLOGY
|
|
69
|
+
|
|
70
|
+
Use `getComputedStyle()` in the browser DevTools console to extract exact values:
|
|
71
|
+
|
|
72
|
+
```js
|
|
73
|
+
// Get all colors used in the page
|
|
74
|
+
[...document.querySelectorAll('*')].flatMap(el => {
|
|
75
|
+
const s = getComputedStyle(el);
|
|
76
|
+
return [s.color, s.backgroundColor, s.borderColor].filter(c => c && c !== 'rgba(0, 0, 0, 0)');
|
|
77
|
+
}).filter((v, i, a) => a.indexOf(v) === i);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Document all values in `templates/design-token-extraction.md`. Convert to oklch for Tailwind CSS v4.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## COMPONENT SPEC FORMAT
|
|
85
|
+
|
|
86
|
+
Each spec file must include these sections:
|
|
87
|
+
|
|
88
|
+
```markdown
|
|
89
|
+
# <SectionName> — Component Spec
|
|
90
|
+
|
|
91
|
+
## Purpose
|
|
92
|
+
What this section does for the user.
|
|
93
|
+
|
|
94
|
+
## Layout
|
|
95
|
+
- Container max-width: <value>
|
|
96
|
+
- Padding: <top> <right> <bottom> <left>
|
|
97
|
+
- Display: <flex|grid|block>
|
|
98
|
+
- Grid columns (desktop/tablet/mobile): <values>
|
|
99
|
+
- Gap: <value>
|
|
100
|
+
|
|
101
|
+
## Typography
|
|
102
|
+
- Heading: <font-family>, <size>/<line-height>, weight <weight>
|
|
103
|
+
- Body: <font-family>, <size>/<line-height>, weight <weight>
|
|
104
|
+
- Caption: <font-family>, <size>/<line-height>, weight <weight>
|
|
105
|
+
|
|
106
|
+
## Colors
|
|
107
|
+
- Background: <hex> / oklch(<value>)
|
|
108
|
+
- Text primary: <hex> / oklch(<value>)
|
|
109
|
+
- Text secondary: <hex> / oklch(<value>)
|
|
110
|
+
- Accent: <hex> / oklch(<value>)
|
|
111
|
+
- Border: <hex> / oklch(<value>)
|
|
112
|
+
|
|
113
|
+
## States
|
|
114
|
+
- Default: [describe]
|
|
115
|
+
- Hover: [describe — exact transform, color change, transition timing]
|
|
116
|
+
- Active: [describe]
|
|
117
|
+
- Focus: [describe — focus ring color, offset]
|
|
118
|
+
|
|
119
|
+
## Responsive
|
|
120
|
+
- Desktop (1440px): [layout description]
|
|
121
|
+
- Tablet (768px): [layout changes]
|
|
122
|
+
- Mobile (375px): [layout changes]
|
|
123
|
+
|
|
124
|
+
## Assets
|
|
125
|
+
- Image: public/images/<filename>.<ext> — originally from <cdn-url>
|
|
126
|
+
- Icon: src/components/icons.tsx as <IconName>
|
|
127
|
+
|
|
128
|
+
## Content
|
|
129
|
+
[Exact text content from the target — no placeholders]
|
|
130
|
+
|
|
131
|
+
## Accessibility
|
|
132
|
+
- ARIA role: <role>
|
|
133
|
+
- Landmark: <nav|main|aside|footer>
|
|
134
|
+
- Tab order: [describe]
|
|
135
|
+
- Keyboard navigation: [describe]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## BUILDER DISPATCH RULES
|
|
141
|
+
|
|
142
|
+
1. Each builder receives exactly one component spec
|
|
143
|
+
2. Each builder works in a fresh `git worktree` on a dedicated branch: `build/<section-slug>`
|
|
144
|
+
3. Builders output files ONLY to `src/components/<section-slug>/`
|
|
145
|
+
4. No builder writes to: `src/app/`, `src/lib/`, `src/types/`, `globals.css`, `layout.tsx`
|
|
146
|
+
5. The orchestrator owns all assembly and shared file writes
|
|
147
|
+
6. After all builders complete, orchestrator merges all `build/*` branches
|
|
148
|
+
7. Merge conflicts are resolved by the orchestrator with full spec context
|
|
149
|
+
8. Assembly order follows the spec list in the dispatch plan
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## VISUAL QA STANDARDS
|
|
154
|
+
|
|
155
|
+
A clone passes QA when:
|
|
156
|
+
|
|
157
|
+
| Criterion | Threshold |
|
|
158
|
+
|---|---|
|
|
159
|
+
| Layout accuracy | All major sections within 2px of original |
|
|
160
|
+
| Color fidelity | All token values match extracted values |
|
|
161
|
+
| Typography | Font family, size, weight identical for all text |
|
|
162
|
+
| Asset completeness | All images, videos, icons present and loading |
|
|
163
|
+
| Responsive | No layout breaks at 1440, 768, 375px |
|
|
164
|
+
| Interaction | All hover/focus/active states visually match |
|
|
165
|
+
| Build | `npm run build` exits 0 with no errors |
|
|
166
|
+
| Lint | `npm run lint` exits 0 |
|
|
167
|
+
|
|
168
|
+
Any deviation must be documented in `visual-qa-checklist.md` with a reason and resolution.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## OUTPUT NAMING
|
|
173
|
+
|
|
174
|
+
All outputs use the pattern:
|
|
175
|
+
```
|
|
176
|
+
output/<client-slug>/<project-slug>/<artifact-type>.<extension>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Examples:
|
|
180
|
+
```
|
|
181
|
+
output/acme-corp/homepage-clone/research/reconnaissance-report.md
|
|
182
|
+
output/acme-corp/homepage-clone/specs/hero-section.md
|
|
183
|
+
output/acme-corp/homepage-clone/specs/navigation.md
|
|
184
|
+
output/acme-corp/homepage-clone/qa/visual-qa-checklist.md
|
|
185
|
+
output/acme-corp/homepage-clone/platform-handoff.md
|
|
186
|
+
```
|