From customer-support
Triage and prioritize a support ticket or customer issue. Use when a new ticket comes in and needs categorization, assigning P1-P4 priority, deciding which team should handle it, or checking whether it's a duplicate or known issue before routing.
How this skill is triggered — by the user, by Claude, or both
Slash command
/customer-support:ticket-triage <ticket or issue description><ticket or issue description>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
If you see unfamiliar placeholders or need to check which tools are connected, see CONNECTORS.md.
Categorize, prioritize, and route an incoming support ticket or customer issue. Produces a structured triage assessment with a suggested initial response.
Lark-native execution (depth core: LARK-PATTERNS, LARK-RECIPES, LARK-FUSION). The ticket queue lives in a Lark Base (P5, system-of-record) — there is no native ticket product, so read with
lark_base_searchand write/route withlark_base_record_upsert(dry_runfirst, P2). Keep Intercom (~~support platform) for the real ticket thread if its MCP is connected; otherwise the Base is the queue. Resolve the assigned agent/customer-success owner vialark_contact_search(P1). Surface the triage decision as an interactive card (lark_im_card_send, P4) with per-ticket Take / Escalate buttons rather than plain text. To scaffold the ticket Base, delegate tobase-deploy; for record/field ops delegate tolark-base.
/ticket-triage <ticket text, customer message, or issue description>
Examples:
/ticket-triage Customer says their dashboard has been showing a blank page since this morning/ticket-triage "I was charged twice for my subscription this month"/ticket-triage User can't connect their SSO — getting a 403 error on the callback URL/ticket-triage Feature request: they want to export reports as PDFRead the input and extract:
Using the category taxonomy and priority framework below:
Before routing, check available sources (project every read with jq, P3):
lark_base_search(base_token, table_id, search_fields:["title"], select_fields:["title","status","customer","priority"]). base_search REQUIRES search_fields and does NOT support jq — if field names are unknown, discover them via lark_api GET /open-apis/bitable/v1/apps/{base}/tables/{table}/fields; narrow with select_fields/limit.lark_doc_search(query="<symptom / exact error>", jq: ".data.results[] | {title, url}") for known issues / existing articles.lark_task_my(jq: ".data.items[]") and/or lark_base_search (pass search_fields; no jq) against the bug/feature table for an existing report.lark_im_search(query="<symptom>", jq: ".data.messages[]") for teammates who already hit this.Apply the duplicate detection process below.
Using the routing rules below, recommend which team or queue should handle this based on category and complexity.
## Triage: [One-line issue summary]
**Category:** [Primary] / [Secondary if applicable]
**Priority:** [P1-P4] — [Brief justification]
**Product area:** [Area/team]
### Issue Summary
[2-3 sentence summary of what the customer is experiencing]
### Key Details
- **Customer:** [Name/account if known]
- **Impact:** [Who and what is affected]
- **Workaround:** [Available / Not available / Unknown]
- **Related tickets:** [Links to similar issues if found]
- **Known issue:** [Yes — link / No / Checking]
### Routing Recommendation
**Route to:** [Team or queue]
**Why:** [Brief reasoning]
### Suggested Initial Response
[Draft first response to the customer — acknowledge the issue,
set expectations, provide workaround if available.
Use the auto-response templates below as a starting point.]
### Internal Notes
- [Any additional context for the agent picking this up]
- [Reproduction hints if it's a bug]
- [Escalation triggers to watch for]
Write the triage outcome to the ticket Lark Base (P5, source of truth) — lark_base_record_upsert(base_token, table_id, fields: {category, priority, product_area, route_to, status:"Triaged", owner:<open_id>}) with dry_run: true first (P2), then commit on confirm. Resolve owner via lark_contact_search (P1) before writing.
Then surface the triage as an interactive card (P4) in the support channel via lark_im_card_send — a colored header by priority (red P1, orange P2), then elements keyed by KIND: - md: / - item: rows for category + route + impact, and an - actions: footer whose buttons each carry a STRING value (or a url) — Take / Escalate / Draft reply. Validate with print_json: true, then dry_run: true, then send. Card YAML grammar lives in the lark-im skill (references/spec-reference.md) — delegate there for anything with branching buttons.
After presenting the triage:
/draft-response/customer-researchlark_base_search / lark_task_myAssign every ticket a primary category and optionally a secondary category:
| Category | Description | Signal Words |
|---|---|---|
| Bug | Product is behaving incorrectly or unexpectedly | Error, broken, crash, not working, unexpected, wrong, failing |
| How-to | Customer needs guidance on using the product | How do I, can I, where is, setting up, configure, help with |
| Feature request | Customer wants a capability that doesn't exist | Would be great if, wish I could, any plans to, requesting |
| Billing | Payment, subscription, invoice, or pricing issues | Charge, invoice, payment, subscription, refund, upgrade, downgrade |
| Account | Account access, permissions, settings, or user management | Login, password, access, permission, SSO, locked out, can't sign in |
| Integration | Issues connecting to third-party tools or APIs | API, webhook, integration, connect, OAuth, sync, third-party |
| Security | Security concerns, data access, or compliance questions | Data breach, unauthorized, compliance, GDPR, SOC 2, vulnerability |
| Data | Data quality, migration, import/export issues | Missing data, export, import, migration, incorrect data, duplicates |
| Performance | Speed, reliability, or availability issues | Slow, timeout, latency, down, unavailable, degraded |
Criteria: Production system down, data loss or corruption, security breach, all or most users affected.
SLA expectation: Respond within 1 hour. Continuous work until resolved or mitigated. Updates every 1-2 hours.
Criteria: Major feature broken, significant workflow blocked, many users affected, no workaround.
SLA expectation: Respond within 4 hours. Active investigation same day. Updates every 4 hours.
Criteria: Feature partially broken, workaround available, single user or small team affected.
SLA expectation: Respond within 1 business day. Resolution or update within 3 business days.
Criteria: Minor inconvenience, cosmetic issue, general question, feature request.
SLA expectation: Respond within 2 business days. Resolution at normal pace.
Automatically bump priority up when:
Route tickets based on category and complexity:
| Route to | When |
|---|---|
| Tier 1 (frontline support) | How-to questions, known issues with documented solutions, billing inquiries, password resets |
| Tier 2 (senior support) | Bugs requiring investigation, complex configuration, integration troubleshooting, account issues |
| Engineering | Confirmed bugs needing code fixes, infrastructure issues, performance degradation |
| Product | Feature requests with significant demand, design decisions, workflow gaps |
| Security | Data access concerns, vulnerability reports, compliance questions |
| Billing/Finance | Refund requests, contract disputes, complex billing adjustments |
Before creating a new ticket or routing, check for duplicates:
If a duplicate is found:
Never auto-send. Draft the customer reply via
lark_mail_draft_create(mail) so a human eyeballs it in the Mail UI first (P2); only send withlark_mail_send+confirm_send: trueafter confirmation. For an internal-channel reply uselark_im_send(or a card vialark_im_card_send). Resolve the recipient'sopen_idwithlark_contact_searchfirst (P1).
Thank you for reporting this. I can see how [specific impact]
would be disruptive for your work.
I've logged this as a [priority] issue and our team is
investigating. [If workaround exists: "In the meantime, you
can [workaround]."]
I'll update you within [SLA timeframe] with what we find.
Great question! [Direct answer or link to documentation]
[If more complex: "Let me walk you through the steps:"]
[Steps or guidance]
Let me know if that helps, or if you have any follow-up
questions.
Thank you for this suggestion — I can see why [capability]
would be valuable for your workflow.
I've documented this and shared it with our product team.
While I can't commit to a specific timeline, your feedback
directly informs our roadmap priorities.
[If alternative exists: "In the meantime, you might find
[alternative] helpful for achieving something similar."]
I understand billing issues need prompt attention. Let me
look into this for you.
[If straightforward: resolution details]
[If complex: "I'm reviewing your account now and will have
an answer for you within [timeframe]."]
Thank you for flagging this — we take security concerns
seriously and are reviewing this immediately.
I've escalated this to our security team for investigation.
We'll follow up with you within [timeframe] with our findings.
[If action is needed: "In the meantime, we recommend
[protective action]."]
npx claudepluginhub larkcowork/lark-cowork-plugins --plugin customer-supportCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.