skl sync
Sync ~/.local/share/skl/skills with the server by content hash.
Synopsis
skl sync
skl sync --keep-local
skl sync --keep-remote
skl sync --allow-warnings
Flags
--keep-local. Resolve every conflict by keeping the local skill and overwriting the server copy.--keep-remote. Resolve every conflict by keeping the server skill and overwriting the local copy.--allow-warnings. Upload skills that have warning-level secret findings. Block-level findings still refuse.
--keep-local and --keep-remote exclude each other. Without either, an interactive terminal asks per conflict and a non-interactive shell fails.
Output
POST https://api.tryskl.fyi/v1/sync (2 skill(s))
upload: 1 blob(s)
download: 0 blob(s)
conflicts: 0
missing_skills: 0
PUT /v1/blobs/<sha256> (43 bytes)
PUT /v1/skills/writing-tests/tree
sync done uploaded=1 downloaded=0 pushed=1 conflicts=0
A conflict prints hash mismatch: <name> with the local and remote hashes and timestamps.
What it writes
- Skill files under
{data_dir}/skills, for downloaded or overwritten skills. - Hashes and last-sync metadata in
state.db. - Nothing under
.agents/skills, inskills.toml, or in home agent directories.
Requires a device token and an existing state.db. skl login creates state.db. The secret scan runs before any upload.
Errors
not logged in; run skl loginlocal state: no local skill index; run skl init firstupload blocked: ...for block-level secret findings.conflict: non-interactive sync needs --keep-local or --keep-remotecannot reach API at <url>: ...