Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Scaffold and deploy Cloudflare Workers with Hono routing, Vite plugin, and Static Assets. Describe project, scaffold structure, configure bindings, deploy. Use whenever the user wants to create a Worker project, set up Hono on Cloudflare, configure D1 / R2 / KV / Queues bindings, or troubleshoot Worker export syntax, API route conflicts, HMR issues, or deployment failures.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -14% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -38% | 0% |
Scaffold a working Cloudflare Worker project from a brief description. Produces a deployable project with Hono routing, Vite dev server, and Static Assets.
Ask about the project to choose the right bindings and structure:
A brief like "todo app with database" is enough to proceed.
bashnpm create cloudflare@latest my-worker -- --type hello-world --ts --git --deploy false --framework none cd my-worker npm install hono npm install -D @cloudflare/vite-plugin vite
Copy and customise the asset files from this skill's assets/ directory:
wrangler.jsonc — Worker configurationvite.config.ts — Vite + Cloudflare pluginsrc/index.ts — Hono app with Static Assets fallbackpackage.json — Scripts and dependenciestsconfig.json — TypeScript configpublic/index.html — SPA entry pointAdd bindings to wrangler.jsonc based on project needs. Wrangler 4.45+ auto-provisions resources on first deploy — always specify explicit names:
jsonc{ "name": "my-worker", "main": "src/index.ts", "compatibility_date": "2025-11-11", "assets": { "directory": "./public/", "binding": "ASSETS", "not_found_handling": "single-page-application", "run_worker_first": ["/api/*"] }, // Add as needed: "d1_databases": [{ "binding": "DB", "database_name": "my-app-db" }], "r2_buckets": [{ "binding": "STORAGE", "bucket_name": "my-app-files" }], "kv_namespaces": [{ "binding": "CACHE", "title": "my-app-cache" }] }
bashnpm run dev # Local dev at http://localhost:8787 wrangler deploy # Production deploy
typescript// CORRECT — use this pattern export default app // WRONG — causes "Cannot read properties of undefined" export default { fetch: app.fetch }
Source: honojs/hono #3955
Without run_worker_first, SPA fallback intercepts API routes and returns index.html instead of JSON:
jsonc"assets": { "not_found_handling": "single-page-application", "run_worker_first": ["/api/*"] // CRITICAL }
Source: workers-sdk #8879
typescriptimport { defineConfig } from 'vite' import { cloudflare } from '@cloudflare/vite-plugin' export default defineConfig({ plugins: [cloudflare()] })
Always set the main field in wrangler.jsonc — the Vite plugin needs it.
When adding cron triggers, switch to explicit export:
typescriptexport default { fetch: app.fetch, scheduled: async (event, env, ctx) => { /* ... */ } }
Read these for detailed troubleshooting:
references/common-issues.md — 10 documented issues with sources and fixesreferences/architecture.md — Route priority, caching, Workers RPCreferences/deployment.md — CI/CD, auto-provisioning, gradual rolloutsOther measured skills in the registry, with their headline benchmark lift.