Communityコーディング&開発github.com

FastAPI プロジェクト ジェネレーター

Python 3.12、uv、および選択したアーキテクチャ(モジュール階層型、クリーン、ヘキサゴナル、最小限、マイクロサービス)を使用して、本番環境を意識した FastAPI バックエンドをインタラクティブにスキャフォールディングします。オプションで PostgreSQL、Redis、Qdrant、JWT 認証、Docker Compose、AI モジュール(LangChain、LangGraph、RAG、MCP)を含めることができます。ユーザーが新しい FastAPI プロジェクトを開始したり、バックエンドをスキャフォールディングしたり、このスキルを名前で呼び出したりする場合に使用します。

FastAPI プロジェクト ジェネレーター とは?

このスキルは、プロダクション対応の FastAPI プロジェクトを生成するためのインタラクティブなジェネレーターです。まず、ユーザーとの短いインタビュー(最大 2 ラウンド)を通じて、プロジェクト名、ターゲットフォルダ、アーキテクチャ、使用するサービス(PostgreSQL、JWT 認証、Redis、Docker Compose など)を決定します。また、オプションでベクターデータベース(Qdrant、pgvector)や AI モジュール(LangChain、LangGraph、RAG、MCP)の追加もサポートしています。選択内容に基づき、準備されたリファレンスファイルから最適なコードを生成し、常に `uv sync`、`ruff`、`pytest` による検証を実行します。これにより、開発者はベストプラクティスに沿った、動作確認済みのプロジェクトを即座に入手できます。主に Cursor、Codex、Claude Code などの AI エージェント環境での使用を想定しています。

対応✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Matt1tech/fastapi-project-init/tree/HEAD/skills/fastapi-project-generator

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

FastAPI プロジェクト ジェネレーター は何をしますか?

クリーンで検証済みの FastAPI プロジェクトを生成します。ユーザーに簡単なインタビューを行い、適切なデフォルト値を推奨し、スキャフォールディングした後、実際のコマンドで検証します。

ステップ 1 - インタビュー

エージェントに構造化質問ツール(ユーザーへの質問や多肢選択プロンプトツールなど)があればそれを使用します。ない場合は、同じ質問をチャットで短い番号付きリストとして、選択肢には英文字を付け、推奨オプションをマークしてから、返信を待ちます。

最大 2 ラウンドで質問します。ユーザーがメッセージですでに回答した質問はスキップします。推奨オプションには常に "(推奨)" と最初にマークします。安全なデフォルト値がある項目については質問しません。

ラウンド 1 - 必須項目(1 バッチ、最大 4 問):

  1. プロジェクト名 - 自由記述(「その他」を使用)。ディレクトリ名に基づいて短い提案を提供します。フォルダ名はケバブケース、Python 名はスネークケースに正規化します。
  2. ターゲットフォルダ - 選択肢: カレントディレクトリ ./<name> (推奨)、カスタムパス(その他)。
  3. アーキテクチャ - モジュール階層型 (推奨)、最小限、クリーンアーキテクチャ、ヘキサゴナル。マイクロサービスは「その他」を選択した場合のみ表示されます。選択された場合は理由を尋ね、小規模アプリには推奨しないことを警告します(references/architectures.md 参照)。
  4. サービス(複数選択)- PostgreSQL + SQLAlchemy + Alembic、JWT 認証、Redis、Docker Compose。PostgreSQL と Docker Compose を推奨します。

ラウンド 2 - オプションの追加項目(関連する場合のみ質問。1 バッチ):

  1. ベクター DB(複数選択。AI/RAG または Qdrant が必要な場合のみ): Qdrant、PostgreSQL pgvector、なし。
  2. AI モジュール(複数選択): なし (推奨)、LangChain、LangGraph、RAG、MCP。
  3. LLM プロバイダー(AI モジュールが選択された場合のみ): OpenAI、Anthropic、Google Gemini、Ollama(ローカル)。
  4. 会話状態を永続化しますか?(LangGraph が選択された場合のみ): はい(Postgres チェックポインター経由)/ いいえ(インメモリ)。

次に、選択内容を 6 行で要約して表示し、先に進みます。ターゲットフォルダが空でない場合を除き、確認を再度求めないでください。

ステップ 2 - 安全確認

  1. ターゲットパスを解決します。存在し、空でない場合は、停止して別のフォルダを使用するかマージするかを尋ねます。明示的な承認なしに既存のファイルを上書きしないでください。
  2. uv がインストールされていることを確認します(uv --version)。インストールされていない場合は、インストール方法をユーザーに伝えて(curl -LsSf https://astral.sh/uv/install.sh | sh)停止します。
  3. Docker Compose が選択された場合のみ、Docker が利用可能であることを確認します(検証ステップのため)。

ステップ 3 - スキャフォールド

コードを生成する前に関連するリファレンスファイルを読み取ります:

  • 常に: references/base-project.md(レイアウト、スターターファイル、uv ルール、コード標準)
  • 選択されたアーキテクチャ: references/architectures.md
  • 選択されたサービス: references/services.md(依存関係、Docker 標準)
  • AI モジュールがある場合: references/ai-rag.md

常に適用されるルール:

  • Python 3.12、uv のみ(pip は不可)。backend/pyproject.toml と backend/uv.lock は一緒に保管します。
  • [tool.uv] package = false とします(ユーザーが明示的にインストール可能なパッケージを希望する場合を除く)。
  • src/ ディレクトリは使用しません。空の抽象化レイヤーは作成しません。
  • 選択されたサービスのみに依存関係を追加し、uv add / uv add --dev を使用します。
  • 必須ファイル: app/main.py、app/core/config.py、app/api/routes/health.py、tests/test_health.py、.env.example、.gitignore、README.md。
  • /health は HTTP 200 {"status": "ok"} を返します。Swagger は /docs にあります。
  • ソースコードにシークレットを決して入れず、.env をコミットしないでください。
  • AI フォルダ、エンドポイント、依存関係は、要求された場合にのみ存在します。

ステップ 4 - 検証(実行せずに成功を主張しない)

backend/ から実行:

uv sync
uv run ruff check .
uv run ruff format --check .
uv run pytest -v

Docker Compose が選択された場合: docker compose config(プロジェクトルートから実行)。docker compose up -d は、ユーザーが要求した場合、または 1 回確認のために質問した場合にのみ実行します。失敗を修正して再実行します。検証できないものがある場合は、その旨を伝えます。

ステップ 5 - 成果報告

簡潔に報告します:

  1. プロジェクトの場所
  2. 選択されたアーキテクチャ
  3. 含まれるサービス
  4. インストールされた依存関係
  5. 作成されたファイル(ツリー)
  6. API を実行するコマンド: cd backend && uv run uvicorn app.main:app --reload
  7. テストを実行するコマンド: cd backend && uv run pytest -v
  8. 実際のテストと lint の結果
  9. 既知の制限事項

最後に、次のステップ(例: 「最初のドメインモジュールを追加する」、「git init してプッシュする」)を 1 つ提案して終了します。

関連スキル