Package agent skills like container images.
Epos turns a directory of agent instructions into an OCI artifact — so you version it, publish it to the registry you already run, and pull it back anywhere, with the tools you already have.
The problem
Agent skills are shared as zip files in chat threads and copy-pasted folders. There is no version you can pin, no digest you can verify, and no way to say “this skill, but without that section, and with our language set”. Meanwhile every team already runs a registry that solves exactly those problems for container images.
Epos uses that registry. A skill is an OCI artifact: content-addressed, tagged, signable, and pullable by any OCI client. No new server, no new account, no daemon.
Install
Compose a skill from one you already trust
A Skillfile reads like a Dockerfile. Start from a published
skill, remove what does not apply, and set your own values:
FROM ghcr.io/gaarutyunov/skills/reviewer:1.2.0 # Keep the review checklist, drop the house style we do not use. RM sections/house-style.md # Point it at our stack. SET language "Go" APPEND sections/checklist.md <<EOF - Table-driven tests for every exported function. EOF
Build it and install it into the current project:
.claude/skills/reviewer/ now holds the composed skill — the
upstream checklist, minus the section you dropped, with
language rendered as Go. Run
epos ls to see it, and commit
skills.lock.json so the next machine resolves the same
digest.
Every instruction — FROM, COPY,
RM, APPEND, REPLACE,
PATCH, AWK, SET,
UNSET, ARG — with its syntax and a worked
example is in the Skillfile reference.
Publish it back
epos push copies it straight out of the local store into
your registry — nothing is repacked, so the digest that lands upstream is
the one epos pack printed. Use
epos registry login first if the registry wants a credential.
What it produced is an ordinary OCI artifact, so any other OCI client publishes it just as well.
The whole round trip
The quick start runs it end to end — author a skill, publish it, pull it back onto a machine that has never seen it, and install it with your own values filled in. It assumes no prior knowledge of OCI or registries.
Every command, every flag and every default is in the CLI reference, generated from the CLI's own command definitions.