scaffold について
scaffoldは、プロジェクトのアーキテクチャに沿ってC#機能の一式を生成するスキルです。エンドポイント、ハンドラー、検証、永続化設定、統合テストを作成し、ビルドとテストで確認します。
主な機能
- 01アーキテクチャに応じたスキャフォールド
- 02VSA、Clean Architecture、DDD、Modular Monolithに対応
- 03各層のファイルと統合テストの生成
- 04完全性チェックリストとビルド・テスト検証
活用シーン
- 01承認済みプランに基づく機能一式の作成
- 02CRUD操作や新しいモジュールの追加
- 03既存プロジェクトの規約に合わせた生成物の調整
MCP 対応
ワークフローではMCPツールを使ってプロジェクトの規約を確認します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ codewithmukesh/ dotnet-claude-kit --skill scaffoldインストール後、Claude Code で/scaffoldを入力して読み込まれたか確認します。
同梱ファイルreferences/architecture-patterns.md
詳細
/scaffold — アーキテクチャを考慮した機能のスキャフォールディング
概要
プロジェクトのアーキテクチャに基づいて、必要なファイルをすべて含む機能を生成します。不完全な機能は生成しません。すべてのスキャフォールドには、エンドポイント、ハンドラー、バリデーション、DTO、EF 設定、そして少なくとも 1 つの統合テストが一式として含まれます。モダンな C# 14(プライマリコンストラクター、コレクション式、レコード、シールドされたハンドラー、TypedResults)で記述されます。
対応するアーキテクチャ(ファイル配置マップとコード形状テンプレートは references/architecture-patterns.md にあります):
- Vertical Slice Architecture(VSA) —
Features/内に単一ファイルで機能を配置 - Clean Architecture(CA) — Domain、Application、Infrastructure、Api にファイルを分割
- DDD + Clean Architecture — 集約ルート、値オブジェクト、ドメインイベントに加え、CA の各レイヤーを使用
- Modular Monolith — 独自の DbContext と統合イベントを持つ自己完結型モジュール
使用するタイミング
- 「[機能名]をスキャフォールドして」「〜のエンドポイントを作成して」「機能を追加して」
- 「〜の CRUD を生成して」「エンティティを追加して」「新しいモジュール」「モジュールをスキャフォールドして」
/planによって承認済みの計画が作成された後、新しい機能を始めるとき- 生成テンプレートをカスタマイズするとき、または完全なスライスに含めるものを定義するとき
- 完全で動作する機能の骨組みをユーザーが求めているとき
使い方
ステップ 1:アーキテクチャを検出する
architecture-advisor スキルを使って、プロジェクトのアーキテクチャを特定します。
- フォルダー構成、プロジェクト参照、既存のパターンを調べます
- アーキテクチャが曖昧な場合は、推測せずにユーザーに尋ねます
- 該当するアーキテクチャスキル(vertical-slice、clean-architecture、ddd)を読み込みます
ステップ 2:スコープを確認する
生成前にユーザーに確認します(計画ですでに回答済みの項目は省略します)。
- 機能/エンティティ名と必要な操作 — CRUD 全体か、一部か?
- 新しいエンティティの主要フィールドと不変条件
- モジュールの配置(Modular Monolith のみ)— 既存のモジュールか、新しいモジュールか?
ステップ 3:規約を把握する
convention-learner スキルと MCP ツールを使って、以下を確認します。
- 命名パターン(
*Handler、*Service、*Endpoint、*Command、*Query) - フォルダー構成、ファイルの編成、アクセス修飾子、sealed の規約
- 既存のバリデーション方法(FluentValidation、データアノテーション、手動)
- テストプロジェクトの構成と命名(
*Tests、*IntegrationTests)
既存の規約に合わせます。確立済みのコードベースに新しい規約を押し付けないでください。
ステップ 4:すべてのレイヤーを生成する
references/architecture-patterns.md のテンプレートに従って、アーキテクチャが必要とするファイルをすべて生成します。
- VSA — VSA のセクションを読みます:単一ファイルの機能 + エンドポイントグループ + EF 設定 + テスト
- Clean Architecture — CA のセクションを読みます:Application の Mediator コマンド/ハンドラー、Api のエンドポイント
- DDD — DDD のセクションを読みます:不変条件とドメインイベントを備えた集約、薄いハンドラー
- Modular Monolith — Modular Monolith のセクションを読みます:モジュールの DbContext、DI 登録、統合イベント
このリファレンスでは、すべてのアーキテクチャで再利用する共通の形状(エンドポイントグループ、バリデーター、エンティティと IEntityTypeConfiguration<T> のペア、テストフィクスチャ)と、避けるべきアンチパターンについても説明しています。
ステップ 5:完全性チェックリスト(必須)
スキャフォールドする機能には、必ず以下の 9 項目をすべて含めてください。省略しないでください。
- エンドポイント — ルートグループを持つ
IEndpointGroupファイル。Program.cs では決して登録しないでください - ハンドラー —
sealedとプライマリコンストラクターを使用し、操作ごとに 1 つ作成します - バリデーター — 意味のあるルール(範囲、必須項目、最大長)を含む FluentValidation。変更を行うエンドポイントでは
.AddEndpointFilter<ValidationFilter<T>>()で登録します - DTO — 利用側に合わせたレコード。エンティティと 1 対 1 のミラーにはしません
- EF 構成 —
IEntityTypeConfiguration<T>を使用します。エンティティにデータ注釈を付けないでください - 統合テスト —
WebApplicationFactory+ Testcontainers を使用し、services.RemoveAll<DbContextOptions<T>>()で DI を置き換えます - OpenAPI メタデータ —
.WithName()、.WithSummary()、.Produces<T>()、.ProducesValidationProblem()、.ProducesProblem(404) - CancellationToken — すべての非同期メソッドで使用し、すべての非同期呼び出しに渡します
- Result パターン — ハンドラーは
Result<T>を返します。エンドポイントは成功時に TypedResults に、失敗時にToProblemDetails()にマッピングします
サポートするインフラストラクチャも確認し、不足していればスキャフォールドしてください。リストエンドポイントには上限付きページネーション(page/pageSize、最大 50)を設定し、Program.cs に
app.UseExceptionHandler() があり、appsettings.json に接続文字列が設定されていることを確認します。
ステップ 6:検証
完了を報告する前に、スキャフォールドが機能することを証明してください。
dotnet build --no-restore
dotnet test --no-build --filter "FullyQualifiedName~{FeatureName}"
ビルドまたはテストが失敗した場合は、結果を提示する前に修正して再実行してください。
例
User: /scaffold a Product Catalog feature with CRUD operations
Claude: Detected architecture: Vertical Slice Architecture
Created files:
src/Features/Products/CreateProduct.cs -- Command + handler + validator
src/Features/Products/GetProduct.cs -- Query by ID + handler
src/Features/Products/ListProducts.cs -- Paginated list + handler
src/Features/Products/UpdateProduct.cs -- Command + handler + validator
src/Features/Products/DeleteProduct.cs -- Command + handler
src/Features/Products/ProductEndpoints.cs -- IEndpointGroup, OpenAPI metadata
src/Features/Products/ProductConfig.cs -- EF Core configuration
tests/Features/Products/CreateProductTests.cs
tests/Features/Products/GetProductTests.cs
tests/Features/Products/ListProductsTests.cs
Checklist: 9/9 | Build: PASS | Tests: PASS
All files follow your existing conventions (sealed handlers,
primary constructors, TypedResults return types).
関連項目
dotnet-init— 機能をスキャフォールドする前に、プロジェクトと CLAUDE.md を初期化しますvertical-slice— VSA スキャフォールドが従う VSA パターンclean-architecture— CA スキャフォールドの基盤となるレイヤリングルールddd— DDD スキャフォールドの基盤となる集約とドメインイベントのパターンproject-structure— 各アーキテクチャでファイルを配置する場所