skl migrate
Rewrite a project's layout. skl use never runs these commands for you.
Synopsis
skl migrate targets
skl migrate targets --prune-old
skl migrate targets --project <dir>
skl migrate projections --materialize
skl migrate projections --materialize --project <dir>
Subcommands
targets
Move a project from the old .claude/skills and .cursor/skills links onto .agents/skills.
--project <dir>. Project root. Default is the current directory.--prune-old. Delete the old.claude,.cursor, and.codexlinks after.agents/skillsexists.
It creates or refreshes .agents/skills/<name> for every project skill, from the library copy, and rewrites skills.toml to list agents as the target. Without --prune-old, the old links stay and the command prints extras ... (opt-in; old links kept unless --prune-old).
projections
Replace symlinks with copies.
--project <dir>. Project root. Default is the current directory.--materialize. Required. Write a copy for every skill listed inskills.tomland set each entry tomode = "copy".
This has the same effect as skl use --all when the default mode is copy. It overwrites managed copies and replaces managed symlinks. It does not overwrite a real directory that skl does not manage.
Output
rematerializing 2 skill(s) as copy
copy writing-tests copy
copy* agents /path/to/project/.agents/skills/writing-tests
updated /path/to/project/skills.toml
Errors
local state: no project skills to migrate under <dir> (expected M0 links in .claude/.cursor)local state: skill <name> is linked in the project but not found in the personal librarylocal state: <path> exists and is not a managed projection; refusing to overwrite (pass --force to clobber a real directory)local state: specify --materialize to convert link projections to copies (or skl use --all)