首頁 / 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 個檔案