Introduction

In the previous unit, we explored the fundamentals of the Skills system: how Skills differ from custom commands, their file structure, and when to create them versus using CLAUDE.md. Now it is time to build something real.

In this lesson, we will move from theory to practice by creating two actual, functional Skills: a CSV analysis Skill and a visualization standards Skill. Along the way, we will learn how to write descriptions that help Claude select Skills automatically, how to define tool permissions properly, and how to verify that our Skills work as intended.

Practical vs. Artificial Skills

The best Skills solve real problems that occur regularly in actual projects. For this lesson, we focus on two such Skills:

  • CSV Analyzer: Analyzes CSV data with summary statistics and insights — a common data analysis task
  • Sci-Viz: Creates publication-ready scientific visualizations — essential for research papers

These differ from educational exercises like "convert strings to uppercase" or "add a fixed header to a file." Practical Skills embed domain knowledge and address recurring needs, which is exactly what makes them worth creating.

Creating Your First Skill: CSV Analyzer

Let's create a Skill that analyzes and summarizes CSV data with statistical insights. We will place this Skill in the project-specific directory so it is available for all team members working on this project.

The Skill resides in a dedicated folder with a clear, descriptive name:

Every Skill starts with YAML frontmatter that provides metadata for Claude's selection system. Here is how we begin our CSV analysis Skill:

This frontmatter establishes three critical pieces of information. The name uniquely identifies this Skill, the description tells Claude when to use it, and allowed-tools specifies which capabilities this Skill can access. We will explore each of these fields in detail next.

Writing Clear Descriptions for Automatic Selection

The description field is perhaps the most important part of your Skill's frontmatter. This single line determines whether Claude will select your Skill when you make a request.

A good description should be:

  • Specific about the task: Mention concrete actions like analyze and generate summary statistics rather than vague terms like process data.
  • Rich in keywords: Include terms users might naturally use, such as sales reports, analytics, and CSV.
  • Clear about scope: State what the Skill handles, making selection easier.

Compare these descriptions:

The strong description gives Claude multiple matching signals — analyze, summary statistics, sales reports, descriptive insights — so when a user asks "Analyze this sales CSV and give me insights," Claude can confidently select this Skill without being told.

Defining Allowed Tools

The allowed-tools field applies the principle of least privilege: each Skill gets only the capabilities it needs to function. This provides both security and clarity.

For our CSV analysis Skill, we specify:

Each tool serves a clear purpose:

  • Read: Access the CSV file to analyze data.
  • Bash: Run Python with pandas and statistical libraries.
  • Write: Save analysis results to summary files.

Notice what we do not include: Edit (we are not modifying existing files, just creating summaries) or any web access tools (this is a local analysis task). Limiting tools to exactly what is needed makes the Skill both safer and easier to reason about.

The Skill Body: Structure and Process

After the frontmatter, the markdown body provides guidance for Claude. The complete CSV analyzer Skill includes:

The "When to Use" section helps Claude recognize appropriate situations, the "Process" section provides step-by-step instructions, and the "Example Output" shows the expected implementation pattern without overwhelming detail.

Testing the CSV Skill

Now let's see this Skill in action. First, we ask Claude to create it:

Claude creates the complete Skill file with proper structure and frontmatter. When you first use a Skill, you will encounter an approval prompt:

For this course, select Option 2 to approve Skills for your practice directory without needing to re-approve each session.

Next, we test automatic selection with a relevant request:

Watch what Claude logs:

This confirms our Skill is functioning. Claude recognized that our request matched the csv-analyzer Skill and loaded it automatically — no explicit instruction needed. Claude then applies the Skill and generates results:

Creating and Testing a Visualization Skill

Let's reinforce these patterns with a second Skill in a different domain: enforcing matplotlib standards for scientific publications.

Claude creates a new Skill file:

Notice the different tool requirements: this Skill includes Edit (for modifying existing plots) alongside Write, Read, and Bash. The standards section encodes domain-specific knowledge, ensuring consistency without repeatedly explaining requirements.

Testing it with a relevant request:

Claude logs automatic selection:

Then applies all publication standards and confirms:

The Skill did not just create a plot — it ensured every publication standard was met automatically.

Key Principles for Practical Skills

Now that we have created two complete Skills, let's distill the patterns that make them effective:

Focus on real workflows: Skills should address actual recurring needs, not artificial scenarios.

Write descriptive metadata: Rich descriptions with relevant keywords enable automatic selection.

Apply least privilege: Each Skill specifies only the tools it genuinely needs.

Provide clear procedures: Step-by-step process sections guide consistent execution.

Include concrete examples: Sample code gives Claude a clear starting point.

Test thoroughly: Verify that Claude selects your Skill automatically for relevant requests.

When you create your own Skills, follow these principles. Start with tasks you perform repeatedly, encode your domain knowledge clearly, and test that automatic selection works as expected.

Conclusion and Next Steps

In this lesson, we built two practical Skills: one for analyzing CSV data and another for enforcing visualization standards. Along the way, we learned how to write effective descriptions, define appropriate tool permissions, structure Skill bodies clearly, and verify automatic selection through Claude's logs.

Skills are most valuable when they encode specialized knowledge you use repeatedly. Whether it is CSV analysis, visualization standards, API testing patterns, or any other domain-specific workflow, Skills let you capture that expertise once and apply it consistently.

In the practice section ahead, you will create Skills tailored to your specific needs, experiment with different structures, and discover how powerful this extension system can be.

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal