This repository contains the official template catalog used by the Cloudflare VibeSDK project — a modern, open source “vibe coding” starter kit where users can build apps with AI agents. The goal of VibeSDK is to let anyone run their own vibe-coding platform on a Cloudflare Workers paid account with a streamlined, one-click deployment.
These templates are the scaffolding that VibeSDK’s AI agents use to generate full applications for users. They are kept lightweight, production-minded, and type-safe.
reference/- Base reference templates (e.g.,
vite-reference/,next-reference/) used as the starting point for all generated templates.
- Base reference templates (e.g.,
definitions/- One YAML definition per template (e.g.,
vite-cfagents-runner.yaml). - A folder per template containing overlay files that override the base reference (e.g.,
definitions/vite-cfagents-runner/...).
- One YAML definition per template (e.g.,
build/- Output folder for generated templates. Always safe to delete and regenerate.
originals/- Ground truth templates used for verification parity checks. This ensures generated templates match known-good originals.
tools/- Utility scripts, notably
tools/generate_templates.pyfor generation and verification.
- Utility scripts, notably
zips/- Where packaged zip archives are created for publishing.
- Top-level scripts and files
deploy_templates.sh— end-to-end generation, packaging, and upload.create_zip.py— portable zip creation tool.generate_template_catalog.py— creates the aggregatedtemplate_catalog.jsonused by the platform.template_catalog.json— the published catalog of templates and metadata.
Prerequisites:
- Python 3.10+
- Bun (for template viability checks when verifying)
- Cloudflare Wrangler CLI (for R2 uploads during deploy)
Clone and build all templates:
python3 tools/generate_templates.py --cleanGenerate the catalog from the build/ directory:
python3 generate_template_catalog.py --output template_catalog.json --prettyPackage all templates and upload them (requires R2 configuration):
# R2_BUCKET_NAME must be set in your environment
bash deploy_templates.shTemplates are generated dynamically from:
- A base reference (e.g.,
reference/vite-reference/) - A template definition YAML (e.g.,
definitions/vite-cfagents-runner.yaml) - Overlay files that live under
definitions/<template-name>/
The generator copies the base reference into build/<template-name>/ and then applies overlays on top. Finally, it applies excludes and optional package.json patches.
Run generation for all templates:
python3 tools/generate_templates.py --cleanGenerate a single template:
python3 tools/generate_templates.py -t vite-cfagents-runnerVerification compares build/ to originals/ to ensure exact parity.
- Text files are compared with normalized end-of-line handling (LF vs CRLF) and a single trailing newline is ignored to reduce false diffs.
- Build artifacts, lockfiles, and platform caches are ignored by default.
Verify all templates and show diffs:
python3 tools/generate_templates.py --verify --diffsVerify one template and skip Bun checks:
python3 tools/generate_templates.py -t vite-cfagents-runner --verify --diffs --no-bunNotes:
- By default, generation does not verify. Add
--verifyto verify and run Bun install/lint/build checks. - Add
--no-bunto skip Bun during verification.
We ship templates as zipped archives and a JSON catalog for consumption by VibeSDK.
Create a zip for a single template:
python3 create_zip.py build/vite-cfagents-runner zips/vite-cfagents-runner.zipcreate_zip.py excludes common artifacts by default:
node_modules/,dist/,.next/, coverage output.wrangler/,.dev.vars*,.env.*, VCS metadata
Full deploy flow:
# Requires Cloudflare Wrangler and an R2 bucket
# Set: export R2_BUCKET_NAME=<your-bucket-name>
bash deploy_templates.shThe deploy script:
- Generates templates into
build/ - Produces
template_catalog.json(scanner default points to./build) - Zips each valid template from
build/ - Uploads the catalog and all zips to R2
To create a new template, follow this overlay-first pattern.
- Create a definition YAML in
definitions/:
# definitions/my-awesome-runner.yaml
name: "my-awesome-runner"
description: "Short description of this template"
base_reference: "vite-reference" # or "next-reference"
# Optional: shallow package.json patches (deep merge)
package_patches:
name: "my-awesome-runner"
# Optional: files to exclude from the base reference (glob patterns)
excludes:
- "src/pages/**" # remove reference-only pages
- "src/hooks/use-theme.ts" # remove reference-only hook
# Optional: only copy a subset of overlay files (rare).
# If omitted, the entire overlay directory is applied.
# template_specific_files:
# - "src/App.tsx"
# - "wrangler.jsonc"- Add overlay files under
definitions/my-awesome-runner/:
- Any file placed here will overwrite the corresponding path in the generated
build/template - Common overlays:
.gitignore,.important_files.json,package.json,wrangler.jsonc,tsconfig.*.jsonsrc/*files that differ from the base referenceworker/*files for Workers-based templates
- Generate and verify:
python3 tools/generate_templates.py -t my-awesome-runner --verify --diffs- Package and publish:
python3 create_zip.py build/my-awesome-runner zips/my-awesome-runner.zip
# or run the full deploy script if uploading to Cloudflare R2
bash deploy_templates.shSupported fields in definitions/*.yaml:
name(string)description(string)base_reference(string:vite-reference|next-reference)package_patches(object)- Shallow/deep-merge patches applied to
package.jsonin the build output.
- Shallow/deep-merge patches applied to
excludes(string[])- Glob patterns to remove files introduced by the base reference or overlays.
template_specific_files(string[]; optional)- When provided, only these overlay files are applied. Otherwise, the entire overlay directory is applied.
Notes:
- Overlays are applied after copying the base reference, so overlay files always take precedence.
- Keep overlays minimal and focused. If a file matches the original reference, omit it from the overlay.
The template catalog is a machine-readable JSON file used by VibeSDK. Generate from build/:
python3 generate_template_catalog.py --output template_catalog.json --prettyThis script will scan the generated templates and collate metadata and documentation suitable for display in the VibeSDK UI.
- Keep templates small, type-safe, and production-minded.
- Favor overlays + excludes over per-file lists to stay DRY.
- Maintain parity with
originals/by running verification when templates change. - Avoid
anyin TypeScript. Prefer strict typing across templates. - Keep README content inside each template minimal; the global catalog summarizes key usage and selection guidelines.
- Missing template in
build/:- Ensure the YAML exists in
definitions/andbase_referencepoints to an existing reference.
- Ensure the YAML exists in
- Verification failures:
- Use
--diffsto print unified diffs, adjust overlays or excludes accordingly.
- Use
- Bun checks failing:
- Ensure Bun is installed and available in PATH. Use
--no-bunto skip temporarily.
- Ensure Bun is installed and available in PATH. Use
- R2 upload errors:
- Verify Wrangler login,
R2_BUCKET_NAMEenvironment variable, and bucket permissions.
- Verify Wrangler login,
Cloudflare VibeSDK is an open source platform for building vibe coding experiences. This repository provides the curated, production-minded templates that VibeSDK’s AI agents use to scaffold applications. The full platform can be deployed to a Cloudflare Workers paid account.
If you’re building your own vibe coding platform, these templates provide a solid and extensible foundation.