# Escalate If Unresolved

> Escalate any open ticket past its SLA to a human, preserving lineage.

- Skill: `jcaiagent7143-ui/escalate-if-unresolved` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jcaiagent7143-ui/escalate-if-unresolved`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jcaiagent7143-ui/escalate-if-unresolved/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: jcaiagent7143-ui (https://skillmd.com/u/jcaiagent7143-ui)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/jcaiagent7143-ui/escalate-if-unresolved

---


# Escalate if Unresolved

## Steps

1. Load the ticket. If `status != open` or `now() < sla_due_at`, return
   `{status: "no-op"}`.
2. **Pick the escalation channel**: Slack channel from `TOOLS.md`
   (`#support-escalations` by default).
3. **Send** the escalation message with: ticket id, originating
   conversation link, priority, time over SLA, summary, lineage.
4. **Update** the ticket: `status = "escalated"`, `escalated_at = now`,
   `escalated_to = <channel/user>`.
5. **Notify the user** in the original conversation thread: *"This is
   taking longer than our SLA — a human is now reviewing. Ticket
   `<id>`."* Honest, no hedging.

## Failure modes

- Escalating without notifying the user (they think they're forgotten).
- Re-escalating an already-escalated ticket on every cron tick.
- Losing lineage — the escalation message must include the link back to
  the original conversation.

