Skip to content

SKILL.md format ​

The atomic unit of a skill is a folder containing a SKILL.md file with YAML frontmatter. The format is defined by the open Agent Skills specification; AgentSkills CLI implements it faithfully.

Minimum ​

markdown
---
name: my-skill
description: One-line hint that helps an agent decide when to use this skill.
---
# my-skill

Body markdown. This is what the agent reads.

Two frontmatter fields are required: name and description. Both must be strings.

Frontmatter schema ​

yaml
---
name: <slug>             # required, string. Used as the install directory name (kebab-case).
description: <one line>  # required, string. Shown in lists and to agents at discovery time.
metadata:                # optional, free-form object.
  internal: false        # if true, hidden unless INSTALL_INTERNAL_SKILLS=1 or user names it explicitly.
  any: thing             # arbitrary fields passed through to the installer.
---

name ​

Used as the install directory name. Run through a kebab-case sanitizer (lowercased, non-alphanumeric runs collapsed to -, leading/trailing dots and hyphens stripped, capped at 255 chars).

This means My Cool Skill! and my-cool-skill install to the same directory. The displayed name in list output preserves the original casing where possible.

description ​

One-line hint shown in:

  • agentskills-cli list output (truncated to ~80 chars)
  • agentskills-cli find results
  • The multi-select prompt during add
  • Agent-side discovery (some agents read this directly to decide which skills to apply)

Keep it action-oriented. Good: "Run a database migration with safety checks." Bad: "Database stuff."

metadata ​

Free-form. Two known fields:

FieldEffect
metadata.internal: trueHides the skill from default discovery. To install, the user must set INSTALL_INTERNAL_SKILLS=1 OR pass -s <skill-name> explicitly. Useful for skills that are dependencies of others, or experimental ones.

Anything else under metadata is passed through to the installer and ignored unless your tooling reads it.

Body content ​

The body (everything after the closing ---) is what AI agents actually read. Markdown is the universal format. Conventions across the agent-skills ecosystem:

  • Lead with the purpose in a sentence or two
  • Add a ## When to invoke section with concrete trigger conditions
  • Add a ## Notes or ## Reference section for things the agent should know
  • Keep it concise - agents have limited context windows

Multi-skill collections ​

A single source (git repo, NuGet package, npm package) can carry many skills. Each subfolder with a SKILL.md is independently installable.

my-skills-repo/
└── skills/
    ├── skill-one/SKILL.md
    ├── skill-two/SKILL.md
    └── skill-three/
        ├── SKILL.md
        └── reference.md

Discovery scans the conventional priority directories first, then recurses up to 5 levels deep, skipping node_modules, .git, dist, build, __pycache__.

Excluded from copy ​

When AgentSkills CLI installs a skill, it copies the contents of the SKILL folder but excludes:

  • metadata.json (a separate file - rare, but reserved)
  • .git/
  • __pycache__/
  • __pypackages__/

Broken symlinks are skipped silently rather than aborting the install.

Validation ​

AgentSkills CLI validates frontmatter on parse:

  • Missing name or description → skill ignored (not installed, no error)
  • Wrong types (e.g., name: 42) → skill ignored
  • Body without frontmatter → skill ignored (the YAML --- block is required)

If agentskills-cli add reports "No SKILL.md files found", check that your SKILL.md has both a proper --- delimited frontmatter AND the two required fields.

Next ​

Released under the MIT License.