Part V — File Formats and Protocols
This part covers Chapters 21–24: the SKILL.md format, data and backup, file naming conventions, and the settings-export format.
21. Skill (SKILL.md) format
[!ref] Full details in the User Manual, "The Skill system".
21.1 File structure
<skill-root>/
├── SKILL.md # required; frontmatter + body
├── README.md # optional; human-facing
├── examples/ # optional; example input/output
└── … # optional resources
21.2 Frontmatter fields
The top of SKILL.md is a YAML frontmatter block delimited by ---. Recognised fields:
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | ✓ | Slash name (lowercase hyphenated recommended) |
description |
string | ✓ | One-line description; listed in /help |
argument-hint |
string | <arg1> <arg2> hint |
|
allowed-tools |
array | Allow-list of tools for this skill | |
denied-tools |
array | Deny-list (mutually exclusive with allow-list) | |
work-modes |
array | Applicable modes [plan, execute, …] |
|
model |
string | Force a specific model; otherwise inherit | |
temperature |
number | Force temperature; otherwise inherit | |
version |
string | Semantic version | |
license |
string | SPDX identifier | |
author |
string | Author / team | |
tags |
array | Marketplace filtering | |
signature |
string | GM signature block (signing tool writes this) |
21.3 Body template
Body is standard Markdown with extensions:
| Syntax | Meaning |
|---|---|
$1 $2 $N |
Nth positional argument |
$ARGUMENTS |
All args joined verbatim |
!`<shell>` |
Shell preprocess; the output substitutes here |
{{include:path}} |
Inline another Markdown file (relative to skill-root) |
21.4 Three-layer priority
| Layer | Path | Priority |
|---|---|---|
| Global | Global skills directory | Lowest |
| Workspace | <workspace>/.config/skills/<name>/ |
Middle |
| Plugin | Bundled with a plugin pack | Highest |
21.5 Invocation
| Method | Trigger | Behaviour |
|---|---|---|
| User slash | /<name> <args> |
Render and inject into the next system prompt |
| Assistant active | skill.invoke tool |
Render and return as a tool response in the stream |
21.6 Built-in skills
- Built-in skills (e.g. skill-creator) are materialized on startup, with content drift auto-overwritten.
- Build-time signing + a built-in signature anchor (trust
ExtraSignerRoots) let them pass even under a strict signing policy. - The Settings → Skills panel marks built-in vs. user vs. third-party with a "Built-in" badge.
- Compatible with Agent Skills (agentskills.io): cross-client discovery / parsing tolerance + tool-name translation mapping.
21.7 market.check (publishing-contract validation)
A built-in read-only, deterministic, offline tool that validates a local skill / plugin directory against the zMarket publishing contract:
| Param | Type | Default | Notes |
|---|---|---|---|
path |
string | — | required, target directory relative path (e.g. .avlcode/skills/my-skill) |
kind |
string | auto-detect | skill / plugin / mcp / provider |
version |
string | inferred | override / supply strict semver |
source |
string | ./<name> |
override source form |
manifest |
string | derived | supply the manifest JSON directly |
Reports pass / fail + reasons + what's missing (name slug, strict semver, source form, capability declaration, archive safety, etc.). No network, no submission. Note: a .skill-sign signature ≠ zMarket acceptance; it only checks the publishing-contract shape, not a runtime security audit.
