github runkids/skillshare v0.26.0

3 hours ago

skillshare v0.26.0 Release Notes

TL;DR

  1. Keep per-Agent MCP settings in one source, and edit them in the dashboard.
  2. Serve skills to Executor from the same HTTP server as your MCP tools.
  3. Store hook code and scripts in files next to the config instead of inside YAML.
  4. OMP plugins install the OMP build, even when a repository also ships a Claude build with the same name.

Per-Agent MCP settings

A server's options map holds native fields that do not have a portable equivalent. Sync writes each block only to its Agent, including that Agent's account targets:

mcp:
  servers:
    docs:
      url: https://example.com/mcp
      targets: [codex, claude]
      options:
        codex:
          default_tools_approval_mode: approve
        claude:
          timeout: 600000

The dashboard's Other Agent settings editor accepts one JSON object per Agent. Pi keeps its existing piOptions block.

Fields already managed by portable settings are refused. Credentials must be whole-value environment references in syntax the receiving Agent supports; plaintext credentials are refused. Options for an Agent the server does not reach stay in the source without being written. Dropping an option removes the field on the next sync unless it has changed in the Agent's file, in which case sync reports a conflict.

Serve skills to Executor

mcp serve --http now publishes an Executor-compatible skill index at /.well-known/agent-skills/index.json and serves the files listed in it:

skillshare mcp serve --http 127.0.0.1:8765
skillshare mcp serve --check

Executor apps can load it with wellKnownSkills. File changes update the index versions, so Executor picks up edits on its next check without a commit or push. --check reports the skills, files and bytes served and explains why a skill was left out.

The index leaves out skills Executor cannot load, including binary files and files over 2 MB. The index uses the MCP server's bearer token when configured. That token also grants access to the MCP tools, including editing when enabled; use a separate mcp serve without mcp.serve.edit for a read-only connection.

Non-loopback serving requires a token and TLS. Executor refuses private and loopback addresses by default: Cloud needs a public address, and self-hosted operators must explicitly enable private fetches. The Executor host must be able to reach the server and trust its certificate; redirects are refused.

Hook code and scripts in files

Use codeFile instead of inline extension code, or {from: path} for a script in files:

hooks:
  entries:
    lint:
      bindings:
        pi:
          codeFile: hooks/lint.pi.ts
        cursor:
          events:
            afterFileEdit:
              - command: .cursor/hooks/skillshare/lint/lint.sh
          files:
            lint.sh: { from: hooks/lint.sh }

Paths resolve against the folder of the config that owns the entry: .skillshare/ in a project, or the global config's folder for hooks.projects. Even with hooks add|edit --file, they are relative to the selected config, not the entry file. Paths must stay inside that folder without passing through symlinks.

Edit the files and run hooks sync. A missing file stops config loading; a file changed after a preview makes the apply stale. Saving an entry preserves references; editing code or scripts in the dashboard stores the edit inline.

YAML entry files also keep the final newline of a trailing code: | block. Extensions written from those files no longer lose the newline expected by formatters; JSON entry files were unaffected.

OMP marketplace builds

When a repository ships same-named OMP and Claude plugins, adding the plugin to OMP now selects its .omp-plugin/marketplace.json build. This includes extension-only package.json manifests using omp.extensions or the compatible pi.extensions field.

Claude catalog fallback applies only when there is no OMP catalog. A broken catalog or missing native entry no longer silently installs the Claude build. An explicit catalog version reaches the native install, and discovery and dashboard previews show the selected build's path, version and components instead of combining unrelated metadata.

Thanks to @salmonumbrella for reporting the wrong-build installation (#587).

Dashboard shortcuts

  • Keep all local and Keep all remote select a whole-file resolution for every pull conflict. You can still override files individually before Apply choices and pull. Selecting a side alone writes nothing.
  • Update to latest on memory guidance opens the existing connection review with all outdated tools selected and their read/write modes preserved. You review and apply the changes; modified guidance blocks stay untouched.

Don't miss a new skillshare release

NewReleases is sending notifications on new releases.