Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
78
52%
Does it follow best practices?
Impact
95%
1.11xAverage score across 6 eval scenarios
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./plugins/api-scaffolding/skills/fastapi-templates/SKILL.mdProject structure and core initialization
api/v1/endpoints dir
0%
100%
core/ directory
100%
100%
schemas/ directory
100%
100%
services/ directory
0%
100%
repositories/ directory
0%
100%
Lifespan pattern
100%
100%
pydantic_settings import
100%
100%
.env config
100%
100%
lru_cache on settings
100%
100%
Async engine
100%
100%
expire_on_commit=False
100%
100%
get_db commit/rollback
100%
100%
CORS middleware
100%
100%
Async repository pattern and service layer
Generic BaseRepository
58%
100%
select() for queries
87%
100%
flush and refresh on write
100%
100%
exclude_unset on update
0%
100%
Async session in get_db
50%
100%
expire_on_commit=False
100%
100%
Service class with repository
100%
100%
Business logic in service
100%
100%
Routes use service not DB
100%
100%
Async route handlers
100%
100%
Async test infrastructure and JWT auth
httpx AsyncClient
100%
100%
In-memory SQLite URL
0%
100%
dependency_overrides
100%
100%
pytest.mark.asyncio
50%
100%
jose for JWT
100%
100%
bcrypt via passlib
100%
100%
Registration success test
100%
100%
Duplicate registration test
100%
100%
Login failure test
100%
100%
Auth protected endpoint test
100%
100%
JWT token creation and OAuth2 auth endpoint
jose library import
100%
100%
HS256 algorithm constant
100%
100%
'sub' in JWT payload
100%
100%
timedelta expiry
83%
100%
OAuth2PasswordBearer tokenUrl
100%
100%
passlib bcrypt scheme
0%
0%
JWT decode with algorithms list
100%
100%
401 credentials exception
100%
100%
Login endpoint exists
100%
100%
SQLAlchemy models and Pydantic schemas separation
models/ directory
100%
100%
schemas/ directory
100%
100%
declarative_base import
53%
66%
Models inherit from Base
100%
100%
Separate create and response schemas
100%
100%
ORM mode enabled
100%
100%
Column() with types
66%
75%
Update schema partial
100%
100%
HTTP status codes and response_model in route handlers
POST response_model
100%
100%
POST 201 status
100%
100%
DELETE 204 status
100%
100%
HTTPException 404
100%
100%
HTTPException 400
0%
0%
HTTPException 403
100%
100%
Async route handlers
100%
100%
Depends() for injection
100%
100%
Routes delegate to service
100%
100%
70444e5
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.