openapi-spec-generation
Скилл openapi-spec-generation предназначен для создания и сопровождения спецификаций OpenAPI 3.1. Он подходит для документирования REST API с нуля, генерации спецификации из существующего кода, design-first проектирования контрактов, проверки реализации относительно контракта, выпуска клиентских SDK и подготовки портала API-документации. Базовая структура OpenAPI 3.1 включает openapi: 3.1.0, объект info с title и version, список servers, раздел paths с операциями ресурсов и блок components. В components размещаются, среди прочего, переиспользуемые schemas, параметры, ответы и securitySchemes. Такой каркас помогает отделить описание публичного контракта от деталей конкретного обработчика и сделать его пригодным для чтения человеком и последующей генерации инструментов. Скилл различает три подхода к проектированию. Design-first означает, что спецификация пишется до кода; это полезно для новых API и согласования контракта. Code-first означает, что документ строится из уже существующей реализации; этот режим удобен для текущих сервисов. Hybrid сочетает аннотации к коду и генерацию, поэтому подходит для API, которое постепенно меняется. Выбор подхода зависит от состояния проекта, а не от необходимости внедрять отдельный фреймворк. В качестве повторно используемого правила рекомендуется применять $ref для общих схем, параметров и ответов. Это уменьшает расхождения между одинаковыми частями контракта и позволяет менять одно определение без ручного копирования по всем endpoint. В спецификациях следует добавлять реальные или ясно обозначенные примеры, потому что они помогают потребителям понять форму запроса и ответа. Нужно документировать все возможные коды ошибок, а не только успешный ответ: иначе клиент не видит часть фактического поведения API и интеграция ломается на граничном случае. Скилл советует версионировать API в URL или заголовке и использовать semantic versioning для изменений спецификации, чтобы потребители могли отличать совместимые обновления от breaking changes. Отдельные правила касаются безопасности и типов данных. Нельзя пропускать security: все используемые схемы авторизации должны быть объявлены в securitySchemes и связаны с операциями там, где это требуется. Nullable-поведение нужно задавать явно, а не оставлять на усмотрение генератора или клиента. Имена должны быть согласованы по всей спецификации; смешивание разных стилей усложняет поиск моделей и генерацию SDK. URL серверов не следует зашивать в операции: их нужно задавать через servers и переменные, чтобы один контракт можно было применять к разным окружениям. Описания должны быть конкретными, потому что generic-текст не объясняет ограничения ресурса, параметра или ошибки. Рабочий процесс начинается с инвентаризации существующего API и решения, будет ли контракт design-first, code-first или hybrid. Затем формируется OpenAPI 3.1 документ с info, servers, paths и components, общие части выносятся через $ref, добавляются примеры, ошибки, схемы безопасности и правила версий. После генерации нужно проверить синтаксис, согласованность имён, обязательность и nullable-поля, наличие security и соответствие операций реальному API. Для детальных шаблонов и развёрнутых примеров источник направляет к references/details.md; краткое описание само по себе не заменяет эти материалы при конкретной реализации. Скилл полезен как практическая рамка для контрактной документации: он связывает структуру OpenAPI 3.1, выбор процесса разработки, повторное использование компонентов, примеры, ошибки, безопасность и версионирование, сохраняя спецификацию конкретной и пригодной для проверки.
Для чего подходит
- Создание API-документации
- Проектирование OpenAPI contract до реализации
- Валидация API и генерация client SDK
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/wshobson/agents/tree/main/plugins/documentation-generation/skills/openapi-spec-generation