- Add find_github_skills() to discover skills in .github/skills/ not reachable via the skills/ symlink tree (picks up 11 missing skills) - Add collision protection: if a target directory exists and was not from a previous Microsoft sync, append -ms suffix instead of overwriting - Microsoft mcp-builder → mcp-builder-ms (community version preserved) - Microsoft skill-creator → skill-creator-ms (community version preserved) - Total skills: 856 (was 845, +11 newly discovered)
59 lines
1.7 KiB
Markdown
59 lines
1.7 KiB
Markdown
---
|
|
name: pydantic-models-py
|
|
description: Create Pydantic models following the multi-model pattern with Base, Create, Update, Response, and InDB variants. Use when defining API request/response schemas, database models, or data validation in Python applications using Pydantic v2.
|
|
---
|
|
|
|
# Pydantic Models
|
|
|
|
Create Pydantic models following the multi-model pattern for clean API contracts.
|
|
|
|
## Quick Start
|
|
|
|
Copy the template from [assets/template.py](assets/template.py) and replace placeholders:
|
|
- `{{ResourceName}}` → PascalCase name (e.g., `Project`)
|
|
- `{{resource_name}}` → snake_case name (e.g., `project`)
|
|
|
|
## 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
|
|
|
|
```python
|
|
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
|
|
|
|
```python
|
|
class MyUpdate(BaseModel):
|
|
"""All fields optional for PATCH requests."""
|
|
name: Optional[str] = Field(None, min_length=1)
|
|
description: Optional[str] = None
|
|
```
|
|
|
|
## Database Document
|
|
|
|
```python
|
|
class MyInDB(MyResponse):
|
|
"""Adds doc_type for Cosmos DB queries."""
|
|
doc_type: str = "my_resource"
|
|
```
|
|
|
|
## Integration Steps
|
|
|
|
1. Create models in `src/backend/app/models/`
|
|
2. Export from `src/backend/app/models/__init__.py`
|
|
3. Add corresponding TypeScript types
|