К основному содержанию
скилл CX Codex GP ChatGPT официальный · OpenAI

workers-best-practices · openai — скилл для Codex: что делает и как установить

Проверяет код Cloudflare Workers и конфиг wrangler.jsonc по стандартам Cloudflare. Заставляет агента скачивать свежую документацию вместо устаревших знаний.

Установить в Codex · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add openai/plugins --skill workers-best-practices -a codex
Открыть на GitHub

Что делает workers-best-practices

Скилл заставляет модель перед написанием или ревью кода Workers загружать актуальные типы @cloudflare/workers-types и правила с сайта разработчиков Cloudflare. Память нейросетей быстро устаревает. Поиск по свежей документации защищает проект от ошибок в типах и устаревших флагов среды.

В проверку входит валидация wrangler.jsonc, поиск утечек секретов и отслеживание антипаттернов исполнения. Скилл запрещает сохранять данные запроса в глобальных переменных модуля. Это предотвращает утечки состояния между разными вызовами. Фоновые операции скилл требует передавать в ctx.waitUntil(). Деструктуризация const { waitUntil } = ctx ломает привязку контекста и вызывает ошибку Illegal invocation в рантайме.

Архитектурные правила требуют использовать прямые биндинги KV, D1 или R2 вместо вызовов Cloudflare REST API. Для внешних баз данных PostgreSQL и MySQL скилл требует подключать Hyperdrive. Проверка типов бракует интерфейсы Env, написанные вручную, и требует генерации через команду wrangler types.

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

  • настроить wrangler.jsonc со свежими флагами совместимости
  • найти повисшие промисы без await или ctx.waitUntil()
  • заменить небезопасный Math.random() на Web Crypto API
  • сгенерировать типизацию окружения через wrangler types
  • перевести обращение к KV и R2 с REST API на нативные биндинги

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

  • Проверь мой worker.ts на утечки памяти при чтении потоков и повисшие промисы.
  • Помоги составить wrangler.jsonc для проекта с D1 и очередями по правилам Cloudflare.
  • Проведи ревью кода обработчика перед деплоем и проверь типизацию Env.

Как установить workers-best-practices

1Через Skills CLI (Vercel)

npx skills add openai/plugins --skill workers-best-practices -a codex

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

.agents/skills/workers-best-practices/SKILL.md

Для всех проектов — ~/.agents/skills/

По шагам, с командами для каждой платформы: Скиллы Codex: как установить, где лежат и как вызвать

Вопросы о workers-best-practices

Как установить workers-best-practices в Codex?

Выполните команду npx skills add openai/plugins --skill workers-best-practices -a codex.

Зачем скилл требует скачивать документацию перед генерацией кода?

Встроенные знания нейросетей быстро отстают от обновлений платформы Workers. Скачивание пакета @cloudflare/workers-types и чтение актуальной документации гарантируют правильные типы биндингов и свежие флаги рантайма.

Какие ошибки в работе с памятью и контекстом отслеживает скилл?

Он запрещает вызов await response.text() на больших телах ответов из-за лимита памяти в 128 МБ. Также скилл находит деструктуризацию объекта ctx, которая приводит к падению из-за потери this.

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

SKILL.md · MIT
---
name: workers-best-practices
description: Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge.
---

Your knowledge of Cloudflare Workers APIs, types, and configuration may be outdated. **Prefer retrieval over pre-training** for any Workers code task — writing or reviewing.

## Retrieval Sources

Fetch the **latest** versions before writing or reviewing Workers code. Do not rely on baked-in knowledge for API signatures, config fields, or binding shapes.

| Source | How to retrieve | Use for |
|--------|----------------|---------|
| Workers best practices | Fetch `https://developers.cloudflare.com/workers/best-practices/workers-best-practices/` | Canonical rules, patterns, anti-patterns |
| Workers types | See `references/review.md` for retrieval steps | API signatures, handler types, binding types |
| Wrangler config schema | `node_modules/wrangler/config-schema.json` | Config fields, binding shapes, allowed values |
| Cloudflare docs | Search tool or `https://developers.cloudflare.com/workers/` | API reference, compatibility dates/flags |

## FIRST: Fetch Latest References

Before reviewing or writing Workers code, retrieve the current best practices page and relevant type definitions. If the project's `node_modules` has an older version, **prefer the latest published version**.

```bash
# Fetch latest workers types
mkdir -p /tmp/workers-types-latest && \
  npm pack @cloudflare/workers-types --pack-destination /tmp/workers-types-latest && \
  tar -xzf /tmp/workers-types-latest/cloudflare-workers-types-*.tgz -C /tmp/workers-types-latest
# Types at /tmp/workers-types-latest/package/index.d.ts
```

## Reference Documentation

- `references/rules.md` — all best practice rules with code examples and anti-patterns
- `references/review.md` — type validation, config validation, binding access patterns, review process

## Rules Quick Reference

### Configuration

| Rule | Summary |
|------|---------|
| Compatibility date | Set `compatibility_date` to today on new projects; update periodically on existing ones |
| nodejs_compat | Enable the `nodejs_compat` flag — many libraries depend on Node.js built-ins |
| wrangler types | Run `wrangler types` to generate `Env` — never hand-write binding interfaces |
| Secrets | Use `wrangler secret put`, never hardcode secrets in config or source |
| wrangler.jsonc | Use JSONC config for non-secret settings — newer features are JSON-only |

### Request & Response Handling

| Rule | Summary |
|------|---------|
| Streaming | Stream large/unknown payloads — never `await response.text()` on unbounded data |
| waitUntil | Use `ctx.waitUntil()` for post-response work; do not destructure `ctx` |

### Architecture

| Rule | Summary |
|------|---------|
| Bindings over REST | Use in-process bindings (KV, R2, D1, Queues) — not the Cloudflare REST API |
| Queues & Workflows | Move async/background work off the critical path |
| Service bindings | Use service bindings for Worker-to-Worker calls — not public HTTP |
| Hyperdrive | Always use Hyperdrive for external PostgreSQL/MySQL connections |

### Observability

| Rule | Summary |
|------|---------|
| Logs & Traces | Enable `observability` in config with `head_sampling_rate`; use structured JSON logging |

### Code Patterns

| Rule | Summary |
|------|---------|
| No global request state | Never store request-scoped data in module-level variables |
| Floating promises | Every Promise must be `await`ed, `return`ed, `void`ed, or passed to `ctx.waitUntil()` |

### Security

| Rule | Summary |
|------|---------|
| Web Crypto | Use `crypto.randomUUID()` / `crypto.getRandomValues()` — never `Math.random()` for security |
| No passThroughOnException | Use explicit try/catch with structured error responses |

## Anti-Patterns to Flag

| Anti-pattern | Why it matters |
|-------------|----------------|
| `await response.text()` on unbounded data | Memory exhaustion — 128 MB limit |
| Hardcoded secrets in source or config | Credential leak via version control |
| `Math.random()` for tokens/IDs | Predictable, not cryptographically secure |
| Bare `fetch()` without `await` or `waitUntil` | Floating promise — dropped result, swallowed error |
| Module-level mutable variables for request state | Cross-request data leaks, stale state, I/O errors |
| Cloudflare REST API from inside a Worker | Unnecessary network hop, auth overhead, added latency |
| `ctx.passThroughOnException()` as error handling | Hides bugs, makes debugging impossible |
| Hand-written `Env` interface | Drifts from actual wrangler config bindings |
| Direct string comparison for secret values | Timing side-channel — use `crypto.subtle.timingSafeEqual` |
| Destructuring `ctx` (`const { waitUntil } = ctx`) | Loses `this` binding — throws "Illegal invocation" at runtime |
| `any` on `Env` or handler params | Defeats type safety for all binding access |
| `as unknown as T` double-cast | Hides real type incompatibilities — fix the design |
| `implements` on platform base classes (instead of `extends`) | Legacy — loses `this.ctx`, `this.env`. Applies to DurableObject, WorkerEntrypoint, Workflow |
| `env.X` inside platform base class | Should be `this.env.X` in classes extending DurableObject, WorkerEntrypoint, etc. |

## Review Workflow

1. **Retrieve** — fetch latest best practices page, workers types, and wrangler schema
2. **Read full files** — not just diffs; context matters for binding access patterns
3. **Check types** — binding access, handler signatures, no `any`, no unsafe casts (see `references/review.md`)
4. **Check config** — compatibility_date, nodejs_compat, observability, secrets, binding-code consistency
5. **Check patterns** — streaming, floating promises, global state, serialization boundaries
6. **Check security** — crypto usage, secret handling, timing-safe comparisons, error handling
7. **Validate with tools** — `npx tsc --noEmit`, lint for `no-floating-promises`
8. **Reference rules** — see `references/rules.md` for each rule's correct pattern

## Scope

This skill covers Workers-specific best practices and code review. For related topics:

- **Durable Objects**: load the `durable-objects` skill
- **Workflows**: see [Rules of Workflows](https://developers.cloudflare.com/workflows/build/rules-of-workflows/)
- **Wrangler CLI commands**: load the `wrangler` skill

## Principles

- **Be certain.** Retrieve before flagging. If unsure about an API, config field, or pattern, fetch the docs first.
- **Provide evidence.** Reference line numbers, tool output, or docs links.
- **Focus on what developers will copy.** Workers code in examples and docs gets pasted into production.
- **Correctness over completeness.** A concise example that works beats a comprehensive one with errors.

© Cloudflare · MIT · openai/plugins

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

Все скиллы по теме «Бэкенд и API» →

Сначала — workers-best-practices от других авторов.

workers-best-practices cloudflare Скилл настраивает ИИ на проверку продакшен-кода Cloudflare Workers по актуальным правилам рантайма, типам Wrangler и антипаттернам. CX Codex +1 126 100установок mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. 130 949установок claude-api официальный anthropics Справочник по Anthropic SDK и API Claude для генерации кода без устаревших параметров и выдуманных методов. 74 198установок lark-im larksuite Скилл подключает Lark IM к агенту: он отправляет сообщения, ищет историю, управляет чатами и файлами. Подойдёт для задач вокруг командных коммуникаций. CX Codex +1 472 900установок lark-event larksuite Слушает события Lark/Feishu и отдаёт их потоком NDJSON. Подходит для ботов, обработчиков сообщений и долгих подписчиков. CX Codex +1 466 800установок caveman-discover JuliusBrussee Находит точки вызова LLM в репозитории и размечает их воркфлоу для Caveman Cloud, чтобы расходы на токены не сливались в одну общую кучу. CX Codex +1 104 400установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок

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

Весь набор →
expo-cicd-workflows Скилл помогает создавать и проверять YAML-файлы EAS Workflows в Expo-проектах. Пригодится для CI/CD, сборок и автоматизации деплоя. CX Codex GP ChatGPT 1установок expo-api-routes Скилл объясняет агенту, как писать серверные API-роуты в Expo Router и выкладывать их на EAS Hosting. Пригодится, когда ключи и запросы к базе нельзя держать на клиенте. CX Codex GP ChatGPT 1установок gather-business-context Собирает бизнес-контекст и формулировки метрик из подключённых источников перед глубоким анализом. Помогает агенту уточнить задачу до построения отчётов или поиска причин. CX Codex GP ChatGPT 1установок create-data-context Собирает и обновляет семантический слой: как читать данные, какая метрика считается основной и на какие оговорки смотреть. CX Codex GP ChatGPT 1установок connect-chatcut-desktop Ставит и открывает ChatCut Desktop, когда инструменты chatcut_desktop в Codex недоступны. Внутри только инструкции, установщика нет. CX Codex GP ChatGPT 1установок zoom-apps-sdk Помогает разрабатывать приложения, работающие внутри клиента Zoom. Направляет настройку контекстов, авторизации и Layers API. CX Codex GP ChatGPT ★ 7 604звёзд репо setup-zoom-websockets Скилл помогает подключать постоянную доставку событий Zoom через WebSockets вместо HTTP-вебхуков. Нужен для интеграций с особой моделью соединения или требованиями к задержке. CX Codex GP ChatGPT ★ 7 604звёзд репо setup-zoom-webhooks Скилл для Codex и ChatGPT, который ведёт агента по настройке вебхуков Zoom: подписки, проверка подписи, идемпотентные обработчики. CX Codex GP ChatGPT ★ 7 604звёзд репо

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

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