Support Ticket Triager Skill
Classify an incoming support ticket and draft a first-touch response — for human review before sending. Cuts the time-to-first-response from hours to seconds and gives the support agent a strong starting draft instead of a blank text box.
The Problem
The first response on a ticket is the highest-leverage interaction in support. It sets expectations, defuses frustration, and often resolves the issue if it's a simple one. But it's also the slowest because everyone is busy. A drafted response in the inbox the moment a ticket arrives means agents review-and-send instead of read-and-write.
How It Works
- A scheduled job polls your support tool's API for new tickets (Zendesk, Freshdesk, HubSpot, GitHub Issues, etc.) — or a webhook drops them into a folder
- The
support-ticket-triagerskill classifies and drafts - The triage output is posted back to the ticket as an internal comment for the agent to review and either send-as-is, edit, or replace
Setup
- Install this skill
- Create an
httpcredential for your support tool's API - Optional: prepare a small knowledge base text file with FAQ entries — pass its contents in the skill input
- Use the YAML below; schedule for every 5-15 minutes (or wire to a webhook)
Example YAML Job
name: support-ticket-triage
version: 1.0.0
description: Triage new support tickets and post draft responses
notifications:
- userNames: [intouch]
alertOnError: true
tasks:
- name: fetch-new-tickets
tool: http
credentialName: zendesk
properties:
method: GET
url: "https://yourorg.zendesk.com/api/v2/tickets.json?status=new&sort_by=created_at&sort_order=desc&per_page=10"
headers:
Accept: "application/json"
- name: triage
tool: skill
properties:
skillName: support-ticket-triager
input: |
knowledgeBase: |
- Refunds: customers can self-serve refunds within 30 days
in their account settings
- Login issues: 90% of "can't log in" tickets are a forgotten
password — direct to the reset flow
- API rate limits: 1000 req/min on Pro, 100 on Free
tickets:
{{fetch-new-tickets.responseBody}}
- name: post-internal-comment
tool: http
credentialName: zendesk
properties:
method: PUT
url: "https://yourorg.zendesk.com/api/v2/tickets/${TICKET_ID}.json"
headers:
Content-Type: "application/json"
body: |
{
"ticket": {
"comment": {
"body": "{{triage.answer}}",
"public": false
}
}
}
Note: a real implementation needs a per-ticket loop (split tickets out of the JSON, call triage per ticket, post back per ticket). Use a
runtimeenvtask to iterate, or split into multiple jobs. The example above shows the shape — production wiring depends on your support tool.
Customization
- Auto-resolve simple tickets — for high-confidence categories (P3 + matches knowledge base), auto-send instead of drafting; reserve human review for medium/high priority
- Per-product-area triage — pass
productAreasto constrain categories to your team's vocabulary - Sentiment routing — for "Hostile" sentiment, bypass the draft and page the on-call manager directly
- Knowledge base from your docs — periodically dump your help-center articles into a text file and pass that as
knowledgeBase(large but pays for itself in answer accuracy)
Safety notes
- This skill is for DRAFTING, not auto-replying. The SKILL.md explicitly tells the AI never to commit to actions it cannot verify (refunds, account changes). The agent reviews and decides
- For hostile or legal-tinged tickets, the skill refuses to draft a casual response and escalates instead — that behavior is in the rules and worth keeping
- Test with a sample of historical tickets before pointing it at production volume
Cost
- AI assistant: ~$0.01 per ticket with Claude Sonnet (synthesis matters here)
- 1000 tickets/month: ~$10/month — pennies vs the hours of agent time saved