The Job
The Python skill reviews the cost of dynamic behavior: implicit schemas, broad dictionaries, swallowed errors, mutable globals, async drift, and scripts that quietly became production systems.
API clients, data pipelines, async workers, CLI scripts, import jobs, and glue code around external systems.
Signals
Implicit schemas
Dictionaries and JSON payloads crossing core paths without typed models, validation, or clear ownership.
Mutable shared state
Module globals, caches, monkeypatches, and fixtures that make tests or workers depend on execution order.
Swallowed failures
Broad except, logging-only handlers, and fallback paths that turn broken inputs into stale output.
Async drift
Missing timeouts, cancellation rules, backpressure, retries, and cleanup for concurrent work.
Example Findings
P1 stale data path
The importer catches all exceptions and returns the previous cache, so failed input looks successful.
P2 implicit payload shape
A dict from an external API is used across three modules without validation or a named schema.
P2 async cleanup missing
Tasks are spawned without cancellation handling, so shutdown can leave work half-written.
Review Prompt
Review this diff with the Vølven Python debt skill.
Focus on implicit schemas, mutable globals, swallowed exceptions,
async failure paths, data pipeline contracts, and mock-heavy tests.
Ignore Ruff, mypy, pyright, Black, and normal test failures.
Findings first with evidence and smallest useful fix.