api-filtering-sorting — скилл для Claude Code: фильтры и сортировка
Скилл для ИИ-агента, который помогает собрать фильтрацию и сортировку в API: разбор query-параметров, валидация, защита от инъекций.
npx skills add secondsky/claude-skills --skill api-filtering-sorting -a claude-codeЧто делает 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-code2Вручную: положить файлы
~/.claude/skills/api-filtering-sorting/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/api-filtering-sorting/
1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill api-filtering-sorting -a codex2Вручную: положить файлы
.agents/skills/api-filtering-sorting/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill api-filtering-sorting -a cursor2Вручную: положить файлы
.cursor/skills/api-filtering-sorting/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install secondsky/claude-skills api-filtering-sorting2Вручную: положить файлы
.github/skills/api-filtering-sorting/SKILL.md1Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill api-filtering-sorting -a gemini-cli2Командой платформы
gemini skills install https://github.com/secondsky/claude-skills --path plugins/api-filtering-sorting/skills/api-filtering-sortingВручную: положить файлы
.devin/skills/api-filtering-sorting/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add secondsky/claude-skills --skill api-filtering-sorting -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в 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