# Ticketing Triage

> Dispatch-only wrapper around the Linear ticket triage node

- Skill: `omninode-ai/ticketing-triage` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add omninode-ai/ticketing-triage`
- Raw SKILL.md: https://api.skillmd.com/api/skills/omninode-ai/ticketing-triage/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: OmniNode-ai (https://skillmd.com/u/omninode-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/omninode-ai/ticketing-triage

---


# /onex:ticketing_triage — Linear Ticket Triage

**Skill ID**: `onex:ticketing_triage`
**Version**: 2.0.0
**Backing node**: `node_linear_triage`

## Changelog

- **2.0.0** — Thinned to dispatch-only shim. Delegates to node_linear_triage.
- **1.0.0** — Original inline skill with Phases 1-6 algorithm.

## What this skill does

Dispatches through `onex run-node node_linear_triage`. The node owns full triage
(status sweep, orphan detection, epic organization, plan sync). This shim contains
no inline Linear query or mutation logic.

**Announce at start:** "I'm using the ticketing-triage skill to assess ticket health."

## Dispatch

```bash
uv run onex run-node node_linear_triage --input '{
  "threshold_days": 14,
  "dry_run": false
}'
```

Pass `threshold_days` and `dry_run` through from skill invocation args. On non-zero exits,
surface the `SkillRoutingError` JSON envelope directly; do not produce prose.

## Wire Schema

Contract target: `node_linear_triage`

Command topic: `onex.cmd.omnimarket.linear-triage-start.v1`

Terminal event: `onex.evt.omnimarket.linear-triage-completed.v1`

## Composable Output

The `TriageReport` is written to `$ONEX_STATE_DIR/state/ticketing-triage/{run_id}.yaml`
by the backing node and the path is returned as output.

The `orphaned_tickets` list from the TriageReport is the input to `ticketing-epic-org`.

## Enumeration completeness

Regression guard: the backing node MUST enumerate **every** orphan in
`orphaned_tickets`; it must not cap, sample, truncate, or emit a "top N" subset.
Before publishing the report, `orphaned_tickets` list length MUST equal `summary.orphaned_tickets`.

## See Also

- `@_lib/contracts/helpers.md` — TicketContract, TriageReport schemas
- `ticketing-epic-org` skill — consumes orphaned_tickets from this report
- `linear-housekeeping` skill — orchestrates triage → epic-org → ticket-plan --sync
- `ticket-plan --sync` — uses triage output for MASTER_TICKET_PLAN.md sync

