Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

nestjs-best-practices

NestJSのモジュラーアーキテクチャ、依存性注入のスコープ管理、例外フィルター、class-validatorを用いたDTOバリデーション、Drizzle ORMの統合など、包括的なベストプラクティスを提供します。NestJSのモジュール設計、プロバイダーの実装、例外フィルターの作成、DTOのバリデーション、またはDrizzle ORMの統合を行う際にご活用ください。

description の原文を見る

Provides comprehensive NestJS best practices including modular architecture, dependency injection scoping, exception filters, DTO validation with class-validator, and Drizzle ORM integration. Use when designing NestJS modules, implementing providers, creating exception filters, validating DTOs, or integrating Drizzle ORM within NestJS applications.

SKILL.md 本文

NestJS ベストプラクティス

概要

NestJS公式ドキュメントに基づいており、モジュラーアーキテクチャ、依存性注入スコーピング、例外フィルター、class-validatorを用いたDTO検証、およびDrizzle ORM統合パターンを強制します。

使用時期

  • NestJSモジュールまたは依存性注入の設計・リファクタリング時
  • 例外フィルター、DTO検証、またはDrizzle ORM統合の作成時
  • アンチパターンのコードレビューまたはNestJSコードベースへのオンボーディング時

指示

1. モジュラーアーキテクチャ

厳密なモジュールカプセル化に従います。各ドメイン機能は独自の@Module()である必要があります:

  • 他のモジュールが必要とするもののみをエクスポート — 内部プロバイダーはプライベートのままにする
  • 循環依存関係に対してはforwardRef()を最後の手段としてのみ使用 — リストラクチャリングを優先する
  • 関連するコントローラー、サービス、リポジトリーを同じモジュール内にグループ化する
  • クロスカッティングコンサーン(ロギング、構成、キャッシング)にはSharedModuleを使用する

強制ルールについてはreferences/arch-module-boundaries.mdを参照してください。

2. 依存性注入

ユースケースに基づいて正しいプロバイダースコープを選択します:

スコープライフサイクルユースケース
DEFAULTシングルトン(共有)ステートレスサービス、リポジトリー
REQUESTリクエストごとのインスタンスリクエストスコープデータ(テナント、ユーザーコンテキスト)
TRANSIENT注入ごとに新規インスタンスステートフルユーティリティ、クライアントごとのキャッシュ
  • DEFAULTスコープをデフォルトとする — REQUESTまたはTRANSIENTは正当化される場合のみ使用する
  • コンストラクタ注入を排他的に使用 — プロパティ注入は避ける
  • useClassuseValueuseFactory、またはuseExistingでカスタムプロバイダーを登録する

強制ルールについてはreferences/di-provider-scoping.mdを参照してください。

3. リクエストライフサイクル

NestJSリクエスト処理パイプラインを理解し尊重します:

Middleware → Guards → Interceptors (before) → Pipes → Route Handler → Interceptors (after) → Exception Filters
  • Middleware: クロスカッティングコンサーン(ロギング、CORS、ボディパース)
  • Guards: 認可および認証チェック(true/falseを返す)
  • Interceptors: レスポンスデータの変換、キャッシング追加、タイミング測定
  • Pipes: 入力パラメーターの検証と変換
  • Exception Filters: エラーレスポンスのキャッチとフォーマット

4. エラーハンドリング

アプリケーション全体でエラーレスポンスを標準化します:

  • HTTPに特化したエラーについてはHttpExceptionを拡張する
  • ドメイン固有の例外クラス(例:OrderNotFoundException)を作成する
  • 一貫したエラーフォーマットのためにグローバルExceptionFilterを実装する
  • 予想されるビジネスロジック失敗にはResult パターンを使用する
  • 例外を静かに飲み込まないこと

強制ルールについてはreferences/error-exception-filters.mdを参照してください。

5. 検証

API境界で入力検証を強制します:

  • ValidationPipeをグローバルに有効化し、transform: truewhitelist: trueで設定する
  • すべてのDTOプロパティをclass-validatorデコレーターで修飾する
  • 型強制にはclass-transformerを使用する(@Type()@Transform()
  • Create、Update、Response操作に対して別々のDTOを作成する
  • ユーザー入力を信頼しない — すべてを検証する

強制ルールについてはreferences/api-validation-dto.mdを参照してください。

6. データベースパターン(Drizzle ORM)

NestJSプロバイダー慣例に従ってDrizzle ORMを統合します:

  • Drizzleクライアントを注入可能なプロバイダーでラップする
  • データアクセスカプセル化のためにRepository パターンを使用する
  • ドメインモジュールごとのスキーマファイルでスキーマを定義する
  • マルチステップ操作にはトランザクションを使用する
  • データベースロジックをコントローラーから除外する

強制ルールについてはreferences/db-drizzle-patterns.mdを参照してください。

ベストプラクティス

領域することしないこと
モジュールドメイン機能ごとに1モジュールすべてをAppModuleに詰め込む
DIスコーピングデフォルトはシングルトンスコープ正当化なくREQUESTスコープを使用
エラーハンドリングカスタム例外フィルター+ドメインエラー素のtry/catchとconsole.log
検証グローバルValidationPipe+DTOデコレーターコントローラーの手動ifチェック
データベース注入クライアントを使ったRepository パターンコントローラーで直接DB クエリ
テストサービスのユニットテスト、コントローラーのe2eテストテストスキップまたは実装詳細テスト
構成@nestjs/configと型付きスキーマハードコード値またはprocess.envの使用

例:検証付き新規ドメインモジュール

「Product」機能を構築する場合、このワークフローに従います:

1. 適切なカプセル化でモジュールを作成します:

// product/product.module.ts
@Module({
  imports: [DatabaseModule],
  controllers: [ProductController],
  providers: [ProductService, ProductRepository],
  exports: [ProductService], // 他のモジュールが必要とするもののみエクスポート
})
export class ProductModule {}

2. 検証済みDTOを作成します:

// product/dto/create-product.dto.ts
import { IsString, IsNumber, IsPositive, MaxLength } from 'class-validator';

export class CreateProductDto {
  @IsString() @MaxLength(255) readonly name: string;
  @IsNumber() @IsPositive() readonly price: number;
}

3. エラーハンドリング付きサービス:

@Injectable()
export class ProductService {
  constructor(private readonly productRepository: ProductRepository) {}

  async findById(id: string): Promise<Product> {
    const product = await this.productRepository.findById(id);
    if (!product) throw new ProductNotFoundException(id);
    return product;
  }
}

4. モジュール登録を確認します:

# AppModuleにProductModuleが取り込まれていることを確認
grep -r "ProductModule" src/app.module.ts

# e2eを実行してエクスポートが機能していることを確認
npx jest --testPathPattern="product"

制約と警告

  1. スコープを正当化なく混在させないREQUESTスコープのプロバイダーはすべての依存先に連鎖する
  2. コントローラーからデータベースに直接アクセスしない — 常にサービスとリポジトリレイヤーを経由する
  3. forwardRef()を避ける — 循環依存関係を排除するためにモジュールをリストラクチャリングする
  4. ValidationPipeをスキップしない — DTOを使ってAPI境界で常に検証する
  5. シークレットをハードコードしない — 環境変数で@nestjs/configを使用する
  6. モジュールを焦点化する — モジュールごとに1つのドメイン機能、「god modules」を避ける

参照

  • references/architecture.md — NestJSアーキテクチャパターンの深掘り
  • references/ — 正しい/誤った例を含む個別の強制ルール
  • assets/templates/ — 一般的なNestJSコンポーネント用スターターテンプレート

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
giuseppe-trisciuoglio
リポジトリ
giuseppe-trisciuoglio/developer-kit
ライセンス
MIT
最終更新
不明

Source: https://github.com/giuseppe-trisciuoglio/developer-kit / ライセンス: MIT

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: giuseppe-trisciuoglio · giuseppe-trisciuoglio/developer-kit · ライセンス: MIT