
How to Build a High-Quality AI Skill (SKILL.md Format Guide)
The complete format guide for building a high-quality AI skill: the SKILL.md specification, metadata.json fields, multi-file skill packaging, and the quality bar we hold every skill in the CreatorSkills catalog to.
You've got an AI workflow that saves you time every week. Maybe it's a prompt that turns a raw YouTube transcript into a full repurposing plan. Maybe it's a hook generator tuned to your niche. Maybe it's a brand voice system that keeps your ghostwriter on track. If you're new to the concept, our complete guide to AI skills for content creators explains what skills are and why they matter — and our AI prompts vs AI skills comparison shows exactly how skills differ from the prompts you've been writing.
If that workflow reliably saves you real time, it's worth turning into a proper skill — something you can reuse, hand to a teammate, or drop into a fresh Claude Project without re-explaining yourself from scratch.
This is the format guide we use to build every skill in the CreatorSkills catalog: the file structure, the specification, and the quality bar that separates a skill that actually works from a prompt that only sort of does.
What Is a Skill, Exactly?
A skill is a markdown file (or a set of markdown files) that turns a general-purpose AI like Claude or ChatGPT into a specialist. When you install a skill, you're loading a set of instructions directly into your AI tool as a system prompt.
There are no APIs to maintain, no apps to host. You write the instructions once. You (or whoever you share them with) load them and get results immediately. Browse the CreatorSkills catalog to see live examples across categories.
If you want a simple example of a well-built, buyer-friendly skill, study Content Idea Brainstormer alongside this guide. It's a good model for turning a vague creator problem into a tight, useful output.
Skills come in two formats:
- Single-file skills — one
SKILL.mdfile with all instructions. Works for most use cases. - Multi-file skills — a ZIP containing multiple
.mdmodules. Better for complex, multi-step workflows that need separate reference files, templates, or examples.
The SKILL.md Format
Every skill starts with a SKILL.md file. This is the core system prompt — the instructions your AI follows.
There's no rigid template for the body content. Write the instructions however works best for the skill. What matters is that the instructions are complete, clear, and produce consistent results when you (or anyone else) loads them into Claude or ChatGPT.
What good skill instructions include
A defined role. Tell the AI what it is and what it's supposed to do. Be specific.
## System Role
You are a YouTube script specialist who helps creators structure compelling
10-minute educational videos. Your job is to turn a topic and a few bullet
points into a full script with a hook, 3 core sections, and a CTA.
Input requirements. Tell the AI exactly what it needs from the user to do its job well.
## What You Need From the Creator
Before generating the script:
- Video topic (required)
- Target audience (required — e.g. "beginner Python developers")
- Key points to cover (optional — if provided, use them; if not, suggest 3)
- Desired length: short (~5 min) or full (~10 min)
Step-by-step instructions. Break the workflow into explicit steps. Don't assume the AI will figure out the right order.
Output format. Tell the AI exactly what to produce and how to format it. If you want headers, specify headers. If you want code blocks, say so.
Examples. The more concrete your examples, the better the outputs. Good examples are the single biggest lever for skill quality.
Guardrails. Tell the AI what NOT to do. This matters more than most people expect — guardrails are what makes a skill consistently good instead of occasionally good.
What makes a SKILL.md good
- Does loading this into Claude or ChatGPT immediately make the AI noticeably better at the task?
- Are the instructions specific enough that you get useful output on the first try, without needing to prompt-engineer further?
- Is the output format clear? Would two different people get structurally similar outputs from the same inputs?
- Does the skill avoid generic advice that anyone could write in 5 minutes?
metadata.json Schema
Every skill directory in our catalog carries a metadata.json file. This is the same schema we use to drive a marketplace listing — the title, description, pricing, and categorization a buyer sees — and it's a useful structure to adopt even if you're only building a skill for yourself.
Here's a fully annotated example:
{
"name": "YouTube Script System",
"slug": "youtube-script-system",
"description": "Turn a topic into a full 10-minute YouTube script in one prompt.",
"long_description": "Full listing copy. Lead with the outcome...",
"category": "SCRIPTS_OUTLINES",
"platforms": ["CLAUDE", "CHATGPT", "UNIVERSAL"],
"price": 19,
"currency": "USD",
"tags": ["youtube", "scripts", "long-form", "education"],
"complexity": "standard",
"files_included": ["SKILL.md", "README.md", "EXAMPLE.md"],
"external_costs": [],
"author": "YourName",
"version": "1.0.0"
}
Field reference
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | yes | Displayed title. Max ~60 chars. |
slug | string | yes | URL-safe identifier. Lowercase, hyphens only. Must be unique. |
description | string | yes | Short tagline for cards and search results. Under 120 chars. |
long_description | string | yes | Full listing copy. See below. |
category | string | yes | Must be one of the valid enum values. See below. |
platforms | array | yes | "CLAUDE", "CHATGPT", and/or "UNIVERSAL". Use UNIVERSAL if the skill works equally well on both. |
price | number | yes | Price in USD if you're pricing it. Use 0 for free skills. |
currency | string | yes | Always "USD". |
tags | array | yes | 3–8 keyword tags for filtering. Lowercase, no spaces (use hyphens). |
complexity | string | yes | "simple", "standard", or "advanced". Sets expectations for how much setup is involved. |
files_included | array | yes | List of files in your skill (e.g. ["SKILL.md", "README.md", "EXAMPLE.md"]). |
external_costs | array | no | If using the skill requires paid APIs or tools, list them here. Format: [{"name": "OpenAI API", "note": "~$0.01/use"}]. Leave empty array if none. |
author | string | yes | Your name or brand name. |
version | string | yes | Semver string. Start at "1.0.0". |
Valid category values
CONTENT_REPURPOSING Turn long-form content into platform-specific posts, clips, newsletters
TITLES_THUMBNAILS CTR optimization — titles, thumbnail concepts, A/B frameworks
SCRIPTS_OUTLINES YouTube scripts, video outlines, shot lists, talking points
ANALYTICS_OPTIMIZATION Channel analytics interpretation, growth strategy, retention analysis
SPONSOR_BRAND_DEALS Sponsorship research, pitch decks, rate cards, deliverable management
COMMUNITY_ENGAGEMENT Comment responses, community posts, Discord/Slack management
COURSE_CREATION Curriculum design, lesson scripts, quiz generation, student onboarding
FREELANCE_CLIENT Proposals, client onboarding, project briefs, invoice copy, retainer pitches
OTHER Use only if none of the above fit
Writing long_description
This is the copy that sells the skill — whether it's on a marketplace page or just the README you hand a teammate.
Structure it like this:
- Lead with the outcome (2–3 sentences) — What does the user get? Be specific about the result.
- Key capabilities (bullet list) — 4–6 specific, measurable benefits. Not features — benefits.
- Perfect for (1–2 sentences) — Name the target user.
- Example — One concrete before/after showing the skill in action.
Example of a strong long_description:
Turn a raw transcript into five ready-to-post Twitter threads, a LinkedIn article,
three Instagram captions, and a newsletter section — in under 5 minutes.
Key capabilities:
- Adapts tone for each platform automatically (casual for Twitter, professional for LinkedIn)
- Preserves your voice from the original transcript
- Generates posting schedule suggestions based on content type
- Works on any transcript length, from 2-minute clips to 2-hour podcasts
Perfect for YouTubers and podcasters who want to maximize the reach of every piece
of content without spending hours on manual repurposing.
Example: Paste a 45-minute podcast transcript. Get back 12 Twitter posts, a 600-word
LinkedIn article, 4 Instagram captions, and a newsletter intro — all in your voice,
ready to schedule.
README.md
Every skill should include a README.md. This is the human-readable guide that explains how to install the skill and get the best results from it.
A good README includes:
- What the skill does — 2–3 sentences, outcome-first
- What's included — a simple table of files and their purposes
- How to install — step-by-step for Claude Projects and ChatGPT (cover both)
- First prompts to try — 3–4 copy-paste starter prompts
- Tips for best results — 3–5 practical tips that come from actually using the skill
The Viral Hook Generator README is a good reference for format and tone.
Multi-File Skills
Some workflows are too complex for a single instruction file. If your skill has multiple distinct modes, extensive reference material, or separate templates, a multi-file ZIP makes it easier to navigate.
Directory structure
skills/my-skill-name/
├── 01-core-instructions.md # Main system prompt (loaded first)
├── 02-framework.md # Reference framework the AI uses
├── 03-templates.md # Output templates
├── 04-examples.md # Worked examples
├── README.md # Setup guide
└── examples/
└── worked-example.md # Full worked example
Prefix module files with numbers to control load order. The AI reads files sequentially — put the most critical instructions first.
The first numbered file (01-core-instructions.md) functions as the primary system prompt. Additional modules are reference files the AI can draw from as needed.
Packaging a multi-file skill
If you're working from this repo's tooling, npm run skill:package bundles a multi-file directory into a distributable ZIP:
npx tsx scripts/package-skill.ts content/skills/my-skill-name
This bundles all .md files and generates a fileManifest describing the package contents.
In metadata.json, set:
{
"files_included": ["01-core-instructions.md", "02-framework.md", "README.md", "examples/worked-example.md"]
}
Quality Standards
This is the bar we hold every skill in the CreatorSkills catalog to. It's a useful checklist even if you're only building a skill for your own use — a skill that fails these checks is one you'll stop trusting after a few uses.
What makes a skill genuinely good
Clear, specific instructions. The AI knows exactly what to do, in what order, with what output format. No ambiguity.
Consistent output. Two different runs with the same inputs should produce structurally similar, high-quality results.
Genuine value. The skill saves meaningful time or produces results that would take real effort to achieve manually.
Honest positioning. The description matches what the skill actually does. If it says "turn a video into 10 posts," it should reliably produce 10 posts — not sometimes 3.
Works without customization. You should be able to load the skill and get value immediately, without needing to heavily adapt the prompts.
What to watch for
Too vague. "Help me write better content" is not a skill — it's a wish. Every skill needs to do a specific, defined thing.
Generic prompts. If you could write the underlying prompt in 5 minutes, the "skill" isn't adding much. The value is in the depth, the iteration, and the craft that went into making it work reliably.
Misleading descriptions. If the metadata says a skill produces 15 social posts but it reliably produces 5, fix the metadata or fix the skill.
Untested output. Skills that haven't been tested across multiple inputs are easy to spot. Test with real, varied inputs before you trust the output.
Duplicate coverage. Before building, check whether something similar already covers the ground you're aiming for — in the catalog or elsewhere. Fill gaps rather than re-solving a problem that's already handled well.
Pre-flight checklist
Before you consider a skill finished:
- Loaded the skill into Claude or ChatGPT and tested it with 3+ different inputs
- Output is consistent and high-quality across all test cases
-
metadata.jsonmatches what the skill actually does -
long_descriptionleads with the outcome, includes specific benefits, and has a real example -
README.mdcovers installation for both Claude and ChatGPT - An
EXAMPLE.mdshows at least one fully worked input → output - No duplicate coverage of something that already does this well
Frequently Asked Questions
Can I sell the skill I build elsewhere? Yes — nothing about this format ties a skill to any one platform. It's plain markdown you own outright.
Can a skill use the OpenAI API or other paid services? Yes, but disclose external costs in metadata.json under external_costs so anyone using it knows what it'll cost them to run.
What AI platforms should I target? If your skill works on both Claude and ChatGPT, use UNIVERSAL. If it relies on a feature specific to one platform (like Claude's Projects memory or ChatGPT's browsing), target that platform specifically.
Is multi-file packaging supported? Yes — see the Multi-File Skills section above for the directory structure and packaging script.
Browse the current catalog at creatorskills.co/skills to see what's already live and where the format guidance above shows up in practice. And if you're wondering how skills fit into the broader creator workflow ecosystem, our complete guide to AI skills for content creators explains the full picture.
About the author
Founder, CreatorSkills
Caleb Leigh is the founder of CreatorSkills and focuses on buyer-first AI workflows for content creators.
Read the founder profile
