advanced-alchemy-types
SKILL.md
Types
Execution Workflow
- Choose the column type based on storage semantics, not convenience.
- Use
DateTimeUTCfor timezone-aware timestamps that must normalize to UTC. - Use
EncryptedStringorEncryptedTextonly after choosing the encryption backend and key source. - Use
GUID,JsonB,PasswordHash, andStoredObjectwhere the database contract truly requires them. - Check migration and dialect behavior before committing to a custom type in a widely used model.
Implementation Rules
- Require timezone-aware input for UTC datetime fields.
- Never hardcode real encryption keys in model definitions.
- Keep type constructor arguments hashable and cache-safe when custom decorators participate in SQLAlchemy statement caching.
- Treat file-object and password-hash columns as lifecycle-bearing fields, not plain strings.
Example Pattern
from advanced_alchemy.types import DateTimeUTC, EncryptedString, GUID, JsonB
class User(DefaultBase):
__tablename__ = "users"
id: Mapped[UUID] = mapped_column(GUID, primary_key=True)
created_at: Mapped[datetime] = mapped_column(DateTimeUTC)
secret: Mapped[str] = mapped_column(EncryptedString(key="secret-key"))
preferences: Mapped[dict] = mapped_column(JsonB)
Validation Checklist
- Confirm the selected type behaves correctly on the target database dialect.
- Confirm encrypted and password-hash fields use the intended backend and key management path.
- Confirm stored datetimes are timezone-aware and normalized to UTC.
- Confirm migrations can render and replay the custom types cleanly.
Cross-Skill Handoffs
- Use
advanced-alchemy-modelingto place these types on the right models. - Use
advanced-alchemy-cachingwhen custom type configuration affects SQLAlchemy cacheability. - Use
advanced-alchemy-litestarif file-object or DTO behavior must line up with Litestar transport contracts.
Advanced Alchemy References
Weekly Installs
5
Repository
alti3/litestar-skillsGitHub Stars
5
First Seen
5 days ago
Security Audits
Installed on
cline5
gemini-cli5
github-copilot5
codex5
kimi-cli5
cursor5