Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Cursor rules for full-stack SaaS applications on Cloudflare Workers with Hono APIs, Angular frontends, typed RPC, D1/Neon, and production observability.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-12 | ✗→✓ | ▲ Improved | 63% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 39% | 0% |
Cursor rules for full-stack SaaS applications on Cloudflare Workers with Hono APIs, Angular frontends, typed RPC, D1/Neon, and production observability.
Synced from https://github.com/PatrickJS/awesome-cursorrules/tree/main/rules/cloudflare-workers-hono-angular-saas-cursorrules-prompt-file.mdc.
Full-stack SaaS on Cloudflare Workers with Hono API, Angular frontend, and enterprise integrations.
CF Workers+Hono v4.12+ | Angular 21+Ionic 8+PrimeNG 21 | D1/Neon | Drizzle v1 | Zod | Clerk Core 3 | Stripe | Inngest v4 | Resend | Bun 1.3 | Playwright v1.59+ | Vitest | ESLint+Prettier | PostHog | Sentry
any (use unknown), prefer interface over typereadonly when not reassigned, undefined over nulleslint.config.ts) + typescript-eslint + Prettierapp.use().get().post() preserves typeshc<AppType>(BASE_URL) for typed client@hono/zod-validator on ALL request bodiesapp.onError() + app.notFound() centralizedapp.route('/path', subApp){ error: string, code?: string, details?: unknown }createFactory<{ Bindings: Env }>() for reusable middleware chainsGET /health returns { status, version, timestamp }signal(), computed(), effect(), linkedSignal(), resource()HttpResource for data fetching@if/@for/@switch/@defer (not *ngIf/*ngFor)providedIn: 'root'sqliteTable for D1, plural snake_case tables$inferSelect/$inferInsert for typescreateInsertSchema/createSelectSchema from drizzle-orm/zodBEGIN — D1 doesn't support transactions)ctx.waitUntil() for async post-response workctx.passThroughOnException() for graceful degradationEnv interfaceeventType('name', { schema: z.object({...}) }) per-event (v4 breaking)inngest/cloudflare adapter + inngest.setEnvVars(c.env) for Workersstep.run(), step.sleep(), step.waitForEvent(), step.sendEvent()step.ai.infer() offloads inference (zero compute during wait)step.realtime.publish() for durable pub/subwaitFor/toBeVisible()data-testid > role > textPROD_URL env var for production testingbashnpx wrangler deploy && curl -sX POST \ "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache" \ -H "Authorization: Bearer ${CF_API_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"purge_everything":true}'
typescriptimport { Hono } from 'hono'; import { secureHeaders } from 'hono/secure-headers'; import { cors } from 'hono/cors'; interface Env { DB: D1Database; KV: KVNamespace; AI: Ai; TURNSTILE_SECRET: string; } const app = new Hono<{ Bindings: Env }>(); app.use('*', secureHeaders()); app.use('/api/*', cors({ origin: ['https://yourdomain.com'] })); app.get('/health', (c) => c.json({ status: 'ok', timestamp: new Date().toISOString() })); export default app;
Other measured skills in the registry, with their headline benchmark lift.