Skip to content

How to Create Custom Claude Desktop Skills for Recurring Tasks

The Problem: Session Amnesia

Every morning I start Claude Desktop the same way. I ask for a code review. I explain my project structure. I describe what “good code” means for my team. Then Claude gives me feedback.

The next day, I repeat the whole process. Same prompts. Same explanations. Same context setup.

My Morning Routine Before Skills
Day 1:
Me: "Review this PR. Focus on error handling, no nested exceptions."
Claude: "What's your error handling pattern?"
Me: "We use try-catch with specific error messages..."
Claude: [Review with adequate feedback]
Day 2:
Me: "Review this PR."
Claude: "What should I focus on?"
Me: "Error handling, no nested exceptions..."
[Same explanation again]
Day 3:
[Same routine, same explanations]
Time wasted per day: 5-10 minutes
Days per month: 20
Total wasted: 100-200 minutes/month

I found a Reddit thread where developers shared the same frustration. One comment hit home: “Any recurring task, I go through the whole process with Claude once, then turn it into a skill that runs the same way every time.”

That’s the core idea: Package your recurring prompts into a reusable skill that Claude recognizes automatically.

What Are Claude Desktop Skills

A skill is a SKILL.md file in a specific directory. Claude Desktop reads these files and uses them as context for specific tasks.

Skill Loading Process
Claude Desktop starts
Reads ~/.claude/skills/*/SKILL.md
Matches skill description to user request
Uses skill instructions as context
Executes task with embedded expertise

The key insight from the Reddit thread: “Skills only make sense when they solve a problem for YOU or your business - your context is your moat.”

Generic skills exist. But the real value comes from skills that encode YOUR specific workflows, YOUR code review criteria, YOUR content creation process.

The Skill Structure

A skill lives in ~/.claude/skills/<skill-name>/SKILL.md. The file has YAML frontmatter and step-by-step instructions.

Directory Structure
~/.claude/
├── skills/
│ ├── code-review/
│ │ └── SKILL.md
│ ├── seo-audit/
│ │ └── SKILL.md
│ └── content-creator/
│ │ └── SKILL.md
│ └── your-custom-skill/
│ └── SKILL.md

The SKILL.md format:

SKILL.md Template
---
name: Your Skill Name
description: One-line description of what this skill does. Claude matches this to user requests.
---
# Instructions
Step-by-step instructions that Claude follows when this skill is invoked.
Include:
- What to check
- How to format output
- What to avoid
- Examples of good vs bad

The description field is critical. Claude uses it to decide when to invoke your skill. If the description is vague, Claude won’t know when to use it.

My First Skill: Code Review

I started with my morning code review routine. Here’s what I created:

~/.claude/skills/code-review/SKILL.md
---
name: Code Review
description: Review code for error handling, security issues, and code quality. Focus on specific patterns defined in instructions.
---
# Code Review Process
## What to Check
1. **Error Handling**
- No empty catch blocks
- Specific error messages (not generic "operation failed")
- Errors propagate with context
- No swallowed exceptions
2. **Security**
- No hardcoded secrets
- Input validation present
- No SQL injection patterns
- Proper authentication checks
3. **Code Quality**
- Functions under 50 lines
- No deep nesting (max 4 levels)
- Meaningful variable names
- No duplicate code blocks
## Output Format
Provide review in this structure:

Summary

[Overall assessment: approve/needs changes/block]

Critical Issues

[Issues that must be fixed before merge]

Suggestions

[Optional improvements]

Positive Notes

[What’s done well]

## What to Avoid
- Don't suggest stylistic changes without reason
- Don't review unrelated files
- Don't make changes yourself - only review

I tested this skill by asking Claude to “review my latest commit.” The response matched my criteria exactly: it flagged an empty catch block I’d missed and suggested specific error message improvements.

What Went Wrong First

My first attempt at a skill failed. Here’s what I did wrong:

First Attempt (FAILED)
---
name: review
description: review code
---
# do a code review
check for errors and security

The problems:

  1. Vague description - “review code” matches too many requests. Claude couldn’t distinguish between code review and general code requests.

  2. No structure - “check for errors and security” is too generic. Claude defaulted to standard review behavior, not my specific criteria.

  3. Missing output format - Without format instructions, Claude’s output varied wildly between sessions.

What Claude Did With Vague Skill
Me: "Review this code"
Claude: [Generic review, missed my specific criteria]
Me: "You missed the empty catch block"
Claude: "I wasn't told to check for that specifically"
Result: Skill didn't work, back to manual explanations

I iterated. Added specific criteria. Added output format. Added examples. The skill started working.

Second Skill: SEO Audit

After code review worked, I created an SEO audit skill for my blog posts.

The Reddit thread mentioned: “My seo-audit skill has an internal linking analysis - that’s not in the default skill, I added that myself.”

That’s the point. Generic SEO audit skills exist. But I needed MY specific criteria: internal linking patterns, keyword density thresholds, meta description length.

~/.claude/skills/seo-audit/SKILL.md
---
name: SEO Audit
description: Audit blog post for SEO quality: internal links, keywords, meta descriptions, heading structure.
---
# SEO Audit Process
## Internal Linking Analysis
Check for:
- At least 3 internal links per 1000 words
- Links to related posts (not random pages)
- Descriptive anchor text (not "click here")
- Links distributed throughout (not clustered at end)
## Keyword Placement
- Primary keyword in title
- Primary keyword in first 100 words
- Primary keyword in at least one H2
- Keyword density between 0.5% and 2.5%
## Meta Description
- Length: 120-160 characters
- Includes primary keyword
- Action-oriented (not passive description)
- Matches page content
## Heading Structure
- Single H1 (title)
- H2s for main sections
- H3s for subsections
- No skipped levels (H1 to H3)
## Output Format

SEO Score: [X/100]

Issues Found

[Each issue with specific location]

Improvements Made

[What was fixed]

Recommendations

[Optional enhancements]

This skill captures MY SEO criteria. Generic tools check keyword density. My skill checks internal linking patterns specific to my blog structure.

How to Identify Skill Candidates

Not every prompt needs a skill. The Reddit thread nailed it: “Skills only make sense when they solve a problem for YOU.”

I use this checklist:

Skill Candidate Criteria
Ask yourself:
1. Do I do this task 3+ times per week?
2. Do I repeat the same explanations each time?
3. Does the output need consistent format?
4. Is the task complex enough to need guidance?
If YES to all 4 → Create a skill
If NO to any → Keep as regular prompt

My skill candidates:

TaskFrequencyRepeated ExplanationsNeeds FormatComplexSkill?
Code reviewDailyYesYesYesYES
SEO auditWeeklyYesYesYesYES
Write blog postWeeklyYesYesYesYES
Debug errorRandomNoNoVariesNO
Quick questionRandomNoNoNoNO

Debugging doesn’t fit because each error is different. The explanations vary. No consistent format needed. I keep that as regular prompts.

Step-by-Step Skill Creation

Here’s my process for creating a new skill:

Step 1: Document Your Current Process

I run through the task manually. Write down every prompt, every explanation, every correction I make.

Manual Process Documentation
Session 1 - Manual code review:
Prompt 1: "Review this commit for error handling"
Claude: "What patterns?"
Prompt 2: "No empty catch blocks, specific error messages..."
Claude: [Review output varies]
My corrections:
- "You missed the nested exception"
- "Format it as a list, not paragraphs"
- "Don't suggest stylistic changes"
Session 2 - Repeat:
Same prompts, same corrections

I do this 3-5 times. The patterns emerge. The repeated explanations become skill instructions.

Step 2: Create the Directory

Create skill directory
mkdir -p ~/.claude/skills/my-skill-name

The directory name should be descriptive. code-review, seo-audit, content-planner - names that match what the skill does.

Step 3: Write the SKILL.md

Start with frontmatter. The description is the most important field.

Frontmatter Rules
---
name: Human-readable name
description: WHEN to invoke this skill. Be specific.
---

Bad description: “Review code” Good description: “Review code for error handling, security issues, and code quality”

The good description tells Claude exactly when to use this skill.

Step 4: Add Instructions

I structure instructions in sections:

Instruction Structure
# Instructions
## What to Check
[Specific criteria]
## Output Format
[How to format the response]
## What to Avoid
[Anti-patterns]
## Examples
[Good vs bad examples]

The “What to Avoid” section matters. Claude will try to help in many ways. Without limits, it might do things you don’t want.

Step 5: Test and Iterate

I invoke the skill and check output:

Testing Process
Me: "Review this commit"
Claude: [Uses skill, outputs formatted review]
Check:
- Did it use my criteria?
- Is output in correct format?
- Did it avoid the anti-patterns?
If NO to any → Edit SKILL.md, test again

My first code review skill missed empty catch blocks. I added that criteria explicitly. Next test worked.

Installing Skills from GitHub

Other developers share skills on GitHub. Installation is straightforward:

Install skill from GitHub
# Download the repository
git clone https://github.com/user/skills-repo.git
# Copy specific skill
cp -r skills-repo/skill-name ~/.claude/skills/

Or via Claude Desktop Settings:

  1. Open Settings > Skills
  2. Click “Add Skill”
  3. Select the SKILL.md file
  4. Claude loads it automatically

The Reddit thread warned about this: “Don’t just copy skills. They need to match YOUR workflow.”

I install shared skills as starting points. Then I modify them to match my specific criteria.

"Skill
Install shared skill
Test with my workflow
Identify gaps
Add my specific criteria
Test again
Keep iterating until it works for ME

Common Mistakes

MistakeSymptomFix
Vague descriptionSkill never invokedMake description specific to task
No output formatInconsistent responsesAdd explicit format template
Missing examplesClaude guesses criteriaShow good vs bad examples
Too many skillsClaude confused which to useKeep skills focused, limit to 5-10
Copying without adaptingSkill doesn’t match workflowModify to match your criteria
No iterationFirst version doesn’t workTest, fix, test again

The ROI of Skills

I tracked time savings after creating my first three skills:

Time Savings Analysis
Before skills:
Code review setup: 5 min/day × 20 days = 100 min/month
SEO audit setup: 10 min/week × 4 weeks = 40 min/month
Blog planning: 8 min/week × 4 weeks = 32 min/month
Total: 172 min/month wasted on setup
After skills:
Code review: 0 setup time
SEO audit: 0 setup time
Blog planning: 0 setup time
Total: 0 min/month wasted
Time to create skills: 60 min (one afternoon)
Payback period: Less than 1 month

Skills pay off quickly. The investment is small. The return is ongoing.

Summary

Claude Desktop Skills solve the session amnesia problem. Instead of repeating explanations every session, you encode them into SKILL.md files that Claude reads automatically.

The process is straightforward:

  1. Identify recurring tasks - What you do 3+ times per week
  2. Document your process - Run manually, note repeated explanations
  3. Create skill directory - mkdir -p ~/.claude/skills/my-skill
  4. Write SKILL.md - Specific description + detailed instructions
  5. Test and iterate - Fix gaps until skill works for YOU

The Reddit thread’s key insight: “Your context is your moat.” Generic skills exist. But the real value comes from skills that encode YOUR specific workflows.

Start with one task you repeat weekly. Create a simple SKILL.md. Test it. Iterate. Your recurring tasks are your automation opportunities.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments