github runkids/skillshare v0.19.16

4 hours ago

skillshare v0.19.16 Release Notes

Release date: 2026-05-21

TL;DR

  1. sources: map for global config — co-locate skills, agents, and extras under any directory you choose, using the same shape that landed for project mode in v0.19.15
  2. Legacy fields still work — existing source: / agents_source: / extras_source: configs keep loading unchanged; no silent rewrites on save
  3. No more surprise extras_source backfillsextras init and the web UI no longer add a derived extras_source: line to your config; the runtime resolves it on the fly

Global Config sources: Map

Global mode now accepts the same sources: map shipped for project mode in v0.19.15. Override any of the three resource source directories from a single place:

# ~/.config/skillshare/config.yaml
sources:
  skills: ~/work/skills
  agents: ~/work/agents
  extras: ~/work/extras
targets:
  claude:
    skills:
      path: ~/.claude/skills

Each key is optional — omit a key and skillshare uses the built-in default. Paths support ~ (home expansion) and absolute paths.

Common reason to use this: aligning skillshare with a dotfiles layout where skills live alongside other AI tooling under a shared parent directory.

Backward Compatibility

The pre-v0.19.16 top-level fields are still accepted and continue to work unchanged:

source: ~/.config/skillshare/skills
agents_source: ~/.config/skillshare/agents
extras_source: ~/.config/skillshare/extras

When both formats appear in the same config, the sources.<key> value wins over the corresponding legacy field. Existing configs are never auto-migrated. Only fresh skillshare init -g emits the new sources: shape; an upgrade alone does not touch your config.yaml.

extras init No Longer Silently Backfills extras_source:

Previously, running skillshare extras init <name> on a global config without an explicit extras source would write a derived extras_source: line back into your config.yaml. The same backfill happened when creating an extra via the web UI (POST /api/extras).

That surprise diff is gone in v0.19.16. The runtime now resolves the extras parent directory on demand, so the legacy field stays empty unless you set it yourself.

If you depended on the backfill — for example, scripts that grep for extras_source: after an extras init — switch to reading the effective value:

skillshare extras list -g --json | jq '.[0].source_dir'

extras source <path> Updates the Right Field

When you set the extras source via the CLI, the command now writes to whichever field your config already uses:

  • If sources.extras is set → updates sources.extras
  • Otherwise → updates the legacy extras_source field

Without this, setting extras source on a config that already had sources.extras would silently be shadowed (the legacy field would change, but sources.extras would still take precedence on read).

Changelog

  • ffbf15e chore: release v0.19.16
  • aba6f0c docs(proposal): mark #153 as shipped in v0.19.15
  • a0d5b56 docs(ui): add sources map entries to fieldDocs for ConfigPage assistant
  • 2b80201 feat(config): add sources map to global config (Phase 1)
  • 996d00e feat(config): migrate consumers to Effective*Source helpers (Phase 3+5)
  • 8e0117a feat(init): emit sources map for new global configs (Phase 4)
  • 7de9fa4 test(e2e): add global sources map ↔ legacy fields interop runbook

Don't miss a new skillshare release

NewReleases is sending notifications on new releases.