mcpbeat

Handle Complaint

anthropics/handle-complaint

Handles an incoming customer complaint end-to-end — pulls context, drafts a response, and suggests an operational fix. Accepts optional email or ticket ID argument.

762 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
23273
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/anthropics/knowledge-work-plugins --skill handle-complaint

What it tells the agent to use

found in the instruction text
WebFetch fetches pages from the network

The instruction itself

7 sections, as written by the author

Run the complaint resolution workflow by chaining two skills. Read the complaint, gather context, draft a response, and suggest a fix so it doesn't happen again.

Parse arguments:

  • EMAIL_OR_TICKET_ID (optional) — Gmail thread ID, HubSpot ticket ID, or "latest" to pull the most recent unresolved complaint. If omitted, ask the owner to paste the complaint text.

Step 1 — Load the complaint (ticket-deflector)

Using the ticket-deflector skill workflow:

  • If an ID was given: pull the full thread from Gmail or HubSpot.
  • If "latest": pull the most recent unresolved HubSpot ticket or Gmail thread tagged as complaint/support.
  • If neither: ask the owner to paste the complaint text directly.
  • Identify: customer name, order/account info, what they're upset about, what they're asking for.

Step 2 — Pull context

  • Search HubSpot for the customer's history: past purchases, prior complaints, deal stage, lifetime value.
  • Search PayPal for relevant transaction: order status, refund history, dispute status.
  • Summarize: "This is a {new/returning} customer, ${lifetime_value} in purchases, {0/N} prior complaints. Their current issue is {one sentence}."

Step 3 — Draft response (ticket-deflector)

Using the ticket-deflector skill workflow for tone-matched response:

  • Draft a reply matched to the severity and the customer's history:
  • First-time complainers with high LTV → empathetic, generous
  • Repeat complainers → professional, firm, solution-focused
  • Abusive tone → professional, brief, boundary-setting
  • Include: acknowledgment, explanation (if known), resolution offer, next step.
  • Present the draft to the owner. Do NOT send.

Step 4 — Suggest operational fix (customer-pulse)

  • Check if this complaint matches a known theme (from prior /customer-pulse-check runs or similar complaints in HubSpot).
  • If it's a pattern: "This is the {Nth} complaint about {issue} this month. Consider: {specific operational change}."
  • If it's isolated: "This looks like a one-off. No pattern detected."

Connector failures

If Gmail and HubSpot are both unreachable, ask the owner to paste the complaint text — the skill works with manual input. If PayPal is missing, skip transaction lookup and note "PayPal not connected — order status unavailable, working from complaint text only."

Approval gates

  • Never send a response without explicit owner approval. Drafts only.
  • Never issue refunds or credits automatically. Present the option; the owner decides.
  • Never close tickets or resolve disputes without owner confirmation.

Output

Present the customer context summary, the drafted response, and any pattern-based operational suggestion. Ask: "Want to send this response, edit it, or handle it differently?"

How to use it

Copy the folder

Take anthropics/handle-complaint from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.