首页 / Skills / 开发提效 / 技能创作器 Skill Creator
开发提效

技能创作器 Skill Creator

AnthropicApache-2.0Skill 语言: 英文
协议已核对含脚本
演示真实运行记录 · claude-sonnet-5-5 · 2026年10月
I keep pasting messy customer-support email threads into Claude and asking for a summary plus next steps. Please use the skill-creator skill to turn that into a reusable skill: go through the intent-capture step with what I've told you (make reasonable assumptions instead of asking me questions), then write the full SKILL.md draft and 3 realistic test prompts. No file tools are available, so print everything in your reply.
Skill: skill-creator

Skill draft: support-thread-summarizer

I haven't run any of this. There's no file access here, so the skill-creator's workspace, subagent runs and eval viewer steps are all still to do.

1. Intent capture

You didn't answer these questions, so I assumed the answers. Correct anything that's wrong.

Question Assumption
What should the skill do? Turn a pasted, messy customer-support email thread into a short summary and a prioritized list of next steps.
When should it trigger? You paste a thread with quoted replies, signatures, forwards or disclaimers. You say things like "summarize this", "what's going on here", "what do I need to do", or "next steps". It should trigger even if you only paste the thread with no instructions.
Who are you in the thread? Usually the support or account person who has to act next, not the customer. The skill assumes this unless the thread says otherwise.
Output format Fixed, scannable sections: one-line status, a summary, a timeline, open questions, next steps (with owner and urgency), and a draft reply only if asked.
Edge cases Duplicate quoted text, out-of-order messages, multiple people on the customer side, internal notes mixed with customer-facing text, missing context, angry tone, and legal or refund commitments made by someone else.
Should it have tests? Yes. The output has a checkable structure and a checkable correctness core (who owes what, and by when), so 3 prompts with assertions are worth writing.
Dependencies None. It works on pasted text only.

2. SKILL.md

---
name: support-thread-summarizer
description: Summarize a messy customer-support email thread and produce prioritized next steps. Use this whenever the user pastes an email chain, forwarded thread, ticket export, or a block of back-and-forth messages with a customer and wants a summary, status, "what's going on", "what do I need to do", action items, or a reply plan. Trigger even if the user only pastes the thread with no instructions, or says things like "catch me up on this", "TL;DR this", or "what's the next move". Also use for escalation handoffs and account-review prep built from support emails.
---

# Support Thread Summarizer

Support threads are hard to read. They carry the same quoted text five times, signatures and legal disclaimers, forwarded chains, replies out of order, and several people on each side. The reader needs to know three things fast: what happened, where things stand, and what to do next. Your job is to dig that out accurately so they don't have to reread the thread.

## Working assumptions

- The reader is on the support or account side and owns the next move. If the thread or the user says otherwise, adapt.
- The reader may not have seen the thread. Don't assume context beyond what's pasted.
- Accuracy matters more than polish. A wrong date, a missed commitment, or an invented fact causes real problems with a customer. Only report what the thread supports.

## Process

1. **Reconstruct the thread.** Ignore repeated quoted text, signatures, disclaimers, and "Sent from my iPhone" noise. Put the messages in chronological order using their timestamps, not the paste order. Forwarded threads often arrive newest-first or scrambled.
2. **Identify people and roles.** Note who is the customer, who is internal, and who is a third party. Use names and roles, not "the sender".
3. **Extract the facts.** Collect the core problem, what has been tried, what has been promised, by whom, and by when. Commitments and deadlines are the highest-value details. Missing one is the costliest mistake.
4. **Judge the current state.** Work out whose court the ball is in, how long it has been waiting, and the customer's tone (calm, frustrated, threatening to leave, or legal or press language).
5. **Derive next steps.** Each step needs an owner, a concrete action, and an urgency level. Order them by urgency and by the risk of not doing them.

## Output format

Use this structure so the output scans the same way every time. Skip a section only if it is truly empty, and say so in a few words rather than inventing content.

```
**Status:** <one line: issue, current state, whose move it is>

**Summary**
<3-5 sentences: what the customer wants, what went wrong, what has been done>

**Timeline**
- <date/time>: <who> — <what happened>   (only the events that matter)

**Commitments & deadlines**
- <who promised what, to whom, by when>

**Open questions**
- <things unanswered or unclear in the thread>

**Next steps**
1. [Urgent|Soon|Later] <owner>: <specific action>  — <why, if not obvious>

**Risks / flags**
- <churn risk, legal or refund language, SLA breach, conflicting info, anything sensitive>
```

Order the next steps by urgency, then by customer impact. Start each step with a verb. "Reply to Dana confirming the Thursday refund" is useful. "Follow up" isn't.

## Judgment calls

- **Missing or ambiguous information:** Say what's unknown and how it affects the next steps. Don't guess. For example, write "The thread doesn't say whether the refund was processed. Check billing before replying."
- **Conflicting statements:** Report both and name who said each. Make resolving the conflict a next step.
- **Dates:** Convert relative dates ("tomorrow", "end of week") to absolute dates using the email's timestamp when you can. If the timestamp is missing, keep the original wording and say so.
- **Internal and customer-facing text mixed together:** Label which parts are internal notes. Warn before suggesting anything that would expose internal comments to the customer.
- **Sensitive content:** Put legal threats, chargeback or cancellation talk, security or privacy incidents, and executive escalations in Risks / flags and make them the first next step. State the facts neutrally and don't speculate about intent.
- **Very long threads:** Keep the summary short regardless of thread length. Detail belongs in the timeline, and only for events that change what happens next.
- **Draft replies:** Write one only when asked, or when the user's message clearly implies it ("what should I say?"). Otherwise end with an offer in one line. A reply that makes new promises can create commitments the user didn't choose.

## Tone

Be plain and neutral. Don't add commentary on how the customer or colleagues behaved beyond what is needed to judge risk. Keep the whole output short enough to read in under a minute for typical threads.

3. Test prompts

These are written the way you'd actually paste them. I'd save them to evals/evals.json once files are available.

{
  "skill_name": "support-thread-summarizer",
  "evals": [
    {
      "id": 1,
      "eval_name": "scrambled-billing-thread-with-deadline",
      "prompt": "can you summarize this and tell me what i need to do. i just got put on this account\n\n---------- Forwarded message ---------\nFrom: Marcus Lee <[email protected]>\nDate: Thu, Mar 13, 2025 at 4:12 PM\nSubject: Re: Re: Double charged for Feb??\nTo: Support <[email protected]>\n\nStill nothing?? It's been a week. I was told it'd be fixed by Monday. If I don't see the $249 back by Friday I'm disputing it with my bank.\n\nMarcus\n\n> On Mon, Mar 10, 2025 at 9:03 AM Priya (Support) wrote:\n> Hi Marcus, I've escalated to billing and they said the duplicate will be reversed within 3 business days. Sorry again!\n>\n> > On Fri, Mar 7, 2025 at 2:44 PM Marcus Lee wrote:\n> > I was charged twice for February, $249 each, invoice INV-20931 and INV-20977. Please fix.\n\n--\nPriya's note (internal): billing says the reversal needs a manager approval and nobody has approved it yet\n\nCONFIDENTIALITY NOTICE: This email is intended only for the addressee...",
      "expected_output": "Chronological summary. Flags the Friday bank-dispute deadline, the missed 'by Monday' promise, the $249 amount and both invoice numbers. Notes that the reversal is stuck waiting on manager approval, labels that as internal, and makes getting approval the first urgent step. Does not draft a reply unprompted.",
      "files": []
    },
    {
      "id": 2,
      "eval_name": "multi-party-bug-thread-conflicting-info",
      "prompt": "Catch me up on this before my 2pm call with them.\n\nFrom: Aisha Rahman (Northwind Logistics)\nSent: Tuesday, June 3, 2025 10:15 AM\nSubject: RE: CSV export failing\nWe're on the Enterprise plan and the export has been failing since the update. Our ops lead Tom is cc'd. This is blocking our month-end reports.\n\nFrom: Dev Patel (Support)\nSent: Tuesday, June 3, 2025 11:02 AM\nHi Aisha, sorry about this. Engineering says the export bug was fixed in v4.2.1, which went out last Thursday. Can you confirm you're on that version?\n\nFrom: Tom Becker (Northwind Logistics)\nSent: Tuesday, June 3, 2025 11:40 AM\nWe're on 4.2.1. Still broken. Aisha was told by someone on your side last week that it'd be fixed by now and that we'd get a credit for the downtime. Nobody ever followed up on the credit.\n\nFrom: Dev Patel (Support)\nSent: Tuesday, June 3, 2025 12:30 PM\nTom, I don't see any record of a credit being promised. Looking into the 4.2.1 issue with eng now.\n\nFrom: Aisha Rahman\nSent: Tuesday, June 3, 2025 1:05 PM\nThis is the third time we've had to chase. Please have your manager join the call.",
      "expected_output": "Identifies Aisha and Tom as customer-side and Dev as internal. Surfaces the conflict: Dev says 4.2.1 fixes it, Tom says it's still broken on 4.2.1. Flags the disputed credit promise as unverified (no record) and as a risk. Notes the manager request and the 2pm call as time-sensitive. Next steps include checking with eng, checking the credit history, and arranging for a manager to join.",
      "files": []
    },
    {
      "id": 3,
      "eval_name": "long-vague-thread-missing-info-legal-language",
      "prompt": "tldr this thread pls, and tell me whats next. no idea who half these people are\n\nRe: Re: Fwd: Fwd: contract renewal / data issue\n\n[Jan 20] Chen Wei (Halvorsen & Co): Our team found that some of our records from 2023 appear to be missing from the portal. We need them for an audit.\n[Jan 21] Sam (our CSM): Thanks Chen, looping in the data team.\n[Jan 27] Chen Wei: Any update? Our renewal is coming up and my director is asking questions.\n[Jan 28] Rohan (Data team, internal only): fwiw I think the 2023 records got archived in the October migration. Not sure if they can be restored, need to check with infra. Don't tell the customer this yet.\n[Feb 3] Chen Wei: I've now been told by our legal counsel that if we can't get these records by Feb 14 we will have to treat this as a breach of our data retention agreement and reconsider the renewal.\n[Feb 4] Sam: Chen, we're working on it, will update you shortly.\n\nSent from my iPhone",
      "expected_output": "Short summary with a timeline in order. Flags the Feb 14 deadline and the legal/breach and renewal-at-risk language as the top risk and first next step. Clearly marks Rohan's note as internal and instructs not to share it with the customer as written. States that restorability is unknown, with the infra check as an explicit next step. Notes the gap since Jan 28 and that the customer has had no substantive answer. Does not invent a resolution.",
      "files": []
    }
  ]
}

4. What I'd check on the outputs

I'd draft these assertions once outputs exist:

  • Eval 1 should include Friday, the manager approval blocker, and the internal label.
  • Eval 2 should name the version conflict and mark the credit as unverified.
  • Eval 3 should include Feb 14, the "don't tell the customer" handling, and no invented claim that the records can be restored.

5. Next steps in the skill-creator loop

  1. Save this as support-thread-summarizer/SKILL.md and the JSON as evals/evals.json.
  2. Run each prompt with and without the skill.
  3. Review the results in the viewer.
  4. Revise the skill and rerun.
  5. Run description optimization for triggering.

If you'd like, I can start step 1 once I have a file-capable session.

Real run recorded with claude-code / claude-sonnet-5-5. Output is shown verbatim, unmodified.

它做什么

这是一个用来写其他 Skill 的元 Skill。流程包括:梳理需求、起草 SKILL.md(名称、「积极一点」的触发描述、渐进式披露的结构)、写贴近真实的测试提示词,之后还有可选的「评测—改进」循环,配有评审页面和基准统计脚本。

工作方式

  1. 梳理需求:这个 Skill 要做什么、什么时候触发、输出什么格式、要不要测试。
  2. 按它的写作指南起草 SKILL.md:用祈使句、解释原因而不是堆砌 MUST、正文保持精简、细节放进 references/。
  3. 写 2-3 条测试提示词,保存到 evals/evals.json。
  4. 可选(需要有子代理和 shell 的环境):分别跑带 Skill 和不带 Skill 的对照,打分、汇总基准、在本地页面里评审,再迭代。
  5. 可选:用基于 claude -p 的训练 / 测试循环优化触发描述,并打包成 .skill 文件。

适合场景

  • 把你反复在做的工作流变成可复用的 Skill
  • 改进触发太少或太多的 Skill
  • 想要一套可重复的方法来测试自家 Skill 的团队
说明与风险

含脚本,运行有副作用。评测和描述优化脚本会启动大量 `claude -p` 子进程(默认最多 10 个并行、每条查询跑 3 次),消耗你的模型额度;`run_eval.py` 会在项目的 `.claude/commands/` 临时写文件。`generate_review.py` 会启动本地服务(默认端口 3117),并先结束占用该端口的任何进程。`run_loop.py` 会打开浏览器,评审页面会从 cdn.sheetjs.com 和 Google Fonts 加载资源。打包需要装有 PyYAML 的 Python。脚本只用本机的 `claude` 命令行和你指定的目录,我们没有发现上传数据的代码。试用中只用它起草(需求、SKILL.md、测试提示词),没有运行任何脚本或评审页面。

SKILL.md 原文包内共 18 个文件