npx skills add ...
npx skills add cfircoo/claude-code-toolkit --skill sqlalchemy-postgres
Expert guidance for SQLAlchemy 2.0 + Pydantic + PostgreSQL. Use when setting up database layers, defining models, creating migrations, or any database-related work. Automatically activated for DB tasks.
npx skills add cfircoo/claude-code-toolkit --skill sqlalchemy-postgres
<essential_principles>
This skill provides expert guidance for building production-ready database layers.
1. Separation of Concerns
2. Type Safety First
Always use SQLAlchemy 2.0 style with Mapped[] type annotations:
3. Async by Default Use async engine and sessions for FastAPI:
4. Pydantic-SQLAlchemy Bridge Keep models and schemas separate but mappable:
5. Repository Pattern Abstract database operations for testability and clean code. </essential_principles>
What do you need help with?Auto-detection triggers (use this skill when user mentions):
<reference_index>
| Reference | Purpose |
|---|---|
| references/best-practices.md | Production patterns, security, performance |
| references/patterns.md | Repository, Unit of Work, common queries |
| references/async-patterns.md | Async session management, FastAPI integration |
| </reference_index> |
<workflows_index>
| Workflow | Purpose |
|---|---|
| workflows/setup-database.md | Initialize complete database layer |
| workflows/define-models.md | Create models + schemas + relationships |
| workflows/create-migration.md | Alembic migration workflow |
| workflows/query-patterns.md | CRUD operations and optimization |
| </workflows_index> |
<quick_reference>
</quick_reference>
<success_criteria> Database layer is complete when:
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
engine = create_async_engine("postgresql+asyncpg://...")# Schema reads from ORM
class UserRead(BaseModel):
model_config = ConfigDict(from_attributes=True)src/
├── db/
│ ├── __init__.py
│ ├── base.py # DeclarativeBase
│ ├── session.py # Engine + async session factory
│ └── dependencies.py # FastAPI dependency
├── models/
│ ├── __init__.py
│ └── user.py # SQLAlchemy models
├── schemas/
│ ├── __init__.py
│ └── user.py # Pydantic schemas
├── repositories/
│ ├── __init__.py
│ ├── base.py # Generic repository
│ └── user.py # User repository
└── alembic/
├── alembic.ini
├── env.py
└── versions/# Models
from sqlalchemy import String, Integer, ForeignKey, DateTime
from sqlalchemy.orm import Mapped, mapped_column, relationship, DeclarativeBase
# Async
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
# Pydantic
from pydantic import BaseModel, ConfigDict, Field# PostgreSQL async
DATABASE_URL = "postgresql+asyncpg://user:pass@localhost:5432/dbname"