ワンクリックで
python-dev
Python development. Use for Python, FastAPI, Pydantic, asyncpg, pytest, pandas, SQLAlchemy.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Python development. Use for Python, FastAPI, Pydantic, asyncpg, pytest, pandas, SQLAlchemy.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Temporary inboxes for agent signup QA — create disposable addresses, wait for verification email, extract OTP or magic links. Use when automating signup, login, or email verification without parsing HTML manually.
Spin up isolated sandboxes ("boxes") for coding agents, run them in parallel, queue background runs with -i, and push commits safely through the host relay. Use when the user wants to run Claude Code / Codex / OpenCode in a sandbox, start more boxes, attach to a running box, or otherwise operate the `agentbox` CLI on their laptop.
Use when building an HTTP val — a web endpoint, API route, webhook receiver, or any val that responds to HTTP requests. Covers the handler signature, Hono usage, the endpoint URL, CORS behavior, redirects, and Val Town-specific limitations.
Use when creating a new val and choosing which starter to fork. Covers the catalog of official starter templates, which project shape each one fits, and when forking an existing val is the better starting point.
Switch coding-agent accounts on a usage/rate limit, routed by host and agent.
Use Agent Mail from Codex for file leases, notifications, inboxes, and conflict prevention.
| name | python-dev |
| description | Python development. Use for Python, FastAPI, Pydantic, asyncpg, pytest, pandas, SQLAlchemy. |
| user-invocable | true |
| allowed-tools | Glob, Read, Grep, Bash, Task, Skill, Edit, Write, AskUserQuestion |
Announce: "I'm using the python-dev skill. Following the 4-phase workflow."
You MUST read workflow.md NOW and follow ALL 4 phases defined there. The sections below provide Python-specific inputs for each phase.
Read patterns.md during Phase 1.
If you lost workflow.md from context: Re-read ../../shared/workflow.md NOW before continuing.
WORKFLOW STATE Verification line: pytest tests/ -x -q, ruff check, ruff format --check
Phase 3 Tier A commands:
pytest tests/ -x -q — default suite (unit + golden); excludes e2e and integration markerspytest tests/ -x -q -m e2e — e2e replay tests (no DB)pytest tests/ -x -q -m integration — integration tests (requires real DB)pytest tests/ -x -q -m '' — everythingruff check . — lintingruff format --check . — formattingpre-commit run --files <touched> — full hook chain (ruff + ruff-format + check-toml/yaml/merge-conflict + commitizen)Phase 3 Tier B additional MCP verifications:
app/model/<domain>/{models.py, requests.py, responses.py}; cross-cutting types in model/common/. Separate *Request from *Response; never merge. When a response carries both DB-mapped fields AND computed/Python-only fields, split into a *DbRow base (SELECT columns only) + a *Model subclass that adds enrichment and @computed_field properties. Query builders and aggregation utilities receive the DB-row base. Composition over deep inheritance.BaseSettings hierarchy, SecretStr for sensitive values, @lru_cache(maxsize=1) on the get_settings accessor. Tests that mutate env call get_settings.cache_clear().Exception handler in create_app + a per-domain-error handler in app/exception_handlers.py. Domain errors raised straight from service/repository; never wrapped in HTTPException. Handler detail strings hardcoded — never str(exc).except asyncio.CancelledError: raise separately from except Exception. Bounded asyncio.Queue for background work. asyncio.gather for independent queries. Heavy SDK clients constructed once at lifespan; blocking calls wrapped in asyncio.to_thread at adapter seams.patterns.mdpatterns.md.pytest tests/ -x -q.Exception handler in create_app; never per-endpoint try / except → HTTPException.TestClient(app, raise_server_exceptions=False) for any test that exercises the global handler.Add these to the shared workflow's verification checklist:
list[str] / dict[str, int], PEP 604 str | None; no from __future__ import annotations)from typing import List, Dict, Optional — use built-insBaseSettings for configuration; SecretStr for sensitive values*DbRow base + *Model subclass where DB-mapped and computed fields coexistjson_schema_extra used ONLY for OpenAPI examples — never for internal flagsException handler + per-domain handlers in app/exception_handlers.py; routes/services raise domain errors, never HTTPExceptionstr(exc) to clientsexcept asyncio.CancelledError re-raised; never swallowed in except BaseException@lru_cache(maxsize=1) on get_settings; tests call cache_clear() after env mutationsasyncio.to_thread at adapter seamsasyncpg.Record$1, $2) — no f-string interpolation of user inputasyncio.gather)IN (subquery) in one round tripasyncio_mode="auto" in pyproject.toml; markers golden, e2e, integrationTestClient(app, raise_server_exceptions=False) for tests that exercise the global handlerMagicMock(spec=Class) + AsyncMock for async methods; autouse fixture clears app.dependency_overridesiterrows()ruff check . passes; ruff format --check . passespytest tests/ -x -q passes (or alternative verification documented)