What it does
Multi-Model Routing Doctor validates a team's model routing policy before they rely on it in production. Supply task definitions and model capability profiles (or use built-in defaults) and it checks privacy floors, tool-calling requirements, cost caps, context windows, and approved-model restrictions, returning per-task routing verdicts — primary model, fallback chain, rejected models with reasons.
Ships with sensible defaults covering local-small, tool-caller-pro, and reasoning-premium so teams can validate immediately without writing config files. Stdlib-only, no provider API calls, no model invocation, no network access, mutated_files: [].
Use cases
- Teams enabling multi-model routing who want to validate policy silently fails before production traffic reveals the gaps.
- Platform and SRE teams building routing infrastructure who need evidence the policy handles privacy, cost, and fallback cases correctly.
- Pre-production policy review gate for organisations balancing Claude, OpenAI, Gemini, Grok, local models, and ACP harnesses.
What it validates
- Privacy floors — tasks requiring data residency or private models are not routed to external providers
- Tool-calling requirements — tasks needing function calling are not routed to models that lack it
- Cost caps — tasks are not routed to models above their cost tier
- Context window requirements — long-context tasks are not silently truncated
- Approved-model restrictions — unapproved models are BLOCKED with reasons
- Fallback chain completeness — every primary has a valid fallback
Example usage
python3 scripts/routing_doctor.py --json
python3 scripts/routing_doctor.py --policy my-policy.json --tasks my-tasks.json --json
python3 scripts/routing_doctor.py --self-test --json
Example output
{
"ok": true,
"tasks_evaluated": 3,
"results": [
{"task": "summarise-doc", "primary": "local-small", "fallback": "tool-caller-pro", "status": "ROUTED"},
{"task": "tool-call-task", "primary": "tool-caller-pro", "fallback": null, "status": "ROUTED"},
{"task": "approved-only", "primary": null, "status": "BLOCKED", "reason": "no approved model meets requirements"}
],
"mutated_files": []
}
Requirements
- Python 3.10+ recommended; scripts use Python standard library only
- No API keys, model credentials, network access, or third-party packages required
- Bundled defaults work out of the box; custom policy/task JSON is optional
QA and security
This skill has been reviewed and cleared for release through the GetAgentIQ release pipeline with Viper QA (5/5 scenarios PASS including approved-only BLOCKED and malformed JSON handling) and Warlock security sign-off (2026-05-29). Stdlib-only, no provider API calls, no model invocation, no network access, mutated_files: [].