Skip to content

gap.toml and gap.lock

gap.toml selects the pinned components and their skills. gap.lock records the exact commits and trees. Sync never moves a pin. Only gap pin <id>@<ref> writes a pin.

schema = "2"
[components.do-skills]
repo = "github.com/edheltzel/Do-Skills"
ref = "master"
names = ["do-commit", "do-todo"]

A component is a repo pinned to one commit. It supplies skills, or its own installer and doctor. The distro includes Do-Skills, Forge, Echo, and Recall. Echo and Recall have empty skill lists: machine sync runs their configured install commands, and those installers own their skills. Gap copies no skills from them and never installs a harness.

Each component’s names array is its skill list. An optional load value changes where a listed skill installs:

load Installation
listed (default), always Install in the home-directory skill destinations
project Install under the invoking project only when any when.files glob matches
command, off Not selected for installation by sync or restore

Sync, status, restore, and doctor read the installed distro’s gap.toml, then ~/.config/gap/gap.toml, then the invoking project’s .gap/gap.toml. Later values win. gap sync --profile <name> applies the distro’s profiles/<name>.toml last.

Overrides can replace an existing component’s enabled and ref, or a listed skill’s load and when.files. They never write gap.lock. If an overridden ref differs from the locked ref, the command stops and names the gap pin command to run.