PTENES
MODULE 1.2

📝 Anatomy of SKILL.md

Explore every part of the SKILL.md file—YAML frontmatter, the field name, description as the trigger and the Markdown body that Claude executes step by step.

6
Topics
~20
Minutes
Basic
Level
Theory
Type
SKILL.md FRONTMATTER · NAME · DESCRIPTION · BODY --- name: explainer video description: Creates videos in PT-BR... Use when they ask for --- # Markdown body Steps, rules, examples... ① Frontmatter Delimited by ---/--- ② name kebab-case, same as the folder ③ description ⭐ Trigger — Claude reads here ④ Body Markdown that Claude executes
1

📑 YAML frontmatter

The frontmatter is the metadata block at the top of the SKILL.md. It is delimited by two lines of three hyphens (---) and contains key-value pairs in YAML format. Without this block, Claude Code won't recognize the file as a valid skill.

Main Concept

The YAML frontmatter consists of exactly the lines between the first --- and the second one ---. Everything that comes after the second --- is the skill body in plain Markdown.

This is the first thing the Claude Code harness reads — if the YAML is malformed, the skill won't load.

Real example — skill frontmatter video-explicativo
SKILL.md frontmatter
---
name: video-explicativo
description: Cria vídeos explicativos completos em PT-BR (HTML→MP4 via
  HyperFrames) a partir de um assunto — roteiro, narração TTS local,
  cenas animadas dark premium, captions e CTA do INEMA.CLUB, nos
  formatos 16:9 (YouTube) e 9:16 (Shorts/Reels). Use quando o usuário
  pedir para "fazer um vídeo", "vídeo explicativo", "vídeo sobre X",
  "vídeo pra Shorts/Reels", "mini tutorial em vídeo", "vídeo do
  INEMA", ou quando der um assunto e quiser um vídeo narrado pronto.
---
💡
YAML only needs 2 fields

The minimum valid frontmatter contains only name e description. Extra fields are ignored by the current harness.

Key concepts
📄
SKILL.md
Root file
---
Delimiter
Opens and closes
🔑
Key: value
YAML syntax
⚡
Quick read
Harness First
2

🏷️ name = skill identity

The field name is the skill’s unique identifier. It must be identical to the name of the folder where the SKILL.md is stored, and strictly follow the format kebab-case (all lowercase, words separated by hyphens).

How the name walks through the system
1
Folder in the filesystem

The harness looks for skills in ~/.claude/skills/<name>/SKILL.md. The folder name must match the field name.

2
List of available skills

The reminder system lists all skills by the name. This is the name that appears in Claude’s skills menu.

3
Invocation via Skill tool

When Claude decides to use the skill, it calls Skill(skill: "video-explicativo") — the value is exactly the name.

4
Slash command /name

You can invoke it manually with /video-explicativo. The harness maps directly from the slash to the name.

✓ Correct names
  • ✓ video-explicativo
  • ✓ formato-curso
  • ✓ n8n-workflow-patterns
  • ✓ All lowercase, hyphens, no spaces
✗ Problematic names
  • ✗ VideoExplicativo — camelCase not allowed
  • ✗ video explicativo — spaces break the lookup
  • ✗ video_explicativo — underscore is not the standard
  • ✗ Folder name mismatch = skill won’t load
Key concepts
🐍
kebab-case
Required default
📁
= pasta
Must be identical
/
Slash command
/nome-do-skill
🔎
Direct lookup
Harness uses the name
3

🎣 description = activation trigger

A description is the part most important in the SKILL.md. It’s the only field Claude reads to decide in real time whether to invoke the skill. Think of it as the packaging label: if the label doesn’t describe what’s inside, Claude grabs the wrong package.

How Claude uses the description
🧠
Reading in the system-reminder

Each turn, Claude receives all the names + descriptions of the skills available in context.

⚖️
Semantic match

Claude compares the user's message with the descriptions and decides which skill has the greatest semantic overlap.

🚀
Automatic invocation

When there's a match, Claude calls the Skill tool before any other response — the description is law.

⭐
The description decides everything

The body of SKILL.md can be perfect, but if the description is vague, the skill will never be triggered. Spend twice as much time on this field.

Key concepts
🎣
Trigger
Triggers the skill
🔍
Semantic match
Claude compares
⚡
Before anything else
Required invocation
4

✨ Writing good descriptions

A good description has two parts: a one-sentence summary of what the skill does, followed by concrete trigger phrases with variations of requests the user might make. The more synonyms and variations, the greater the semantic coverage.

Anatomy of the description in the video-explicativo
Part 1 — What the skill does

Creates complete explainer videos in PT-BR (HTML→MP4 via HyperFrames) from a topic — script, local TTS narration, premium dark animated scenes, captions, and an INEMA.CLUB CTA, in 16:9 (YouTube) and 9:16 (Shorts/Reels) formats.

Specifies the output (videos in PT-BR), the mechanism (HTML→MP4) and sub-products (script, TTS, captions, CTA).

Part 2 — Trigger phrases (the most important part)

Use when the user asks to "make a video," "explainer video," "video about X," "video for Shorts/Reels," "mini video tutorial," "INEMA video," or when they provide a topic and want a ready-to-use narrated video.

These are literal quotes of how the user would ask — with quotation marks, variations in wording, and distinct use cases.

✓ Effective description
  • ✓ Includes phrases the user literally types
  • ✓ Has synonyms: "video", "video tutorial", "mini video"
  • ✓ Covers channel variations: YouTube, Shorts, Reels
  • ✓ Mention the concrete output: MP4, narration, captions
  • ✓ Uses "Use when the user asks for X, Y, Z"
✗ Weak description
  • ✗ "Creates videos." — too vague, without triggers
  • ✗ Only explains “how,” not “when to use”
  • ✗ Uses technical jargon the user would never type
  • ✗ Doesn't list the possible request variations
  • ✗ One line only — minimum semantic coverage
🎯
Gut check: "Would the user say this?"

For each trigger phrase you write, ask: "Would a real user, without knowing this skill exists, type this phrase?" If the answer is yes, it's a good trigger. Technical terms internal to the system are poor triggers.

Key concepts
📢
Trigger phrase
What the user says
🔄
Synonyms
Increases coverage
📌
Use cases
Concrete scenarios
🚫
No jargon
User's language
5

📄 Body in Markdown

Everything that follows after of the second --- is the skill body. It's a regular Markdown document that describes, step by step, what Claude should do when the skill is activated. Claude reads and executes it literally.

Main Concept

The body of SKILL.md is the execution script from Claude. If the description is the trigger, the body is the operating instructions. Claude follows the body like a checklist: it reads, understands, and executes each step in order.

Typical structure of a skill body
SKILL.md — body (after the second ---) structure
# Vídeo Explicativo (HyperFrames)

## Pré-requisitos (já instalados nesta máquina)
- Node.js ≥ 18, npx hyperframes, FFmpeg, Kokoro TTS
- Voz: pf_dora · `--speed 0.98` · sem espeak-ng

## Fluxo (sempre nesta ordem)

1. **Roteiro** — escreva `SCRIPT.md`: 6–9 cenas, do primeiro
   princípio ao avançado, com exemplo real.
2. **Projeto** — `npx hyperframes init <nome> --example blank`
3. **Fontes** — `node fetch-fonts.mjs`
4. **Narração** — gere WAVs com Kokoro, voz `pf_dora`
5. **Composição** — adapte `composition-template.mjs`
6. **Validar** — `npx hyperframes lint`
7. **Render** — `--quality high`

## Regras de ouro (não-negociáveis)
- Animar `.scene-inner`, nunca o wrapper `.clip`
- Fontes locais via `@font-face` (não CDN)
- Timing vem de AUDIO[] — fonte única de verdade
What you can put in the body
→Numbered step lists (the most common)
→Code blocks with exact commands
→Business rules in bold Markdown
→Links to reference files
→H2 sections to organize subtasks
→Examples of expected output
Key concepts
📋
Checklist
Claude executes
#
H2 per section
Clear organization
💻
Real commands
Exact and copyable
🔗
References
Links to files
6

⚠️ Common errors in SKILL.md

Small oversights in SKILL.md cause silent failures: the skill doesn’t load, doesn’t trigger, or triggers at the wrong time. Learn the most common mistakes and how to avoid them before publishing your skill.

🚨
Skill not appearing in the menu?

The most common cause is malformed frontmatter. Always check: the file starts with --- on the first line (no spaces before it) and there is a second --- of closing.

ERR 01 --- missing or misplaced
✗ Wrong
name: meu-skill
description: Faz coisas...

# Corpo aqui

Without the delimiters ---, the harness ignores the frontmatter.

✓ Correct
---
name: meu-skill
description: Faz coisas...
---

# Corpo aqui

Both --- required, each on its own line.

ERR 02 Incorrect indentation in multiline YAML
✗ Wrong
---
name: meu-skill
description: Texto longo
que continua aqui
sem indentação
---

A line without indentation breaks YAML multiline — the parser sees a new field.

✓ Correct
---
name: meu-skill
description: Texto longo
  que continua aqui
  com 2 espaços de indentação
---

Continuation lines must have at least 2 spaces of indentation.

ERR 03 Vague description — skill never activated
✗ Wrong
---
name: video-explicativo
description: Cria vídeos.
---

Without concrete trigger phrases, Claude rarely makes the correct semantic match.

✓ Correct
---
name: video-explicativo
description: Cria vídeos em PT-BR.
  Use quando o usuário pedir
  "fazer um vídeo", "vídeo
  sobre X", "tutorial em vídeo".
---

Trigger phrases in quotation marks dramatically increase the match.

🛠️
Pre-publish checklist
  • ✓ File starts with --- on line 1 (no BOM, no spaces)
  • ✓ Second --- present after the YAML fields
  • ✓ name same as the folder name (kebab-case)
  • ✓ description has at least 3 concrete trigger phrases
  • ✓ Description continuation lines indented with 2 spaces
Key concepts
---
Delimiters
Required
⎵⎵
2 spaces
Multiline YAML
🎯
Triggers
Minimum 3 sentences
📁
name = folder
Unique identity

✅ Module 1.2 Summary

What you learned in this module

✓ The YAML frontmatter is delimited by the two --- and contains name + description
✓ The field name must be in kebab-case and identical to the skill folder name
✓ A description is the activation trigger — Claude reads this field to decide when to invoke the skill
✓ Good descriptions contain concrete trigger phrases with variations of what the user might type
✓ The Markdown body (after the second ---) is the execution script Claude follows step by step
✓ Common errors: --- missing, incorrect YAML indentation, vague description without trigger phrases
Next module:
1.3
🧠 Progressive Disclosure

Learn how to structure the SKILL.md body in layers of depth—from basic usage to advanced cases—so Claude can execute the skill accurately in any context.