github runkids/skillshare v0.23.2

one hour ago

skillshare v0.23.2 Release Notes

TL;DR

  1. Git config hooks. A hook entry can bind git and manage named Git config hooks (Git 2.54+), globally or per project, through the same preview, sync and restore flow as Agent hooks.
  2. Doctor checks more. skillshare doctor and the dashboard's Doctor page now check MCP servers, hooks, plugins and extras.
  3. Pi 1.0 OAuth metadata URL is checked. oauth.authServerMetadataUrl must use https, or http on localhost.
  4. Backup limits you can set. Choose how many target folder snapshots to keep and how much space they use, and delete them all from the dashboard.
  5. Share plugins in one line. The Plugins page copies one command that adds several plugins.

Git config hooks

Git 2.54 added named config hooks. Skillshare now manages them like Agent hooks: it writes the commands to its own include file, adds the include.path line, and writes helper scripts listed under files. {files} expands to the helper directory on each machine, so the same entry works across computers.

bindings:
  git:
    commands:
      project.check:
        events: [pre-commit]
        command: "{files}/check.sh"
    files:
      check.sh: |
        #!/bin/sh
        exec make check
skillshare hooks add git-check --file git-check.yaml -g --dry-run
skillshare hooks add git-check --file git-check.yaml -g
skillshare hooks sync -g

Use -p for a project. Linked worktrees share their project's hooks. Managing hooks never runs them.

  • With Git older than 2.54, the files are still written and the plan says why the hooks cannot run. parallel needs Git 2.55+.
  • When the include target is a symlink or not writable, the plan prints the lines to add by hand and leaves the file alone.
  • The git key always means Git. An account target named git receives no hooks, and the plan warns once an entry uses the git binding.

Doctor

skillshare doctor and the dashboard's Doctor page used to check only skills and agents. They now also check, in global and project mode:

  • MCP: environment variables, commands, client rules and sync state. No DNS lookups, and no servers are started.
  • Hooks: what hooks sync would still change or refuse. Git hooks that cannot run, for example because Git is missing, are reported with the reason instead of as unsynced.
  • Plugins: what plugin sync would change, without fetching sources, when a plugin is configured.
  • Extras: config errors, broken links in targets, and drift as diff reports it.
skillshare doctor --json

MCP: Pi 1.0

Pi 1.0 adds oauth.authServerMetadataUrl for servers that advertise the wrong authorization server. Pi trusts that document instead of discovering one, so Skillshare now checks it when you save, in the CLI and the dashboard: it must use https, or http on localhost.

mcp:
  servers:
    example:
      url: https://mcp.example.com/mcp
      piOptions:
        oauth:
          authServerMetadataUrl: https://example.okta.com/.well-known/openid-configuration

Pi 1.0 keeps OAuth sign-ins per server name and URL. After renaming a server or changing its url, sign in again in Pi.

Backups

Target folder backups were capped at 10 snapshots and 500 MB. Set your own limits in the global config; 0 means no limit:

backup:
  max_count: 20
  max_size_mb: 1000

sync, the dashboard's sync and backup --cleanup apply them. Backups older than 30 days are still removed. The dashboard's Target folders tab shows the limits, edits them, and adds Delete all behind a confirmation. Project snapshots keep the defaults, and file, MCP and hooks backups are not affected.

Share plugins

Share on the Plugins page, in the header or a plugin's menu, lists the plugins added from an HTTPS source and copies one line that adds the ticked ones in order. Each add uses --no-tui -g, so the plugins land in the recipient's global config without a picker per plugin; they choose Agents on the Plugins page afterwards. An option keeps the per-plugin Agent picker. Plugins added from a local directory are left out, since the path only exists on your machine.

Contributors

@salmonumbrella

Don't miss a new skillshare release

NewReleases is sending notifications on new releases.