Skip to main content

Module paths

Module paths 

Source
Expand description

Canonical on-disk locations, shared by every subcommand.

  • Index (the big embedding cache) lives under $XDG_DATA_HOME/ski.
  • Session state (per-conversation dedup) lives under $XDG_STATE_HOME/ski.

Both fall back to the XDG defaults relative to $HOME when the env vars are unset, matching the rest of the toolchain.

Functions§

claude_settings_path
~/.claude/settings.json — Claude Code’s user settings. ski init --host claude merges its hooks here, the marketplace-free install path for users who can’t run /plugin.
config_dir
$XDG_CONFIG_HOME/ski (default ~/.config/ski). Home for the downloaded fastembed model cache, so the ONNX models are kept once per user instead of dropping a .fastembed_cache into whatever directory the hook happens to run from (commonly a git work tree).
config_path
Optional user config (~/.config/ski/config.toml). Absent by default; when present its fields override the compiled defaults (see crate::config).
data_dir
$XDG_DATA_HOME/ski (default ~/.local/share/ski).
index_path
Persistent skill index for host. Each host indexes only its own skill library (see crate::config::Config::for_host), so the files are kept apart; Claude keeps the original index.json to avoid orphaning it.
model_cache_dir
Cache directory for downloaded embedding/reranker model files, passed to fastembed’s with_cache_dir. Lives under config_dir.
opencode_plugin_dir
opencode’s global plugin directory ($XDG_CONFIG_HOME/opencode/plugin, default ~/.config/opencode/plugin), where ski init --host opencode drops ski.ts.
session_path
State file for a single conversation. The id is sanitized so a hostile or odd session id can’t escape the sessions directory.
sessions_dir
Directory holding one JSON file per conversation.
state_dir
$XDG_STATE_HOME/ski (default ~/.local/state/ski).
telemetry_path
Opt-in telemetry event log (append-only JSONL). Written only when SKI_TELEMETRY is truthy; read by ski history. See crate::telemetry.