API Design taste — промпт для ChatGPT: что делает и как установить
Набор правил для проектирования REST API с оценками уверенности. Помогает боту проверять эндпоинты, форматы ошибок и схемы валидации.
Открыть на GitHubЧто делает API Design taste
Промпт задаёт строгие принципы построения REST API. В списке семнадцать правил с коэффициентами уверенности от 0.75 до 0.95. Модель ориентируется на ресурсные URL с существительными вроде /users или /orders, запрещая глаголы в стиле RPC. Версионирование выносится в путь (/v1/...).
Правила требуют валидировать тело запроса через Zod, OpenAPI или JSON Schema и отсекать неизвестные поля. Для больших списков применяется курсорная пагинация. Ответы упаковываются в конверт с полями data и nextCursor. На мутации со списанием денег или созданием заказов вешается ключ идемпотентности.
Смешивать camelCase и snake_case в одном API нельзя. Промпт прямо требует единого регистра. Секреты и персональные данные запрещено передавать через query-параметры — для них остаются заголовки или тело запроса.
Какие задачи решает
- спроектировать ресурсные маршруты REST API без глаголов RPC в URL
- унифицировать структуру ошибок с полями
code,messageиdetails - настроить курсорную пагинацию со стабильным конвертом ответа
- выбрать HTTP-коды статусов для создания, удаления и конфликтов
Примеры запросов агенту
- Проверь схему роутов
/usersи/ordersпо правилам REST API - Спроектируй структуру ответа с курсорной пагинацией и конвертом
data - Опиши формат обработки ошибок с кодами статусов HTTP
Как установить API Design taste
Как использовать
Вставьте текст в начало диалога или в инструкции проекта
Вручную: положить файлы
.claude/commands/prompts.csv.mdВопросы о API Design taste
Как установить API Design taste в Claude Code?
Сохраните файл по пути .claude/commands/prompts.csv.md.
Что делает API Design taste?
Промпт задаёт правила архитектуры REST API: структуру URL, курсорную пагинацию, формат JSON в camelCase и обработку ошибок.
Какие требования предъявляются к телу запросов?
Тело каждого запроса должно проверяться по схеме Zod, OpenAPI или JSON Schema с отклонением неизвестных полей.
Исходный текст
prompts.csv · CC0-1.0
# API Design taste - Prefer resource-oriented URLs with nouns and HTTP verbs for actions, not RPC-style verbs in the path. Confidence: 0.95 - Version APIs in the URL path (`/v1/...`) and keep breaking changes out of an existing major version. Confidence: 0.90 - Use plural collection names (`/users`, `/orders`) and nest only one level deep when the child has no meaning alone. Confidence: 0.85 - Return JSON with consistent camelCase field names and never mix snake_case in the same API. Confidence: 0.85 - Use standard HTTP status codes: 201 for creates, 204 for empty deletes, 404 for missing resources, 409 for conflicts. Confidence: 0.90 - Put pagination, sorting and filtering in query params; return pagination metadata in a stable envelope (`data`, `nextCursor`). Confidence: 0.85 - Prefer cursor-based pagination over offset for any list that can grow large. Confidence: 0.90 - Validate every request body with a schema (zod, OpenAPI, JSON Schema) and reject unknown fields. Confidence: 0.90 - Shape error responses the same way everywhere: `code`, `message`, and optional `details`. Confidence: 0.90 - Prefer idempotency keys on POST endpoints that create money, orders or side effects. Confidence: 0.85 - Use ETags or `If-Match` for concurrent updates on contested resources. Confidence: 0.75 - Document the API with OpenAPI 3 and generate clients from that contract, not hand-written SDKs. Confidence: 0.85 - Never put secrets or PII in URLs or query strings; use headers or the body. Confidence: 0.95 - Prefer explicit expansion (`?include=`) over always embedding related entities. Confidence: 0.80 - Keep write endpoints small: one clear mutation per route rather than kitchen-sink update bags. Confidence: 0.80 - Rate-limit by API key or user and return `Retry-After` when limited. Confidence: 0.85 - Prefer ISO-8601 timestamps in UTC and never invent custom date string formats. Confidence: 0.95
© f · CC0-1.0 · f/prompts.chat