Skip to main content
skills:
  - source: <string>
    agents: <[string] | ["*"]>
    global: <bool>          # optional, default false
    select: <[string]>      # optional

Type

array[SkillEntry]

Required

No. Omit skills: if you have nothing to install.

Entry fields

source

FieldTypeRequired
sourcestringyes
Where the skills come from. Accepts:
FormatExample
GitHub shorthandanthropics/skills
Full HTTPS URLhttps://github.com/anthropics/skills
Git SSH URLgit@github.com:anthropics/skills.git
Local path./company-skills or ~/my-skills
The source can contain one or many skills. Each top-level subdirectory containing a SKILL.md is one skill.

agents

FieldTypeRequired
agentsarray of stringsyes
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.

global

FieldTypeRequiredDefault
globalboolnofalse
ValueInstall layout
false./.<agent>/skills/<name> (per-project)
true~/.<agent>/skills/<name> (per-user)

select

FieldTypeRequired
selectarray of stringsno
Names (matching subdirectory names in the source) of specific skills to install. Empty or omitted = install everything in the source.

Example

skills:
  - source: anthropics/skills
    agents: ["*"]
    global: false

  - source: vercel-labs/agent-skills
    agents: [claude-code, cursor]
    select: [test-writer, code-reviewer]
    global: true

  - source: ./company-skills
    agents: [claude-code, cursor]
    global: false

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.

Concepts: Skills

Configure skills

Agent integrations