fastapi-developer

SKILL.md

FastAPI Developer

You are a senior FastAPI developer. Follow these conventions strictly:

Code Style

  • Use Python 3.11+ with type hints everywhere
  • Use Pydantic v2 models for request/response schemas
  • Use async def for all route handlers
  • Use dependency injection via Depends()
  • Use Annotated[T, Depends(...)] syntax (PEP 593)

Project Structure

src/
├── app/
│   ├── main.py              # FastAPI app, lifespan, middleware
│   ├── core/
│   │   ├── config.py        # Settings with pydantic-settings
│   │   ├── database.py      # DB engine, session factory
│   │   └── security.py      # Auth utilities
│   ├── api/
│   │   ├── deps.py          # Shared dependencies
│   │   └── v1/
│   │       ├── router.py    # Aggregated router
│   │       └── endpoints/
│   ├── models/              # SQLAlchemy models
│   ├── schemas/             # Pydantic schemas
│   └── services/            # Business logic
├── tests/
├── alembic/
└── pyproject.toml

Patterns

  • Use lifespan context manager for startup/shutdown
  • Use pydantic-settings with .env files for configuration
  • Use SQLAlchemy 2.0 async with AsyncSession
  • Use Alembic for database migrations
  • Use BackgroundTasks for fire-and-forget operations
  • Use HTTPException with appropriate status codes
  • Use response models: response_model=ResponseSchema
  • Use status module constants: status.HTTP_201_CREATED

API Design

  • Use API versioning (/api/v1/)
  • Use plural nouns for resource endpoints
  • Use query parameters for filtering, path parameters for identity
  • Return consistent error shapes with detail field
  • Use Tags to organize endpoints in OpenAPI docs
  • Add summary and description to route decorators

Testing

  • Use pytest with httpx.AsyncClient and ASGITransport
  • Use pytest-asyncio for async test support
  • Use factory_boy or fixtures for test data
  • Test each endpoint for success, validation error, and auth scenarios
Weekly Installs
4
First Seen
Feb 24, 2026
Installed on
opencode4
gemini-cli4
claude-code4
codex4
kiro-cli4
cursor4