scaffold-mvp について
scaffold-mvpは、新規リポジトリで承認済みのMVPを立ち上げるスキルです。.NET、Blazor、Angularなどを使うチーム向けに、既存ライブラリの再利用、構成作成、ビルド確認を案内します。
主な機能
- 01先行するエージェントハーネスの導入
- 02スタック提案と承認の手順
- 03プロジェクト構成と文書の作成
- 04段階的なビルド・型チェック
- 05外部サービス用のローカルスタブ
活用シーン
- 01新規MVPリポジトリの立ち上げ
- 02.NET、Blazor、Angularのスタック選定
- 03プロジェクト文書とアーキテクチャ記録の整備
- 04外部依存のローカル代替手段の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ afonsoft/ skills --skill scaffold-mvpインストール後、Claude Code で/scaffold-mvpを入力して読み込まれたか確認します。
詳細
MVP のスキャフォールディング
使用するタイミング
- ユーザーが英語でこのスキルを依頼、または言及した場合(例:「use /scaffold-mvp」、「run scaffold-mvp」)。
- ユーザーがポルトガル語でこのスキルを依頼、または言及した場合(例:「use /scaffold-mvp」、「execute scaffold-mvp」)。
トリガー
このスキルは、まったく新しいリポジトリで、/write-specs によって共通言語、ドメイン、承認済みの SPEC SDD が確立された直後、またはユーザーが迅速な MVP のブートストラップを明示的に依頼した場合にのみ有効になります。
絶対ルール(譲れない条件)
ベースとなる UI コンポーネントやインフラストラクチャをゼロから構築することは、厳禁です。
プロトタイピングの速度を重視した共有コンポーネントと成熟したライブラリを再利用してください。これは最優先事項であり、譲れない条件です。
- Blazor:MudBlazor、Radzen、Fluent UI Blazor、または Bootstrap Blazor を優先します。
- Angular:Angular Material、PrimeNG、または NG-ZORRO を優先します。
- .NET バックエンド:ABP Framework、FastEndpoints、または Carter を使用した minimal API を優先します。
- モバイル/Web ハイブリッド:MAUI Blazor Hybrid、Ionic Angular、または同様の実績あるキットを優先します。
安定性と技術的な進め方(急がない)
MVP の速度を優先して、不安定なコードや構造上の近道を許容してはいけません。構文とアーキテクチャの整合性が最優先です。エージェントは次の事項に従う必要があります。
- 段階的なコンパイルチェック:依存関係をインストールするたび、またはベースディレクトリを作成するたびに、ローカルのビルドまたは型チェックコマンド(例:
dotnet build、ng build、npm run build)を実行してください。現在のビルドが成功したことを確認せずに変更を積み重ねてはいけません。 - 擬似コードは一切禁止:ルートやスキャフォールディングファイルに、
// ...や// rest of the code hereのようなコメントを残してはいけません。作成するすべてのファイルは、自己完結しており、商用利用できる状態でなければなりません。 - 安全な依存関係のセットアップ:ライブラリのバージョンを正確に固定してください。ロックファイル(
package-lock.json、yarn.lock、pnpm-lock.yaml)が適切に更新されるよう、必ず明示的なインストールコマンドを実行してください。 - ブリッジとコントラクトの構築:MVP が外部サービス(データベース、キャッシュ、認証、キュー、決済)に依存する場合、ローカルで利用できるスタブまたはモックを用意してください。初回起動時に、未処理のクラッシュが発生しないようにしてください。
ワークフロー
フェーズ 0 — エージェントハーネス
アプリケーションコードを書く前に、/create-agent-harness を実行し、新しいリポジトリにエージェントハーネスをインストールしてください。
完了後、次のファイル/ディレクトリが存在することを確認してください。
CLAUDE.md/AGENTS.md.claude/CONTEXT.md.claude/MEMORY.md.claude/rules/.claude/skills/と.claude/hooks/docs/mainブランチの.git
エージェントハーネスがすでに存在する場合は、このフェーズをスキップし、代わりに .claude/CONTEXT.md を読んでください。
フェーズ 1 — プロジェクト概要とスタックの提案
一般的なビジネス要件の聞き取りは行わないでください。前のスキルでドメインはすでに確立されています。スタックの提案を絞り込むため、簡潔なプロジェクト概要のみを尋ねてください。
.claude/CONTEXT.md、docs/architecture/(存在する場合)、および承認済みの.specs/SPEC-*.mdを読んでください。- ユーザーにポルトガル語で1行の概要を尋ねてください。
Resumo rapido do projeto: qual e o objetivo principal e quem sao os usuarios?
➡️ Meu palpite: [resumo baseado no SPEC lido]
- ドメインに基づき、最も生産性の高い .NET/Blazor/Angular スタックを提案してください。スピードを優先し、助言的かつ明確な見解を示してください。
フェーズ 2 — スタックの決定
以下の判断基準を使用してください。続行する前に、選択したスタックをポルトガル語でユーザーに確認してください。
| プロファイル | MVP のデフォルトスタック | UI/コンポーネントライブラリ |
|---|---|---|
| Web ダッシュボード/管理画面/SaaS(Blazor) | .NET 8 + Blazor Server または Blazor WebAssembly + EF Core | MudBlazor、Radzen、または Fluent UI Blazor |
| Web ダッシュボード/管理画面/SaaS(Angular) | .NET 8 Web API + Angular 17+ | PrimeNG、Angular Material、または NG-ZORRO |
| API/バックエンドのみ | .NET 8 minimal API、FastEndpoints、または ABP | — |
| CLI/ワーカー | .NET 8 コンソールまたはワーカーサービス | — |
| モバイル/ハイブリッド | .NET MAUI Blazor Hybrid | MudBlazor または Fluent UI |
必須の確認:
Baseado no nosso contexto de dominio, proponho iniciar com [STACK_ESCOLHIDA] para maxima produtividade sem reinventar a roda.
Voce concorda com esta stack ou temos alguma restricao tecnica ainda nao mapeada?
➡️ Meu palpite: concordo com a proposta.
ユーザーから明示的な承認が得られるまで待ってください。変更を希望する場合は、ブートストラップを調整してください。同意した場合は、続行してください。
フェーズ 3 — 技術面と構造面の実装
ユーザーから明示的な承認を得てから進めてください。
-
プロジェクトの骨組み — ソリューション/プロジェクトの構成を作成します。
- .NET ソリューション(
.sln)とプロジェクト(src/、tests/) - パッケージを一元管理するための
Directory.Build.propsまたはDirectory.Packages.props appsettings.jsonとappsettings.Development.json- .NET SDK のバージョンを固定する
global.json
- .NET ソリューション(
-
ベーススタックのインストール — 選択した UI キットとコアライブラリをインストールします。
- Blazor:
MudBlazor、Radzen.Blazor、またはMicrosoft.FluentUI.AspNetCore.Components - Angular:
primeng、@angular/material、またはng-zorro-antd - 共有 .NET ライブラリ:
Serilog、FluentValidation、AutoMapper/Mapperly、EF CoreまたはDapper
- Blazor:
-
コードの再利用を重視した アジャイルなディレクトリ構成:
src/Web/Components— 選択したキットの再利用可能な UI コンポーネントsrc/Core/— ドメインロジック、DTO、インターフェースsrc/Infrastructure/— EF Core、外部サービス、スタブtests/UnitTests/— 実行可能な状態の最初のテストプロジェクト
-
ドキュメント用フォルダー — プロジェクトの意思決定の経緯を作成します。
docs/architecture/docs/architecture/AD-0001-initial-stack.mddocs/adr/(今後の ADR 用).specs/docs/specs/
-
以下を記載した簡潔な README を作成します。
- ローカル実行コマンド(
dotnet run、ng serve) - 採用したスタックとアーキテクチャ
- 機能の追加方法(まず再利用を検討し、
.claude/CONTEXT.mdに従う)
- ローカル実行コマンド(
-
重要な手順の後にはビルド/型チェックを実行します。次に進む前に、エラーをすべて修正してください。
フェーズ 4 — 初期アーキテクチャ決定記録
次の内容で docs/architecture/AD-0001-initial-stack.md を作成します。
# AD-0001 — Initial MVP Stack
## Context
[One-paragraph summary from Phase 1.]
## Decision
[Chosen stack: .NET version, Blazor or Angular, UI kit, persistence, DI, logging.]
## Consequences
- Positive: fast prototyping, proven component library, stable build.
- Trade-off: limited custom UI, dependency on the chosen kit.
## Related SPEC
- [.specs/SPEC-{YYYYMMDD}-{slug}.md](../.specs/SPEC-{YYYYMMDD}-{slug}.md)
フェーズ 5 — 外部サービスのスタブ
データベース、キャッシュ、キュー、認証、オブジェクトストレージ、決済など、すべての外部依存関係について、ローカルで実行可能なスタブを作成します。
- 可能な場合は Docker Compose またはローカルのインメモリ実装を使用します。
- 必要なすべてのキーとローカル用のダミー値を記載した
.env.exampleを用意します。 - ヘルスチェック用のスクリプトまたはエンドポイントを追加します。
- サービスが見つからない場合でも、アプリの起動時にクラッシュしないようにします。
返却条件
オーケストレーターに引き渡す前に、次の条件を満たしていることを確認してください。
- エージェントハーネスがインストールされている(
.claude/、CLAUDE.md、AGENTS.md)。 - 選択したスタックが Technical Details に記載されるよう
.claude/CONTEXT.mdが更新されている。 - プロジェクト概要を記載した
.claude/MEMORY.mdが作成されている。 -
docs/architecture/AD-0001-initial-stack.mdが作成されている。 -
.specs/とdocs/specs/ディレクトリが存在する。 - 実行コマンドと簡潔なアーキテクチャの説明を記載した
README.mdが存在する。 - ビルド/型チェックが問題なく完了する。
- ロックファイルが更新され、コミットされている。
- スキャフォールドファイルに疑似コード、
TODO、// ...の逃げコメントが残っていない。 - 外部依存関係にローカルのスタブまたはモックが用意されている。
-
mainに少なくとも 1 つのコミットがあり、初期git履歴が存在する。
その後、機能開発に着手できる状態が整ったことを報告して、オーケストレーターに制御を戻してください。
よくある間違い
| 間違い | 修正方法 |
|---|---|
| UI のベースコンポーネントを独自に作成する | MudBlazor、Radzen、Fluent UI、PrimeNG、Angular Material、または NG-ZORRO を使用します。 |
| ビルドチェックを省略する | 構造に関する各手順の後に dotnet build/ng build を実行します。 |
// ... コメントを残す | すべてのファイルが自己完結し、動作する状態でなければなりません。 |
| 外部サービスのローカルスタブがない | Docker/インメモリ/env-example のスタブを追加します。 |
| ユーザーのスタック承認なしに進める | ポルトガル語で明示的な確認を求め、返答を待ちます。 |
| エージェントハーネスまたはドキュメント用フォルダーがない | アプリケーションのスキャフォールディングの前に /create-agent-harness をインストールします。 |
参考資料
create-agent-harness— 新しいリポジトリにエージェントハーネスをインストールするためのものwrite-specs— このスキルに先立って SPEC SDD を作成するためのものcreate-issues— エピックを GitHub Issues に変換するためのもの