.cursor/skills/project-init/SKILL.md
Personalizes a fork of this Cloudflare multi-worker monorepo—worker names in wrangler, package names, README, and UI—so deploys and docs are not stuck on boilerplate defaults. Use when the user created a repo from the template, wants to deploy their own app, or asks to rename workers, rebrand, or remove boilerplate copy. Skip when developing the upstream boilerplate (origin contains firtoz/cf-multiworker-boilerplate) unless the user explicitly asks.
npx skillsauth add firtoz/cf-multiworker-boilerplate project-initInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when someone is building their app on top of this boilerplate—not when maintaining the upstream firtoz/cf-multiworker-boilerplate repo.
Guard: If git remote get-url origin contains firtoz/cf-multiworker-boilerplate, do not run this flow unless the user explicitly requests renaming or templating work.
Note: Root AGENTS.md says to avoid hand-editing wrangler.jsonc in general. This skill is the exception for forks: renaming workers and bindings for deployment is intentional; still run bun run typegen after wrangler changes.
Ask the user (or infer from context):
my-saas-app (used for root package.json name and naming).durable-objects/example-do or plan to remove it and its bindings (if removed, update apps/web bindings, deps, and routes that use ExampleDo).coordinator-do / processor-do / /queue or plan to strip them (larger refactor; update all bindings, queues, routes, and docs).Every worker’s wrangler.jsonc has a top-level "name" (Cloudflare worker script name). Workers that call other DOs use "script_name" pointing at those names. All names must stay consistent across files.
| File | Default name | script_name references |
|------|----------------|----------------------------|
| apps/web/wrangler.jsonc | cf-web-app | cf-example-do, cf-coordinator-do |
| durable-objects/example-do/wrangler.jsonc | cf-example-do | — |
| durable-objects/coordinator-do/wrangler.jsonc | cf-coordinator-do | cf-processor-do |
| durable-objects/processor-do/wrangler.jsonc | cf-processor-do | cf-coordinator-do |
Naming pattern: Derive a short prefix from the project slug (e.g. my-saas → my-saas-web, my-saas-example-do, my-saas-coordinator-do, my-saas-processor-do). Update:
"name"."script_name" value that referenced an old name.name / class_name / binding name fields consistent with TypeScript class names (ExampleDo, CoordinatorDo, ProcessorDo) unless the user is also renaming classes (advanced).Queues: In durable-objects/coordinator-do/wrangler.jsonc and durable-objects/processor-do/wrangler.jsonc, rename queue identifiers (work-queue, work-queue-dlq) to a project-specific prefix, e.g. my-saas-work-queue, my-saas-work-queue-dlq, so they do not collide with other accounts’ queues.
D1: If commented D1 blocks use example names, align database_name with the new project when you enable D1.
After edits: bun run typegen from the repo root.
package.json)package.json: set "name" to the project slug (replaces cf-multiworker-boilerplate).apps/web/package.json: set "name" to match the web worker (e.g. my-saas-web if that matches apps/web/wrangler.jsonc name).durable-objects/*/package.json: align names with folders or team conventions.workspace:* dependencies: If you rename a workspace package (e.g. example-do), update every consumer (apps/web/package.json, other packages) and bun install from root.Rewrite README.md for the product, not the template:
bun install, bun run dev).firtoz/cf-multiworker-boilerplate, and generic “Why use this boilerplate” marketing unless the team wants to keep attribution.bun run deploy), scripts, CI, tech stack—as appropriate for the fork.apps/web/app/welcome/welcome.tsx — page title and “generic boilerplate” paragraph.apps/web/app/routes/home.tsx — meta title and description.apps/web/app/routes/queue.tsx — meta title (Work Queue - Multi-Worker Demo) if the queue route remains.CONTRIBUTING.md — replace <your-repo> with the real clone URL if present.cf-multiworker-boilerplate, cf-web-app, firtoz/cf-multiworker-boilerplate, and old worker names; update docs and comments.apps/web, durable-objects/*, packages/* if they still say “boilerplate” or wrong worker names.From the repo root:
bun run typegen
bun run typecheck
bun run lint
bun run build
Fix any failures before considering initialization complete.
development
Repo-root commands, typegen and typecheck cadence, lint, deploy, adding packages with bun, and Alchemy app layout. Use at the start of a task, before PR, or when choosing turbo/typegen commands.
development
Fork and template gotchas (env import, routes, typegen, forms, D1, Turbo, HMR, new DO packages). Use when working on apps/web or durable-objects, or when behavior diverges from this stack’s conventions.
testing
Turborepo task configuration patterns for monorepo management. Use when configuring turbo.json tasks, setting up task dependencies, managing cache inputs/outputs, or working with cross-package dependencies in the monorepo.
development
React Router v7 routing patterns and environment variable configuration. Use whenever you touch React Router–related code (routes, links, params, loaders, actions, route config, or env in route context).