Configuration¶
config.yaml¶
SkillKeeper stores user settings in config.yaml inside the OS
application-data directory. Print the path:
skillkeeper config path
Open the file in your configured editor:
skillkeeper config edit
Validate the current config (exit non-zero if any section is invalid):
skillkeeper config validate
Sectioned validation with default fallback¶
config.yaml is divided into independently-validated sections. Each section
has a schema and a default value. On load:
- Every section is validated separately.
- An invalid section is replaced in memory by its default.
- The raw file is left untouched.
- The failure is surfaced: a startup warning in the CLI, or an invalid-configuration indicator and system notification in the desktop app.
This means a typo in one section does not break the rest of your configuration.
Both front ends expose a per-section validity indicator and can open config.yaml
in your editor.
Sections¶
general¶
Display language, theme, animation speed, and the editor command used by "open in editor".
general:
language: en # see the list below
theme: system # system | light | dark
animations: normal # fast | normal | off
defaultEditor: code # editor command; omitted means the platform default
Default: language en, theme system, animations normal, no
defaultEditor. For the list of languages see
Localization.
updates¶
Controls when SkillKeeper checks for skill and repository updates.
updates:
mode: on-startup # manual | on-startup | scheduled
intervalMinutes: 720 # used when mode is "scheduled"; 1 minute .. 23 hours
checkOnStartup: false # for "scheduled" mode: also check at startup
Default: mode: on-startup, intervalMinutes: 720 (12 hours),
checkOnStartup: false.
manual- updates are only checked when you ask for them.on-startup- a check runs each time the CLI or desktop app starts.scheduled- a check runs everyintervalMinutesminutes in the background (desktop app only), plus one at startup whencheckOnStartupis true.
agents¶
Enabled agent kinds and per-agent overrides.
agents:
enabled:
- claude
- codex
- copilot
- cursor
- opencode
Default: all five agents enabled.
executables¶
Glob patterns for files that should have the executable bit (+x) set after
install, in addition to files declared executable in the skill manifest.
executables:
globs:
- "**/*.sh"
- "**/run"
Default: empty list (only manifest-declared executables are marked +x).
security¶
Hook-consent policy.
security:
hookConsentPolicy: always-ask # always-ask
always-ask means every hook install or update prompts for explicit
confirmation, regardless of the source repository. It is currently the only
policy: hooks run code on your machine, so consent is never implicit.
notifications¶
Enable or disable system notifications (desktop app).
notifications:
enabled: true
Default: true.
repositories¶
repositories:
gitPath: git # git executable to run
sshKeyPath: /home/you/.ssh/id_ed25519 # optional private key for SSH remotes
Default: gitPath: git, no sshKeyPath (the system ssh setup decides). The
passphrase is never stored in the config; see
Using a dedicated SSH key.
projects¶
projects:
checkIntervalMinutes: 1 # how often tracked folders are re-checked; 1 minute .. 23 hours
Default: checkIntervalMinutes: 1.
mcp¶
mcp:
servers: [] # manually-defined presets; format in MCP servers
Default: empty list. See MCP servers.
Example config.yaml¶
general:
language: en
theme: system
animations: normal
defaultEditor: code
updates:
mode: on-startup
intervalMinutes: 720
checkOnStartup: false
agents:
enabled:
- claude
- codex
- copilot
- cursor
- opencode
executables:
globs: []
security:
hookConsentPolicy: always-ask
notifications:
enabled: true
repositories:
gitPath: git
projects:
checkIntervalMinutes: 1
mcp:
servers: []