К основному содержанию
скилл CX Codex

cloudflare-workers-frameworks — скилл для Claude Code: фреймворки

Подсказывает агенту, как поднять Hono, Remix, Next.js, Astro, SvelteKit, Qwik или Nuxt на Cloudflare Workers, и разбирает типовые ошибки сборки.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add secondsky/claude-skills --skill cloudflare-workers-frameworks -a claude-code
Открыть на GitHub

Что делает cloudflare-workers-frameworks

Скилл включается, когда вы собираете приложение на Cloudflare Workers и нужен разбор под конкретный фреймворк. Внутри — таблица выбора: Hono для API и лёгких приложений, Remix для полного стека на React, Next.js через OpenNext, Astro для контентных сайтов, SvelteKit, Qwik и Nuxt через Nitro. Дальше идёт дерево решений: нужен только API — берите Hono, нужен Vue — Nuxt, нужен React — Next.js или Remix.

Отдельный блок — десять частых ошибок с причиной и решением. Среди них No matching export "default" из-за module.exports вместо export default app, Worker exceeded CPU limit на тяжёлом SSR в Next.js, globalThis is not defined без флага nodejs_compat и Bindings not available при незаполненном wrangler.jsonc. Есть готовый пример Hono с D1 и KV, конфиг wrangler.jsonc со статикой через assets, а также паттерн доступа к биндингам для Remix, Astro, SvelteKit и Nuxt.

Скилл ссылается на отдельные файлы references/hono.md, references/remix.md, references/nextjs.md, references/astro.md, references/sveltekit.md, references/qwik.md и references/nuxt.md — агент подгружает нужный по вашей задаче. Учтите: для Next.js на Workers указан путь через OpenNext, и это единственный фреймворк в таблице с пометкой о таком адаптере. Если у вас проект на Next.js без OpenNext, советы по деплою к нему не подойдут.

Какие задачи решает

  • выбрать фреймворк под задачу на Cloudflare Workers
  • поднять API на Hono с доступом к D1 и KV
  • разобрать ошибку Worker exceeded CPU limit при SSR
  • настроить отдачу статики через assets в wrangler.jsonc
  • получить биндинги окружения в Remix, Astro или SvelteKit

Примеры запросов агенту

  • Помоги выбрать фреймворк для нового проекта на Cloudflare Workers: нужен только API.
  • Собери приложение на Hono с базой D1 и покажи конфиг wrangler.jsonc.
  • У меня ошибка globalThis is not defined на Workers — что делать?

Как установить cloudflare-workers-frameworks

1Через Skills CLI (Vercel)

npx skills add secondsky/claude-skills --skill cloudflare-workers-frameworks -a claude-code

2Вручную: положить файлы

~/.claude/skills/cloudflare-workers-frameworks/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/cloudflare-workers-frameworks/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о cloudflare-workers-frameworks

Как установить cloudflare-workers-frameworks в Claude?

Выполните npx skills add secondsky/claude-skills --skill cloudflare-workers-frameworks -a claude-code. После этого файл скилла окажется по пути ~/.claude/skills/cloudflare-workers-frameworks/SKILL.md.

Что делает cloudflare-workers-frameworks?

Помогает агенту собирать приложения на Cloudflare Workers с Hono, Remix, Next.js, Astro, SvelteKit, Qwik или Nuxt. Разбирает роутинг, SSR, статику и деплой на edge, а также типовые ошибки сборки.

С какими фреймворками работает скилл?

Hono, Remix, Next.js, Astro, SvelteKit, Qwik и Nuxt. Для Next.js указан путь через OpenNext, остальные подключаются адаптерами или нативно.

Исходный текст

SKILL.md · MIT
---
name: cloudflare-workers-frameworks
description: Framework integration for Cloudflare Workers. Use when building with Hono, Remix, Next.js, Astro, SvelteKit, Qwik, or Nuxt on Workers. Covers routing, SSR, static assets, and edge deployment.
metadata:
  version: "1.0.0"
license: MIT
---

# Workers Frameworks Integration

Build full-stack applications on Cloudflare Workers using modern frameworks.

## Quick Start: Choose Your Framework

| Framework | Best For | SSR | Static | Workers Native |
|-----------|----------|-----|--------|----------------|
| **Hono** | APIs, lightweight apps | ✅ | ✅ | ✅ Native |
| **Remix** | Full-stack apps | ✅ | ✅ | ✅ Adapter |
| **Next.js** | React apps | ✅ | ✅ | ⚠️ OpenNext |
| **Astro** | Content sites | ✅ | ✅ | ✅ Adapter |
| **SvelteKit** | Svelte apps | ✅ | ✅ | ✅ Adapter |
| **Qwik** | Resumable apps | ✅ | ✅ | ✅ Adapter |
| **Nuxt** | Vue apps | ✅ | ✅ | ✅ Nitro |

## Framework Decision Tree

```
Need an API only?
  └─ Yes → Hono (fastest, smallest)
  └─ No → Building a full app?
           └─ React → Next.js (OpenNext) or Remix
           └─ Vue → Nuxt
           └─ Svelte → SvelteKit
           └─ Content-heavy → Astro
           └─ Max performance → Qwik
```

## Top 10 Framework Errors

| Error | Framework | Cause | Solution |
|-------|-----------|-------|----------|
| `No matching export "default"` | All | Wrong export format | Use `export default app` not `module.exports` |
| `Worker exceeded CPU limit` | Next.js | Heavy SSR | Use ISR, reduce bundle size |
| `Cannot read properties of undefined (reading 'env')` | Remix | Missing context | Pass `context` to loader/action |
| `globalThis is not defined` | All | Node.js globals | Use `nodejs_compat` flag |
| `Dynamic require not supported` | All | CJS in ESM | Convert to ESM imports |
| `Response body is locked` | All | Body already read | Clone response before reading |
| `Bindings not available` | All | Missing wrangler config | Add bindings to wrangler.jsonc |
| `404 on static assets` | All | Wrong assets config | Configure `assets` in wrangler.jsonc |
| `Hydration mismatch` | React/Vue | Server/client differ | Ensure consistent rendering |
| `Maximum call stack exceeded` | All | Circular imports | Refactor module structure |

## Hono Quick Start (Recommended)

```typescript
// src/index.ts
import { Hono } from 'hono';
import { cors } from 'hono/cors';
import { logger } from 'hono/logger';

interface Env {
  DB: D1Database;
  KV: KVNamespace;
}

const app = new Hono<{ Bindings: Env }>();

// Middleware
app.use('*', logger());
app.use('/api/*', cors());

// Routes
app.get('/', (c) => c.text('Hello Workers!'));

app.get('/api/users', async (c) => {
  const { results } = await c.env.DB.prepare('SELECT * FROM users').all();
  return c.json(results);
});

app.post('/api/users', async (c) => {
  const { name, email } = await c.req.json();
  await c.env.DB.prepare('INSERT INTO users (name, email) VALUES (?, ?)')
    .bind(name, email)
    .run();
  return c.json({ success: true }, 201);
});

export default app;
```

```jsonc
// wrangler.jsonc
{
  "name": "my-app",
  "main": "src/index.ts",
  "compatibility_date": "2024-12-01",
  "compatibility_flags": ["nodejs_compat"],
  "d1_databases": [
    { "binding": "DB", "database_name": "my-db", "database_id": "xxx" }
  ]
}
```

## Static Assets Configuration

```jsonc
// wrangler.jsonc - Serving static files
{
  "name": "my-app",
  "main": "src/index.ts",
  "assets": {
    "directory": "./public",
    "binding": "ASSETS"
  }
}
```

```typescript
// Serve static with fallback to app
import { Hono } from 'hono';

const app = new Hono<{ Bindings: { ASSETS: Fetcher } }>();

// API routes
app.get('/api/*', apiHandler);

// Static assets fallback
app.get('*', async (c) => {
  return c.env.ASSETS.fetch(c.req.raw);
});

export default app;
```

## When to Load References

Load the specific framework reference when user:

| Reference | Load When |
|-----------|-----------|
| `references/hono.md` | Building APIs, microservices, or lightweight apps |
| `references/remix.md` | Full-stack React with loaders/actions |
| `references/nextjs.md` | Next.js App Router on Workers via OpenNext |
| `references/astro.md` | Content sites, blogs, docs, marketing pages |
| `references/sveltekit.md` | Svelte applications on Workers |
| `references/qwik.md` | Resumable apps, instant loading |
| `references/nuxt.md` | Vue 3 applications with Nitro |

## Common Patterns Across Frameworks

### Environment Bindings Access

```typescript
// Hono
app.get('/', (c) => c.env.DB.prepare('...'));

// Remix
export async function loader({ context }) {
  return context.cloudflare.env.DB.prepare('...');
}

// Astro
const db = Astro.locals.runtime.env.DB;

// SvelteKit
export async function load({ platform }) {
  return platform.env.DB.prepare('...');
}

// Nuxt
const { cloudflare } = useRuntimeConfig();
// Or via nitro: event.context.cloudflare.env.DB
```

### Error Handling Pattern

```typescript
// Universal error boundary pattern
app.onError((err, c) => {
  console.error(`[${c.req.path}] ${err.message}`);

  if (err instanceof HTTPException) {
    return err.getResponse();
  }

  return c.json(
    { error: 'Internal Server Error' },
    500
  );
});
```

## Performance Tips

1. **Bundle Size**: Keep under 1MB compressed
2. **Cold Starts**: Minimize top-level code
3. **Streaming**: Use streaming SSR when available
4. **Caching**: Leverage Cache API and CDN
5. **Code Splitting**: Dynamic imports for routes

## See Also

- `workers-performance` - Optimization techniques
- `workers-runtime-apis` - Workers APIs reference
- `cloudflare-worker-base` - Basic Workers setup

© secondsky · MIT · secondsky/claude-skills

Похожие скиллы

Всё по теме «Облака: AWS, Azure, GCP» →
cloudflare-workers devops-skills Скилл для работы с Cloudflare Workers: помогает писать и деплоить edge-функции через Wrangler. Пригодится, если делаете API, cron-задачи или middleware. CX Codex +1 314установок nextjs-on-cloudflare cloudflare Скилл для развёртывания Next.js приложений на Cloudflare Workers через vinext. Используй для новых проектов, миграции существующих приложений или выбора между vinext и OpenNext. CX Codex +1 42 800установок cloudflare-email-service cloudflare Скилл для работы с Cloudflare Email Sending и Email Routing: помогает настроить отправку и приём писем в Workers. CX Codex +1 102 300установок cloudflare-development Mindrally Скилл с правилами разработки на edge-платформе Cloudflare: Workers, Pages, KV, D1, R2 и Durable Objects. Пригодится, когда агент пишет код для воркеров или настраивает wrangler.toml. CX Codex +1 689установок cloudflare-workers-hono-angular-saas-cursorrules-prompt-file PatrickJS Правило для Cursor задаёт стек и соглашения для SaaS на Cloudflare Workers: Hono API, Angular, Drizzle, Clerk, Stripe. ★ 41 011звёзд репо cloudflare-d1 alinaqi Помогает агенту писать код под Cloudflare D1: схема Drizzle, миграции через Wrangler и воркер на Hono. Пригодится, когда проект уже крутится на Workers. CX Codex +1 311установок

Из того же набора89

maz-ui Скилл даёт агенту знание Maz-UI v4: 50+ компонентов, composables, директивы и темы для Vue 3 и Nuxt 3. Пригодится, когда собираете формы, диалоги или таблицы. CX Codex +1 369установок woocommerce-dev-cycle Скилл ведёт по циклу разработки WooCommerce: запускает тесты, чинит стиль кода и разбирает ошибки линтинга. CX Codex +1 361установок woocommerce-copy-guidelines Скилл задаёт правила написания пользовательских текстов в WooCommerce: подписи кнопок, метки полей, сообщения и документация. Пригодится, когда интерфейс магазина пишут несколько человек. CX Codex +1 363установок cloudflare-workers-testing Скилл для написания тестов Cloudflare Workers на Vitest с реальными биндингами D1, KV, R2 и Durable Objects. Пригодится, когда тесты падают на моках или не видят окружение. CX Codex +1 325установок nuxt-seo Скилл по восьми модулям Nuxt SEO v5: robots.txt, карты сайта, OG-картинки, Schema.org и метатеги. Пригодится, когда SEO надо настроить в Nuxt-проекте. CX Codex +1 324установок cloudflare-workers-performance Скилл для оптимизации Cloudflare Workers: CPU, память, кеш, размер бандла. Пригодится, когда воркер тормозит или упирается в лимиты. CX Codex +1 315установок cloudflare-workers-runtime-apis Скилл по рантайм-API Cloudflare Workers: Fetch, Streams, Crypto, Cache, WebSockets и кодирование текста. Пригодится, когда воркер ловит ошибки на запросах, потоках или кэше. CX Codex +1 311установок cloudflare-workers-observability Скилл для наблюдаемости Cloudflare Workers: структурированные логи, Analytics Engine, Tail Workers, метрики и алерты. Пригодится, когда воркер падает в проде, а логов не видно. CX Codex +1 302установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой