gateway-workers — скилл для Claude Code: Cloudflare Workers в Gateway
Скилл для разработки, отладки и ревью Cloudflare Workers, которые запускаются в Forward-действиях Gateway HTTP-политик. Помогает работать с GatewayMiddleware, типами контекста и продолжением запроса.
npx skills add cloudflare/skills --skill gateway-workers -a claude-codeЧто делает gateway-workers
gateway-workers даёт вам полный справочник по написанию Workers внутри Cloudflare Gateway. Скилл учит правильно экспортировать класс GatewayMiddleware, наследующий WorkerEntrypoint, реализовать метод handle(request, context, next) и вернуть Response. Gateway вызывает этот метод через RPC — обычный fetch()-обработчик не подойдёт.
Второй аргумент handle() — это Gateway-контекст, который описывает исходный запрос и остаётся неизменным, когда Worker его модифицирует. Важно различать его от this.ctx (контекст выполнения Workers) и this.env (привязки). Продолжить запрос пользователя можно вызовом next(request) не более одного раза, либо вернуть синтетический ответ без вызова. next() всегда идёт в исходный адрес — изменения URL или хоста игнорируются.
Скилл напоминает о ограничениях: HTTPS требует расшифровки, WebSockets обходят Worker, VPC-трафик отбрасывается. Только первая совпадающая Forward-политика вызывает Worker. Тело ответа Gateway инспектирует после обработки, включая синтетические ответы. Важно правильно обрабатывать HEAD-запросы и статусы 204, 205, 304 без тела.
Какие задачи решает
- Написать Worker, который трансформирует или фильтрует HTTP-трафик в Gateway
- Использовать Gateway-контекст для проверки идентичности и posture пользователя
- Вернуть синтетический ответ без продолжения запроса к origin
- Отладить RPC-вызов GatewayMiddleware и валидировать типы
- Отличить Gateway-контекст от Workers-контекста и привязок
Примеры запросов агенту
- Напиши Worker для Gateway, который проверяет устройство пользователя и блокирует запрос, если posture не соответствует политике
- Помоги отладить, почему `next()` игнорирует изменения URL в transformed request
- Ревью Worker на соответствие Gateway типам и правилам обработки body для HEAD и 204
Как установить gateway-workers
1Через Skills CLI (Vercel)
npx skills add cloudflare/skills --skill gateway-workers -a claude-code2Вручную: положить файлы
~/.claude/skills/gateway-workers/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/gateway-workers/
1Через Skills CLI (Vercel)
npx skills add cloudflare/skills --skill gateway-workers -a codex2Вручную: положить файлы
.agents/skills/gateway-workers/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add cloudflare/skills --skill gateway-workers -a cursor2Вручную: положить файлы
.cursor/skills/gateway-workers/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install cloudflare/skills gateway-workers2Вручную: положить файлы
.github/skills/gateway-workers/SKILL.md1Через Skills CLI (Vercel)
npx skills add cloudflare/skills --skill gateway-workers -a gemini-cli2Командой платформы
gemini skills install https://github.com/cloudflare/skills --path skills/gateway-workersВручную: положить файлы
.devin/skills/gateway-workers/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add cloudflare/skills --skill gateway-workers -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора18
Весь набор →Похожие
Вопросы о gateway-workers
Как установить gateway-workers в Claude Code?
Выполни npx skills add cloudflare/skills --skill gateway-workers -a claude-code и укажи путь ~/.claude/skills/gateway-workers/SKILL.md при запросе. Для других платформ используй соответствующий флаг: -a codex для Codex, -a cursor для Cursor, -a gemini-cli для Gemini CLI. GitHub Copilot устанавливает через gh skill install cloudflare/skills gateway-workers.
Что делает gateway-workers?
Скилл учит писать Workers, которые Gateway запускает на разрешённом HTTP-трафике через Forward-действие. Worker может трансформировать запрос, вернуть синтетический ответ или проверить личность пользователя через контекст.
В чём разница между `next(request)` и `fetch()` внутри Worker?
next() продолжает запрос в исходный адрес, изменения URL игнорируются и он не может редиректить или повторяться. fetch() отправляет независимый подзапрос к другому адресу и не наследует Gateway-политики пользователя.
Исходный текст
SKILL.md · Apache-2.0
--- name: gateway-workers description: Build, debug, or review Cloudflare Workers invoked by the Forward action in Gateway HTTP policies, including the GatewayMiddleware entrypoint, Gateway types, context, and continuation. --- # Gateway Workers Read the current [Forward guide](https://developers.cloudflare.com/cloudflare-one/traffic-controls/integrate-workers/forward-traffic/index.md) before implementing a Worker. It defines how Gateway invokes Workers on permitted HTTP traffic. Retrieve the relevant page below rather than copying setup, API payloads, or limits into the project from memory. ## Workflow 1. Inspect the existing Worker and choose a [Worker template](https://developers.cloudflare.com/cloudflare-one/traffic-controls/integrate-workers/worker-templates/index.md) for the required transformation, synthetic response, or background task. 2. Export a named `GatewayMiddleware` class extending `WorkerEntrypoint` from `cloudflare:workers`. Implement `handle(request, context, next)` and return a `Response`. Gateway calls this method through RPC. A default `fetch()` handler alone does not implement the Forward contract. 3. For TypeScript, follow the chosen template's current package installation and type-import instructions. 4. Use the second argument for [Gateway context](https://developers.cloudflare.com/cloudflare-one/traffic-controls/integrate-workers/available-context/index.md). It describes the original request and stays unchanged when the Worker modifies the request. Keep it distinct from `this.ctx` (Workers execution context) and `this.env` (bindings). 5. Continue the user's request with `next(request)` at most once, or return a synthetic response without calling it. `next()` always targets the original destination. Changes to the destination URL or host are ignored, and it cannot redirect, retry, or fan out. Use `fetch()` to send a request to a different destination. It creates an independent subrequest that does not inherit the user's Gateway policies or egress configuration. ## Context Use the published types and context reference for field names and availability. Treat a falsy identity (`!identity`) as anonymous and guard optional posture values. Call `await context.identity()` or `await context.devicePosture()` only when needed. Both getters can reject. Catch lookup failures separately from missing values and decide how to handle each when the Worker depends on them. Use Gateway-provided identity rather than client-supplied identity headers. ## Gateway behavior - Only the first matching Forward policy invokes a Worker. Worker invocation does not confirm successful body inspection. Follow the Forward guide's [inspection order](https://developers.cloudflare.com/cloudflare-one/traffic-controls/integrate-workers/forward-traffic/index.md#how-it-works). - Gateway inspects the final response, including synthetic responses. Modified request bytes are not inspected again before reaching the origin. - Review the Forward guide's [limitations](https://developers.cloudflare.com/cloudflare-one/traffic-controls/integrate-workers/forward-traffic/index.md#known-limitations) before choosing traffic: HTTPS requires decryption, WebSockets bypass the Worker, and matching Workers VPC traffic is dropped. Worker invocation failures fail closed. ## Validation Type-check against the installed Gateway types and test the named RPC entrypoint, including zero or one continuation call and the context values the Worker uses. Then test a permitted request through a scoped Gateway Forward policy. A direct request to a default `fetch()` handler does not validate the Gateway path. Follow the chosen template's test procedure and the Forward guide's troubleshooting steps. Check the [response and streaming rules](https://developers.cloudflare.com/cloudflare-one/traffic-controls/integrate-workers/forward-traffic/index.md#known-limitations): return a final status from `200` to `599`, return no body for HEAD requests or statuses `204`, `205`, and `304`, and stream bodies rather than buffering them. ## Related skills - [cloudflare-one](../cloudflare-one/SKILL.md): Gateway policy design, traffic paths, identity, TLS, and rollout. - [workers-best-practices](../workers-best-practices/SKILL.md): streaming, bindings, generated environment types, background work, observability, and runtime tests. - [CLI selection](../cloudflare/SKILL.md#choose-the-cli): choose the existing `cf-cli` or `wrangler` skill for project setup and deployment.
© cloudflare · Apache-2.0 · cloudflare/skills