Claude Code is where skills become truly powerful. Instead of pasting instructions into a chat box, skills live as files on your filesystem. Claude discovers them automatically, loads context from other files, and produces output that writes directly to your project.
This is the playbook for operators who want to build real systems, not just use templates.
How Claude Code Discovers Skills
Claude Code looks for skills in specific locations, in this order:
1. CLAUDE.md ā The Master Briefing
The CLAUDE.md file in your project root loads automatically for every session. Think of it as persistent context that's always on.
your-project/
āāā CLAUDE.md ā Loads automatically, every session
āāā context/ ā Referenced by CLAUDE.md
āāā output/ ā Where generated content goes
CLAUDE.md typically contains:
- Repository structure overview
- Command reference table
- Business context and identity
- Voice and tone guidelines
- Guardrails that apply to all tasks
2. Project Commands ā .claude/commands/
Files in .claude/commands/ become slash commands you can invoke by name:
your-project/
āāā .claude/
āāā commands/
āāā meeting-notes.md ā /meeting-notes
āāā blog-post.md ā /blog-post
āāā weekly-report.md ā /weekly-report
āāā decision-journal.md ā /decision-journal
Type /meeting-notes in Claude Code, and the contents of meeting-notes.md load as your instructions for that session.
3. Personal Commands ā ~/.claude/commands/
Files in your home directory's .claude/commands/ folder are available in EVERY project. These are your personal skills ā not tied to any one project.
~/.claude/
āāā commands/
āāā email-drafter.md ā Available everywhere
āāā code-reviewer.md ā Available everywhere
āāā standup-update.md ā Available everywhere
Pro Tip
Use project commands for project-specific workflows (content production, client deliverables). Use personal commands for universal skills you want everywhere (email drafting, code review, general analysis).
Project Skills vs. Personal Skills
The distinction matters:
| Aspect | Project Skills | Personal Skills |
|---|---|---|
| Location | .claude/commands/ in the project | ~/.claude/commands/ |
| Scope | Only in this project | Every project |
| Context | Can reference project files | Only personal/global context |
| Shared | Committed to git, team can use | Only on your machine |
| Examples | Content workflows, client deliverables | Email drafting, code review |
When to Use Project Skills
- The skill references project-specific context files
- Other team members need access (it's committed to the repo)
- The skill is specific to one business or workflow
When to Use Personal Skills
- The skill works the same across all your projects
- It doesn't need project-specific context
- It's a personal productivity tool, not a team process
Anatomy of a Claude Code Skill
Here's a production skill from a real content operations system. This is the YouTube Idea Refiner ā a multi-mode skill that scores video ideas, generates titles, and produces thumbnail concepts:
# YouTube Idea Refiner\n\nTake a raw video idea and sharpen it into a shoot-ready concept ā or generate fresh ideas if none provided.\n\n## Instructions\n\nYou are a YouTube idea development tool. Your job is to take a rough idea and optimize it against proven growth frameworks before committing to a script.\n\n**Read these files before starting:**\n- context/ideation-rubric.md (scoring criteria, title formulas)\n- context/content-strategy.md (content pillars, mix targets)\n- context/ideal-customer.md (audience language and pain points)\n- context/voice-style-guide.md (tone and voice)\n\n**Also scan** output/ for recent scripts to avoid repetition.\n\n## Mode Detection\n\n**If $ARGUMENTS contains a video idea:** Run the full 7-step refinement workflow.\n\n**If $ARGUMENTS is empty:** Run batch ideation mode ā generate 5-7 topic options across content pillars.\n\n## Batch Ideation Mode\n\nGenerate 5-7 distinct video ideas. For each:\n- Title (50-70 chars, curiosity-first)\n- Thumbnail concept (one-line visual)\n- Hook (opening line, ~15 words)\n- Quick Score (/25 across 5 dimensions)\n\nPresent options. Ask which to develop further.\n\n## 7-Step Refinement Workflow\n\n1. Score the idea (5 dimensions, 1-5 each)\n2. Refine the angle (sharpest version)\n3. Generate 5 title options (different archetypes)\n4. Create 2-3 thumbnail concepts\n5. Write 3 hook options (~30 seconds each)\n6. Build content skeleton\n7. Recommend the best title/thumbnail/hook combo\n\n## Output\n\nSave to: output/youtube-idea-[topic-slug].md
Notice the key patterns:
- Context loading ā Reads 4 files before starting any work
- Mode detection ā Different workflows based on input
- Structured scoring ā Quantitative evaluation, not just vibes
- Consistent output ā Always saves to the same location with a predictable naming scheme
The $ARGUMENTS Variable
Every command file has access to $ARGUMENTS, which captures whatever is typed after the slash command:
/meeting-notes paste my notes here
ā This becomes $ARGUMENTS
Use this to create flexible commands that handle different inputs:
## Input
**Arguments:** $ARGUMENTS
Parse the first word to determine mode:
- "prep" ā Pre-meeting preparation mode
- "followup" ā Post-meeting processing mode
- "review" ā Pattern analysis across all meetings
If no arguments, ask which mode.
Scenario
You want one skill that handles both pre-meeting prep and post-meeting follow-up, since both need the same background context.
Bundling Scripts with Skills
Claude Code skills can execute scripts as part of their workflow. This unlocks capabilities that pure text instructions can't provide.
Example: Transcript Fetching
## Mode: URL Provided
If $ARGUMENTS contains a YouTube URL:
1. Fetch transcript: `python3 get_transcript.py "<URL>" --stdout`
2. Read the full transcript
3. Use it as reference context for the refinement workflow
Example: Data Processing
## Step 1: Pull Current Metrics
Run: `node scripts/pull-metrics.js --format json`
Parse the JSON output and use it as the basis for analysis.
Example: File Operations
## Output
After generating the content:
1. Save the main output to `output/[slug].md`
2. If this is a repurpose command, also save:
- `output/linkedin-[slug].md`
- `output/newsletter-[slug].md`
- `output/notes-[slug].md`
Warning
Scripts bundled with skills should be simple and focused. A 10-line Python script that fetches data is fine. A 500-line application with dependencies is not a skill ā that's a separate tool.
Real Examples from Production Systems
These patterns come from real Claude Code setups built by non-developers. Every example is from a system in active daily use.
The Content Repurposing Pipeline
One skill, four platform-specific outputs:
# Content Repurposer
Takes a YouTube script and creates:
1. Substack post (600-1,000 words, more reflective tone)
2. 5 standalone social notes (under 280 chars each)
3. LinkedIn post (150-300 words, heavy line breaks)
4. Short-form video script (under 60 seconds)
Each output follows platform-specific formatting rules.
Each is saved to output/ with a consistent naming convention.
Total editing time for all four: ~20 minutes.
The Decision Journal
A skill that builds institutional memory over time:
# Decision Journal
Three modes:
- /decision-journal log ā Capture a new decision through conversation
- /decision-journal update [slug] ā Add outcomes to a past decision
- /decision-journal review ā Analyze all decisions for patterns
Decisions saved as individual files:
context/decisions/2026-03-08-pricing-change.md
Review mode analyzes ALL decision files for:
- Bias detection (risk tolerance, status quo bias)
- Prediction accuracy (expected vs. actual outcomes)
- Overdue reviews
- Recurring themes
This pattern is powerful because each decision logged makes the system smarter. After 10+ decisions, the review mode can surface patterns you'd never see yourself.
The Multi-Context Loader
Skills that read different context files depending on the task:
## Before Starting
Read context files based on meeting type:
- All types: context/00-quick-reference.md
- Advisory calls: context/offer-details.md, context/frameworks.md
- Investor calls: context/financials.md, context/exit-parameters.md
- Follow-ups: Read recent entries in context/decisions/
This is efficient ā each task loads only the context it needs, keeping the working set lean.
Building Your First Code Skill
Pick your most repetitive task
What do you do more than twice a week that follows a pattern? Content, reports, meeting prep, data analysis?
Create the file
Create .claude/commands/[skill-name].md in your project. Use kebab-case for the filename.
Write the skill
Header, instructions, workflow steps, output format, guardrails. Reference the Skill Design Playbook for patterns.
Add context files if needed
If the skill needs background information, create context files and reference them from the skill.
Create an output directory
Create an output/ folder. All generated content goes here.
Test with real input
Run /[skill-name] with real input. Check the output. Fix what's wrong.
Iterate three times
Run it three times with different inputs. Each time, strengthen the areas that didn't work.
Directory Structure Best Practices
After building several skills, your project structure should look something like this:
your-project/
āāā CLAUDE.md (Master briefing ā loads every session)
āāā .claude/
ā āāā commands/ (Slash commands)
ā āāā skill-one.md
ā āāā skill-two.md
ā āāā skill-three.md
āāā context/ (Reference documents)
ā āāā 00-quick-reference.md
ā āāā 01-identity.md
ā āāā 02-audience.md
ā āāā 03-voice-guide.md
ā āāā decisions/ (Decision journal entries)
āāā output/ (Generated content)
āāā scripts/ (Helper scripts, if any)
Note
The numbered context files (00, 01, 02...) are a deliberate pattern. They create a hierarchy from quick lookup to deep detail. Claude loads them by reference ā it reads 00 for fast context and dives into deeper files only when the task requires it.
Common Mistakes
Putting everything in CLAUDE.md. The master briefing should be a summary and reference map ā not the complete text of every context file. Point to files, don't embed them.
Too many commands too soon. Start with 1-3 commands. Add new ones only when you discover a genuine pattern. Unused commands are clutter.
No output directory. Without a consistent output location, generated content scatters across your project. One folder, consistent naming, easy to find.
Forgetting to commit commands. If your skills live in .claude/commands/, they should be committed to git so they're versioned and shareable.
What's Next
Individual skills are powerful. But the real magic happens when skills work together as a system. The next playbook covers composing skill systems ā skills that reference other skills, skills combined with commands, and building a complete operational system for your business.