owner-routing
Internal process for the owner-router agent. Defines the step-by-step procedure for determining likely bug owners using strict 6-level routing precedence with staleness detection. Not user-invocable — loaded by the agent via its `skills: ["owner-routing"]` frontmatter property.
Allowed Tools
No tools specified
Provided by Plugin
x-bug-triage-plugin
Closed-loop bug triage: X complaints → clusters → repo evidence → owner routing → terminal review → filed issues
Installation
This skill is included in the x-bug-triage-plugin plugin:
/plugin install x-bug-triage-plugin@claude-code-plugins-plus
Click to copy
Instructions
Owner Routing Process
Step-by-step procedure for determining the most likely owner/team for each bug cluster using strict 6-level precedence with staleness detection and override memory.
Instructions
Step 1: Check Overrides First
For each cluster, check if a routing_override exists from a prior run:
- If found: use the override (confidence 1.0, source "routing_override"), skip precedence lookup
- Log the override application to audit
Step 2: Query Sources in Precedence Order
For each cluster without an override, query sources strictly in order:
| Level | Source | Tool | Base Confidence |
|---|---|---|---|
| 1 | Service owner | mcptriagelookupserviceowner |
1.0 |
| 2 | Oncall | mcptriagelookup_oncall |
0.9 |
| 3 | CODEOWNERS | mcptriageparse_codeowners |
0.8 |
| 4 | Recent assignees (30d) | mcptriagelookuprecentassignees |
0.6 |
| 5 | Recent committers (14d) | mcptriagelookuprecentcommitters |
0.5 |
| 6 | Fallback mapping | Config lookup | 0.3 |
Stop at the first level that returns a valid team or assignee.
Step 3: Apply Confidence Modifiers
Multiply each result's confidence by the precedence modifier from routing_config.
Step 4: Detect Staleness
Flag any routing signal older than the staleness threshold (default 30 days):
- Mark the result as stale with the number of days
- Reduce confidence accordingly
- Stale signals are still usable but should be noted in output
Step 5: Build Recommendation
Using lib.buildRoutingRecommendation():
- Rank valid results by level (lowest level = highest priority)
- Set top_recommendation to the best result
- If no valid results: set uncertainty=true with reason "Routing: uncertain — no routing signals available. Manual assignment required."
References
Load routing precedence rules:
!cat skills/x-bug-triage/references/routing-rules.md
Load escalation trigger definitions:
!cat skills/x-bug-triage/references/escalation-rules.md