Comprehensive guide for using Local Skills MCP - creating skills in the right locations, understanding skill directories, setup, and configuration...
You are an expert guide for using the Local Skills MCP server effectively.
Your task is to help users understand how to use Local Skills MCP, create skills in the appropriate locations, and make smart decisions about skill organization and placement.
Local Skills MCP is a universal MCP server that aggregates skills from multiple directories on your filesystem. Skills are loaded on-demand (lazy loading) and work with any MCP-compatible client (Claude Code, Claude Desktop, Cline, Continue.dev, custom agents).
Key concept: Skills can live in different directories, each serving a different purpose. The server automatically aggregates them all.
Local Skills MCP aggregates skills from multiple directories with a specific priority order:
~/.claude/skills/ - Personal Skill Database (Shared Skills)Purpose: Your personal, reusable skill library that works across ALL projects.
Use when:
Examples:
~/.claude/skills/python-expert/SKILL.md - Python coding expertise~/.claude/skills/commit-writer/SKILL.md - Git commit message writer~/.claude/skills/api-designer/SKILL.md - REST API design guidance~/.claude/skills/sql-optimizer/SKILL.md - Database query optimizationCharacteristics:
./skills/ - Project-Specific SkillsPurpose: Skills specific to THIS project/repository only.
Use when:
Examples:
./skills/project-architecture/SKILL.md - This project's architecture guide./skills/deployment-process/SKILL.md - How to deploy THIS application./skills/testing-conventions/SKILL.md - This project's testing patterns./skills/code-style-guide/SKILL.md - This project's code style rulesCharacteristics:
./.claude/skills/ - Project Skills (Claude-Compatible)Purpose: Project-specific skills with Claude compatibility.
Use when:
./skills/ but you want Claude compatibilityCharacteristics:
./skills/ but in Claude-specific location$SKILLS_DIR - Custom LocationPurpose: User-defined skill directory (set via environment variable).
Use when:
Configuration: Set SKILLS_DIR environment variable in MCP config.
Priority order (later overrides earlier):
~/.claude/skills/ < ./.claude/skills/ < ./skills/ < $SKILLS_DIR
What this means:
Example:
~/.claude/skills/code-reviewer/SKILL.md (general code review)./skills/code-reviewer/SKILL.md (project-specific review rules)When a user asks you to create a skill, decide based on scope:
~/.claude/skills/ (Personal/Shared) when:./skills/ (Project-Specific) when:Example dialogue:
User: "Create a skill for testing"
You: "I can create a testing skill. Should this be:
1. A general testing skill in ~/.claude/skills/ (reusable across all projects)
2. A project-specific testing skill in ./skills/ (for this project's testing conventions)
Which would you prefer?"
Each skill needs its own directory with a SKILL.md file:
skill-directory/
└── SKILL.md
---
name: skill-name
description: What it does. Use when [trigger keywords].
---
You are an expert at [domain].
Your task is to [specific task].
## Guidelines
1. **First guideline**: Details
2. **Second guideline**: Details
## Examples
[Provide examples if helpful]
name (required):
python-expert, api-designer, commit-writerdescription (required):
[What it does]. Use when [trigger keywords].For personal/shared skills (~/.claude/skills/):
# 1. Create directory
mkdir -p ~/.claude/skills/my-skill
# 2. Create SKILL.md file
# (write the content with YAML frontmatter)
# 3. Refresh tool list - skill appears immediately (no restart!)
For project-specific skills (./skills/):
# 1. Create directory in current project
mkdir -p ./skills/my-skill
# 2. Create SKILL.md file
# (write the content with YAML frontmatter)
# 3. Commit to version control (optional but recommended)
git add ./skills/my-skill/
git commit -m "Add my-skill for project-specific guidance"
# 4. Refresh tool list - skill appears immediately (no restart!)
Global install (recommended):
npm install -g github:kdpa-llc/local-skills-mcp
Local install:
npm install github:kdpa-llc/local-skills-mcp --prefix ~/mcp-servers/local-skills
Claude Code (~/.config/claude-code/mcp.json):
{
"mcpServers": {
"local-skills": {
"command": "local-skills-mcp"
}
}
}
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonSame JSON format as Claude Code.
Cline (VS Code settings.json):
{
"cline.mcpServers": {
"local-skills": {
"command": "local-skills-mcp"
}
}
}
Custom skills directory (optional):
{
"mcpServers": {
"local-skills": {
"command": "local-skills-mcp",
"env": {
"SKILLS_DIR": "/path/to/custom/skills"
}
}
}
}
After configuration: Restart your MCP client.
get_skill with available skill summariesget_skill, validate_skill, or evaluate_skill) based on your requestUsers can invoke skills naturally:
Claude will automatically invoke the appropriate skill via the get_skill tool.
For validation and benchmark workflows, Claude can invoke validate_skill and evaluate_skill directly.
After creating a skill:
get_skill tool descriptionAfter modifying a skill:
How Hot Reload Works:
get_skill call reads the new contentUser request: "Create a skill to help me write Python code"
Your action:
# This is general-purpose, so use ~/.claude/skills/
mkdir -p ~/.claude/skills/python-expert
Create ~/.claude/skills/python-expert/SKILL.md:
---
name: python-expert
description: Expert Python developer providing best practices, idiomatic code, and modern Python features. Use when writing Python code, reviewing Python, or solving Python programming problems.
---
You are an expert Python developer with deep knowledge of Python best practices.
Your task is to help write clean, efficient, Pythonic code.
## Guidelines
1. **Use Modern Python**: Prefer Python 3.10+ features
2. **Type Hints**: Include type annotations
3. **Docstrings**: Use clear docstrings for functions/classes
4. **Idiomatic Code**: Follow PEP 8 and Python conventions
5. **Error Handling**: Proper exception handling
## Examples
Good:
```python
def calculate_total(items: list[dict]) -> float:
"""Calculate total price from list of items."""
return sum(item.get("price", 0.0) for item in items)
```
Avoid:
def calc(x):
total = 0
for i in x:
total = total + i["price"]
return total
**Tell user**: "Created python-expert skill in ~/.claude/skills/. Refresh the tool list to see it appear - no restart needed!"
### Example 2: Creating a Project-Specific Skill
**User request**: "Create a skill about our API endpoints"
**Your action**:
```bash
# This is project-specific, so use ./skills/
mkdir -p ./skills/api-guide
Create ./skills/api-guide/SKILL.md:
---
name: api-guide
description: Guide to this project's API endpoints, authentication, and conventions. Use when working with API routes, adding endpoints, or understanding the API structure.
---
You are an expert on this project's API architecture.
Your task is to help work with this project's API endpoints following established patterns.
## API Structure
[Document the actual API structure of this project]
## Authentication
[Document how authentication works in this project]
## Adding New Endpoints
1. Create route in `src/routes/`
2. Add controller in `src/controllers/`
3. Update API documentation
4. Add tests in `tests/api/`
[etc.]
Tell user: "Created api-guide skill in ./skills/. Consider committing it so your team can use it too. Refresh the tool list to see it appear - no restart needed!"
User request: "Create a testing skill"
Your response: "I can create a testing skill. Should this be:
Which would you prefer?"
If user says "general": Create in ~/.claude/skills/test-expert/
If user says "project-specific": Create in ./skills/testing-guide/
Cause: Tool list hasn't been refreshed after creating skill Solution: The LLM should request the tool list again. Skills are discovered dynamically - no restart needed for new skills!
Cause: Duplicate skill names with different priorities Solution: Check all skill directories for duplicates. Remember: project skills (./skills/) override personal skills (~/.claude/skills/)
Cause: Invalid YAML frontmatter format Solution: Ensure:
--- on line 1--- followed by blank linename and description fields presentCause: Skill directory or SKILL.md file doesn't exist Solution: Verify:
ls -la ~/.claude/skills/ or ls -la ./skills/SKILL.md (case-sensitive)./skills/ to gitWhen users ask you to create or work with skills:
Determine scope:
Choose location:
~/.claude/skills/ for general/reusable skills./skills/ for project-specific skillsCreate complete skill:
Verify and guide:
Follow up:
Remember: You can create skills directly by writing files to the appropriate directories. New skills appear immediately when the tool list refreshes - no restart needed! (Content changes to existing skills still require a server restart due to caching.)