python-api-endpoint-creator
Creates FastAPI endpoints with layered architecture (Router → Service → Repository). Use when creating new API endpoints, CRUD operations, or scaffolding a new domain module in a FastAPI project.
How do I install this agent skill?
npx skills add https://github.com/c0x12c/ai-toolkit --skill python-api-endpoint-creatorIs this agent skill safe to install?
- Gen Agent Trust Hubpass
This skill provides templates and guidelines for creating FastAPI endpoints using a layered architecture. It includes security-conscious guidance to prevent common developer errors such as unintentional data exposure. No malicious patterns were detected.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
Python API Endpoint Creator
Creates complete FastAPI endpoints following strict layered architecture patterns.
When to Use
- Creating a new REST API endpoint from scratch
- Adding CRUD operations for a new domain entity
- Setting up the full stack: Router → Service → Repository → Tests
- Scaffolding a new domain module
Process
- Pydantic Schemas — Create/Update/Response in
schemas.py - SQLAlchemy Model — with SoftDeleteMixin in
models.py - Repository — async CRUD with soft delete in
repository.py - Service — business logic, HTTPException for errors in
service.py - Dependencies —
get_db,get_serviceindependencies.py - Router — thin endpoints, Depends() for everything in
router.py - Tests — httpx AsyncClient tests in
tests/
See code-patterns.md for complete templates for each file.
Architecture
Router (APIRouter) → Service → Repository → Database
↓ ↓ ↓
Depends() Business logic SQLAlchemy
Pydantic schemas HTTPException AsyncSession
Status codes Validation Soft delete
Hard Rules
- POST for all mutations — GET for reads, POST for create/update/delete
- Query params for IDs —
?id=xxx, never path params/{id} - Routers are thin — just delegation, no business logic
- Services raise HTTPException — for expected errors (404, 409, 422)
- Repositories handle soft delete — filter
deleted_at.is_(None)in all queries async deffor all endpoints — unless CPU-bound
Gotchas
-
Forgetting
response_modelmakes your API leak internal fields. Always setresponse_model=YourSchemaon endpoints. Without it, FastAPI serializes the raw return value, which may includehashed_password,deleted_at, or other internal fields from your SQLAlchemy model. -
Depends()creates a new instance per request — not a singleton. If your service holds state, it will be lost between requests. Services should be stateless. If you need shared state, use app state or a cache. -
await db.commit()in the dependency, not in the repository. Theget_dbdependency handles commit/rollback. If you also commit inside the repository, you get double-commit bugs or premature commits before all operations complete. -
422 errors from Pydantic are opaque by default. Override the
RequestValidationErrorhandler to return field-level errors. The default just says "validation error" with no useful detail for the frontend. -
Missing
status_code=201on create endpoints. FastAPI defaults to 200. Explicitly setstatus_code=status.HTTP_201_CREATEDon POST create routes andstatus_code=status.HTTP_204_NO_CONTENTon delete routes.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/c0x12c/ai-toolkit/python-api-endpoint-creator">View python-api-endpoint-creator on skillZs</a>