From compound-engineering-feat-python
Apply modern Python 3.10+ type annotations and Pydantic v2 patterns. Use when writing type-safe Python code, designing data models, adding type hints to existing code, or integrating Pydantic with frameworks like FastAPI or Django Ninja.
npx claudepluginhub weorbitant/compound-engineering-feat-python-plugin --plugin compound-engineering-feat-pythonThis skill uses the workspace's default tool permissions.
Modern Python typing leverages 3.10+ syntax for clarity and correctness. This skill covers the
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Designs, implements, and audits WCAG 2.2 AA accessible UIs for Web (ARIA/HTML5), iOS (SwiftUI traits), and Android (Compose semantics). Audits code for compliance gaps.
Modern Python typing leverages 3.10+ syntax for clarity and correctness. This skill covers the full type annotation system and Pydantic v2 model patterns used across Python projects.
list[str], dict[str, int], tuple[str, ...]X | None instead of Optional[X]X | Y instead of Union[X, Y]Protocol over abstract base classes for structural subtypingTYPE_CHECKING guards to break circular importsdef process_items(items: list[str], limit: int = 10) -> dict[str, int]:
return {item: len(item) for item in items[:limit]}
def find_user(user_id: int) -> User | None:
return db.get(user_id)
async def fetch_data(url: str, *, timeout: float = 30.0) -> bytes:
...
from typing import Final
MAX_RETRIES: Final = 3
active_connections: set[str] = set()
registry: dict[str, type] = {}
from typing import TypeVar
T = TypeVar("T")
K = TypeVar("K", bound=str)
def first(items: list[T]) -> T | None:
return items[0] if items else None
def get_by_key(mapping: dict[K, T], key: K, default: T) -> T:
return mapping.get(key, default)
from typing import Protocol, runtime_checkable
@runtime_checkable
class Renderable(Protocol):
def render(self) -> str: ...
class Widget:
def render(self) -> str:
return "<widget />"
def display(item: Renderable) -> None:
print(item.render())
# Widget satisfies Renderable without inheriting from it
display(Widget())
Pydantic v2 provides runtime validation with full type safety. Core patterns:
from pydantic import BaseModel, Field, field_validator
class CreateUserRequest(BaseModel):
name: str = Field(min_length=1, max_length=100)
email: str
age: int | None = None
@field_validator("email")
@classmethod
def validate_email(cls, v: str) -> str:
if "@" not in v:
raise ValueError("invalid email address")
return v.lower()
user = CreateUserRequest(name="Alice", email="Alice@Example.com")
user.model_dump() # -> {"name": "Alice", "email": "alice@example.com", "age": None}
user.model_dump(exclude_none=True) # -> {"name": "Alice", "email": "alice@example.com"}
user.model_dump_json() # -> JSON string
For comprehensive coverage of each topic area, consult: