backendskills — скилл
Три скилла для бэкенда: агент защищает доступ, данные и миграции схемы, критических ошибок стало 2 из 150 запусков вместо 25.
- 53 ★ репозитория
- Последний коммит
Минимальный доступ
Почему такой уровень
- Скиллы только добавляют инструкции агенту и сами ничего не запускают.
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/backendskillsОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемМинимальный доступИнструмент ничего не запускает и не ходит в сеть.
- Скиллы только добавляют инструкции агенту и сами ничего не запускают.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
backendskills учит Claude Code, Codex и Cursor писать серверный код с запасом надежности. Набор из трех скиллов: `api-endpoint` проверяет, кто вызывает ручку, превращает плохой ввод в ответы 4xx и ограничивает частоту входа; `data-integrity` ставит блокировки или условные обновления, ограничения `UNIQUE` и ключи идемпотентности на платежах и рассылках; `db-migration` ведет миграции по схеме «расширить, затем сузить», с конкурентными индексами, тайм-аутами блокировок и пакетным заполнением. Автор проверил скиллы на 15 задачах с тестовым приложением: на скрытых проверках, вроде 20 покупателей на 5 единиц товара, критические ошибки сократились с 25 до 2 из 150 запусков. Основная разница пришлась на две задачи: ограничение попыток входа и переименование столбца.
Для кого. Бэкенд-разработчикам, которые отдают код ИИ-агенту и хотят избежать ошибок с авторизацией, деньгами и схемой базы.
Подходит, если
- Агент добавляет ручку API, которая читает чужие заказы по id в адресе.
- Платежный вебхук или возврат должен выдержать повторную доставку.
- Столбец переименовывают при поэтапном выкате, когда старая версия приложения еще работает.
- Нужен лимит попыток входа и защита дорогих маршрутов.
Не подходит, если
- Проект не имеет серверной части.
- Нужны правила для интерфейса или мобильного клиента.
- Команда хочет подробную документацию по базе, а не поведение агента.
Пример запроса к агенту
Добавь эндпоинт получения заказа и проверь, что пользователь видит только свои заказы.Ограничения
Примеры в скиллах написаны на TypeScript с `pg`, SQL рассчитан на Postgres, для MySQL в тексте есть замены. Раздел «Make it yours» в каждом скилле автор оставил пустым: пока там «not set», агент следует тому, что уже принято в репозитории. Цифры 25 против 2 получены на Sonnet 5.5 и Haiku 5.5 по пять запусков на задачу, 25 запусков не вошли в итог из-за лимита аккаунта. Агент с скиллами делает больше шагов: около 0,11 доллара за запуск против 0,06.
Как отключить. Удалите папки скиллов из каталога скиллов агента. Другие файлы проекта они не меняют.
Частые вопросы
Как поставить backendskills?
Командой `npx skills add globalmpc/backendskills`. Скиллы подходят для Claude Code, Codex и Cursor.
Какие скиллы входят в набор?
Три: `api-endpoint`, `data-integrity` и `db-migration`. Каждый заканчивается разделом для соглашений вашей команды.
Как автор измерял результат?
Агентам дали 15 задач с этими скиллами и без них, а затем запустили скрытые проверки: 20 покупателей одновременно, чтение чужого заказа, старая версия на новой схеме.
Подходит ли набор для MySQL?
Да, правила не привязаны к стеку. В тексте скилла указаны замены `on duplicate key update` для запросов с `on conflict`.
Что делать, если агент все равно ошибся?
Откройте issue в репозитории с промптом и диффом. Скиллы правят в папке `skills/` и пересобирают командой `node scripts/build-dist.mjs`.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыНабор из 14 скиллов для Java Spring Boot: от анализа требований и генерации кода до тестов, ревью и Docker-развертывания.
Бэкенд на PostgreSQL, который агент строит через MCP, а платформа проверяет каждое изменение и умеет откатить.
builder-skills — скиллы для приложений на Convex
builder-skills
17 скиллов учат агента писать приложения на Convex по документации и вести проект через PRD, task.md и журнал изменений
Сотни скиллов по провайдерам учат агента принимать вебхуки, проверять подписи и разбирать события; примеры для Express и FastAPI.
Официальные скиллы Supabase: помогают агенту работать с базой, Auth, Edge Functions и лучшими практиками Postgres
Плагин Claude Code для Butterbase: 39 скиллов и 34 команды ведут от идеи до запущенного приложения на облачном бэкенде
Коротко о README
Проект приводит таблицу результатов по 15 задачам и описание трех скиллов. Бенчмарк с сырыми запусками лежит в папке `bench/` и воспроизводится.
Бейдж для README
Исходный SKILL.md
---
name: api-endpoint
description: Rules for HTTP API endpoints. Use when adding or changing any endpoint (route, request or response shape, status codes), especially login and ones that read or change other users' data.
---
# API endpoint
Examples are TypeScript with `pg`. The rules apply to any stack.
The SQL is Postgres. On MySQL, `on conflict ... do update` is `on duplicate key update`, and `on conflict
do nothing` is `on duplicate key update id = id` (0 affected rows: the row was there; not `insert ignore`,
which hides other errors too). There's no `returning`: read the row back in the same transaction.
Anything that changes money, stock or balances, or calls a payment provider or email: also follow the
`data-integrity` skill (transactions, locks, idempotency).
## 1. Check who may call it, not just that they're logged in
Why: a logged-in user who changes the id in the URL reads or edits someone else's data (IDOR).
```ts
// Bad: any logged-in user can read any invoice
const { rows } = await pool.query("select * from invoices where id = $1", [id]);
// Good: scope the query to the caller; someone else's invoice looks the same as a missing one
const { rows } = await pool.query(
"select id, number, total_cents, status from invoices where id = $1 and account_id = $2", [id, user.accountId]);
if (rows.length === 0) return sendError(res, 404, "not_found", "Invoice not found");
```
Admins or other roles get access through an explicit role check, never by skipping the filter.
Webhooks have no logged-in user, so the signature is the check: verify it on the raw request body with a
constant-time compare (`crypto.timingSafeEqual`, after checking both are the same length, or it throws)
before you parse or trust anything in it. Unsigned or wrongly signed: 401, and nothing changes.
## 2. Bad input is a 4xx, never a 500
Why: a 500 on bad input hides real errors in the noise. Bad values that slip through (negative amounts,
fractions) corrupt data.
- Validate the body and path params at the edge: types, integers where money and quantities are counted,
ranges (`quantity >= 1`, `amountCents > 0`), required fields, ids that aren't numbers.
- Handle what a request can legally contain but your code doesn't expect, like the same item listed
twice. Merge the duplicates or reject them with a 400, but don't let the request crash into a 500.