GuidesSkills

Skill Format

Complete reference for SKILL.md format and metadata requirements.

Every Skill requires a SKILL.md file at its root. This file serves as both the manifest (containing metadata) and the primary instruction set for your AI agent.

File Structure

---
name: skill-name
description: A clear description of what this skill does.
---

# Skill Title

Your skill instructions go here...

Frontmatter

The frontmatter section uses YAML syntax and must be enclosed in triple dashes (---).

Required Fields

FieldTypeDescription
namestringUnique identifier for the Skill
descriptionstringWhat the Skill does and when to use it

Name Requirements

The name field must follow these rules:

  • Characters: Lowercase letters (a-z), numbers (0-9), and hyphens (-)
  • Length: 1 to 64 characters
  • Format: Cannot start or end with a hyphen
  • Reserved: Cannot be anthropic, claude, or bluebag
# Valid names
name: pdf-processing
name: data-analysis-v2
name: my-tool-123

# Invalid names
name: PDF-Processing    # Uppercase not allowed
name: my_skill          # Underscores not allowed
name: -my-skill         # Cannot start with hyphen
name: my-skill-         # Cannot end with hyphen
name: claude            # Reserved name

Description Requirements

The description field should:

  • Clearly explain what the Skill does
  • Indicate when the Skill should be used
  • Be concise but informative (recommended: 1-3 sentences)
# Good descriptions
description: Extract text and tables from PDF files. Use when working with PDF documents.
description: Analyze customer sentiment from feedback text. Useful for support ticket analysis.

# Poor descriptions
description: Does PDF stuff.          # Too vague
description: A skill.                 # Not helpful

Markdown Content

After the frontmatter, write your Skill instructions in Markdown.

---
name: pdf-processing
description: Extract text and tables from PDF files.
---

# PDF Processing

Brief overview of the skill.

## When to Use

- Extract text from PDF documents
- Convert PDF tables to CSV
- Process multiple PDFs in batch

## Quick Start

Basic usage example:

```python
python /skills/pdf-processing/scripts/extract.py document.pdf
```

Scripts

Available helper scripts:

  • scripts/extract.py - Extract text from PDFs
  • scripts/tables.py - Extract tables as CSV
  • scripts/batch.py - Process multiple files

Examples

Extract Text

python /skills/pdf-processing/scripts/extract.py report.pdf

Extract Tables

python /skills/pdf-processing/scripts/tables.py data.pdf --output tables.csv

References

  • reference/complex-layouts.md - Handling multi-column layouts
  • reference/scanned-pdfs.md - OCR for scanned documents

### Content Guidelines

1. **Be specific** - Provide exact commands and file paths
2. **Use examples** - Show real usage patterns
3. **Reference files** - Point to scripts and resources by path
4. **Keep it focused** - Move detailed docs to reference files

## Complete Example

Here's a complete, well-structured SKILL.md:

```md
---
name: image-processing
description: Resize, crop, and convert images. Use when working with image files or preparing images for specific dimensions.
---

# Image Processing

This skill provides tools for common image manipulation tasks including resizing, cropping, format conversion, and optimization.

## When to Use

Use this skill when:
- Resizing images to specific dimensions
- Converting between image formats (PNG, JPEG, WebP)
- Cropping images to specific aspect ratios
- Optimizing images for web use

## Quick Start

Resize an image to 800x600:

```bash
python /skills/image-processing/scripts/resize.py input.jpg 800 600

Available Scripts

resize.py

Resize images to specified dimensions.

python /skills/image-processing/scripts/resize.py <input> <width> <height> [--output <path>]

Arguments:

  • input - Path to input image
  • width - Target width in pixels
  • height - Target height in pixels
  • --output - Optional output path (default: resized_<input>)

convert.py

Convert between image formats.

python /skills/image-processing/scripts/convert.py <input> <format> [--quality <1-100>]

Arguments:

  • input - Path to input image
  • format - Target format (png, jpeg, webp)
  • --quality - Quality for lossy formats (default: 85)

crop.py

Crop images to specified region or aspect ratio.

python /skills/image-processing/scripts/crop.py <input> --aspect <ratio>
python /skills/image-processing/scripts/crop.py <input> --region <x> <y> <width> <height>

Examples

Resize for Social Media

# Instagram square
python /skills/image-processing/scripts/resize.py photo.jpg 1080 1080

# Twitter header
python /skills/image-processing/scripts/resize.py banner.png 1500 500

Convert and Optimize

# Convert PNG to optimized WebP
python /skills/image-processing/scripts/convert.py image.png webp --quality 80

Batch Processing

For processing multiple images, see reference/batch-processing.md.

Dependencies

This skill requires the Pillow library, declared in requirements.txt.

References

  • reference/formats.md - Supported format details
  • reference/batch-processing.md - Processing multiple files
  • reference/optimization.md - Best practices for web images

## Validation

The SKILL.md is validated during upload:

| Check | Requirement |
|-------|-------------|
| File exists | SKILL.md must be present in Skill root |
| Valid YAML | Frontmatter must be valid YAML syntax |
| Name present | `name` field is required |
| Name format | Must match naming rules |
| Description present | `description` field is required |
| Description non-empty | Must have actual content |

## Error Messages

### "Missing SKILL.md"

The Skill directory doesn't contain a SKILL.md file. Create one with proper frontmatter.

### "Skill name is required in SKILL.md frontmatter"

Add a `name` field to your frontmatter:

```yaml
---
name: my-skill
description: My skill description.
---

"Invalid skill name"

The name doesn't match requirements. Use only lowercase letters, numbers, and hyphens.

"Missing description in SKILL.md"

Add a description field to your frontmatter.

"Skill name is reserved"

Choose a different name. anthropic, claude, and bluebag are reserved.

On this page