project-setup について
.NET プロジェクト向けの技術スタック選定スキルで、キットの既定案とそのトレードオフを説明します。データベースや認証、キャッシュなどの選択を支援し、初期化・評価・移行は専用スキルに振り分けます。
主な機能
- 018 分野のスタック既定案
- 02選択理由とトレードオフの説明
- 03.NET 標準機能を優先
- 04依存関係のライセンスを考慮
- 05他のワークフローを専用スキルへ誘導
活用シーン
- 01プロジェクトのデータベースと認証の選定
- 02キャッシュやメッセージングの要否判断
- 03可観測性とテスト構成の選択
- 04セットアップや移行の依頼を適切なスキルへ振り分け
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ codewithmukesh/ dotnet-claude-kit --skill project-setupインストール後、Claude Code で/project-setupを入力して読み込まれたか確認します。
詳細
プロジェクトのセットアップ — Tech-Stack Advisor
このスキルが担うのは、キットで推奨する技術スタックのデフォルトと、その理由だけです。このスキルを利用するワークフローは、ほかの場所にあります。
- プロジェクトの初期化/CLAUDE.md の生成 →
dotnet-init(対話型フロー、アーキテクチャに関する質問、CLAUDE.md の生成) - 既存のコードベースの評価 →
health-check(正式な 8 項目の評価) - EF Core のスキーマ、NuGet、または .NET のバージョンの移行 →
migrate - アーキテクチャの選択 →
architecture-advisor(推奨する前に、必ず質問する)
基本原則
- デフォルトを推奨し、理由を説明して、選択はユーザーに委ねる — それぞれの項目にキットのデフォルトがありますが、デフォルトは出発点であり、必須ではありません。十分な情報に基づいて選べるよう、トレードオフを一文で伝えます。
- サードパーティ製より .NET の組み込み機能を優先する — Redis クライアントのラッパーより
HybridCache、パッケージより組み込みのレート制限、Swashbuckle より組み込みの OpenAPI を優先します。依存関係が少なければ、予期しないライセンス問題やアップグレードによる破損も減ります。 - ライセンスを考慮して選ぶ — MediatR(v13 以降)、MassTransit(v9 以降)、FluentAssertions(v8 以降)は商用ライセンスに移行しました。キットでは、MIT ライセンスの代替品として Mediator、Wolverine、xUnit の標準アサーションをデフォルトにしています。
- メッセージングは後から追加し、導入を避け続けるわけではない — ほとんどのプロジェクトで、初日からメッセージバスは必要ありません。デフォルトは「なし(後から追加)」とし、非同期ワークフローが実際に必要になったら Wolverine を選びます。
パターン
技術スタックの項目とデフォルト
| 項目 | 選択肢 | デフォルト | 理由 |
|---|---|---|---|
| データベース | PostgreSQL、SQL Server、SQLite | PostgreSQL | オープンソースで、SQL Server 以外では最良の EF Core プロバイダーであり、Testcontainers を第一級でサポートしています |
| 認証 | JWT Bearer、OIDC(Keycloak/Auth0)、なし | JWT Bearer | API のデフォルトとして、最もシンプルかつ安全です。外部 IdP がある場合は OIDC に移行します |
| キャッシュ | HybridCache、Redis、なし | HybridCache | 組み込みで、スタンピード保護と L1+L2 を備えています。Redis は L2 バックエンドとしてのみ追加します |
| メッセージング | Wolverine(RabbitMQ)、MassTransit、なし | なし(後から追加) | 早すぎるメッセージングの導入は運用負荷を増やします。必要になったら Wolverine(MIT)を使います |
| オブザーバビリティ | Serilog+OpenTelemetry、基本的なロギング | Serilog+OTEL | 初日から構造化ログとトレースを導入するコストは低く、後から追加するのは容易ではありません |
| レジリエンス | Polly v8 パイプライン、基本的な再試行 | Polly v8 | AddStandardResilienceHandler() を一行追加するだけで、本番環境向けの適切なデフォルトを利用できます |
| API ドキュメント | 組み込み OpenAPI+Scalar | OpenAPI+Scalar | フレームワークが仕様の生成を保守し、Scalar が Swagger UI を置き換えます |
| テスト | xUnit v3+Testcontainers | xUnit v3+Testcontainers | テストで実際のデータベースを使えます。インメモリプロバイダーでは実際のバグが見つかりません |
項目を選択すると、dotnet-init がその内容を生成される CLAUDE.md に反映します。また、それぞれの選択内容は、その領域で作業するときに読み込むスキル(ef-core、authentication、caching、messaging、serilog、opentelemetry、resilience、openapi、scalar、testing)に対応します。
アンチパターン
質問せずに技術スタックを指定する
# BAD — assuming the kit defaults apply everywhere
"You should use PostgreSQL and Wolverine."
# The team runs SQL Server enterprise-wide and has zero async workflows.
# GOOD — default + trade-off + question
"Kit default is PostgreSQL (best OSS EF provider). Any organizational
constraint — existing SQL Server licenses, DBA support — that should
override it?"
このスキルが担当しないワークフローを再実行する
# BAD — improvising a health grading or init flow from this skill
"Let me grade your codebase across 5 categories..."
# That grading conflicts with the canonical one.
# GOOD — route to the owner
Init/CLAUDE.md → dotnet-init | Assessment → health-check | Upgrades → migrate
判断ガイド
| シナリオ | 案内先 |
|---|---|
| 「このプロジェクトを Claude Code 用にセットアップする」 | dotnet-init |
| 「どのデータベース/認証/キャッシュを使えばよいですか?」 | このスキル — 上の表 |
| 「このコードベースはどれくらい健全ですか?」 | health-check |
| 「.NET 10 にアップグレードする」/「パッケージを更新する」 | migrate |
| 「どのアーキテクチャが適していますか?」 | architecture-advisor |
| 技術スタックを選択済みで、実装を始める準備ができている | 最初の機能には scaffold |
コメント
Markdown 対応