単なるSwaggerドキュメントを
超えて。

nestjs-docfy コンパニオンファイル命名規約を使って、Swagger/OpenAPIドキュメントをコントローラーのロジックから切り離します。Nestがすでに *.controller.spec.ts.

Installation
npm install nestjs-docfy
# peer deps
npm install @nestjs/common @nestjs/swagger reflect-metadata
最新リリース v0.18.1ライセンス MIT
規約によるコンパニオンファイル
users.controller.ts → users.controller.docs.ts。Nestがすでに*.controller.spec.tsで使っているのと同じパターンです。
CIゲート付きCLI
check、coverage --min、lint、patch-spec。ドキュメントが欠けているとビルドを失敗させます。
自動型推論
インターフェース、class-validator、@HttpCode()が、追加のデコレーターなしでOpenAPIスキーマになります。
AIファーストなDocfy UI
すべてのエンドポイントにCopy for AIボタンを備えたリファレンスUIです。LLMへの貼り付けに最適です。

docfy-ui: AIファーストなリファレンスビューア

nestjs-docfyが組み立てるOpenAPIスペックは、docfy-uiが描画するものでもあります。別の設定は不要で、同じ唯一の情報源を共有します。

  • Copy for AI: $ref付きの生JSONダンプではなく、決定的でLLM向けのエンドポイントのサマリー
  • ⌘Kですべてのエンドポイントを瞬時に検索
  • スペックからそのまま生成された、エンドポイントごとの完全なリクエスト/レスポンス詳細
docfy-ui overview
docfy-ui busca com ⌘K
docfy-ui detalhe de endpoint com Copy for AI

人だけでなく、AIエージェントのために作られた

docfy-mcp は OpenAPI スペックを MCP ツールとして公開するので、Claude や Cursor など MCP 対応のエージェントが JSON をプロンプトに貼り付けることなく、直接あなたの API を照会できます。

  • list_endpoints / get_endpoint: docfy-ui が描画するのと同じ正規化された形式で、あらゆるオペレーションを閲覧・検査できます
  • lint_spec: summary・description・tags・エラーレスポンスの欠落を公開前に検出します
  • diff_specs: 2つの OpenAPI ドキュメントを比較し、破壊的変更と情報提供的な変更を区別してフラグ付けします
  • contract_test: エージェント自身のツール呼び出しから、実際のレスポンスを宣言済みスキーマと照合検証します
  • 稼働中の NestJS サーバーに対してゼロコンフィグで、または静的な spec ファイルを指定して利用できます
claude_desktop_config.json
{
  "mcpServers": {
    "docfy": {
      "command": "npx",
      "args": ["-y", "docfy-mcp", "--url", "http://localhost:3000/docs-json"]
    }
  }
}

実際にはどう見えるか

Before: デコレーターに埋もれたコントローラー。After: ルートだけが残り、ドキュメントはコンパニオンファイルの中で隣り合って生きています。

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出力*.spec.tsのようなコンパニオンファイル規約

モンキーパッチなし、ランタイムプロキシなし

正しいタイミングとReflectメタデータだけです。

01

コンパニオンファイルを書く

users.controller.docs.tsがdocs(UsersController, { ... })を呼び出します。ただのSwaggerデコレーターを、別のファイルに書いているだけです。

02

起動時に検出される

DocfyModule.forRoot()が命名規約経由でそれを見つけ、SwaggerModule.createDocument()が実行される前に、コントローラーのメソッドへReflectメタデータを書き込みます。

03

同一のOpenAPI出力

SwaggerModuleは、デコレーターがコントローラーにインラインで書かれていた場合とまったく同じメタデータを見ます。

Swaggerプラグインではありません。ツールチェーンそのものです。

多くのツールはデコレータで止まってしまいます。nestjs-docfyはCLI、ビューア、AI連携まで、チームがドキュメントを正確に保つために本当に必要なものを提供します。

CIをせき止めるCLI

generate、check、coverage --min、lint、patch-specは、ドキュメントがコードから乖離した瞬間にビルドを失敗させます。数か月後に気づくことにはなりません。

望めばランタイムコストはゼロ

webpack CLIプラグインがビルド時にすべてを計算するため、本番環境ではリクエストごとに何も実行されません。

docfy-uiは同梱、別売りではありません

AI-firstな完全なリファレンスビューアがライブラリに含まれています。追加アカウントも別料金プランも不要です。

エージェントをファーストクラスの利用者に

docfy-mcpは同じspecをClaude、Cursor、あらゆるMCPクライアントに公開します。あなたのAPIは読むだけでなく、問い合わせもできるようになります。

今あるNestJSの構成そのままで動きます

シンプルなプロジェクト、Nxワークスペース、Nest CLIモノレポはすべて自動検出されます。手書きの設定ファイルは不要です。

ゼロから完全接続まで1コマンド

nestjs-docfy initがモジュールを接続し、すべてのコントローラーにデコレータを付与し、ドキュメントを一度に生成します。