
Turn Repeated Claude Code Workflows Into Auto-Loading Skills
Chris Harper
2 min read
Jul 23, 2026 · 20:06 UTC
TL;DR: Drop a skill.md into .claude/skills/ with a description of when it applies, and Claude auto-loads it whenever you start a matching task — no slash command, no explanation needed.
You already know about custom slash commands (.claude/commands/) — you invoke those explicitly. Skills are different: Claude loads them automatically when you start a task that matches the skill's description, with zero invocation ceremony.
Anatomy of a skill
.claude/skills/publish-post/skill.md:
---
name: publish-post
description: >
Publishing a blog post from a markdown draft — runs the ingest
pipeline, validates posts.json, and stages a commit. Use when
asked to publish, ingest, or update a blog post.
---
# How to publish a post
1. Check for a draft in `~/Downloads/cct-blog-drafts/` or the given path
2. Run `node scripts/publish-post.mjs <file> --intake`
3. Run `node scripts/validate-blog.mjs` — must pass before continuing
4. Stage: `git add content/feed.xml public/blog/posts.json`
5. Commit: `blog: publish <slug> (YYYY-MM-DD)`
When you say "publish the AI news draft," Claude sees the task matches publish-post, loads the skill, and knows the exact pipeline — without you explaining it every session.
Skills vs. commands
.claude/commands/ | .claude/skills/ | |
|---|---|---|
| Invocation | Explicit: /command-name | Automatic: model triggers on task match |
| Content | Task template with $ARGUMENTS | Full instructions + context + optional scripts |
| Best for | On-demand shortcuts | Recurring expert workflows |
Both can be project-scoped (.claude/skills/) or user-scoped (~/.claude/skills/).
When to write a skill
Write a skill for any workflow you've explained to Claude more than twice. Good candidates: deploy checklists, test-and-commit sequences, data migration playbooks, schema update procedures, or code-review protocols specific to your codebase.
The description: frontmatter is the trigger — write it as a description of when the skill applies, not what it does. Claude matches it semantically: "publishing a blog post" and "updating the feed" both activate the example above.
Sources: Extend Claude with Skills — Claude Code Docs · Skills in Claude Code — codewithmukesh.com · Claude Code Skills Guide — nimbalyst.com