Paying the Bills (or not) with Claude Skills
Table of Contents
On October 16, Anthropic released Skills, which are a collection of prompts, scripts, and resources in a single directory that Claude can load and use when it needs to. They work with every Claude product: Claude apps, Claude Code, and the Claude API. The upshot is that skills allow you to define task-specific instructions that can bundle scripts, PDFs, and more to better teach it how to do some task. You can think of them as durable, portable prompt sets, or as the LLM equivalent to an onboarding guide for new hires.
To me, the most exciting innovation that skills bring is progressive disclosure. This is a token-saving measure that determines what part or parts of a Skill are loaded when. For example, the SKILL.md metadata is always loaded into Claude’s context, but this should only be around 100 tokens. The body of the Skill file is only loaded when the LLM decides to use the Skill, much like how an agentic system decides when to use a tool (in fact, file-reading tools are used to ingest the Skill files). This can be a few thousand tokens - any bigger and you should consider splitting the instructions into separate files.
Then, you have bundled files. These are referenced in the main Skill body, but are only loaded by the model when they’re needed. For example, let’s take a file testing_guidelines.md bundled with a Skill. The Skill instructions say to refer to ./testing_guidelines.md when writing tests, so this file would only be loaded when the main Skill is triggered and it is part of a test-writing task as detected by the LLM.
You can dig deeper into how to build and design Skills at Anthropic’s engineering blog.
How to Get Skills for Claude Code#
While you can add the Anthropic skill marketplace (anthropics/skills) as a plugin marketplace with /plugin in Claude Code, right now the available Skills are pretty light. You will more likely build your own or pull them from a Github repository, and then you’d simply either load them into ~/.claude/skills for “personal skills” that are always available, or into a project’s .claude/skills directory for “project skills” available only within that project. Project skills make sharing a skill with your team easy, as you can commit this directory to your VCS of choice along with the rest of your code.
The Claude docs have an excellent page dedicated to using Skills with Claude Code with advanced techniques like using the allowed-tools frontmatter to restrict tool use with an active Skill.
Impressions From Building a Spotify MCP Server with mcp-builder#
So enough about what Skills are, how well do they actually work? I decided to put an example skill, mcp-builder through its paces by building an MCP server. I’ve been wanting to build a project to use natural language to build ephemeral music playlists based on track, album, or playlist similarity, or on any other instructions by a user. So I did some basic up-front design, created are repo, loaded the skill, and got to work.
The first thing I noticed was that Claude did very well with relatively large feature tasks, like building out a modular similarity engine, allowing the user to decide which similarity strategy to use when building similarity playlists.
The immediately second thing I noticed? I was chewing through tokens like crazy. I do quite a bit of agent-assisted coding with Claude Code, and hit a session limit for the first time working on this project. Other than that though, Claude, with some direction from me and lots from the Skill, made a really well-made and nice-looking MCP server, along with plenty of automated tests and evaluations.
Evaluations might have been the most surprising capability - the model was able (thanks to the evaluation subskill in the larger Skill) to create well-designed evals that I’d expect from a seasoned agent builder. The mcp-builder Skill is a well-designed one, if a bit chunky, but makes clear improvements over using Claude Code by itself or even with just a CLAUDE.md file. I wonder if other model providers will implement something similar? Anthropic is doing a lot of work to keep people, especially developers, on their models, and I think Skills will succeed at that…for a while.
You can also check out the server that Claude helped me build here.
What About MCP?#
I’ve seen some chatter about Skills making MCP obsolete and…I just don’t see it. Skills work as a less-technical easy way to share prompts, essentially. And while MCP does allow servers to share prompts, the protocol allows for so much more, like distributing tools, data sources, and more. So while they both make distributing LLM augmentations easier, they have different audiences and advantages: MCP is for developers who want to distribute tools and interfaces for their products and code to applications that use LLMs, while Skills are for augmenting Claude itself in individual or team use scenarios, like with Claude Desktop or Claude Code1.
-
While lots of people are using MCP servers with Claude Desktop, I don’t think this is the best use (or really intended use) of the protocol. ↩︎