From coding-agent
Python expertise — patterns for building APIs and server-side logic using FastAPI, Django, or Flask. Covers type hints, async Python, testing with pytest, and Python packaging.
npx claudepluginhub devjarus/coding-agentThis skill uses the workspace's default tool permissions.
Expert Python backend engineering patterns for building clean, well-typed, production-grade APIs and services. Idiomatic Python that passes mypy strict checks, is thoroughly tested with pytest, and follows modern packaging conventions.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Expert Python backend engineering patterns for building clean, well-typed, production-grade APIs and services. Idiomatic Python that passes mypy strict checks, is thoroughly tested with pytest, and follows modern packaging conventions.
Frameworks
Type System
mypy --strict clean: no Any, no untyped functions, proper use of Optional, Union, Literal, TypeVar, Protocolpydantic-settings), and serializationTypedDict for structured dicts; dataclasses or Pydantic for richer modelsAsync Python
asyncio, async def, await, asyncio.gather, asyncio.TaskGroup (3.11+)asyncpg, databases, SQLAlchemy async enginehttpx.AsyncClient for async HTTP calls; proper session lifecycle managementasyncio.to_thread when necessaryData & Persistence
select(), async sessions), Alembic for migrationsDepends, Django middleware, Flask g)Testing
conftest.py for shared fixtures (DB sessions, test clients, factories)pytest-asyncio for async tests; httpx.AsyncClient or TestClient for API testsObservability
structlog or python-json-logger — include request_id, user_id, service namepydantic-settings — never hardcode secretsType Hints Everywhere
from typing import Optional
from pydantic import BaseModel
class UserCreate(BaseModel):
email: str
name: str
role: Optional[str] = None
class UserResponse(BaseModel):
id: int
email: str
name: str
model_config = {"from_attributes": True}
Dependency Injection (FastAPI)
from fastapi import Depends
from sqlalchemy.ext.asyncio import AsyncSession
async def get_db() -> AsyncGenerator[AsyncSession, None]:
async with async_session() as session:
yield session
@router.post("/users", response_model=UserResponse, status_code=201)
async def create_user(
body: UserCreate,
db: AsyncSession = Depends(get_db),
) -> UserResponse:
...
Structured Error Responses
Return { "error": { "code": ..., "message": ..., "details": ... } } consistently. Use framework exception handlers — never leak tracebacks to clients.
Virtual Environments Always
Every project uses a virtual environment (venv, poetry, or uv). Never install packages globally. Record all dependencies in pyproject.toml.
pytest Fixtures in conftest.py
# conftest.py
import pytest
from httpx import AsyncClient
from app.main import app
@pytest.fixture
async def client() -> AsyncGenerator[AsyncClient, None]:
async with AsyncClient(app=app, base_url="http://test") as ac:
yield ac
Structured Logging
import structlog
logger = structlog.get_logger()
logger.info("user_created", user_id=user.id, email=user.email)
any is not acceptable. If you must use Any, add a comment explaining why.black for formatting, isort for import ordering, ruff or flake8 for linting. Code must pass the project's configured linters.Apply these skills during your work:
conftest.pypydantic-settings as the single config module (CFG-01); read all values from environment variables, never hardcode secrets or URLshttpx.AsyncClient or TestClient for API tests; run against a test database with proper fixtures, not production datapyproject.toml for dependencies and scripts.pytest (or the project's test command) and ensure all tests pass.mypy and ruff (or flake8/black) and fix any issues.