github runkids/skillshare v0.22.0

3 hours ago

skillshare v0.22.0 Release Notes

TL;DR

  1. One failed target no longer stops a sync. The CLI and the dashboard sync every other target and report the ones that failed, including targets with invalid settings.
  2. The dashboard shows what failed and why. Failed targets are listed first, with a plain-language explanation for common causes.
  3. A tracked repo whose git status cannot be read is no longer treated as clean. update and uninstall stop on it unless you pass --force.
  4. Richer markdown preview in the dashboard.
  5. Breaking changes for scripts: some exit codes and one API response changed. See the migration guide at the end.

Sync keeps going when a target fails

A dashboard sync used to stop at the first skills target that failed, leaving later targets, agents, extras and MCP untouched. It now works like skillshare sync: every target runs, and the failed ones are reported.

The same goes for a target with invalid settings, such as a skills path that is a file, or a project target without a path. It used to stop the whole sync, sync -p or dashboard sync before anything ran. Now only that target is skipped:

✗ broken: invalid config: path is not a directory: /home/me/skills-file

Problems with the config as a whole, such as a missing source folder, still stop sync before any target runs.

A project dashboard (skillshare ui -p) with a custom target that has no path now starts with a warning instead of failing on every request.

Seeing what failed on the dashboard

  • The Sync page lists each failed target above the other warnings, with its part (Skills, Agents, Extras or Config) and the error.
  • Common causes get a one-line explanation: a symlink that points elsewhere, permission denied, a read-only disk, a file where a folder belongs, a missing path, or invalid target settings.
  • A skills symlink that points elsewhere offers Turn on Force.
  • The Last sync card names the failed targets, and the project sync dialog shows the same list.

The operation log now counts every failed target, including agent failures, and lists their names, so a partly failed sync is no longer logged as ok.

Other sync fixes

  • Removing orphaned skills or agents that fails is now reported instead of leaving stale links silently.
  • The dashboard no longer replaces a target folder that is linked somewhere else unless Force is on.
  • An extras failure no longer ends a dashboard sync, and every failed extras target is listed.
  • sync -p agents now checks settings and appears in skillshare log.

Tracked repositories

When skillshare could not read a tracked repo's git status, for example because of a corrupt index, it treated the repo as clean: update pulled over it and uninstall moved it to trash. Now:

  • update and uninstall fail that repo with failed to check git status: <err>, and the other repos in the batch still run.
  • status and list show it as unknown.
  • The error includes what git printed.
skillshare update --all --force   # pull even when git status cannot be read

The dashboard's update check now uses your HTTPS token, so private repos no longer show errors that skillshare check does not.

Dashboard

Skill and file previews render HTML such as <details>, GitHub alerts, ::: containers, emoji shortcodes, footnotes and more, through a sanitizer. Tables no longer squeeze short columns.

Smaller fixes: Revert on the ignore-file tabs resets the right file, the install dialog marks installed skills by source, the path overlap warning is translated, and batch target updates show save errors.

Migration guide

Check these if you run skillshare from scripts or call the dashboard API:

Before Now
update / uninstall treated an unreadable git status as clean The repo fails; pass --force to go ahead
sync --all exited 0 when an extras target failed Exits non-zero; --json reports the failure
sync -p agents exited 0 with a target that had invalid settings Skips that target and exits non-zero
Sync created an empty folder for a missing extras source Skips that extra with Source directory does not exist: <path>
POST /api/sync returned 500 when every target failed Returns 200 with every failed target in failed

Don't miss a new skillshare release

NewReleases is sending notifications on new releases.