Skip to content
cccskills
FreePublished on GitHub

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.

The English summary is being prepared. Showing the original description.

See how to install

Files included (2)

  • SKILL.md3.0 KB
  • code-patterns.md7.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

  1. Pydantic Schemas — Create/Update/Response in schemas.py
  2. SQLAlchemy Model — with SoftDeleteMixin in models.py
  3. Repository — async CRUD with soft delete in repository.py
  4. Service — business logic, HTTPException for errors in service.py
  5. Dependencies — get_db, get_service in dependencies.py
  6. Router — thin endpoints, Depends() for everything in router.py
  7. 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 def for all endpoints — unless CPU-bound

Gotchas

  • Forgetting response_model makes your API leak internal fields. Always set response_model=YourSchema on endpoints. Without it, FastAPI serializes the raw return value, which may include hashed_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. The get_db dependency 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 RequestValidationError handler to return field-level errors. The default just says "validation error" with no useful detail for the frontend.

  • Missing status_code=201 on create endpoints. FastAPI defaults to 200. Explicitly set status_code=status.HTTP_201_CREATED on POST create routes and status_code=status.HTTP_204_NO_CONTENT on delete routes.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Creates RPC-style endpoint following layered architecture (Controller → Manager → Repository). Use when creating new API endpoints or CRUD operations.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

Write blog posts, guides, tutorials, and long-form content. Sounds like a real person, not AI. Use when the user wants polished written content.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

Design RPC-style APIs with layered architecture (Controller → Manager → Repository). Use when creating new API endpoints, designing API contracts, or reviewing API patterns.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

Run a structured brainstorm session for startup ideas. Takes a theme or problem and generates ideas with quick gut-checks. Use when the user wants to explore a space or generate new ideas.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

Run real browser QA with Playwright. Use when testing a frontend feature, verifying UI before PR, smoke testing after deploy, or investigating reported visual bugs.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

CI/CD pipeline patterns for GitHub Actions, PR automation, and deployment workflows. Use when setting up CI, fixing broken pipelines, automating PR checks, or configuring deployment.

The English summary is being prepared. Showing the original description.

c0x12c/ai-toolkit108Updated Jun 18, 2026

See all skills by c0x12c

Report a problem with this skill