← Back to Blog
Reference2026-02-08

OpenClaw Skill Manifest Reference: Format, Schema & Examples

Every OpenClaw Skill starts with a manifest file—skill.yaml—that tells OpenClaw what the Skill does, what permissions it needs, and how to run it. This reference covers every field in the manifest format, with examples you can copy and adapt for your own Skills.

What Is a Skill Manifest?

A Skill manifest (skill.yaml) is the configuration file at the root of every OpenClaw Skill. It defines the Skill's identity (name, version, author), its capabilities (what it can do), its requirements (permissions, configuration), and its entry point (how to run it). When you install a Skill from ClawHub, OpenClaw reads this manifest to understand what the Skill needs and how to integrate it safely.

Manifest Schema Overview

Here is the complete schema for a skill.yaml file. Required fields are marked. All other fields are optional but recommended for published Skills.

# skill.yaml - Complete Schema
name: string          # Required. Unique skill identifier
version: string       # Required. Semver format (1.0.0)
author: string        # Required. Your username or org
description: string   # Required. What the skill does
license: string       # Optional. Default: MIT

permissions:          # Required. List of needed permissions
  - network           # HTTP/HTTPS access
  - filesystem        # Read/write files
  - browser           # Browser automation
  - shell             # Execute shell commands
  - notifications     # Send user notifications

config:               # Optional. User-configurable options
  api_key:
    type: string
    required: true
    description: "API key for the service"
    secret: true      # Stored in vault, not plaintext
  refresh_interval:
    type: number
    required: false
    default: 300
    description: "Check interval in seconds"

entryPoint:           # Required. How to run the skill
  type: string        # natural | typescript | shell
  path: string        # File path (for ts/shell)
  prompt: string      # Natural language (for natural type)

triggers:             # Optional. Auto-activation rules
  keywords: []        # Trigger on these words
  schedule: string    # Cron expression
  webhook: string     # Webhook endpoint path

Field-by-Field Reference

Name: A unique identifier using lowercase letters, numbers, and hyphens. Must be unique on ClawHub. Example: weather-reporter. Version: Semantic versioning (major.minor.patch). Increment major for breaking changes, minor for new features, patch for fixes. Author: Your ClawHub username or organization name. This is verified when publishing. Description: A clear, concise explanation of what the Skill does. This appears in search results on ClawHub, so make it descriptive. License: The open-source license for your Skill. Defaults to MIT if not specified. Common choices: MIT, Apache-2.0, GPL-3.0.

Permissions Reference

Permissions control what a Skill can access on the user's system. Users see the requested permissions before installing a Skill, similar to mobile app permissions. Request only what you need—Skills with fewer permissions get more installs.

# Available permissions:
permissions:
  - network        # Make HTTP/HTTPS requests
  - filesystem     # Read and write local files
  - browser        # Control Chrome/Chromium browser
  - shell          # Execute shell commands
  - notifications  # Send notifications to user
  - calendar       # Access calendar data
  - email          # Access email (read/send)
  - vault          # Access encrypted vault secrets
  - trading        # Access trading module
  - voice          # Use voice/TTS capabilities

# Example: A weather skill only needs network
permissions:
  - network
  - notifications

Configuration Options

The config section defines user-configurable options for your Skill. Each option has a type, description, and optional default value. Options marked as secret are stored in the encrypted vault instead of plaintext config files. Supported types are: string, number, boolean, and array.

# Config field types and options
config:
  api_key:
    type: string
    required: true
    description: "Your API key"
    secret: true           # Stored encrypted in vault
  
  check_interval:
    type: number
    required: false
    default: 300
    description: "Check interval in seconds"
    min: 60                # Minimum value
    max: 86400             # Maximum value
  
  enabled_features:
    type: array
    required: false
    default: ["alerts", "reports"]
    description: "Which features to enable"
  
  verbose_logging:
    type: boolean
    required: false
    default: false
    description: "Enable detailed logging"

Entry Point Types

Skills can be implemented in three ways. Natural language is the simplest—you describe what the Skill should do, and OpenClaw generates the logic at runtime. TypeScript gives you full programmatic control with access to the OpenClaw SDK. Shell scripts are useful for wrapping existing CLI tools. For most use cases, start with natural language and upgrade to TypeScript only if you need complex logic or external npm packages.

Complete Working Example

Here is a fully working Skill manifest for a stock price checker that monitors prices and sends alerts when they cross a threshold.

# skill.yaml - Stock Price Alert Skill
name: stock-price-alert
version: 1.2.0
author: openclaw-community
description: Monitor stock prices and get alerts when
  they cross your target price. Supports all major
  exchanges via Alpha Vantage API.
license: MIT

permissions:
  - network
  - notifications

config:
  alpha_vantage_key:
    type: string
    required: true
    description: "Alpha Vantage API key (free tier works)"
    secret: true
  default_exchange:
    type: string
    required: false
    default: "NYSE"
    description: "Default stock exchange"

entryPoint:
  type: natural
  prompt: |
    You are a stock price monitoring skill.
    When asked to watch a stock, use the Alpha Vantage
    API to check its current price.
    Compare against the user's target price.
    Send a notification if the target is reached.
    Include current price, change %, and volume.

triggers:
  keywords: ["stock price", "watch stock", "price alert"]
  schedule: "*/15 * * * *"  # Check every 15 minutes

Validating Your Manifest

Before publishing, always validate your manifest to catch errors early. OpenClaw provides a built-in validation command that checks for missing required fields, invalid types, permission conflicts, and schema compliance.

# Validate your skill manifest
openclaw skills validate ./my-skill

# Expected output for a valid manifest:
# ✓ name: valid
# ✓ version: valid semver
# ✓ author: valid
# ✓ description: present
# ✓ permissions: valid
# ✓ config: schema valid
# ✓ entryPoint: valid
# All checks passed!

# Common validation errors:
# ✗ name contains uppercase letters
# ✗ version is not valid semver
# ✗ required config field missing type
# ✗ unknown permission: database

Common Errors & Fixes

Here are the most frequent issues developers encounter when creating Skill manifests, along with their solutions. "Unknown permission" means you used a permission name that does not exist—check the permissions reference above. "Invalid entry point type" means the type must be natural, typescript, or shell. "Config field missing type" means every config option needs an explicit type declaration. "Name already taken" on ClawHub means another Skill has that name—choose a more specific name for yours.

Frequently Asked Questions

Should I use natural language or TypeScript for my Skill?

Start with natural language—it is faster to develop and works well for 80% of use cases. Switch to TypeScript if you need external npm packages, complex data processing, or precise control over execution flow.

How do I update a published Skill?

Increment the version number in skill.yaml and run openclaw skills publish again. Users with auto-update enabled will get the new version automatically. For breaking changes, increment the major version.

Can I charge for my Skill?

ClawHub currently supports free Skills only. Paid Skills and sponsorship models are on the roadmap. For now, consider accepting donations via GitHub Sponsors or similar platforms.

Start Building

Now that you understand the manifest format, create your first Skill and publish it to ClawHub.