Skip to content

Skills Reference

Skills are the official Claude Code format for best practices and guidelines. They provide Claude with domain expertise to assist you more effectively.

What are Skills?

Skills are structured knowledge modules that Claude Code loads to understand best practices for specific domains. Unlike simple rules, skills follow the official Claude Code format with:

  • Directory-based structure: Each skill is a folder, not a single file
  • Two-file pattern: SKILL.md (index) + REFERENCE.md (details)
  • Frontmatter metadata: name and description fields for discovery
  • Rich documentation: Comprehensive guidelines, examples, and checklists

Skills vs Rules (Legacy)

AspectSkills (New)Rules (Legacy)
FormatDirectory with 2 filesSingle file
StructureSKILL.md + REFERENCE.mdAll in one
MetadataYAML frontmatterOptional
DiscoveryBy description fieldBy filename
DepthComprehensive referenceBrief guidelines
OfficialYes (Claude Code format)Deprecated

Note: Legacy rules in .claude/rules/ are still supported for backward compatibility.

Directory Structure

.claude/
└── skills/
    ├── architecture/
    │   ├── SKILL.md           # Index with frontmatter
    │   └── REFERENCE.md       # Detailed documentation
    ├── testing/
    │   ├── SKILL.md
    │   └── REFERENCE.md
    └── security/
        ├── SKILL.md
        └── REFERENCE.md

Skill Format

SKILL.md (Index File)

markdown
---
name: testing
description: Testing - TDD/BDD principles. Use when writing tests or reviewing coverage.
---

# Testing - TDD/BDD Principles

This skill provides guidelines and best practices.

See @REFERENCE.md for detailed documentation.

Frontmatter Fields:

  • name (required): Skill identifier, matches directory name
  • description (required): Brief description + when to use this skill

REFERENCE.md (Documentation File)

Contains comprehensive documentation:

  • Overview and objectives
  • Table of contents
  • Detailed sections with examples
  • Code snippets (language-agnostic or tech-specific)
  • Diagrams (ASCII art for compatibility)
  • Best practices and anti-patterns
  • Checklists
  • External resources

Skills by Technology

Common Skills (7)

Universal skills installed with all technology stacks:

SkillDescription
solid-principlesSOLID object-oriented design principles
kiss-dry-yagniCode simplicity principles
testingTDD/BDD testing methodology
securitySecurity best practices (OWASP)
documentationDocumentation standards
git-workflowGit conventions and branching
workflow-analysisProblem analysis methodology

Symfony Skills (16)

SkillDescription
architecture-clean-dddClean Architecture + DDD + Hexagonal
aggregatesDDD aggregates design
value-objectsImmutable value objects
domain-eventsDomain event patterns
cqrsCommand Query Responsibility Segregation
ddd-patternsDomain-Driven Design patterns
asyncMessenger async processing
multitenantMulti-tenancy patterns
doctrine-extensionsDoctrine extensions usage
coding-standardsPHP/Symfony coding style
quality-toolsPHPStan, CS Fixer, Rector
testing-symfonyPHPUnit, Behat testing
security-symfonySymfony security component
performanceCaching, optimization
i18nInternationalization
docker-hadolintDockerfile linting

Flutter Skills (8)

SkillDescription
architectureClean Architecture for Flutter
state-managementBLoC, Riverpod, Provider
coding-standardsDart/Flutter style guide
quality-toolsAnalyzer, DCM, linting
testing-flutterWidget, unit, integration tests
security-flutterMobile security patterns
performanceWidget optimization
toolingDevTools, debugging

React Skills (6)

SkillDescription
architectureComponent architecture patterns
coding-standardsReact/TypeScript style guide
quality-toolsESLint, Prettier, TypeScript
testing-reactJest, Testing Library, Playwright
security-reactXSS prevention, secure state
toolingDevTools, bundlers

React Native Skills (9)

SkillDescription
architectureMobile app architecture
state-managementRedux, Zustand, Context
navigationReact Navigation patterns
coding-standardsReact Native style guide
quality-toolsLinting, type checking
testing-reactnativeDetox, Jest Native
security-reactnativeMobile security (MASVS)
performanceNative optimization
toolingMetro, Flipper

Python Skills (4)

SkillDescription
architectureClean Architecture, FastAPI patterns
coding-standardsPEP 8, type hints
testing-pythonPytest, hypothesis
toolingVirtual envs, Poetry

How Claude Code Uses Skills

When you ask Claude Code for help, it:

  1. Scans skill descriptions to find relevant expertise
  2. Loads SKILL.md to understand the domain
  3. References REFERENCE.md for detailed guidance
  4. Applies best practices from the skill to your code

Example:

You: Help me write tests for this service

Claude: [Loads testing skill]
       I'll help you write tests following TDD principles.
       Based on the testing skill, we should:
       - Follow the Red-Green-Refactor cycle
       - Aim for 80%+ coverage
       - Use the AAA pattern (Arrange-Act-Assert)
       ...

Creating Custom Skills

Step 1: Create Directory

bash
mkdir -p .claude/skills/my-custom-skill

Step 2: Create SKILL.md

markdown
---
name: my-custom-skill
description: Custom domain expertise. Use when working on [specific context].
---

# My Custom Skill

This skill provides guidelines for [domain].

See @REFERENCE.md for detailed documentation.

Step 3: Create REFERENCE.md

markdown
# My Custom Skill

## Overview

[Describe the domain and objectives]

## Guidelines

### Section 1

[Detailed content with examples]

### Section 2

[More content]

## Checklist

- [ ] Item 1
- [ ] Item 2

## Resources

- [Link 1](url)
- [Link 2](url)

Best Practices for Custom Skills

  1. Clear descriptions: Include when to use the skill
  2. Actionable content: Provide concrete examples
  3. ASCII diagrams: For architecture and flows
  4. Checklists: Quality gates for each domain
  5. Anti-patterns: What to avoid
  6. Language-agnostic (Common) or tech-specific (others)

Installation

Skills are automatically installed with technology rules:

bash
# Install Symfony with all skills
make install-symfony TARGET=~/my-project

# Skills are placed in .claude/skills/
ls ~/my-project/.claude/skills/
# architecture-clean-ddd/  coding-standards/  testing-symfony/  ...

Skill Count by Stack

StackSkills Count
Common7
Symfony16
Flutter8
React6
React Native9
Python4
Total unique50
With i18n (×5)250

Frequently Asked Questions

Can I mix skills from different technologies?

Yes. Common skills are always installed, and you can install multiple tech stacks:

bash
make install-symfony TARGET=~/my-project
make install-react TARGET=~/my-project
# Both Symfony and React skills coexist

Do skills conflict with each other?

No. Each skill is scoped to its domain. Claude Code selects the appropriate skill based on context.

Can I customize installed skills?

Yes. Skills are regular markdown files. You can:

  • Edit REFERENCE.md to add project-specific guidelines
  • Add new skills alongside installed ones
  • Override specific sections

Are legacy rules still supported?

Yes. Rules in .claude/rules/ continue to work. However, we recommend migrating to skills for better organization and the official format.


See Also