The router asks a short question list and resolves to a single skill:
- Typing or public-surface question →
python-types-and-apis. - Exception or logging question →
python-errors-and-logging. - Decorator, descriptor, context manager, or metaclass →
python-abstractions. - Iterator or generator refactor →
python-iterators-and-generators. - Container choice (msgspec, dataclass, TypedDict) →
python-data-shapes. - Concurrency or subinterpreter question →
python-concurrency. - Named test, finite parameter table, fixture, or plugin →
python-testing. - Cheap invariant over a broad input space →
hypothesis. - Verification escalation or adversary selection →
python-verification, then one primary deep dive fromhypothesis,crosshair, ormutmut. - Dead code, clones, profiling →
python-quality-tools. - Ruff configuration, defaults, suppression, or upgrade →
ruff-016.
Pairing rules:
- Web or worker boundaries usually pair
python-errors-and-loggingwithpython-concurrencyorpython-data-shapes. - Library API work usually pairs
python-types-and-apiswithpython-data-shapes(data-shaped surface) orpython-abstractions(behaviour-shaped surface). - A clear lightweight invariant goes straight to
hypothesis.python-verificationchooses an escalation path when the right adversary is unclear. mutmutmay pair with any testing style because it audits the suite rather than generating production inputs.