Arcjet skills — защита маршрутов и вызовов инструментов
Arcjet skills
Пять скиллов для агента, которые подключают защиту Arcjet в JavaScript: лимиты, боты, Shield, внедрение в промпт и проверка вызовов инструментов
- 700 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Скилл `cli` входит в ваш аккаунт Arcjet и записывает `ARCJET_KEY` в проект, а удаленный MCP-сервер управляет правилами через OAuth
- Защита меняет, кого пропускают и блокируют: неверные правила закроют настоящих пользователей или оставят маршрут открытым
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/arcjet-skillsОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Скилл `cli` входит в ваш аккаунт Arcjet и записывает `ARCJET_KEY` в проект, а удаленный MCP-сервер управляет правилами через OAuth
- Защита меняет, кого пропускают и блокируют: неверные правила закроют настоящих пользователей или оставят маршрут открытым
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Пакет `@arcjet/skills` дает агенту пять скиллов для SDK Arcjet на JavaScript и TypeScript. Скилл `protect` добавляет защиту в HTTP-обработчики Next.js, Express, Fastify, SvelteKit, Remix, Hono, Astro, Nuxt, Bun, Deno и NestJS: лимиты запросов, обнаружение ботов, Shield, проверку почты и поиск чувствительных данных. Скилл `choose-protections` помогает выбрать правило под проблему, например `detectBot`, `shield`, `tokenBucket` или `detectPromptInjection`. Для кода без HTTP-запроса, то есть вызовов инструментов агента, обработчиков MCP и фоновых заданий, есть скилл `guard`. Он подключает `@arcjet/guard` с правилами вроде блокировки внедрения в промпт и ограничения частоты действий агента. Для конкретных фреймворков вроде LangChain, Mastra и OpenAI Agents SDK в пакете `@arcjet/guard` лежат отдельные скиллы интеграции. Скиллы `cli` и `mcp` получают реальный `ARCJET_KEY`: через `npx @arcjet/cli` с входом в аккаунт либо через удаленный MCP-сервер Arcjet. Скиллы идут версионированными вместе с пакетом, поэтому их содержание соответствует SDK из `node_modules`. TanStack Intent находит файлы `SKILL.md` как статические, не исполняя код пакета.
Для кого. Для разработчиков на JavaScript и TypeScript, которые просят Claude Code, Cursor или другого агента защитить API, форму входа или инструменты ИИ-агента и не хотят объяснять Arcjet с нуля.
Подходит, если
- Нужно закрыть маршрут Next.js или Express лимитом запросов, обнаружением ботов и Shield, и агент должен сам определить фреймворк
- Вы выбираете между `detectBot`, `shield` и лимитами, и нужна таблица соответствия проблемы и правила
- Агент вызывает инструменты или MCP-обработчики, и аргументы нужно проверять на внедрение в промпт
- Агенту нужен рабочий ключ: скилл `cli` проведет вход через `npx @arcjet/cli` и запишет `ARCJET_KEY`
- Команде нужны версии скиллов, совпадающие с версией SDK
Не подходит, если
- Проект не на JavaScript и не на TypeScript: скилл `protect` просит остановиться, если язык другой
- Нужна защита без внешнего сервиса: Arcjet требует аккаунт и ключ, а часть правил работает через его облако
- Приложение доступно напрямую, без прокси, который перезаписывает заголовки пересылки: адрес клиента, взятый из `X-Forwarded-For`, можно подделать
- Вам нужен только готовый SDK без скиллов: тогда достаточно пакета `arcjet` и документации
Пример запроса к агенту
Загрузи скилл protect из @arcjet/skills и защити маршрут POST /api/login: лимит запросов, обнаружение ботов и Shield. Ключ получи через скилл cliОграничения
Скиллы описывают только SDK Arcjet для JavaScript и TypeScript. Для защиты кода вне HTTP нужен `@arcjet/guard` на Node.js не ниже 22.21 в линейке 22 либо 24.5 и новее. Без аккаунта и ключа `ARCJET_KEY` защита не заработает. Скилл `cli` требует входа в аккаунт через браузер.
Пакет `@arcjet/skills` подключается через TanStack Intent: он находит скиллы в `node_modules`, а список разрешенных пакетов вы задаете в `package.json` сами. Если ключ `intent.skills` не указан, подключатся все найденные пакеты со скиллами, и инструмент выводит предупреждение об этом. Подстановка `"*"` означает доверие скиллам из всего дерева зависимостей.
Удаленный MCP-сервер живет по адресу `https://api.arcjet.com/mcp`, вход идет по OAuth, и автор советует включить подтверждение записи. Если адрес клиента берется из заголовков пересылки, Arcjet пишет одно предупреждение на экземпляр клиента.
Как отключить. Удалите пакет командой `npm uninstall @arcjet/skills`, уберите блок `intent` из `package.json` и запись об Arcjet в `AGENTS.md`, которую добавила команда `intent install`. Если ставили скиллы через `npx skills add arcjet/skills`, удалите их из папки скиллов агента.
Частые вопросы
Как установить скиллы Arcjet?
Выполните `npm install @arcjet/skills`, затем `npx @tanstack/intent@latest install`: команда находит скиллы в `node_modules` и записывает инструкции в `AGENTS.md`. Отдельный вариант — `npx skills add arcjet/skills`, но версионированный пакет лучше совпадает с SDK.
Какие скиллы входят в пакет?
Пять: `protect` для HTTP-маршрутов, `choose-protections` для выбора правил, `guard` для кода без HTTP, `cli` для входа и ключа, `mcp` для подключения удаленного MCP-сервера. Скиллы интеграции с LangChain, Mastra и другими лежат в `@arcjet/guard`.
Как получить ARCJET_KEY?
Выполните `npx @arcjet/cli auth login`, выберите команду и сайт, и скилл `cli` запишет ключ. Альтернатива — зарегистрироваться на `app.arcjet.com` или подключить MCP-сервер Arcjet.
Как подключить MCP-сервер Arcjet?
Адрес сервера `https://api.arcjet.com/mcp`, вход выполняется по OAuth при первом подключении. Скилл `mcp` описывает настройку для Cursor и других клиентов и советует включить подтверждение записи. Если в терминале есть CLI, предпочтительнее скилл `cli`.
Есть ли плагин для Claude Code?
Да, README ссылается на плагин Arcjet для Claude Code и Cursor из документации. Он собирает скиллы, MCP и правила для кода в одной установке.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыСканер безопасности для скиллов агентов: ищет промпт-инъекции, утечку данных и вредоносный код перед установкой
Официальный скилл Auth0: определяет фреймворк проекта и по шагам подключает аутентификацию через нужный SDK.
Cybersecurity Skills
Cybersecurity Skills for AI Agents
42 скилла по безопасности для Claude Code, Cursor и Codex: аудит кода и облака, пентест с проверкой разрешения, реагирование на инциденты
Сканер безопасности для скиллов и MCP агентов: ищет промпт-инъекции, утечки данных и риски цепочки поставок до установки
Песочница уровня ОС и MCP-сервер для скиллов агента на Rust: изоляция процесса, проверка при установке и самоэволюция
VibeSec
VibeSec-Skill
Скилл безопасной разработки: агент смотрит на код глазами багхантера и предотвращает типовые уязвимости веб-приложений
Коротко о README
Руководство Arcjet ведет по трем шагам: вход через CLI, установка скилла и установка пакета. Дальше идут предупреждение о подделке адреса клиента и примеры правил для разных фреймворков. В README пакета со скиллами описаны доверие, список разрешенных пакетов и типизированный манифест.
Бейдж для README
Исходный SKILL.md
---
name: protect
description: Add Arcjet request protection to JavaScript and TypeScript HTTP handlers. Use when protecting Next.js, Express, Fastify, SvelteKit, Remix, React Router, Hono, Astro, Nuxt, Bun, Deno, NestJS, or Node.js routes with rate limiting, bot detection, Shield, email validation, or sensitive info detection.
license: Apache-2.0
compatibility: JavaScript and TypeScript HTTP apps using an @arcjet/* framework adapter.
metadata:
author: arcjet
type: core
library: "@arcjet/skills"
library_version: "1.15.0" # x-release-please-version
sources:
- docs/protect.md
---
# Protect HTTP routes with Arcjet
Use this skill for HTTP route handlers. If there is no request object (tool
calls, MCP handlers, queue workers), load `@arcjet/skills#guard` instead.
Load `@arcjet/skills#choose-protections` when you need to pick rules.
Load `@arcjet/skills#cli` to get an `ARCJET_KEY` before writing code.
## Checklist
- [ ] Language is JS/TS (stop if not)
- [ ] Runtime is Node `>=22.21.0 <23 || >=24.5.0`, Bun ≥ 1.3.0, or Deno stable
- [ ] `ARCJET_KEY` is in the env file (CLI first; do not leave a TODO)
- [ ] Shared `arcjet()` client at module scope, `withRule()` for extras
- [ ] `protect()` inside each route handler, not middleware
- [ ] Rules that should block use `mode: "LIVE"`
- [ ] Client IP comes from trusted ingress, not a copied forwarding header
- [ ] Decisions verified with a real request plus CLI or Console
## Client
```ts
import arcjet, { shield, detectBot } from "@arcjet/next";
export const aj = arcjet({
key: process.env.ARCJET_KEY!,
rules: [
shield({ mode: "LIVE" }),
detectBot({ mode: "LIVE", allow: ["CATEGORY:SEARCH_ENGINE"] }),
],
});
```
Pick the adapter the app already uses (`@arcjet/next`, `@arcjet/node`,
`@arcjet/fastify`, …). Install it with the project's package manager. Do not
hand-edit `package.json` and guess a version.
Omitted `mode` is `DRY_RUN`. `detectBot` requires exactly one of `allow` or
`deny`. `detectPromptInjection` takes `mode` only — no `threshold`.
One client. `withRule()` clones share the decision cache. A second