skills/support-brief/SKILL.md
Turns an already-investigated customer issue into a short, non-technical engineering-to-CS brief: one natural message that leads with the finding (root cause, real scope, open question), ready to paste into Slack for the support team. Trigger: /support-brief, support brief, brief for support, resumen soporte.
npx skillsauth add fearovex/claude-config support-briefInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Transforms an already-investigated customer issue (root cause known, fix identified or applied) into a short, non-technical engineering-to-CS brief — one natural message, led by the finding, that you paste into Slack for the support team.
Triggers: /support-brief, support brief, brief for support, resumen soporte, brief for CS
Engineering investigations produce dense, technical artifacts (stack traces, logs, root-cause analyses, code references). Non-technical teammates handling the customer relationship need a much smaller artifact: what happened, who is affected, what we did about it, and what they should say next.
This skill is the bridge between those two audiences. It takes the technical investigation from the current conversation as input and produces the customer-facing summary as output. It does NOT investigate anything — the diagnosis must already exist in conversation context.
Verify before asserting — the overriding rule. A brief states ONLY what is
confirmed against real data (Stripe, logs, DB). If a cause was not verified,
write it AS an inference ("likely the bank is blocking the recurring charge"),
never as a fact. Real example: a brief said "genuine card problem" as fact; the
Stripe check showed transaction_not_allowed — the bank blocks the recurring
charge, the card is not dead. The verified version is both more precise and more
actionable. Only open with "I checked this in Stripe" when you actually did.
Confirm the conversation already contains:
If any of the three is missing, ask one focused question to fill the gap BEFORE producing the summary. Do not invent context.
Then ask: does this even warrant a brief? If the case was NOT reported by the customer AND does not affect them (e.g. an internal data field out of sync, invisible to the user), do NOT produce a per-customer message. Note it in the technical tracker and stop. A brief exists to inform support about something a customer feels — not to narrate an invisible internal cleanup.
Default audience: support / CX / ops. They will read this in Slack or forward it to the customer. They are not engineers. They answer each customer separately and decide their own next steps — the brief gives them INFORMATION, not instructions.
Implications:
Hard cap: 120 words in the summary body. One natural paragraph. No headers, no bullet lists, no sections — those turn a message into a form. If you can't fit it in one paragraph, you are including detail the CX teammate doesn't need.
Wrap the output in a fenced code block so the user can copy-paste cleanly. The block contains ONLY the summary text, no preamble or commentary.
Write ONE single message addressed directly to the CS teammate. Engineering and CS share full transparency, so this IS the message CS reads — there is no separate "what to tell the customer" line. CS decides for themselves what to relay. Write it as natural prose (not labeled fields).
Voice: first person by default. When the person writing the brief is the same person who investigated and fixed it, write "I" ("I checked this in Stripe", "I shipped a fix"). Only use "we" when a real team did the work. NEVER invent an "engineering team" / "the team will look into it" if no such team exists — that attributes the work to a subject that does not exist and breaks the brief's trust.
Lead with what the investigation ADDS, not with the symptom CS already has in the ticket. Order the message as:
If the brief mentions a bug, it MUST explain what the bug was — in plain language a non-technical reader can understand and relay. "There was a bug on our side" with no explanation is unacceptable. Describe the MECHANISM in terms of observable behavior, never function or file names: "when someone reactivated, the system turned off their old plan before confirming the new payment".
One brief per customer. If several customers share the same root cause but hit different outcomes, produce N individual briefs — one per account, adapted to what happened to THAT customer — because support answers each customer separately. A single group message is the anti-pattern here.
Only include facts relevant to THIS context. Omit anything CS wouldn't act on. Relevance beats completeness.
The brief delivers FACTS, at most a SOFT suggestion explicitly marked optional ("that's your call", "if you want, I can…"). NEVER a directive ("best next step is to…", "you should…", "make sure to…"). Support decides what to tell the customer. Transparency means sharing everything you found — it does NOT mean telling support what to do with it. Transparency ≠ instruction.
Informal English, like a quick Slack message to a teammate. Contractions allowed ("I've found", "it's erroring"). Calm and factual. No apologies in the body (that's CS's domain). No marketing gloss. No engineering jargon.
One fenced block. Inside it: one natural message in plain prose addressed to the CS teammate. No labels, no headers, no separate "for support" line. It opens with the finding, not the symptom.
Example (a retention discount went missing on the payments provider):
Heads up on [email protected]: the 50%-off discount we offer members during
cancellation has gone missing on the payments side, and that's what's erroring
out for anyone who reaches the discount-offer step, not just him. On his cancel
attempt the screen threw that error, so he assumed it didn't go through and
tried a few more times. I'm checking why it was removed and which discount
should be in place before I put it back. I still need to confirm whether his
subscription ended up canceled or is still active.
The fenced block is what gets pasted to CS. Everything outside it is for the engineer, not the CS team.
development
Parks the current Claude Code session before going to sleep. Analyzes the conversation, writes a handoff document to docs/handoffs/ in the current project, mirrors the same summary to engram tagged with the session ID, and prints the exact `claude --resume <id>` command for tomorrow. Zero interaction — runs end-to-end on a single invocation. Trigger: /night-park, night park, park session, me voy a dormir, guardar sesion.
testing
Interactive creator for a project feature: scaffolds the domain knowledge markdown at ai-context/features/<slug>.md AND the antenna skill at .claude/skills/<slug>/SKILL.md, both from the canonical templates. Also registers the antenna in the project's CLAUDE.md. Trigger: /feature-define <name>, define feature, documentar funcionalidad, nueva feature.
data-ai
Generates a short, non-technical, informal English summary of an already-investigated customer issue, ready to paste into Slack/email for support, CX, or ops teammates. Trigger: /customer-summary, customer summary, resumir customer issue, slack summary.
development
Zustand 5 state management patterns for React: stores, persistence, selectors, slices. Trigger: When managing global state in React, using Zustand, or implementing state slices.