
pydantic-models-py
✓ Official★ 2,700by microsoft · part of microsoft/skills
Create Pydantic models following the multi-model pattern with Base, Create, Update, Response, and InDB variants. Use when defining API request/response…
This is the playbook your agent receives when the skill activates — you don't need to read it to use the skill, but it's here to audit before installing.
by microsoft
Create Pydantic models following the multi-model pattern with Base, Create, Update, Response, and InDB variants. Use when defining API request/response…
npx skills add https://github.com/microsoft/agent-skills --skill pydantic-models-py
Download ZIPGitHub2.7k
Pydantic Models
Create Pydantic models following the multi-model pattern for clean API contracts.
Multi-Model Pattern
Model Purpose
Base Common fields shared across models
Create Request body for creation (required fields)
Update Request body for updates (all optional)
Response API response with all fields
InDB Database document with doc_type
camelCase Aliases
class MyModel(BaseModel):
workspace_id: str = Field(..., alias="workspaceId")
created_at: datetime = Field(..., alias="createdAt")
class Config:
populate_by_name = True # Accept both snake_case and camelCase
Optional Update Fields
class MyUpdate(BaseModel):
"""All fields optional for PATCH requests."""
name: Optional[str] = Field(None, min_length=1)
description: Optional[str] = None
Database Document
class MyInDB(MyResponse):
"""Adds doc_type for Cosmos DB queries."""
doc_type: str = "my_resource"
Integration Steps
-
Create models in
src/backend/app/models/ -
Export from
src/backend/app/models/__init__.py -
Add corresponding TypeScript types
npx skills add https://github.com/microsoft/skills --skill pydantic-models-pyRun this in your project — your agent picks the skill up automatically.
Quick Start
Copy the template from assets/template.py and replace placeholders:
-
{{ResourceName}}→ PascalCase name (e.g.,Project) -
{{resource_name}}→ snake_case name (e.g.,project)
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.