Больше, чем просто
документация Swagger.

nestjs-docfy отделяет документацию Swagger/OpenAPI от логики контроллера через соглашение об именах companion-файлов, ровно так же, как Nest уже поступает с *.controller.spec.ts.

Installation
npm install nestjs-docfy
# peer deps
npm install @nestjs/common @nestjs/swagger reflect-metadata
Последний релиз v0.18.0Лицензия MIT
Companion-файл по соглашению
users.controller.ts → users.controller.docs.ts. Тот же приём, который Nest уже применяет для *.controller.spec.ts.
CLI с гейтами для CI
check, coverage --min, lint и patch-spec. Роняйте сборку, когда документации не хватает.
Автоматический вывод типов
Интерфейсы, class-validator и @HttpCode() превращаются в схему OpenAPI без дополнительных декораторов.
Docfy UI с прицелом на ИИ
Справочник, где у каждого эндпоинта есть кнопка Copy for AI. Удобно вставлять прямо в LLM.

docfy-ui: справочник, заточенный под ИИ

Спецификацию OpenAPI, которую собирает nestjs-docfy, docfy-ui и отрисовывает. Отдельной настройки нет, источник данных один.

  • Copy for AI: детерминированная выжимка по эндпоинту, готовая для LLM, а не сырой JSON с $ref
  • Поиск по всем эндпоинтам через ⌘K, без задержки
  • Полное описание запроса и ответа по каждому эндпоинту, прямо из спецификации
docfy-ui overview
docfy-ui busca com ⌘K
docfy-ui detalhe de endpoint com Copy for AI

Сделано для агентов, а не только для людей

docfy-mcp отдаёт вашу спецификацию OpenAPI как инструменты MCP, поэтому Claude, Cursor или любой совместимый агент обращается к API напрямую, без вставки JSON в промпт.

  • list_endpoints / get_endpoint: просмотр и разбор любой операции в том же нормализованном виде, что рисует docfy-ui
  • lint_spec: ловит недостающие summary, описания, теги и ответы с ошибками до того, как они уедут в прод
  • diff_specs: сравнивает два документа OpenAPI и отделяет ломающие изменения от информационных
  • contract_test: проверяет живой ответ на соответствие объявленной схеме, прямо из вызовов агента
  • Работает без настройки против запущенного сервера NestJS либо по указанному файлу спецификации
claude_desktop_config.json
{
  "mcpServers": {
    "docfy": {
      "command": "npx",
      "args": ["-y", "docfy-mcp", "--url", "http://localhost:3000/docs-json"]
    }
  }
}

Как это выглядит на практике

Было: контроллер, погребённый под декораторами. Стало: одни только маршруты, а документация лежит рядом, в companion-файле.

users.controller.ts
@WithDocs()
@Controller('users')
export class UsersController {
  constructor(private readonly users: UsersService) {}

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.users.findOne(id);
  }
}
users.controller.docs.ts
import { docs } from 'nestjs-docfy';
import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger';
import { UsersController } from './users.controller';

docs(UsersController, {
  classDecorators: [ApiTags('users')],
  methods: {
    findOne: [
      ApiOperation({ summary: 'Get user by id' }),
      ApiResponse({ status: 200, description: 'OK', type: UserDto }),
      ApiResponse({ status: 404, description: 'User not found' }),
    ],
  },
});
Работа только при старте, никаких накладных расходов на запросТот же результат OpenAPI, что и у декораторов внутри контроллераСоглашение о companion-файле, как у *.spec.ts

Никакого monkey-patching и прокси в рантайме

Только точный момент вызова и метаданные Reflect.

01

Напишите companion-файл

users.controller.docs.ts вызывает docs(UsersController, { ... }). Обычные декораторы Swagger, просто в другом файле.

02

Обнаружение при старте

DocfyModule.forRoot() находит файл по соглашению об именах и записывает метаданные Reflect в методы контроллера ещё до вызова SwaggerModule.createDocument().

03

Результат OpenAPI не отличается

SwaggerModule видит ровно те же метаданные, что и при декораторах, написанных прямо в контроллере.

Это не плагин к Swagger. Это весь инструментарий.

Большинство инструментов заканчиваются на декораторах. В nestjs-docfy входят CLI, просмотрщик и интеграция с ИИ, то есть всё, чем команда реально удержит документацию в актуальном состоянии.

CLI, которая стережёт ваш CI

generate, check, coverage --min, lint и patch-spec роняют сборку в тот момент, когда документация разошлась с кодом, а не спустя полгода.

Нулевая стоимость в рантайме, если она вам нужна

Плагин CLI для webpack считает всё во время сборки. В проде на каждый запрос не выполняется ничего.

docfy-ui входит в комплект, а не продаётся отдельно

Полноценный справочник с прицелом на ИИ идёт вместе с библиотекой: без отдельного аккаунта и без отдельного тарифа.

Агенты на равных правах

docfy-mcp отдаёт ту же спецификацию в Claude, Cursor и любой клиент MCP. Ваш API становится не только читаемым, к нему можно обращаться запросами.

Подходит к той структуре NestJS, которая у вас уже есть

Простые проекты, воркспейсы Nx и монорепозитории Nest CLI определяются сами. Конфиг руками писать не придётся.

От нуля до полностью настроенного проекта одной командой

nestjs-docfy init подключает модуль, расставляет декораторы по контроллерам и генерирует документацию за один заход.