# netlify-functions

Помогает агенту писать и настраивать серверless-функции Netlify на TypeScript, JavaScript или Go: маршруты, cron, лимиты, чтение секретов.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 3200 установок · ★ 45
- Автор: netlify
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/netlify/context-and-tools/tree/HEAD/skills/netlify-functions/SKILL.md
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/skills/netlify-functions

## Что делает

Скилл объясняет агенту, как устроены функции Netlify: где лежат файлы, какая у обработчика сигнатура и какие поля есть в конфиге. По умолчанию он советует современный вариант с `Request` и `Context` на входе и `Response` на выходе вместо старой формы AWS Lambda. Файлы кладутся в `netlify/functions/`, причём вне publish-директории, иначе исходники уедут в статику.

Внутри разобраны маршрутизация через `config.path` с шаблонами URLPattern, ограничение методов, `excludedPath` и `preferStatic`, а также cron-расписания, фоновые задачи и лимиты по частоте запросов. Отдельный блок про `context.user`: он часто приходит `undefined` — на публичных проектах, при базовой защите паролем, в локальном `netlify dev` и на функциях, развёрнутых до 5 октября 2026 года. Обрабатывать этот случай нужно всегда, а ключом записи брать `id`, потому что `email` может быть пустым.

Секреты читаются через `Netlify.env.get()`, и переменная должна иметь область Functions — значения из `netlify.toml` функциям недоступны. Заголовки ответа задаются в коде: правила `[[headers]]` и `_headers` работают только для статики с CDN. Ещё один подводный камень: если рядом лежат `items.js` и `items.ts`, победит JavaScript, а правки в TypeScript молча ничего не изменят. Для типов нужен `npm install @netlify/functions`.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add netlify/context-and-tools --skill netlify-functions -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/netlify-functions/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/netlify-functions/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add netlify/context-and-tools --skill netlify-functions -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/netlify-functions/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add netlify/context-and-tools --skill netlify-functions -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/netlify-functions/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install netlify/context-and-tools netlify-functions
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/netlify-functions/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add netlify/context-and-tools --skill netlify-functions -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/netlify/context-and-tools --path skills/netlify-functions
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/netlify-functions/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add netlify/context-and-tools --skill netlify-functions -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/netlify/context-and-tools/tree/HEAD/skills/netlify-functions/SKILL.md

## Когда брать
- добавить API-эндпоинт к статическому сайту на Netlify
- принять заявку с контактной формы и обработать её на сервере
- определить, какой пользователь Netlify вызвал закрытое приложение
- настроить cron-задачу или долгую фоновую обработку
- ограничить частоту запросов и выбрать регион с памятью для функции

## Примеры запросов агенту
- Напиши функцию Netlify на TypeScript, которая принимает POST с формы и возвращает JSON
- Сделай эндпоинт с путём `/travel-guide/:city/:country` и достань параметры из `context.params`
- Добавь cron-функцию, которая раз в час чистит устаревшие записи

## Похожие
- [netlify-development](https://affpapa.org/nevibecode/skills/netlify-development.md) — скилл · 665 установок
- [netlify-official-cursorrules-prompt-file](https://affpapa.org/nevibecode/rules/netlify-official-cursorrules-prompt-file.md) — правило · ★ 41011
- [aws-lambda-durable-functions](https://affpapa.org/nevibecode/skills/aws-lambda-durable-functions.md) — скилл · 5800 установок
- [inngest-durable-functions](https://affpapa.org/nevibecode/skills/inngest-durable-functions.md) — скилл · 3800 установок
- [extension-to-functions-codebase](https://affpapa.org/nevibecode/skills/extension-to-functions-codebase.md) — скилл · 56400 установок
- [aws-step-functions](https://affpapa.org/nevibecode/skills/aws-step-functions.md) — скилл · 3900 установок

Из того же набора: [netlify/context-and-tools](https://affpapa.org/nevibecode/by/netlify/context-and-tools.md) — 14 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
