A skill is one file.
Frontmatter, body, that's it.
A SKILL.md is markdown with YAML frontmatter. AutoVault keeps the format plain, then validates the extra production fields it needs for capability mapping, capability signals, agent targeting, and signed delivery.
Hover a field to see what it does
The colored rows show how the validation gate reads a skill: identity first, then tool requirements, rendering transforms, capability signals, and the markdown body the agent actually follows.
Frontmatter fields, in full
AutoVault does not need proprietary files beside SKILL.md. The fields below are the current production contract the gate and renderer understand.
Open Agent Skills fields. The fields name and description remain the portable core; license, resources, and the markdown body stay plain SKILL.md. AutoVault extensions add local validation, transform, scope, secret-requirement, and signed setup metadata around that open shape.
The transformation manifest
Authors write against canonical capability names. Transform maps adapt those capabilities for each caller at render time, so one source skill can become Claude Code, Codex, Cursor, or AutoHub-specific output without forking upstream content.
The capabilities block, in author terms
The full three-layer permission model — capabilities, transforms, and install scope — has its own page at /permissions. This section is the author-facing slice: what to put in the SKILL.md you are actually writing, and what AutoVault validates when it admits it.
Inside the skill, capabilities is the author's signal: which canonical tools the skill body uses, whether the network is needed, whether the filesystem is read-only or read-write. This is intent, not enforcement — the host agent still owns runtime gating. The schema is exactly three fields:
Per-agent renames belong in a separate TRANSFORM.md; install scope belongs outside the skill entirely. See transforms and install scope.
- List the canonical capabilities the skill body uses in
tools_required— this is the field the gate checks against the body, and the one transforms map per agent. - Add a
capabilitiesblock alongside it to declarenetwork,filesystem, and (optionally) the same tool list as readable metadata for reviewers and agents. - Ship one canonical SKILL.md and a
TRANSFORM.mdper agent variant, not three forks.
- Hide network or filesystem expectations in prose instead of the
capabilitiesblock. - Embed credentials, tokens, or shell scripts in frontmatter.
- Encode host-level install decisions inside the skill — that is the operator's job.
Secrets and .env variables
AutoVault is a skill vault, not a credential vault. A skill may describe that it needs authorization, but secret values belong in the host's real secret store: SSH agent, macOS Keychain, 1Password CLI, provider CLIs, or the deployment platform's secret manager. Do not put passwords, private keys, API tokens, or filled .env files in SKILL.md, resources, transforms, or the vault folder.
requires-secrets:
- name: SITE_SSH_ALIAS
description: SSH config alias for the production host.
required: trueThis is metadata for review and setup. It stores the name and purpose, never the secret value.
bin:
setup:
command: bin/setup
description: Configure SSH alias and key lookup.
requires-tty: trueUse signed bin setup for interactive configuration. The user runs it in their terminal, so credentials do not enter the agent transcript.
- Store SSH keys under
~/.sshwith a named host alias and least-privileged server account. - Store API tokens in Keychain, 1Password, provider CLIs, or platform secrets.
- Teach the skill the safe workflow, expected remote paths, dry-run checks, and rollback commands.
- Do not bundle
.envfiles, SSH private keys, access tokens, or copied dashboard secrets. - Do not instruct the agent to read
~/.ssh/id_*,~/.aws/credentials, or full environment dumps. - Do not use AutoVault signatures as a substitute for secret rotation, revocation, or least privilege.
Try the gate yourself
This is the same five-step pipeline that runs on every skill admitted to a real vault, minus the actual signing step. Paste a SKILL.md, fetch a GitHub/raw URL, and run the browser gate to see what passes, warns, or fails.
Admission through the gate
Once the skill is clean locally, all write paths use the same validation and signing pipeline before generated agent profiles refresh.