Help us improve
Share bugs, ideas, or general feedback.
From dex-skill-api-specification
API design — ловушки контрактов, naming, версионирования. Активируется при api design, openapi, REST API contract, api versioning, ProblemDetails, RFC 7807, pagination, cursor, kebab-case, breaking change, idempotency, Location header
How this skill is triggered — by the user, by Claude, or both
Slash command
/dex-skill-api-specification:api-specificationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Плохо: `GET /getUsers`, `POST /createOrder`, `DELETE /removeProduct/123`
Share bugs, ideas, or general feedback.
Плохо: GET /getUsers, POST /createOrder, DELETE /removeProduct/123
Правильно: GET /users, POST /orders, DELETE /products/123 — ресурсы, не действия
Почему: REST = resources. Verbs в URL дублируют HTTP method и ломают единообразие
Плохо: GET /user/123, POST /order
Правильно: GET /users/123, POST /orders — plural nouns для коллекций
Почему: inconsistent naming между коллекцией и элементом путает клиентов
Плохо: GET /users/{id}/orders/{id}/items/{id}/reviews/{id} — 4 уровня
Правильно: max 2-3 уровня: /users/{id}/orders + /reviews/{id} отдельно
Почему: невозможно кэшировать, сложно поддерживать, URL становится хрупким
Плохо: /user-list (kebab+list), /CreateNewUser (PascalCase), /product_items (snake)
Правильно: kebab-case, plural nouns: /users, /order-items
Почему: клиент гадает как назван следующий endpoint, нет предсказуемости
Плохо: POST /orders -> 200 OK { "id": 123 } — клиент не знает URL ресурса
Правильно: 201 Created + Location: /api/v1/orders/123
Почему: без Location клиент вынужден конструировать URL вручную, что хрупко
Плохо: 400 -> {"error":"bad"}, 404 -> {"message":"not found"}, 500 -> plain text
Правильно: единый ProblemDetails (RFC 7807) для всех ошибок
Почему: клиент не может парсить ответ, если каждый status code возвращает свой формат
Плохо: GET /users?active=true&premium=true&verified=true — взрыв комбинаций
Правильно: GET /users?filter[status]=active&filter[tier]=premium
Почему: каждый новый фильтр = новый param, невозможно масштабировать
Плохо: переименовать/удалить поле или изменить тип (string -> int) в текущей версии
Правильно: новая версия API (/api/v2/) при любом breaking change
Почему: существующие клиенты ломаются. Добавление полей/endpoints — не breaking, удаление/переименование — breaking
Плохо: GET /api/users — без версии в URL
Правильно: GET /api/v1/users — версия с первого релиза
Почему: добавить версию позже = breaking change для всех существующих клиентов
Плохо: GET /orders?page=1000&pageSize=20 — OFFSET 20000 в SQL
Правильно: cursor-based pagination для feeds/real-time/10K+ записей
Почему: OFFSET N сканирует N строк и выбрасывает. На глубоких страницах — деградация O(N)
Плохо: GET /orders без limit — возвращает все 100K записей
Правильно: пагинация обязательна для всех list endpoints, default pageSize=20
Почему: OOM на сервере, timeout на клиенте, DoS вектор
Плохо: DELETE /orders/123 возвращает 204 первый раз, 500 второй
Правильно: повторный DELETE -> 404 или 204 (оба варианта допустимы, но стабильно)
Почему: сетевые retry при timeout вызывают повторный запрос, неидемпотентный DELETE = ошибка при retry
npx claudepluginhub dex-it/claude-code-marketplace --plugin dex-skill-api-specificationProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.