SKILL.md file at its root. That file declares the skill identity and tells the agent how to use the package. The directory can also contain scripts, references, assets, templates, and other files the instructions point to.
Keep the first version small. Start with instructions only, install it, test it explicitly in one thread, then add dependencies or runtime tools only when the workflow needs them.
If you only want to use skills that already exist, start with Skills Overview, Installing Skills, and Managing Skills. This page is for people who want to author a new skill package.
Create a skill
For a Pioneer-native skill, write the contract in YAML frontmatter at the top ofSKILL.md. Do not create _meta.json for new native skills; that file exists for imported OpenClaw-style or registry-style packages.
1
Create a directory
Create one directory named after the skill slug. The root of that directory must contain
SKILL.md.2
Write native frontmatter
Add
name, slug, description, and any optional fields the skill actually needs. Keep identity, dependency, metadata, path, policy, and runtime declarations in YAML frontmatter.3
Write the instructions
In the Markdown body, tell the agent when to use the skill, what files to read, what commands are allowed or expected, what setup steps exist, and what output shape to produce.
4
Add resources only when needed
Add
references/ for longer docs, scripts/ for repeatable helpers, and assets/ for templates or files the skill uses. Mention each resource from SKILL.md; Pioneer does not auto-load supporting files.5
Package one top-level directory
Archive the skill from its parent directory so the archive expands to exactly one top-level folder containing
SKILL.md.6
Install and test explicitly
Install the folder or archive in the desktop Skills view, review validation and health diagnostics, attach the skill from the composer, and test it before enabling implicit invocation.
Package layout
SKILL.md is required. Supporting folders are conventional:
For native Pioneer skills, put the skill contract in YAML frontmatter inside
SKILL.md.
Other files are packaged with the skill, but they are not loaded automatically. Mention them from SKILL.md so the agent knows when to read or use them.
Minimal SKILL.md
slug explicitly in the YAML frontmatter. The open Agent Skills strict profile requires name and description; Pioneer-native packages should provide all three fields in SKILL.md.
Frontmatter fields
Use YAML frontmatter between the opening and closing--- markers. Field names are case-sensitive. Empty strings are trimmed and treated as missing. Unknown top-level fields are ignored by the parser, so do not rely on a custom top-level field unless another system reads it.
The body after frontmatter must not be empty. Pioneer stores the body as the full instruction text returned by read_skill.
Frontmatter summary
Field reference
Each section below describes one top-level YAML frontmatter field. The contract details are based on the current Pioneer parser behavior.name
Use
name for the display name stored in the compiled skill definition.
name. The strict profile also checks that it is 64 characters or less and does not start with -, end with -, or contain --.
For imported compatibility packages, Pioneer can fall back to _meta.json.displayName, then slug, but that sidecar fallback is not the native authoring path. New Pioneer skills should set name directly in frontmatter.
Prefer a short lowercase hyphen name when you want maximum compatibility:
slug
Use
slug for stable machine identity.
slug in SKILL.md frontmatter. The slug is normalized to lowercase hyphen form. For example, Repo Review becomes repo-review. The installed qualified slug is owner/slug, such as platform/repo-review.
For imported OpenClaw-style or registry-style packages, Pioneer can also read _meta.json.slug. Treat that as a compatibility path, not the recommended way to author a new Pioneer skill.
Use lowercase letters, digits, and hyphens in the file to avoid surprises:
description
Use
description to tell Pioneer and the model when the skill is relevant.
- what the skill does
- when it should be used
description and limits it to 1024 characters. If it is missing, Pioneer falls back to the first non-empty body line, but that fallback is worse for discovery and reports strict conformance issues.
owner
Use
owner to put the skill in a namespace.
owner with slug to create the qualified slug:
owner in frontmatter when you need a namespace other than the default. If no owner is provided, Pioneer can derive it from a nested source path. Otherwise it defaults to pioneer.
For imported compatibility packages, _meta.json.owner or _meta.json.ownerId can also provide the owner. When present, sidecar identity fields take precedence over frontmatter identity fields, so do not include _meta.json in a native skill unless you intentionally want that override behavior.
version
Use
version as a catalog and health hint.
1.2 as numbers. For native Pioneer skills, put the version hint in frontmatter.
For imported compatibility packages, Pioneer can read _meta.json.version or _meta.json.latest.version. Those sidecar values take precedence over frontmatter version when present.
Pioneer stores this as a version hint. It is not a package manager lock and does not enforce semantic version rules.
license
Use
license to describe the package license.
compatibility
Use
compatibility for short constraints a reviewer should see.
references/ instead of making this field long.
metadata
Use
metadata for extra structured data that should travel with the skill definition.
Accepted types:
- YAML object
- JSON-object string
metadata is a YAML string, it must parse as a JSON object. Plain text metadata is reported as invalid. An unquoted inline form like metadata: {author: platform-team} is a YAML object, not a string, and is also accepted.
Pioneer recognizes two nested namespaces from compatibility ecosystems:
metadata.openclaw.requires.binsmetadata.openclaw.requires.configmetadata.clawdbot.requires.commandsmetadata.clawdbot.requires.bins
openclaw and clawdbot.
allowed-tools
Use
allowed-tools as an Agent Skills allowlist hint.
Strict-compatible form:
- string, split on whitespace
- array of strings
dependencies
Use
dependencies when missing local state should be visible in install, health, and runtime checks.
Dependencies are checks, not setup scripts. Pioneer checks whether the declared environment variable, binary, command, MCP server, or API key is already available on the gateway host. It does not install missing dependencies from this field.
Do not declare a binary or command in dependencies if the skill’s own setup instructions are supposed to install it first. That can make the skill look broken before the agent has a chance to follow the setup flow. In that case, put the setup flow in the instruction body and declare only external requirements that must already exist.
If install is blocked by a dependency failure, install the missing binary, set the environment variable, register the MCP server, or install the skill on a gateway that has those dependencies.
paths
Use
paths to hint that a skill is relevant when a turn touches matching files or directories.
- string
- array of strings
user-invocable
Use
user-invocable to control explicit user selection.
false for internal helper skills that should not appear as something a user selects directly:
true or false, not "true" or "false".
disable-model-invocation
Use
disable-model-invocation to prevent automatic model-side invocation.
true when the skill should be available only through explicit user or client selection:
false.
runtime
Use
runtime only when the skill must expose callable tools.
Accepted type: object with optional tools array.
Most skills should omit runtime. Instructions, references, and scripts are easier to review. Runtime tools add policy, trust, dependency, and output-safety concerns.
Runtime tool kinds:
Runtime tools are still subject to gateway configuration, trust policy, dependency rechecks, output policy caps, duplicate-name checks, and per-skill tool limits. A declared tool may be excluded even when the skill installs.
_meta.json compatibility sidecar
Native Pioneer skills should use YAML frontmatter in SKILL.md for name, slug, owner, version, description, dependencies, metadata, and runtime declarations.
Pioneer still supports _meta.json beside SKILL.md so imported OpenClaw-style or registry-style skills can keep their existing package identity metadata. The parser reads only a small set of sidecar identity fields:
_meta.json fields:
Precedence rules:
_meta.json.slugtakes precedence over frontmatterslug._meta.json.owneror_meta.json.ownerIdtakes precedence over frontmatterowner._meta.json.versionor_meta.json.latest.versiontakes precedence over frontmatterversion._meta.json.displayNameis used only when frontmatternameis missing.
description, dependencies, paths, allowed-tools, metadata, user-invocable, disable-model-invocation, or runtime in _meta.json. Pioneer reads those from SKILL.md frontmatter.
Package and install details
Archive from the parent directory:repo-review/, and that root must contain SKILL.md.
Install the package from the desktop Skills view. After upload, read validation issues, dependency diagnostics, security findings, and policy state before using the skill in important work. New installs should stay explicit-only until the skill has been tested in at least one low-risk thread.
Quality checklist
- The skill has a short, stable
slug. - The
descriptionsays exactly when the skill should be used. - The body tells the agent what to do, what files to read, and what output shape to produce.
- Large details live in
references/and are linked from the body. - Scripts are executable, deterministic, and tested before packaging.
- Dependencies are declared when missing state should block install or use.
- Runtime tools are avoided unless the workflow truly needs callable tools.
- The first install is tested on a sandbox gateway or low-risk workspace.
Related pages
- Installing Skills explains the desktop install flow.
- Managing Skills explains enabled and implicit policy.
- Skill Security explains trust and testing.
- Skills Architecture describes the parser, conformance profiles, resolver, and runtime tool model.