From fullstack-agents
Generate production-ready FastAPI CRUD modules following a simplified architecture with CRUD helpers.
npx claudepluginhub adelabdelgawad/fullstack-agents --plugin fullstack-agentsThis skill uses the workspace's default tool permissions.
Generate production-ready FastAPI CRUD modules following a simplified architecture with CRUD helpers.
examples.mdreferences/crud-helper-pattern.mdreferences/file-upload-pattern.mdreferences/form-data-pattern.mdreferences/middleware-pattern.mdreferences/model-pattern.mdreferences/response-types-pattern.mdreferences/router-pattern.mdreferences/schema-pattern.mdreferences/service-pattern.mdreferences/testing-pattern.mdscripts/helper.pySearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Generate production-ready FastAPI CRUD modules following a simplified architecture with CRUD helpers.
Use this skill when asked to:
Primary Pattern (most endpoints):
┌─────────────────────────────────────────────────────────────┐
│ HTTP Request │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Router (api/routers/setting/{entity}_router.py) │
│ • Endpoint definitions │
│ • Request/Response validation │
│ • session: SessionDep │
│ • Delegates to Service/Controller for most operations │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Service/Controller (api/services/ or api/controllers/) │
│ • Business logic, validation, orchestration │
│ • External integrations (AD/LDAP, email, Redis, SMS) │
│ • Cross-cutting concerns (audit, notifications) │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ CRUD Helper (api/crud/{entity}.py) — reusable queries │
│ • Plain async functions (no classes) │
│ • Session as first parameter │
│ • flush() not commit() │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Model (db/model.py) + Schemas │
│ • SQLModel ORM models │
│ • api/schemas/ (domain) + api/http_schema/ (request/resp) │
│ • Pydantic DTOs with CamelModel │
└─────────────────────────────────────────────────────────────┘
Secondary Pattern (simple entities like schedulers, OUs, domain-users):
┌─────────────────────────────────────────────────────────────┐
│ Router → CRUD helper / Direct queries → Model │
│ Use only for simple entities with no business logic │
└─────────────────────────────────────────────────────────────┘
api/
├── routers/
│ └── setting/
│ └── {entity}_router.py # Router with endpoints
├── crud/
│ ├── __init__.py # Re-exports all CRUD helpers
│ └── {entity}.py # Reusable query functions (3+ uses)
├── services/
│ └── {entity}_service.py # ONLY for external integrations
├── schemas/
│ ├── _base.py # CamelModel base class
│ └── {entity}_schema.py # Domain schemas
└── http_schema/
└── {entity}_schema.py # Request/response Pydantic DTOs
db/
└── model.py # SQLModel ORM models
core/
├── dependencies.py # SessionDep, CurrentUserDep
├── app_setup/
│ └── routers_group/
│ └── setting_routers.py # Router registration
└── exceptions.py # DetailedHTTPException
Every request uses exactly ONE database session via typed dependency:
@router.post("/items")
async def create_item(
item_create: ItemCreate,
session: SessionDep, # Typed dependency - NOT Depends(get_session)
):
item = Item(**item_create.model_dump())
session.add(item)
await session.commit()
await session.refresh(item)
return item
Simple:
Endpoint (SessionDep) → Direct query OR CRUD helper → Database
Complex:
Endpoint (SessionDep) → Service (receives session) → CRUD helper → Database
All schemas inherit from CamelModel for automatic snake_case to camelCase conversion:
class ItemResponse(CamelModel):
item_id: int # Python: snake_case
created_at: datetime
# JSON output: {"itemId": 1, "createdAt": "..."}
Use DetailedHTTPException for errors:
from api.exceptions import DetailedHTTPException
from fastapi import status
raise DetailedHTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=f"Item not found with ID: {item_id}",
)
When creating a new entity, generate files in this order:
db/model.py) - Add SQLModel modelapi/schemas/{entity}_schema.py + api/http_schema/{entity}_schema.py) - Pydantic DTOsapi/crud/{entity}.py) - Only if queries are reused 3+ timesapi/routers/setting/{entity}_router.py) - API endpointscore/app_setup/routers_group/setting_routers.pyflush() not commit() - caller commitsfrom api.crud import items as items_crudSessionDep typed dependencyapi/routers/setting/{entity}_router.pycore/app_setup/routers_group/setting_routers.pySee the references/ directory for detailed patterns:
model-pattern.md - SQLAlchemy modelsschema-pattern.md - Pydantic DTO patternscrud-helper-pattern.md - Reusable query functions (replaces repository pattern)service-pattern.md - External integrations and complex orchestrationrouter-pattern.md - API endpoints with SessionDepfile-upload-pattern.md - File uploads with UploadFile, validation, S3testing-pattern.md - pytest fixtures, async tests, dependency overridesresponse-types-pattern.md - HTML, file downloads, streaming, redirectsmiddleware-pattern.md - Security headers, correlation ID, timing, loggingform-data-pattern.md - Form handling, OAuth2 password flow, headers, cookies