К основному содержанию
скилл CX Codex

api-filtering-sorting — скилл для Claude Code: фильтры и сортировка

Скилл для ИИ-агента, который помогает собрать фильтрацию и сортировку в API: разбор query-параметров, валидация, защита от инъекций.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add secondsky/claude-skills --skill api-filtering-sorting -a claude-code
Открыть на GitHub

Что делает api-filtering-sorting

Скилл описывает схему фильтрации через query-параметры: обычные поля вроде ?category=electronics и операторы в скобках — ?price[gte]=100&price[lte]=500. Сортировка задаётся одним параметром sort, минус перед именем поля переключает направление: sort=-price,name.

Внутри — пример на Node.js с Express и Mongoose. Списки allowedFilters и allowedSorts задают белый список полей, всё остальное из запроса молча отбрасывается. Операторы разбираются регуляркой: eq, ne, gt, gte, lt, lte, in, like. Значения приводятся к числу или булеву типу через parseValue.

Главное тут — белый список. Без него фильтр по произвольному полю уходит прямо в запрос к базе, и это уже повод проверить свой эндпоинт до того, как им займутся снаружи. В разделе про безопасность скилл советует валидировать типы по каждому полю, индексировать часто фильтруемые колонки и ограничивать сложность запроса.

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

  • собрать эндпоинт поиска с фильтрами по нескольким полям
  • задать операторы сравнения для числовых диапазонов
  • ограничить сортировку белым списком колонок
  • закрыть фильтр от подстановки произвольных полей в запрос
  • привести строковые значения из query к числам и булеву типу

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

  • добавь фильтрацию и сортировку в эндпоинт /products по этой схеме
  • сделай белый список полей для фильтров и сортировки в этом роуте
  • разбери query-параметры с операторами gte и lte для цены

Как установить api-filtering-sorting

1Через Skills CLI (Vercel)

npx skills add secondsky/claude-skills --skill api-filtering-sorting -a claude-code

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

~/.claude/skills/api-filtering-sorting/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/api-filtering-sorting/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о api-filtering-sorting

Как установить api-filtering-sorting в Claude?

Выполните npx skills add secondsky/claude-skills --skill api-filtering-sorting -a claude-code. После этого файл скилла появится по пути ~/.claude/skills/api-filtering-sorting/SKILL.md.

Что делает api-filtering-sorting?

Помогает агенту построить фильтрацию и сортировку в API: разбор query-параметров, операторы сравнения, белый список полей и защита от инъекций.

Какие операторы поддерживает схема?

eq, ne, gt, gte, lt, lte, in и like. Примеры: ?status[ne]=deleted, ?price[gte]=100, ?status[in]=active,pending.

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

SKILL.md · MIT
---
name: api-filtering-sorting
description: Builds flexible API filtering and sorting systems with query parameter parsing, validation, and security. Use when implementing search endpoints, building data grids, or creating dynamic query APIs.
license: MIT
---

# API Filtering & Sorting

Build flexible filtering and sorting systems that handle complex queries efficiently.

## Query Parameter Syntax

```
GET /products?category=electronics&price[gte]=100&price[lte]=500&sort=-price,name
```

## Implementation (Node.js)

```javascript
const allowedFilters = ['category', 'status', 'price', 'createdAt'];
const allowedSorts = ['name', 'price', 'createdAt'];

app.get('/products', async (req, res) => {
  const filter = {};
  const sort = {};

  // Parse filters
  for (const [key, value] of Object.entries(req.query)) {
    if (key === 'sort') continue;

    const match = key.match(/^(\w+)\[(\w+)\]$/);
    if (match) {
      const [, field, operator] = match;
      if (!allowedFilters.includes(field)) continue;
      filter[field] = { [`$${operator}`]: parseValue(value) };
    } else if (allowedFilters.includes(key)) {
      filter[key] = value;
    }
  }

  // Parse sort
  if (req.query.sort) {
    for (const field of req.query.sort.split(',')) {
      const direction = field.startsWith('-') ? -1 : 1;
      const name = field.replace(/^-/, '');
      if (allowedSorts.includes(name)) sort[name] = direction;
    }
  }

  const products = await Product.find(filter).sort(sort);
  res.json({ data: products });
});

function parseValue(value) {
  if (value === 'true') return true;
  if (value === 'false') return false;
  if (!isNaN(value)) return Number(value);
  return value;
}
```

## Filter Operators

| Operator | Meaning | Example |
|----------|---------|---------|
| eq | Equals | `?status=active` |
| ne | Not equals | `?status[ne]=deleted` |
| gt/gte | Greater than | `?price[gte]=100` |
| lt/lte | Less than | `?price[lte]=500` |
| in | In array | `?status[in]=active,pending` |
| like | Contains | `?name[like]=phone` |

## Security

- Whitelist allowed filter fields
- Validate input types per field
- Index frequently-filtered columns
- Limit query complexity
- Prevent SQL/NoSQL injection

## Best Practices

- Support common operators
- Cache filter option lists
- Monitor query performance
- Provide sensible defaults

© secondsky · MIT · secondsky/claude-skills

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

Всё по теме «Бэкенд и API» →
mongodb-development Mindrally Правила разработки на MongoDB: схемы, индексы, агрегации, Mongoose и Payload CMS. Пригодится, когда агент пишет бэкенд на TypeScript. CX Codex +1 891установок File Analysis API with Node.js and Express [email protected] Промпт для разбора загруженных файлов в API на Express: добавляет логику анализа, не ломая формат ответа. GP ChatGPT ★ 174 597звёзд репо nosql-injection yaklang Скилл помогает находить NoSQL-инъекции в MongoDB, CouchDB и Redis. Пригодится для проверки API, фильтров и логики аутентификации. CX Codex +1 3 500установок prisma-mongodb-upgrade prisma Помогает спланировать переход проектов на Prisma ORM с MongoDB с версии 6 сразу на 8 либо обоснованно остаться на v6 из-за отсутствия коннектора в Prisma 7. CX Codex +1 370 400установок prisma-orm-setup prisma Проводит агента по настройке Prisma ORM: определить версию, подключить базу, проверить соединение. Новые приложения сажает на Prisma ORM 8. CX Codex +1 67 900установок create-spring-boot-java-project официальный github Создаёт каркас Spring Boot на Java с Maven, базами данных и Docker Compose. Подходит для старта API, которому нужны PostgreSQL, Redis и MongoDB. 9 516установок

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

websocket-implementation Скилл для агента, который пишет сервер и клиент WebSocket: комнаты, переподключение, масштабирование через Redis. CX Codex +1 425установок root-cause-tracing Ведёт агента назад по стеку вызовов, пока не найдётся исходный триггер ошибки. Пригодится, когда падение случается глубоко в коде, а не на входе. CX Codex +1 426установок recommendation-engine Скилл для построения рекомендательных систем: коллаборативная фильтрация, матричная факторизация, гибридные подходы. Пригодится, когда нужны персональные подборки товаров или контента. CX Codex +1 423установок api-response-optimization Скилл для ИИ-кодинга, который подсказывает, как уменьшить размер ответов API, включить кэширование и сжатие. Пригодится, когда эндпоинты отвечают медленно. CX Codex +1 422установок bun-drizzle-integration Скилл подсказывает агенту, как связать Drizzle ORM с драйвером bun:sqlite: схема, миграции, CRUD и транзакции в одном месте. CX Codex +1 420установок drizzle-orm-d1 Скилл для работы с Cloudflare D1 через Drizzle ORM: схемы, типизированные запросы, миграции Drizzle Kit и разбор типовых ошибок D1. CX Codex +1 416установок push-notification-setup Скилл проводит агента по настройке пуш-уведомлений через Firebase Cloud Messaging и нативные сервисы. Пригодится, когда добавляешь уведомления в приложение или разбираешься с фоновыми сообщениями. CX Codex +1 418установок bun-runtime Скилл для работы с рантаймом Bun: запуск файлов, режимы watch и hot, переменные окружения, флаги CLI и разрешение модулей. CX Codex +1 414установок

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

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