Skip to main content
gaal init [flags]
Creates a new gaal.yaml. Interactively asks how to populate it (import detected skills/MCPs, or start from a documented empty skeleton) and which scope to write to.

Flags

FlagDefaultDescription
-f, --forceoffOverwrite an existing config file.
--scope <project|global>(prompt)Pre-select the scope without prompting.
--import-alloffNon-interactive: import every detected skill and MCP.
--emptyoffNon-interactive: write the documented empty skeleton.
--empty and --import-all are mutually exclusive. When stdin is not a TTY, exactly one of them must be set.

Behaviour

  • With a TTY and no flags, runs the interactive wizard.
  • Without a TTY, requires either --empty or --import-all, plus --scope.

Scopes

ScopeOutput path
project./gaal.yaml
global~/.config/gaal/config.yaml (or $XDG_CONFIG_HOME/gaal/config.yaml)

Examples

# Interactive, the most common case
gaal init

# Empty annotated skeleton, project scope
gaal init --empty --scope project

# Import everything detected, global scope
gaal init --import-all --scope global

# Overwrite existing file with an import
gaal init --import-all --scope project --force

Sample interactive session

$ gaal init
? How should we create your gaal.yaml?
  ▸ Import everything detected on this machine
    Start from an empty documented skeleton

? Where should this configuration apply?
  ▸ Project (./gaal.yaml)
    Global (~/.config/gaal/config.yaml)

? Select skills to import (Space to toggle, Enter to confirm)
  [x] code-review (claude-code, project)
  [x] test-writer (cursor, project)
  [x] git-helper (claude-code, global)

? Select MCP servers to import
  [x] filesystem  → claude_desktop_config.json
  [x] git         → claude_desktop_config.json

✓ wrote ./gaal.yaml (12 skills, 2 mcps)

Quickstart

First-time setup

gaal audit