Skip to main content
Manage skills — persisted, versioned expertise loaded with progressive disclosure.

Commands

push

Each push is content-addressed by a hash over the whole file, so an identical push is a no-op and any change creates a new immutable version.

push-version

push is addressed at a slug and creates the skill when that slug is unknown. push-version is addressed at a skill that already exists — by id or by slug — and answers 404 not_found when it does not. A release pipeline pinned to a skill id wants this one, so a rename cannot silently mint a second skill.
An unknown skill is a hard error rather than a create — that is the entire difference from push:
The same operation is client.skills.pushVersion in the SDK and POST /v1/skills/{id}/versions in the API reference.

Attaching to an agent

Skills are referenced on the agent by slug. A bare slug floats to the latest version at session start; a slug@N reference pins an immutable version that never moves when someone pushes a new SKILL.md:
Here refund-policy@3 is frozen to version 3 for reproducibility, while escalation-matrix resolves to the latest version at session start. Use vetta skill versions <slug> to see the pinnable version numbers.

version

vetta skill versions lists the version numbers; vetta skill version returns one of them in full, and it is the only command that returns the skill’s content. That split is deliberate — a history listing stays small no matter how large the skills are.
The sha256 is over the content exactly as stored, so a pin of slug@N is reproducible: re-pushing identical bytes is a no-op and mints no new version.