Routing rules

Updated Aug 23, 2026

The router asks a short question list and resolves to a single skill:

  • Typing or public-surface questionpython-types-and-apis.
  • Exception or logging questionpython-errors-and-logging.
  • Decorator, descriptor, context manager, or metaclasspython-abstractions.
  • Iterator or generator refactorpython-iterators-and-generators.
  • Container choice (msgspec, dataclass, TypedDict)python-data-shapes.
  • Concurrency or subinterpreter questionpython-concurrency.
  • Named test, finite parameter table, fixture, or pluginpython-testing.
  • Cheap invariant over a broad input spacehypothesis.
  • Verification escalation or adversary selectionpython-verification, then one primary deep dive from hypothesis, crosshair, or mutmut.
  • Dead code, clones, profilingpython-quality-tools.
  • Ruff configuration, defaults, suppression, or upgraderuff-016.

Pairing rules:

  • Web or worker boundaries usually pair python-errors-and-logging with python-concurrency or python-data-shapes.
  • Library API work usually pairs python-types-and-apis with python-data-shapes (data-shaped surface) or python-abstractions (behaviour-shaped surface).
  • A clear lightweight invariant goes straight to hypothesis. python-verification chooses an escalation path when the right adversary is unclear.
  • mutmut may pair with any testing style because it audits the suite rather than generating production inputs.