Skip to main content
NEW · APP STORE Now on iOS · macOS · iPad Android & Windows soon GET IT
Prompts Pydantic Multi-Model API Contract Creator

developer coding skill risk: low

Pydantic Multi-Model API Contract Creator

The prompt instructs creation of Pydantic models following a multi-model pattern (Base, Create, Update, Response, InDB) for clean API contracts, including templates for camelCase a…

SKILL 1 file

SKILL.md
---
name: antigravity-awesome-skills-pydantic-models-py
description: "Create Pydantic models following the multi-model pattern for clean API contracts."
---
# Pydantic Models

Create Pydantic models following the multi-model pattern for clean API contracts.

## 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`)

## 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

## When to Use
This skill is applicable to execute the workflow or actions described in the overview.

## Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.

INPUTS

{{ResourceName}} REQUIRED

PascalCase resource name

e.g. Project

{{resource_name}} REQUIRED

snake_case resource name

e.g. project

REQUIRED CONTEXT

  • resource name in PascalCase and snake_case

ROLES & RULES

  1. Use this skill only when the task clearly matches the scope described above.
  2. Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  3. Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.

EXPECTED OUTPUT

Format
code
Constraints
  • follow multi-model pattern (Base, Create, Update, Response, InDB)
  • use camelCase aliases where specified
  • make Update fields optional

EXAMPLES

Includes a multi-model pattern table plus three Python code snippets demonstrating camelCase aliases, optional update fields, and database document inheritance.

CAVEATS

Dependencies
  • Requires template from assets/template.py
Missing context
  • Content of assets/template.py
  • Specific resource name or domain context for the models
Ambiguities
  • "When to Use" section refers to an "overview" that is not present in the prompt.

QUALITY

OVERALL
0.76
CLARITY
0.78
SPECIFICITY
0.82
REUSABILITY
0.85
COMPLETENESS
0.68

IMPROVEMENT SUGGESTIONS

  • Inline the template.py content or provide a complete self-contained example instead of referencing an external asset.
  • Replace the generic "When to Use" and "Limitations" paragraphs with concrete trigger conditions tied to API endpoint creation.

USAGE

Copy the prompt above and paste it into your AI of choice — Claude, ChatGPT, Gemini, or anywhere else you're working. Replace any placeholder sections with your own context, then ask for the output.

MORE FOR DEVELOPER