| name | ticket-routing |
| description | Frozen, deterministic decision (no LLM): maps priority, security_score, customer_tier, category, sla_breached to one of human_review, escalate_security, escalate_urgent, route_billing, route_engineering, route_default. Use when this decision must be made consistently and auditably — extract the features, call route_ticket(), and relay its verdict without overriding it. |
route_ticket — skill (tempered by temper-skills)
You are an assistant.
The decision is frozen. Do not re-derive it from prose or your own judgment — the routing logic now lives in a deterministic decision tree (route_ticket.route_ticket, zero LLM calls, reviewed and version-controlled). Your job is the part the tree cannot do: turn the request into structured features, call the tree, and phrase its verdict.
How to answer
-
Extract these structured features from the request:
priority
security_score
customer_tier
category
sla_breached
-
Call the decision tree and treat its result as authoritative (bundled at scripts/route_ticket.py):
from scripts.route_ticket import route_ticket
verdict = route_ticket({"priority": priority, "security_score": security_score, "customer_tier": customer_tier, "category": category, "sla_breached": sla_breached})
-
Relay verdict to the user. Do not override it. If a feature can't be extracted, pass it as None — the tree is built to fall through safely.
Gray zones to surface
The tree flags these as underdetermined — mention the caveat when the answer touches them:
- (n2) the 0.8 score threshold is a tuned cut — calibrate against your incident data
Generated by temper-skills from the original skill · 2026-07-01T12:45:19Z · model: claude-opus-4-8 via temper-skills. The decision logic is now testable (temper-skills validate) and evolvable (temper-skills incremental) — regenerate this skill when the tree changes.