feat: sync all 140 Microsoft skills with collision protection
- 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)
This commit is contained in:
58
skills/pydantic-models-py/SKILL.md
Normal file
58
skills/pydantic-models-py/SKILL.md
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user