fastapi-development
Enforces best practices for FastAPI development, ensuring scalable, high-performance, and maintainable APIs. Use when working on server-side Python code involving FastAPI.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
FastAPI Development Standards
Key Principles
- Concise & Technical: Write accurate, functional code.
- Functional Style: Prefer pure functions over classes for routes and logic.
- RORO Pattern: "Receive an Object, Return an Object". Use Pydantic models for all inputs and outputs.
Architecture & Structure
-
File Naming: Lowercase with underscores (e.g.,
routers/user_routes.py). - Exports: Favor named exports.
- Organization: Separate exported routers, sub-routes, utilities, static content, and types (models/schemas).
Coding Standards
- Type Hints: Mandatory for all function signatures.
- Validation: Use Pydantic models (v2) instead of raw dictionaries.
- Conditionals: Avoid unnecessary curly braces. Use one-line syntax for simple conditionals.
-
Async/Sync:
- Use
async deffor I/O-bound operations (DB, external APIs). - Use
deffor CPU-bound synchronous tasks.
- Use
Error Handling
- Early Returns: Handle errors/edge cases first. Happy path goes last.
- Guard Clauses: Validate preconditions early.
-
HTTPExceptions: Use
HTTPExceptionfor expected errors. - No Nested Ifs: Avoid deep nesting.
Performance
- Non-blocking: Minimize blocking I/O. Use async libraries (asyncpg, aiomysql).
- Caching: Implement strategies for frequent data.
- Lazy Loading: Use for large datasets.
Dependencies
- FastAPI
- Pydantic v2
- SQLAlchemy 2.0 (if ORM used)
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!