Agent skill

Customer Support

by ericrisco in ericrisco/rsc-harness

A skill your agent uses when a live support ticket needs triage (intent, P1–P4 priority, SLA clock), an on-voice reply, not a raw template, de-escalation of an angry or churn-risk customer, or…

MITAuto-check passedSales & Support

Install Customer Support

skills CLI
$ npx skills add ericrisco/rsc-harness --skill customer-support -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ericrisco/rsc-harness customer-support --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/customer-support .claude/skills/customer-support && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
customer-support
GitHub stars
156
Token cost
~2.9k tokens
SKILL.md length
1,343 words
Files
4 (incl. references)
Skills in repo
229
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when a live support ticket needs triage (intent, P1–P4 priority, SLA clock), an on-voice reply, not a raw template, de-escalation of an angry or churn-risk customer, or…

  • Works in 4 steps: Acknowledge the feeling before the… → Take ownership in the first person. "I… → One concrete next step with a time.… → …
  • A live support ticket needs triage (intent
  • SKILL.md covers The triage-to-reply loop (the…, Priority, SLA, and the…, Macros done right and Tone and de-escalation, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Customer Support is an agent skill from ericrisco/rsc-harness. Use when a live support ticket needs triage (intent, P1–P4 priority, SLA clock), an on-voice reply, not a raw template, de-escalation of an angry or churn-risk customer, or escalation with a handoff packet. NOT the help-center article it links to (that is technical-writing), a win-back program (retention), or the auto-answer bot (chatbot).

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/macros-and-sla.md`).

It sits in Sales & Support, covering Customer support, Help center and FAQ content and Technical writing. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.

When your agent uses it

  • A live support ticket needs triage (intent
  • An on-voice reply
  • Not a raw template
  • De-escalation of an angry

Example prompts

  • “/customer-support”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Acknowledge the feeling before the facts. "Three days without a reply is not okay, and I get why you're frustrated" lands before any fix.
  2. Take ownership in the first person. "I dropped this" beats "the team was unable to." No passive voice to hide behind.
  3. One concrete next step with a time. Vague reassurance reads as a brush-off; "I'll have an answer by 3pm" is trust.
  4. Match their stakes, not their volume. Stay calm and specific. Do not argue, and never match anger with anger.

What it can do on your machine

Read from SKILL.md and the folder at commit 92fde8f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Customer Support loads about 2.9k tokens when it runs, and up to ~4.4k if it reads all its reference files. Until then it costs about 91 tokens; SKILL.md has 1,343 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,343 words, ~2,941 tokens.

Download SKILL.mdSave it as .claude/skills/customer-support/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
customer-support
description
Use when a live support ticket needs triage (intent, P1–P4 priority, SLA clock), an on-voice reply, not a raw template, de-escalation of an angry or churn-risk customer, or escalation with a handoff packet. NOT the help-center article it links to (that is `technical-writing`), a win-back program (`retention`), or the auto-answer bot (`chatbot`).
tags
customer-support, helpdesk, ticket-triage, sla, escalation, macros, de-escalation, csat
recommends
technical-writing, client-onboarding, retention, chatbot, rag, brand-voice
origin
risco

Customer Support — Run the Desk on a Live Ticket

You own the support desk as an operation: take an incoming ticket, assign priority and intent, start the SLA clock, draft the reply (macro or bespoke), enforce tone, and decide escalation with a clean handoff. The output is a triaged, answered ticket — human judgment, not a code artifact.

The triage-to-reply loop (the spine)

Run every ticket through these six steps in order. Skipping triage to "just reply fast" is how you send the wrong tone to a P1.

text
1 Classify intent   →  what does the customer actually want? (bug, how-to, refund, outage, rage)
2 Set priority      →  P1–P4 (impact × urgency × account tier)
3 Start SLA clock   →  pick the FRT target NOW, before drafting
4 Draft reply       →  macro skeleton or bespoke; one personalized line minimum
5 Tone / voice check →  on-brand, de-escalated, no banned phrases
6 Escalate or send  →  trigger met? hand off with the packet. else send + log.

Priority, SLA, and the escalation call

The branch is at step 6. This table sets priority, both SLA clocks, and whether the ticket leaves your hands:

Signal in the ticketPriorityFirst response (FRT)Resolution targetEscalate?
Production down / data loss / payments broken / many users blockedP1 critical15–30 minASAP, status updates every 30–60 minYes → tier-2/eng + the packet
Enterprise/VIP account, or "cancel / refund / lawyer / unacceptable"P1–P230 min – 1 hSame business dayYes → owner + tier-2
One user blocked, no workaroundP2 high1–2 hSame business dayOnly if unresolved past target
Question with a workaround, billing queryP3 medium4–8 h1–2 business daysNo, unless policy claim is unverifiable
FAQ, cosmetic, feature requestP4 low~1 business dayBest effortNo

Why pick the FRT target before drafting: the SLA decides your tone and length. A P1 gets a two-line acknowledgment in 20 minutes, not a polished essay in two hours.

Use 3–4 priority tiers, never a flat SLA. Too many tiers confuse the desk; too few don't differentiate the outage from the typo (Emailmeter / Hiver, 2026-06-02).

Acknowledge fast even when you cannot resolve fast. First-response and resolution are separate, linked SLAs: FRT sets the expectation, resolution is the outcome. 89% of customers feel valued by a fast first response even when the full fix takes longer (getMonetizely / Hiver, 2026-06-02). So: acknowledge inside the FRT window with an honest "here's what I know and when I'll update you," then resolve honestly. Never go silent to wait for a perfect answer.

Full P1–P4 matrix by channel (email/chat/phone) lives in references/macros-and-sla.md.

Macros done right

A macro with one genuinely personalized sentence raises CSAT; a verbatim template lowers it. Macros cut first-response time 30–50%, but sent raw they read as scripted (TextExpander / Gorgias, 2026-06-02). So every macro is a skeleton you finish, not a message you forward.

The 4-beat skeleton — every reply hits these in order:

text
1 Empathy / ack   →  name the problem in their words (1 line)
2 Answer          →  the fix, the status, or the next concrete step
3 Next step       →  what happens now + when they'll hear back
4 Close           →  human sign-off, door left open

Rules:

  • Fill dynamic fields, then add one bespoke line. Placeholders like {{first_name}}, {{order_id}}, {{ticket_id}}, {{date}} are table stakes — they are not personalization. The personalized line references this ticket's specifics.
  • Never send a macro with a visible {{placeholder}}. A leaked {{first_name}} is worse than no name.
  • One reply, one ask. If you need three things from the customer, you'll get one. Batch the request or sequence it.

Bad → Good (info-request macro):

text
Bad (verbatim template, robotic):
  Dear Customer, Thank you for contacting support. We have received your
  request. In order to assist you, please provide additional information.
  Your satisfaction is important to us. Regards, The Support Team.

Good (skeleton + one personalized line):
  Hi Marta — sorry the export keeps failing on you. To dig in I need one
  thing: the rough time you last hit "Export CSV" today (so I can pull the
  matching server log). I noticed your account is on the new billing plan,
  so this might be the same migration glitch we patched yesterday — I'll
  confirm and get back to you within 2 hours. — Eric

The Good version names the feature, gives a real next step + a time, and the "new billing plan / migration glitch" line proves a human read the ticket.

Full skeleton library (ack, info-request, resolved, refund, known-bug, outage, churn-save, escalation-handoff, feature-request decline, gentle-close) is in references/macros-and-sla.md.

Tone and de-escalation

Apply the brand voice; do not invent it here. The voice guide is authored by ../brand-voice/SKILL.md — this skill reads it and writes the reply against it.

For an angry or churn-risk ticket, de-escalation moves in order:

  1. Acknowledge the feeling before the facts. "Three days without a reply is not okay, and I get why you're frustrated" lands before any fix.
  2. Take ownership in the first person. "I dropped this" beats "the team was unable to." No passive voice to hide behind.
  3. One concrete next step with a time. Vague reassurance reads as a brush-off; "I'll have an answer by 3pm" is trust.
  4. Match their stakes, not their volume. Stay calm and specific. Do not argue, and never match anger with anger.

Banned phrases — they escalate, not de-escalate:

Never writeWhy it backfiresWrite instead
"Please calm down."Tells them their feeling is the problem."You're right to be frustrated — let's fix it."
"As I said / as previously mentioned"Scolds them for not reading.Just restate it plainly.
"Per our policy." (naked)Hides behind rules, no human.Explain the why, then the policy.
"Unfortunately, there's nothing we can do."Dead end, zero path.Offer the nearest thing you can do.
"This is a known issue." (alone)Sounds like "we knew and didn't care."Add the status + the ETA or the workaround.

Checklist before send: feeling acknowledged · first-person ownership · one timed next step · no banned phrase · no {{placeholder}} left.

De-escalating this ticket is the job here; running a win-back or renewal program is retention.

Show full SKILL.md (565 more words)Show less

Escalation

Escalate on explicit conditions, not vibes. Standard tiers: T1 frontline/common, T2 specialist/complex, T3 engineering or exec/critical (Kapture / Hiver, 2026-06-02). Hand off when any trigger fires:

  • Negative-language signals: "unacceptable", "cancel", "refund", "lawyer", "chargeback".
  • SLA at risk: the FRT or resolution target is about to blow.
  • Account tier: enterprise / VIP.
  • Confidence below threshold: if an assisted/AI draft is below ~85% confidence on a policy or price claim, hand to a human — don't guess (swiftflutter / Kapture, 2026-06-02).

Context must travel with the escalation. 70% of customers expect the next agent to know their history; making them repeat themselves adds 90–180 seconds per ticket (Forrester via Fini Labs, 2026-06-02). Never escalate a bare ticket link. Attach the handoff packet:

text
HANDOFF PACKET
- Customer + account tier:  Marta R. — Enterprise (VIP)
- Ticket / priority:        #4821 — P1
- One-line summary:         CSV export 500s since ~09:00; blocking month-end close.
- Steps already tried:      Confirmed not browser/cache; reproduced on staging.
- Customer sentiment:       Angry, has mentioned "cancel" once.
- Collected variables:      plan=new-billing, last_export=09:14, region=eu-west
- What I need from you:      Confirm if the billing-migration patch covers this.

The full escalation matrix (trigger → tier → owner) is in references/macros-and-sla.md.

FAQ and KB answering

Quote the KB or escalate — never invent policy, price, or an ETA. Hallucinated support answers produced 150+ documented legal cases by mid-2025 (cmswire / swiftflutter, 2026-06-02). The guardrail:

  • If the answer is in the KB, quote it and link the article. Don't paraphrase a refund window or a price from memory.
  • If it is not in the KB, say "let me confirm" and escalate — do not fill the gap with a plausible guess.
  • Deflection is bounded by KB quality. Triage-only without a strong KB deflects ~20–30%; well-organized KBs push assisted/auto resolution to 50–80% (Zendesk / Intercom / Fini Labs, 2026-06-02). A bad answer fast is worse than a correct answer slightly slower.

This skill consumes the KB; it never writes it. If the article the customer needs does not exist, flag the gap — authoring it is a technical-writing job, and building the autonomous auto-answer bot on top of the KB is chatbot + rag.

Metrics — what to watch and when

No single metric is sufficient; track the trio plus resolution rate (Armatis / Giva, 2026-06-02):

MetricWhat it measuresWhen to optimize for it
CSATTransactional satisfaction; positive ÷ total × 100After any single ticket; the default health signal
CESCustomer effort, 1–7 scaleWhen tickets resolve but customers still churn — friction is the problem
NPSRelationship; promoters − detractorsQuarterly / relationship level, not per-ticket
FCR / one-touchResolved in one interactionWhen repeat contacts are climbing — optimize the first reply

Rule of thumb: optimize FRT for reassurance (the customer feeling handled), FCR for effort (fewer round-trips). They pull in different directions — don't chase both blindly.

Anti-patterns

Anti-patternWhy it failsDo instead
Send the macro verbatimReads as scripted, drops CSATSkeleton + one bespoke line + filled fields
Polish for an hour, send nothingMisses the FRT windowAcknowledge fast, resolve honestly later
One flat SLA for every ticketOutage waits behind a typo3–4 priority tiers with distinct FRT targets
Argue with an angry customerVolume escalates, churn risesAcknowledge feeling, own it, give a timed step
Invent a policy / price / ETAHallucinated answers create real liabilityQuote the KB or say "let me confirm" + escalate
Escalate a bare ticket linkNext agent restarts, +90–180s, angerAttach the handoff packet every time
Leave a {{placeholder}} in the replyWorse than no name; signals automationVerify all fields filled before send
"Please calm down" / "as I said"Tells them their feeling is the faultDe-escalation moves; banned-phrase swaps
Promise a fix you can't verifyBreaks trust when it slipsPromise the next update time, not the fix
Chase NPS off a single ticketWrong altitude metricCSAT/FCR per ticket; NPS at relationship level

© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in skills/customer-support of ericrisco/rsc-harness.

  • SKILL.md
  • evals/README.md
  • evals/cases.yaml
  • references/macros-and-sla.md

Open the folder on GitHubat commit 92fde8f

Compare with similar skills

Customer Support next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Customer Support compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Customer Support this skillericrisco/rsc-harness156—~2.9kAutomated safety check: PassMIT
Okx Guideaiskillstore/marketplace4302 repos~835Automated safety check: PassMIT
Knowledge Managementw95/awesome-claude-corporate-skills235—~2.4kAutomated safety check: PassMIT
Msp QbrRTFM-IT-Services-LLC/msp-claude-skills112—~1.7kAutomated safety check: PassCustom licence
Help Center Article Generatorgooseworks-ai/goose-skills1.2k1 repos~2.1kAutomated safety check: PassMIT
Biz CRM Strategyasgard-ai-platform/skills241—~2.2kAutomated safety check: PassMIT

Similar skills

  • Okx Guide

    aiskillstore/marketplace

    Onchain OS onboarding and guide hub for first-time use, product introductions, OKX.AI, and customer-support intents.

    430 GitHub starsUsed in 2 repos~835 tokens
    Sales & SupportAuto-check passed
  • Knowledge Management

    w95/awesome-claude-corporate-skills

    Write and maintain knowledge base articles from resolved support issues.

    235 GitHub stars~2.4k tokensUpdated 7 mo ago
    Sales & SupportAuto-check passed
  • Msp Qbr

    RTFM-IT-Services-LLC/msp-claude-skills

    A skill your agent uses whenever preparing, running, or following up a client business review: "QBR", "quarterly review", "business review", "account review", "prep for the [client] meeting"…

    112 GitHub stars~1.7k tokensUpdated 5 days ago
    Sales & SupportAuto-check passed
  • Help Center Article Generator

    gooseworks-ai/goose-skills

    Take support ticket clusters, FAQ patterns, product documentation, or feature specs and generate structured help center articles with step-by-step instructions, screenshot placeholders…

    1.2k GitHub starsUsed in 1 repo~2.1k tokens
    Sales & SupportAuto-check passed
  • Biz CRM Strategy

    asgard-ai-platform/skills

    Customer relationship management strategy — integrated framework with six pillars: customer segmentation (RFM/CLV), journey orchestration (cross-channel), CDP technology stack, loyalty-program…

    241 GitHub stars~2.2k tokensUpdated 4 mo ago
    Sales & SupportAuto-check passed
  • 客服助手 - 专业的客户服务与支持体系专家。适用场景: (1) 客服话术设计与优化 (2) FAQ知识库构建与维护 (3) 客户问题分类与处理流程 (4) 投诉处理与升级机制 (5) 客户满意度分析与改进 (6) 客服培训材料编写 (7) 自动回复与机器人话术 触发关键词:客服话术、FAQ、客户投诉、客户满意度、知识库、客服培训、自动回复、工单处理、客户咨询、售后服务

    125 GitHub stars~861 tokensUpdated 7 mo ago
    Sales & SupportAuto-check passed

More from ericrisco/rsc-harness

All 229 skills in this repo
  • Ab Testing

    ericrisco/rsc-harness

    A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…

    156 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Accessibility

    ericrisco/rsc-harness

    A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…

    156 GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Ads

    ericrisco/rsc-harness

    A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…

    156 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Agent Eval

    ericrisco/rsc-harness

    A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…

    156 GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • AI Media

    ericrisco/rsc-harness

    A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…

    156 GitHub stars~3.3k tokensUpdated today
    Auto-check passed
  • Analytics

    ericrisco/rsc-harness

    A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.

    156 GitHub stars~2.8k tokensUpdated today
    Auto-check passed

Categories

Questions about Customer Support

What does Customer Support do?

A skill your agent uses when a live support ticket needs triage (intent, P1–P4 priority, SLA clock), an on-voice reply, not a raw template, de-escalation of an angry or churn-risk customer, or…. Customer Support is an agent skill from ericrisco/rsc-harness. Use when a live support ticket needs triage (intent, P1–P4 priority, SLA clock), an on-voice reply, not a raw template, de-escalation of an angry or churn-risk customer, or escalation with a handoff packet.

When should I use Customer Support?

Customer Support fits situations like: A live support ticket needs triage (intent; an on-voice reply; not a raw template; de-escalation of an angry.

How do I install Customer Support in Claude Code?

Run `npx skills add ericrisco/rsc-harness --skill customer-support -a claude-code`. Or copy the skill folder (skills/customer-support in ericrisco/rsc-harness) into .claude/skills/customer-support in your project. Claude Code loads it when a task matches its description.

How do I install Customer Support in Codex?

Run `npx skills add ericrisco/rsc-harness --skill customer-support -a codex`. Or copy the skill folder (skills/customer-support in ericrisco/rsc-harness) into .agents/skills/customer-support in your project. Codex loads it when a task matches its description.

Can I use Customer Support in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill customer-support -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/customer-support, .gemini/skills/customer-support, .github/skills/customer-support and .opencode/skills/customer-support in your project.

What does Customer Support need to run?

SKILL.md names no scripts, command-line tools or credentials: Customer Support is instructions for the agent only.

Does Customer Support access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Customer Support safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Customer Support use?

Customer Support is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Customer Support use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.4k tokens, read only when the agent opens those files.

What are the alternatives to Customer Support?

Skills that share tags, products or a category with Customer Support: Okx Guide (aiskillstore/marketplace, 430 stars), Knowledge Management (w95/awesome-claude-corporate-skills, 235 stars), Msp Qbr (RTFM-IT-Services-LLC/msp-claude-skills, 112 stars) and Help Center Article Generator (gooseworks-ai/goose-skills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Customer Support?

ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.

Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.