Więcej niż zwykła
dokumentacja Swagger.

nestjs-docfy oddziela dokumentację Swagger/OpenAPI od logiki kontrolera przy pomocy konwencji nazewnictwa pliku towarzyszącego, dokładnie tak, jak Nest robi to już z *.controller.spec.ts.

Installation
npm install nestjs-docfy
# peer deps
npm install @nestjs/common @nestjs/swagger reflect-metadata
Ostatnie wydanie v0.18.1Licencja MIT
Plik towarzyszący z konwencji
users.controller.ts → users.controller.docs.ts. Ten sam wzorzec, którego Nest już używa dla *.controller.spec.ts.
CLI z bramkami CI
check, coverage --min, lint i patch-spec. Przerywa build, gdy brakuje dokumentacji.
Automatyczne wnioskowanie typów
Interfejsy, class-validator i @HttpCode() stają się schematem OpenAPI bez dodatkowych dekoratorów.
Docfy UI AI-first
Referencyjny interfejs z przyciskiem Copy for AI przy każdym endpoincie, idealny do wklejania w LLM-y.

docfy-ui: referencyjny viewer AI-first

Specyfikacja OpenAPI, którą składa nestjs-docfy, to też to, co renderuje docfy-ui, bez osobnej konfiguracji i z tym samym źródłem prawdy.

  • Copy for AI: deterministyczne, gotowe dla LLM podsumowanie endpointu, a nie surowy zrzut JSON-a z $ref
  • Wyszukiwanie ⌘K po każdym endpoincie, natychmiast
  • Pełne szczegóły żądania/odpowiedzi dla każdego endpointu, generowane wprost ze specyfikacji
docfy-ui overview
docfy-ui busca com ⌘K
docfy-ui detalhe de endpoint com Copy for AI

Stworzone dla agentów AI, nie tylko dla ludzi

docfy-mcp udostępnia twoją specyfikację OpenAPI jako narzędzia MCP, więc Claude, Cursor lub dowolny agent kompatybilny z MCP odpytuje twoje API bezpośrednio, bez wklejania JSON-a do prompta.

  • list_endpoints / get_endpoint: przeglądaj i sprawdzaj dowolną operację, w tym samym znormalizowanym kształcie, który renderuje docfy-ui
  • lint_spec: sygnalizuje brakujące summaries, opisy, tagi i odpowiedzi błędów zanim trafią na produkcję
  • diff_specs: porównuje dwa dokumenty OpenAPI i oznacza zmiany łamiące kontrakt vs. informacyjne
  • contract_test: waliduje rzeczywistą odpowiedź względem zadeklarowanego schematu, bezpośrednio z wywołań narzędzi agenta
  • Zero konfiguracji wobec działającego serwera NestJS, albo wskaż statyczny plik specyfikacji
claude_desktop_config.json
{
  "mcpServers": {
    "docfy": {
      "command": "npx",
      "args": ["-y", "docfy-mcp", "--url", "http://localhost:3000/docs-json"]
    }
  }
}

Jak to wygląda w praktyce

Przed: kontroler zagrzebany w dekoratorach. Po: same trasy, z dokumentacją mieszkającą obok, w pliku towarzyszącym.

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' }),
    ],
  },
});
Tylko przy starcie, zero narzutu na żądanieTen sam wynik OpenAPI co przy dekoratorach inlineKonwencja pliku towarzyszącego, jak *.spec.ts

Bez monkey-patchingu, bez proxy w runtime

Wystarczy właściwy moment i metadane Reflect.

01

Napisz plik towarzyszący

users.controller.docs.ts wywołuje docs(UsersController, { ... }), zwykłe dekoratory Swaggera, tylko w innym pliku.

02

Wykrywany przy starcie

DocfyModule.forRoot() znajduje go przez konwencję nazewnictwa i zapisuje metadane Reflect na metodach kontrolera, zanim uruchomi się SwaggerModule.createDocument().

03

Identyczny wynik OpenAPI

SwaggerModule widzi dokładnie te same metadane, które widziałby, gdyby dekoratory były zapisane inline w kontrolerze.

To nie plugin do Swaggera. To cały toolchain.

Większość narzędzi kończy się na dekoratorach. nestjs-docfy dostarcza CLI, viewer i integrację z AI, których twój zespół naprawdę potrzebuje, by dokumentacja była wiarygodna.

CLI, które blokuje twoje CI

generate, check, coverage --min, lint i patch-spec zatrzymują build w momencie, gdy dokumentacja odbiega od kodu, a nie dopiero miesiące później.

Zerowy koszt w runtime, jeśli chcesz

Wtyczka webpack CLI liczy wszystko w czasie builda; nic nie działa per-request na produkcji.

docfy-ui w zestawie, nie sprzedawane osobno

Pełny viewer referencyjny AI-first jest częścią biblioteki, bez dodatkowego konta i bez osobnego planu.

Agenci jako obywatele pierwszej kategorii

docfy-mcp udostępnia tę samą specyfikację Claude, Cursorowi i dowolnemu klientowi MCP: twoje API staje się przeszukiwalne, nie tylko czytelne.

Działa z układem NestJS, który już masz

Proste projekty, workspace'y Nx i monorepo Nest CLI są wykrywane automatycznie, bez żadnego pliku konfiguracyjnego do ręcznego pisania.

Jedna komenda od zera do pełnej konfiguracji

nestjs-docfy init podłącza moduł, dekoruje każdy kontroler i generuje dokumentację, wszystko za jednym razem.