AI Workshop Β· #3

Build Your Own Skills for ClaudeπŸ› οΈ

A 60-minute working session on building skills β€” for everyone who uses Claude.ai or Cowork.

Monday Β· Online
Hosted by Dogus Ural
Previously: the internal AI hub Β· Workshop #1 Β· Workshop #2 β†’
Contents

What we'll cover.

60 minutes, 6 parts. Click any line to jump to that section.

  1. What is a skill?

    Definition, why it matters, two kinds (task consistency vs workflow with MCP).

  2. Inside a skill.

    Folder structure, SKILL.md anatomy, the magic description line, optional folders.

  3. Get one. Share yours.

    Scopes, two paths to get a personal skill, two paths to share with your team.

  4. A real skill, under the hood.

    Case study: /salesforce-churn-check β€” architecture, snippets, output.

  5. The workflow, start to ship.

    Build β†’ smoke test β†’ peer review β†’ iterate β†’ distribute.

  6. What's next.

    internal org skills already live, thinking model, take-home.

02
Part 1

What is
a skill?πŸ’‘

A folder of instructions Claude reads when it's relevant. Nothing more.

Definition

A skill is a recipe card for Claude.

A folder you upload to Claude. It teaches Claude how to do one specific task β€” your team's report format, your brand voice, your weekly process β€” the way you want it done. Claude reads the recipe only when it's relevant.

The official definition: "A skill is a set of instructions β€” packaged as a simple folder β€” that teaches Claude how to handle specific tasks or workflows."

β€” Anthropic, The Complete Guide to Building Skills for Claude

04
Why this matters

Without a skill vs. with one.

Same task β€” checking the product idea board in YouTrack every Monday. Same data, same MCP. Different ask.

Without a skill

You, every Monday:

"Claude, use the YouTrack MCP to pull from our Product Ideas board (project PRD). Show me ideas in New status waiting to be reviewed, ideas rejected in the last 7 days, and ones accepted this week. Three numbers with one example each."

Re-typed every week.
Format drifts every time.

With a skill

You, every Monday:

"Claude, what's on the idea board this week?"

Claude reads the skill, queries YouTrack via MCP, returns the same three numbers in the same shape.
Same every Monday.

What the skill captures once: project ID, the three status buckets, the time window, the output format. Now anyone on the team can ask "idea board?" and get the same answer.
05
What people build

Two kinds of skills.

Almost every skill is one of these. Pick whichever matches what you actually do at work.

Type 1 β€” Task consistency

Same task. Same shape every time.

No external data needed. The skill teaches Claude your format, tone, conventions, brand voice β€” so the output is the same whether you ask on Monday or Friday, and whoever asks.

Examples: /brand-assets, /reprompt

Type 2 β€” Workflow with MCP

Connect β†’ process β†’ output.

The skill calls an MCP to pull live data (Salesforce, YouTrack, Notion), applies your team's process, and returns it in your shape. MCP at the start, the end, or both.

Examples: /salesforce-forecast, /salesforce-churn-check, the YouTrack idea-board skill

The kitchen analogy (from Anthropic's guide): MCP is the professional kitchen β€” tools, ingredients, equipment. The skill is the recipe β€” step-by-step instructions. MCP is what Claude can do. The skill is how Claude should do it. Type 2 bundles the two so a teammate just orders dinner.
06
Part 2

Inside
a skill.πŸ”

It's just a folder with one important file. Let's open it up.

Folder structure

A skill is a folder.

The folder name becomes the skill name. Inside, only one file is required: SKILL.md. Everything else is optional helpers β€” most skills don't need them.

weekly-status-update/ # Folder name in kebab-case
β”œβ”€β”€ SKILL.md required # Your instructions (the only file you need)
β”œβ”€β”€ scripts/ optional # Code Claude can run
β”œβ”€β”€ references/ optional # Long docs loaded only when needed
└── assets/ optional # Templates, logos, fonts
Naming rules that actually matter: folder name in kebab-case (lowercase, hyphens β€” no spaces, no capitals). The file inside must be spelled exactly SKILL.md β€” capitalised, with a dot.
If you add scripts or references: tell SKILL.md how to use them. "Before drafting, consult references/style-guide.md" or "Run scripts/validate.py to check the data". Without that pointer, the files just sit there β€” Claude won't reach for them on its own.
08
The one file you write

SKILL.md has two parts.

Part 1 β€” The label (frontmatter)

Between two --- markers. Tells Claude the skill's name and when to use it. This is the only part Claude always sees.

Part 2 β€” The instructions (a really good prompt)

Everything below the label. This is a prompt β€” the same kind you'd write in chat, just polished. Clear task, specific format, examples, constraints. Claude reads it only when the label says it's relevant.

---
name: weekly-status-update
description: Writes my weekly status update. Use when I ask for a
  "weekly update", "status report", or "Friday recap". Output is
  ~200 words in three sections (wins, blockers, next week).
---

# Weekly Status Update

Write the update in three sections...
The shortcut: a skill's body is essentially a really good prompt. Use our /reprompt skill to turn rough notes into a polished one β€” then paste the result in as your instructions. You already know how to write skills; you just didn't know it.
09
How Claude reads it

Claude reads it in three layers.

Each layer only loads if the layer above said it was relevant β€” which is why you can have many skills installed without slowing anything down.

01

The label (frontmatter)

The skill's name and a one-line description of when to use it.

Always loaded
02

The instructions (SKILL.md body)

The full how-to. Format, steps, examples, tone.

Loaded when relevant
03

Extras (linked files)

Scripts Claude can run, long references, sample outputs, templates.

Only if needed
10
β˜… The most important line

That's why the description is the magic.

Layer 1 is the only line Claude always has loaded. Get it right and your skill triggers reliably. Get it wrong and Claude never picks it up β€” even if the rest of the skill is perfect.

Too vague β€” won't trigger

"Helps with reports."

No trigger words. No specifics. Claude won't know when to use it.

Specific β€” triggers reliably

"Writes my weekly status update in three sections. Use when I say 'weekly update', 'status report', or 'Friday recap'."

What + when + actual words I'd say.

The formula: [What it does] + [When to use it] + [Trigger phrases the user actually says].
11
The optional folders

Scripts, references, and assets.

When SKILL.md alone isn't enough. Add these only when you need them β€” but knowing what each unlocks helps you spot the right moment.

scripts/

Code Claude can run

Python or bash scripts the skill executes. Use when the task needs real determinism β€” validation, data processing, generating files from templates.

"Code is deterministic; language interpretation isn't." β€” Anthropic's skills guide

references/

Long docs, loaded on demand

API references, style guides, full domain knowledge. Keep SKILL.md focused on the core flow β€” point to references/ for material that only loads when Claude reaches for it.

Example: references/api-patterns.md for rate limits, pagination, error codes.

assets/

Files used in output

Templates, logos, fonts, icons. Used in what Claude produces β€” not in what Claude reads. Add them when output needs brand polish.

Real example: /brand-assets Bundles the company logos and colors here.

12
Part 3

Get one.
Share yours.🀝

Install a skill in your account β€” then put yours in front of others.

Scopes

Same file. Four places it can live.

Skills work everywhere Claude does β€” but you choose who can see them. Pick the scope that matches who needs the skill.

Bundled

Built into Claude

Skills Anthropic ships with Claude itself β€” /skill-creator, /code-review, /debug, others. You don't manage these.

Everyone
Personal

Just for you

You upload it to your account. Active in every chat and every Cowork session β€” but only yours. Where most people start.

Only you
Shared

From you, to colleagues

Your personal skill, shared via Customize β†’ Skills β†’ Share. Send to specific people by name/email, or publish to your org's directory. Team/Enterprise plans only.

Colleagues you pick
Org-provisioned

The whole workspace

The Team or Enterprise owner provisions a skill from Organization settings β†’ Skills. Appears for every member, view-only.

Everyone in your org
14
Get a personal skill

Build it. Or import it.

Two paths to your first personal skill. Pick whichever matches where you're starting from.

Path A β€” Build it inside Claude

You don't have a folder yet β€” start from a conversation.

  • /skill-creator β€” Anthropic's built-in skill. Walks you through name, description, and instructions. Outputs a ready-to-use SKILL.md.
  • /reprompt β€” describe what you want as a task. The polished prompt it returns is your SKILL.md body β€” wrap it with frontmatter, done.

Fastest path for first-timers. No file handling.

Path B β€” Get one someone else built

Three sources, one install flow.

  • Marketplace: browse github.com/anthropics/skills and grab the folder.
  • A colleague: they DM you a .zip or share it via Claude.
  • The internet: point Claude at a URL or paste a SKILL.md you found β€” ask it to package the folder for you.

Install: Customize β†’ Skills β†’ Upload .zip β†’ Toggle on.

Cowork bonus: the + in the Customize sidebar opens your org's directory β€” skills colleagues have already shared with the team. Check there before building from scratch.
15
Two paths to your team

You share. Or your owner provisions.

Both end up in front of colleagues β€” different mechanism, different control.

Path A β€” You share (user-initiated)

From inside Customize β†’ Skills β†’ Share:

  • Specific people: enter names or emails β€” they get a notification.
  • Entire org: publish to your organization's skills directory.

Recipients can enable and use the skill, but can't edit it.

Path B β€” Owner provisions (admin-initiated)

From Organization settings β†’ Skills:

  • Owners of Team or Enterprise orgs can provision skills for all users.
  • Pushes to every member automatically β€” view-only.

Best for shared standards your whole team should follow.

One gotcha: sharing is off by default. The owner has to flip Share with organization and/or Skill sharing toggles in Organization settings before the Share button appears for anyone.
16
Part 4

A real skill,
under the hood.πŸ”¬

/salesforce-churn-check β€” architecture, snippets, output, and why each folder earns its place.

Case study Β· /salesforce-churn-check

Why this skill exists.

Surface B2B accounts whose Flash Test cadence has collapsed vs their own historical baseline β€” a churn signal the existing Salesforce dashboards can't catch.

What Salesforce already shows
  • Total tests per day / week / month
  • Last-activity date per account
  • Terminations (after they happen)

A daily-tester quiet for 7 days = alarming. A monthly-tester quiet for 7 days = normal. Salesforce can't tell the two apart.

What the skill adds
  • Anyone can query Salesforce. No SOQL, no field-name gotchas, no docs to skim.
  • Plain-English chat. "Who's gone quiet?" β€” the skill orchestrates the rest.
  • Complex workflow, hidden. Per-account baselines, country holidays, YoY check β€” all behind one prompt.
  • Composes with skills + MCPs. Brand it via /brand-assets, ping owners on Slack, email it to a customer β€” chain any connector your team has.

The CSM gets to act, not query. Salesforce expertise stops being a bottleneck.

18
Architecture

Three layers, working together.

All three optional folders show up in a real Type-2 skill β€” each plays a distinct role.

salesforce-churn-check/
β”œβ”€β”€ SKILL.md required # The 7-step flow Claude follows
β”œβ”€β”€ references/
β”‚ └── filter-rules.md reference # Canonical SOQL filter β€” loaded only when querying
└── scripts/
β”œβ”€β”€ find_quiet_accounts.py script # Deterministic math: workdays, ratios, severity
└── requirements.txt script # Python deps (the holidays package)
What's where, and why: SKILL.md orchestrates. references/ holds rules too dense to inline (gotchas like Not_Billable__c = false meaning is billable). scripts/ does the math β€” code is deterministic; language interpretation isn't.
19
Inside SKILL.md

The label, then the recipe.

The frontmatter carries the trigger phrases. The body points Claude to references/ and scripts/ exactly when needed.

---
name: salesforce-churn-check
description: "Find B2B accounts whose paid Flash Test cadence has
  collapsed vs their OWN historical baseline... Triggers on:
  'who has gone quiet', 'which accounts stopped testing',
  'churn signals', 'silent customers', 'accounts at risk',
  'drop in testing', 'inactive accounts', 'churn check',
  'where should CSM look'."
compatibility: "Requires Python 3 with the holidays package
  and the Salesforce MCP."
---

# Salesforce pulse check

## Critical: read references first
Before constructing any SOQL, read `references/filter-rules.md`
for the canonical Filter A and the Rule-0 aggregate cap.

### Step 1 β€” Baseline counts per account: days 30–90 ago (60-day window)
### Step 2 β€” Recent counts per account: last 30 days  ← the comparison vs Step 1
### Step 3 β€” Same baseline window, 52 weeks back  (year-over-year check)
### Step 4 β€” Same recent window,  52 weeks back  (year-over-year check)
### Step 5 β€” Join Steps 1–4 by AccountId, write /tmp/churn.csv
### Step 6 β€” Run scripts/find_quiet_accounts.py β€” workdays, ratios, severity
### Step 7 β€” Present the ranked watchlist with owners to ping
20
What the CSM gets back

A ranked watchlist, owners attached.

Output is a markdown report. Severity bands, year-over-year seasonality flag, and a per-owner queue so each CSM gets one ping with their full list.

# Quiet accounts report β€” 2026-05-25

## Flagged accounts (12)

| Account            | Country | Owner        | Baseline/wk | Recent/wk | Ratio | LY ratio | Severity     |
|--------------------|---------|--------------|-------------|-----------|-------|----------|--------------|
| Henley Cars Ltd    | UK      | Alexander S. | 28.1        | 1.3       |   5%  |   β€”      | πŸ”΄ critical   |
| ACME Motors        | DE      | Bram H.      | 23.4        | 0.5       |   2%  |   β€”      | πŸ”΄ critical   |
| Autohaus Lang      | AT      | Alberto R.   | 19.0        | 1.5       |   8%  |   β€”      | πŸ”΄ critical   |
| Alpine Service Co  | CH      | Alexander S. | 22.8        | 4.1       |  18%  |  19%     | 🟠 (seasonal) |
| ...                |         |              |             |           |       |          |              |

## Owners to ping
- Alexander S. β€” 2 critical, 1 seasonal (watch only)
- Bram H.       β€” 1 critical
- Alberto R.    β€” 1 critical
Why this is the Type-2 sweet spot: the MCP brings the data, references/ enforces the canonical filter, scripts/ does the per-account math, SKILL.md orchestrates. The CSM didn't need to know any of it β€” they just asked the question.
21
Closing the case study

Why references and scripts earn their place.

Neither folder is decorative. Each one absorbs work that would otherwise be in SKILL.md β€” making the skill faster, cheaper, and more reliable.

references/ β€” Claude's dictionary for your setup

Tells Claude what your domain words mean.

  • Which Salesforce fields define a "paid Flash Test"
  • What "active license" maps to in the schema
  • The 8-clause filter with all its gotchas (e.g. Not_Billable__c = false means is billable)
  • Aggregate caps, naming conventions, rules of the data

Without it: Claude guesses field names. With it: Claude follows the canonical rules.

scripts/ β€” Deterministic work Claude shouldn't do

Code beats prompting for boring math.

  • Severity thresholds (10% critical / 40% concerning / 70% watch)
  • CSV joins across 4 query results
  • National holiday calendars per country (Python's holidays package)
  • Workday math, ratio math, seasonal-flag logic

Faster, cheaper, exact. Claude is overkill for math β€” and an LLM can't import Python's holiday package.

The principle: use Claude for judgement, scripts for math, references for vocabulary. Each one earns its place β€” and your SKILL.md stays focused on the flow.
22
Part 5

The workflow,
start to ship.βš™οΈ

Build β†’ smoke test β†’ peer review β†’ iterate β†’ distribute.

The lifecycle

Five phases. None optional.

Every skill that lands in production runs this loop. Skip a phase and you'll find out the hard way β€” by shipping something that triggers wrong or embarrasses you in a team chat.

1

Build

Write SKILL.md. Description + instructions in plain English.

2

Smoke test

Trigger it yourself 3–5 times. Check output. Check speed.

3

Peer review

Have another LLM (or reviewer prompt) critique what you built.

4

Iterate

Fix what came back. Re-test. Repeat until it feels solid.

5

Distribute

Share via Claude, zip the folder, or push as an org skill.

24
Phase 2 Β· smoke test

Run it yourself. Check four things.

Trigger your skill 3–5 times with realistic inputs. For each run, look at these four dimensions before showing it to anyone else.

1 / Triggering

Does Claude actually pick the skill up when you ask? If not, the description's trigger phrases need work.

2 / Speed

How long does it take? Acceptable for the workflow? Can you trim the body to run faster without compromising output quality?

3 / Output format

Is it readable? Trim useless info that's bloating the response. Headers, bullets, length β€” all easy to tighten.

4 / Output quality

Is the data granular enough? Precise where it needs to be? Or vague, hallucinated, missing the specifics that matter?

If anything feels off β€” straight back to Phase 1 (build) and fix it. No skill ships from smoke test directly.

25
Phase 3 Β· peer review

Have a second agent check it.

The same model with the same blind spots can't catch its own errors. Two patterns to outsource the review β€” pick one, or run both for higher catch rate.

Pattern A β€” Critique prompt

Reviewer agent grades the same four checks.

  • Different LLM: paste SKILL.md + a sample output into ChatGPT or Gemini β€” fresh blind spots.
  • Reviewer role: fresh Claude chat, "you are a senior reviewer", ask it to grade triggering / speed / format / quality.
  • Or both: highest catch rate for anything you'll ship team-wide.
Pattern B β€” Comparison prompt

If you have ground truth, diff against it.

  • Paste your skill's actual output + the expected output into a fresh Claude chat.
  • Ask: "where do these differ, and which differences matter?"
  • Claude surfaces specific gaps β€” missing sections, wrong tone, hallucinations.

Only works when you have a known-good example to compare against.

Same chain as Workshop #2: producer β†’ reviewer β†’ refiner. Don't bake the reviewer into the same prompt β€” same model, same blind spots.
26
Phase 4 Β· iterate

Fix what came back.

Each of the four checks maps to a kind of fix. Expect 2–3 cycles before a skill feels solid. Most fixes live in the description or instructions β€” not in code.

Triggering issues

Under: add more trigger phrases β€” words you'd actually say.
Over: narrow the description, add "Do NOT use for…" to scope it.

Format issues

Output too verbose, hard to scan, or wrong shape. Trim the instructions β€” fewer rules, more examples of the right output.

Quality issues

Output vague, hallucinated, or low granularity. Tighten requirements in the body. Add a sample of "good" so Claude has a target.

Speed issues

Skill takes too long. Cut anything not strictly needed. Move long reference material to references/ so it loads only when needed.

The debug trick still works: ask Claude "When would you use the [skill-name] skill?" It quotes the description back. If the answer is too broad or too narrow β€” you've found your fix.
27
Phase 5 Β· distribute

Three ways to ship it.

Once your skill passes review, pick the distribution that matches the audience.

01 / Share from Claude

Share via the UI

Open your skill in Customize β†’ Skills β†’ Share. Send to specific people by name/email, or publish to your org's directory.

Use when: Team/Enterprise plan with sharing enabled.

02 / Zip & send

Send the file

Compress the folder. Drop the .zip in Slack, email, or DM. They upload via Customize β†’ Skills.

Use when: no Team plan, or sharing isn't enabled yet.

03 / Owner provision

Owner pushes it

Hand the .zip to your Team or Enterprise owner. They provision it from Organization settings β†’ Skills β€” everyone gets it, view-only.

Use when: it's a shared standard for the team.

28
Part 6

What's next.πŸš€

Use what's already live. Then build your own.

internal org skills

Two live in your workspace. Two coming soon.

Four org-provisioned skills β€” already available to everyone in the workspace. Salesforce skills land shortly.

/reprompt Available

Scores every substantive prompt against the Prompt Standard. Strong prompts pass through; weak ones get rewritten inline with a coaching note.

/brand-assets Available

Bundles the company logos and brand colors. Auto-fires when Claude produces a report, deck, presentation, dashboard, or branded artifact.

/salesforce-forecast Coming soon

Forecasts daily Flash Test volume per account or country with national-holiday awareness. Separates expected dips from churn signals.

/salesforce-churn-check Coming soon

Finds B2B accounts whose Flash Test cadence has collapsed against their own baseline. Returns a ranked CSM watchlist.

30
Build your own

Four questions to start.

Pick a task you repeat. Walk these in order β€” your SKILL.md falls out the other end.

1

What do I keep retyping?

The prompt you've sent more than twice is your skill candidate. Vague isn't enough β€” you need a task you do regularly.

2

Type 1 or Type 2?

Does it need live data from an MCP (Salesforce, YouTrack, Notion), or is it just task consistency (brand voice, weekly format)? That's the shape.

3

What words trigger it?

The actual phrases you'd say β€” "weekly update", "idea board", "draft an email". Three to five variations. That's the description.

4

What's the output shape?

Length, sections, tone, hard rules. Write a sample of what "good" looks like β€” that goes in the body.

Don't have a folder yet? Use /skill-creator or /reprompt to turn these four answers into a SKILL.md.
31
The take-home

If you remember nothing else.

1

A skill is a folder with one file. SKILL.md is plain English instructions Claude reads when they're relevant β€” nothing more.

2

The description is the magic. Write it using the actual trigger phrases you'd say. That single line decides whether your skill ever runs.

3

A skill's body is a polished prompt. Use /reprompt from Workshop #2 to turn rough notes into one β€” then drop it in.

32

Thank you.

Now go teach Claude how you work.

the internal AI hub
Official docs
code.claude.com/docs/en/skills
Example skills
github.com/anthropics/skills
Async questions
#ai-office-hours on Slack