A Skill is a named bundle of request-local instructions for the model.
Autolith shows the model a bounded catalog, then the model calls skill.load
to load each applicable Skill before work that depends on it.
Autolith supports the Agent Skills SKILL.md format. Put this in
.autolith/skills/release-check/SKILL.md:
---
name: release-check
description: Verify a release from source through its packaged artifact.
license: ISC
metadata:
author: Lambda Symbolics
allowed-tools: Read Grep
---
Follow the repository release procedure completely.
Run every relevant check before reporting success.The YAML frontmatter requires name and description. It may also contain
license, compatibility, metadata, and allowed-tools. Unknown and
duplicate fields are rejected. metadata must map strings to strings. The
other optional fields must be strings.
Standard names contain 1 to 64 lowercase ASCII letters, digits, or single hyphens. A name cannot begin or end with a hyphen, contain consecutive hyphens, or differ from its parent directory.
The Markdown after the closing --- line is the exact instruction body.
An empty body is valid. allowed-tools is descriptive metadata and does not
grant command or tool permissions.
Autolith hashes the exact decoded source re-encoded as UTF-8 and converts it
to a native cache below the configured cache root at
skills/agent-skill-v1/<sha256>/SKILL.sexp. An unchanged source reuses that
cache across restarts. Changed content gets a new conversion. A malformed or
corrupt cache is regenerated from SKILL.md.
The native format remains available:
(:autolith-skill
:version 1
:name "release-check"
:description "Verify a release from source through its packaged artifact."
:instructions
"Follow the repository release procedure completely.
Run every relevant check before reporting success.")A native file is one bounded top-level form with required :version,
:name, :description, and :instructions fields after
:autolith-skill. Autolith rejects unsupported versions, unknown or
duplicate fields, malformed data, extra forms, reader labels, circular or
shared structure, and values of the wrong type.
Autolith scans these roots recursively, with earlier roots taking precedence:
.autolith/skills/at the project root${XDG_CONFIG_HOME:-~/.config}/autolith/skills/- bundled Skill roots
Outside Git, the workspace directory is the project root. Only the exact,
case-sensitive filenames SKILL.sexp and SKILL.md count. Within one
directory, a valid native definition is considered before SKILL.md. An
invalid definition does not reserve its name, so another valid definition may
still be selected.
- Every inference provider request gets a bounded catalog when Skills exist.
- The catalog contains names, descriptions, and original source paths.
skill.loadrecords the selected name for the current logical turn.- In compact tool view, the terminal finalizes a visible
◆ loaded skill: NAMEtranscript marker when selection succeeds. The marker survives ordinary redraws but is not written to durable conversation history. Expanded tool view presents the ordinary transientskill.loadresult instead. - At the next provider boundary, Autolith rereads the original source. A
changed
SKILL.mdis rehashed and reconverted before its current Markdown body is injected. - Selected Skills stack in catalog order.
- Child agents may load Skills only when their role permits
skill.load.
The (skills) command inspects the catalog. It shows selected definitions,
descriptions, paths, and diagnostics for rejected or shadowed files. With no
Skills, it shows the roots where you can create one.
Use (context) to show the catalog, selected contributions, omissions, and
contributor failures.