Sync Skills for Cloud Agents overwrote local ~/.cursor/skills with an old snapshot, then hung at "50 of 50"

Hey @nathalie_kroeker, thanks for the detailed report, and sorry you lost a day of work to this. I’ve confirmed what you described and flagged it to the team.

Recovering your files: when Cursor replaced each folder in ~/.cursor/skills, it moved the old one to the macOS Trash rather than deleting it outright. Unless the Trash has been emptied since, your Oct 15 versions should still be there:

  1. Open the Trash in Finder and switch to List view.
  2. Right-click the column header and turn on “Date Added” (for items in the Trash, that is when they were deleted), then sort by it.
  3. Look for skill folders added around 4:18 PM on Oct 15. Those are your newer copies. Folders from around 4:19 PM and 4:39 PM are the older Oct 14 copies from the second round.
  4. Copy anything your transcript-based restore missed (the package.json, lockfile and node_modules, for example) back into ~/.cursor/skills.

Your questions:

  • There is no server-side copy of your Oct 15 changes. Your skills were uploaded once when you turned the setting on Oct 14, and nothing from your local folder was uploaded again until you turned it back on Oct 15, after the folder had already been replaced.
  • Today the setting moves your skills rather than mirroring them. Turning it on is meant to copy them into the synced store and then retire the copies in ~/.cursor/skills, and turning it off copies the store’s version back over the local folder. Because your first sync never finished, your local folder stayed in place and looked live, but it was no longer what got synced.
  • Cancel stops a run without removing anything. Turning the setting off is what overwrote the folder.

For now I’d keep the setting off. If you try it again later, back up the folder first (for example cp -R ~/.cursor/skills ~/cursor-skills-backup in Terminal).

One thing that would help the team: do any skill names exist in both ~/.cursor/skills and ~/.claude/skills? The output of comm -12 <(ls ~/.cursor/skills) <(ls ~/.claude/skills) would tell us. We think an overlap like that may be what kept the sync stuck at 50 of 50.