skillshare v0.19.15 Release Notes
Release date: 2026-05-20
TL;DR
- Custom project source directories — point
skills,agents, andextrasat any directory in your repo via the newsourcesmap in.skillshare/config.yaml - Safer project commands — destructive commands now refuse to operate when the project config is malformed instead of silently using the default path
- Sync validates source/target overlap — configs where a source aliases or nests with a target path are rejected up front, preventing
sync --forcefrom deleting the source
Custom Project Source Directories
Project mode previously hardcoded .skillshare/skills/, .skillshare/agents/, and .skillshare/extras/ as source directories. v0.19.15 adds an optional sources map so you can co-locate skill content with existing project documentation:
# .skillshare/config.yaml
sources:
skills: ./docs/skills
agents: ./docs/agents
extras: ./docs/extras
targets:
- claudeEach key is optional — omit any key to keep the default .skillshare/<type>/ path. Paths resolve relative to the project root; absolute paths and ~ work too.
A few things stay put regardless of sources:
skillshare init -palways seeds the default.skillshare/skills/and.skillshare/agents/directories —sourcestakes effect after you editconfig.yaml- Trash, backups, and operation logs live under
.skillshare/no matter what
Fail-Closed on Malformed Project Config
uninstall, new, enable/disable, and check in project mode previously fell back to .skillshare/skills when config.yaml failed to parse. With the new sources feature, that silent fallback could touch the wrong directory if you have a custom source configured.
These commands now return failed to load project config and abort. Fix the YAML and re-run. The most common issue is using a map where a list is expected:
# WRONG — targets must be a list
targets: {}
# RIGHT
targets: []If you previously had a malformed config that "worked" by accident, you'll see the error after upgrading.
Sync Rejects Source/Target Path Overlap
skillshare sync -p now errors when sources.skills or sources.agents resolves to the same directory as a target's path (or one contains the other). Without this guard, sync --force would treat the source as a target directory and replace it.
For example, this config is rejected:
sources:
skills: .claude/skills # same path as claude target
targets:
- claudeThe error message names the offending target and paths. Choose a source path that doesn't alias any target — for instance, ./docs/skills is always safe.
Changelog
- 9aee526 chore: release v0.19.15
- 1809fd4 docs(changelog): add v0.19.15 entry for custom sources feature
- 68d5ead feat: support custom project source directories via sources map
- 8731554 fix: fail closed on config load error in agents check
- 49abc19 fix: fail closed on config load error in destructive uninstall commands
- 4f908a1 fix: fail closed on config load error in enable/disable/new commands
- 14402dc fix: handle sources.skills: . producing invalid ./ gitignore pattern
- 9a30a90 fix: handle sources.skills: .skillshare producing invalid ./ gitignore pattern
- bb3745b fix: reject source/target path overlap and fail closed in check
- 5b7ca8b fix: trash before gitignore cleanup and skip gitignore for external sources
- 0c010c5 fix: wire custom sources into server reload and gitignore paths
- 38317a1 proposal: custom project source directories