Community코딩 & 개발github.com

Matt1tech/fastapi-project-generator

대화형으로 프로덕션 수준의 FastAPI 백엔드를 스캐폴딩합니다. Python 3.12, uv, 선택한 아키텍처(모듈형 계층, 클린, 헥사고날, 최소, 마이크로서비스)를 사용하며, PostgreSQL, Redis, Qdrant, JWT 인증, Docker Compose, AI 모듈(LangChain, LangGraph, RAG, MCP)을 선택적으로 포함할 수 있습니다.

fastapi-project-generator란 무엇인가요?

이 스킬은 새 FastAPI 프로젝트를 시작할 때 사용자와 대화형 인터뷰를 진행하여 프로젝트 이름, 대상 폴더, 아키텍처(모듈형 계층, 최소, 클린 아키텍처, 헥사고날, 마이크로서비스), 서비스(PostgreSQL + SQLAlchemy + Alembic, JWT 인증, Redis, Docker Compose), 벡터 DB(Qdrant, pgvector), AI 모듈(LangChain, LangGraph, RAG, MCP) 및 LLM 제공자(OpenAI, Anthropic, Google Gemini, Ollama)를 선택하게 합니다. 안전 검사를 수행한 후 참조 파일을 기반으로 코드를 생성하며, uv만 사용하고 src/ 디렉토리 없이 app/ 구조를 따릅니다. 생성 후 `uv sync`, `ruff check`, `pytest`로 실제 검증을 수행하여 빌드 실패 없이 동작함을 보장합니다. Docker Compose가 선택된 경우 `docker compose config`로 설정을 확인합니다. 최종적으로 프로젝트 위치, 아키텍처, 서비스, 생성된 파일 트리, 실행 명령어, 테스트 결과, 알려진 제한사항을 보고합니다.

지원 대상✓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단계 - 인터뷰

에이전트에 구조화된 질문 도구가 있다면 사용하세요(사용자 질문 또는 객관식 프롬프트 도구). 없으면 채팅에서 동일한 질문을 짧은 번호 목록과 선택지(추천 옵션 표시)로 제시하고 답변을 기다리세요.

최대 두 라운드로 질문하세요. 사용자가 메시지에서 이미 답변한 질문은 건너뜁니다. 항상 "(추천)"으로 추천 옵션을 먼저 표시하세요. 안전한 기본값이 있는 항목은 묻지 마세요.

1라운드 - 필수 (한 번에 최대 4개 질문):

  1. 프로젝트 이름 - 자유 텍스트("기타" 사용). 디렉터리 이름을 기반으로 짧은 제안을 제공하세요. 폴더명은 케밥-케이스, Python 이름은 스네이크_케이스로 정규화합니다.
  2. 대상 폴더 - 옵션: 현재 디렉터리 ./<name> (추천), 사용자 지정 경로(기타).
  3. 아키텍처 - 모듈형 계층(추천), 최소, 클린 아키텍처, 헥사고날. 마이크로서비스는 "기타"를 통해서만 나타납니다. 선택한 경우 이유를 묻고 작은 앱에는 권장하지 않는다고 경고하세요(references/architectures.md 참조).
  4. 서비스(다중 선택) - PostgreSQL + SQLAlchemy + Alembic, JWT 인증, Redis, Docker Compose. PostgreSQL과 Docker Compose를 추천합니다.

2라운드 - 선택 사항(해당되는 경우에만 질문, 한 번에):

  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는 사용자가 요청하거나 한 번 물어본 후에만 실행하세요. 실패 시 수정하고 다시 실행하세요. 검증할 수 없는 것이 있으면 그렇게 말하세요.

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. 실제 테스트 및 린트 결과
  9. 알려진 제한사항

마지막으로 다음 단계 하나를 제안하며 마무리하세요(예: "첫 번째 도메인 모듈 추가", "git init 및 푸시").

관련 스킬