Type
array[SkillEntry]
Required
No. Omitskills: if you have nothing to install.
Entry fields
source
Where the skills come from. Accepts:
The source can contain one or many skills. Each top-level subdirectory containing a
SKILL.md is one skill.
registry
Registry provenance for entries created by
gaal skill install, usually skills.sh.
registry does not change how gaal sync fetches skills. Sync remains source-based and uses source:. Registry-backed entries are still distinct from legacy entries that have the same source but no registry:.
agents
Either a list of registry names (
[claude-code, cursor, codex]) or the wildcard ["*"].
["*"] resolves at sync time to agents currently detected on this machine. Use gaal sync --force to expand it to every registered agent regardless of detection.
For registry installs, omitted agents and agents: ["*"] are not treated as equivalent. gaal skill install writes agents: ["*"] explicitly when you accept the default.
global
target_subdir
Optional subdirectory under the resolved agent skills directory. Use it when an agent supports grouping skills, or when you want two entries from the same source to land in different folders.
The value must be relative and cannot contain
...
select
Names (matching subdirectory names in the source) of specific skills to install. Empty or omitted = install everything in the source.
tools
CLI tools this skill collection depends on. Checked for presence by
gaal doctor and surfaced in the gaal sync missing-tool banner. Accepts the same shorthand and full forms as the top-level tools: block — see Tools.
Example
Behaviour
- Sources are fetched once per sync and reused across all targeted agents.
- Skills already at the right version are reported
= unchanged. - Skills no longer in the config are left alone unless you pass
--prune. - If
select:is empty or omitted, the entry covers every skill in the source. - Install identity is based on
source,registry, normalizedagents,global, andtarget_subdir.