π skillshare v0.15.0 Release Notes
Release date: 2026-02-21
TL;DR
v0.15.0 focuses on compatibility and private repo access:
- Copy sync mode β a third sync mode that copies skills as real files instead of symlinks, for AI CLIs that can't follow symlinks (Cursor, Copilot CLI, etc.); manifest-tracked with SHA256 checksums (#31, #2)
- HTTPS token auth β
install,update, andcheckauto-detectGITHUB_TOKEN,GITLAB_TOKEN,BITBUCKET_TOKEN, orSKILLSHARE_GIT_TOKENfor private repo clone/pull/check over HTTPS; no manual git config needed agentsβuniversalrename β theagentstarget group is now calleduniversal; existing configs keep working via backward-compatible alias- Devcontainer + project-mode hardening β project mode avoids writing
.skillshare/into/workspace, and partial.skillshare/state is auto-repaired
What's New
1) Copy sync mode
Some AI CLIs (e.g. Cursor, Copilot CLI) can't read symlinked skill files. Copy mode solves this by syncing skills as real file copies:
# Switch a target to copy mode
skillshare target cursor --mode copy
# Sync as usual β skills are copied instead of symlinked
skillshare sync
# Re-copy all files (skip checksum comparison)
skillshare sync --forceHow it works:
- Each copy-mode target gets a
.skillshare-manifest.jsonthat tracks managed skills and their SHA256 checksums - On sync, only changed files are re-copied (checksum comparison); unchanged files are skipped
- Managed copies that are no longer in source are pruned automatically
--forcebypasses checksum comparison and re-copies everything
Mode switching is bidirectional β you can switch between merge, copy, and symlink at any time:
skillshare target cursor --mode copy # merge β copy
skillshare target cursor --mode merge # copy β merge (manifest cleaned up)Full command support:
syncβ copies files, tracks in manifest, prunes orphansstatusβ shows copy-mode targets and their statediffβ compares file checksums to detect content driftdoctorβ copy-managed entries are not flagged as duplicatescollectβ imports from copy-mode targets back to sourcetarget infoβ shows mode-appropriate status- Web UI β targets list shows copy mode, drift detection works
Include/exclude filters work identically in both merge and copy modes.
Config format:
targets:
- name: cursor
mode: copy
- name: claude # default: merge
- name: windsurf
mode: symlink2) HTTPS token auth for private repos
Previously, installing skills from private repos required SSH key setup or manual git credential configuration. Now skillshare auto-detects tokens from environment variables:
# Set your token (add to shell profile for persistence)
export GITHUB_TOKEN="ghp_..."
# Install from private repo β token is used automatically
skillshare install github.com/myorg/private-skills --track
skillshare update _private-skills # token also works for updates
skillshare check _private-skills # token also works for remote checksSupported tokens (checked in order):
| Variable | Platform | Username |
|---|---|---|
GITHUB_TOKEN
| GitHub | x-access-token
|
GITLAB_TOKEN
| GitLab | oauth2
|
BITBUCKET_TOKEN
| Bitbucket | x-token-auth
|
SKILLSHARE_GIT_TOKEN
| Any host (fallback) | x-token-auth
|
Key details:
- Tokens are injected via transient
GIT_CONFIG_*env vars β never written to disk - Platform-specific tokens take priority over the generic
SKILLSHARE_GIT_TOKENfallback GIT_CONFIG_COUNTis safely appended (reads existing count to avoid overriding CI pipeline git config entries)- SSH URLs continue to work as before β token auth only activates for HTTPS URLs
Better error messages β auth failures now distinguish between two cases:
# No token found:
Authentication required. Options:
1. Use SSH URL: git@github.com:owner/repo.git
2. Set GITHUB_TOKEN environment variable
3. Configure a git credential helper
# Token rejected:
Token authentication failed. Check:
- Token has read access to the repository
- Token has not expired
Token values and BITBUCKET_USERNAME are always redacted from error output.
3) agents target renamed to universal
The agents target group has been renamed to universal to better reflect its purpose (CLIs that use the ~/.config/agents/skills convention):
# Both work β "agents" is a backward-compatible alias
skillshare target universal
skillshare target agents # still worksTarget path updates:
- Kimi β global path fixed to
~/.config/agents/skills(matches official docs) - Replit β global path added (
~/.config/agents/skills)
Existing configs using agents continue to work without changes.
Fixes
diffdetects content changes in copy mode β previously only checked symlink presence; now compares file checksumsdoctorhandles copy-managed duplicates β group containers and copy-managed skills are no longer flagged as duplicatestarget removein project mode cleans up copy manifest β the.skillshare-manifest.jsonfile is removed along with the target- Copy mode handles non-directory entries β stray files in target directories no longer cause sync failures
- Copy mode validates target directory β manifest data is not trusted if the target directory doesn't exist
- Error propagation in
DirChecksumβ filesystem errors are now surfaced instead of silently swallowed updateandchecknow use HTTPS token auth paths β tracked-repo pull and remote head/behind checks work with private HTTPS repos- Devcontainer
ss -pno longer writes to/workspaceby default β wrapper redirects to~/demo-projectwhen invoked from workspace root in project mode - Partial project init is now self-healing β
.skillshare/without config is repaired automatically instead of returning "project already initialized"
Documentation
- Copy mode docs β sync modes concept page updated; 13 command/guide pages updated with copy mode references
- Architecture comparison β new page comparing centralized vs local-first skill management approaches
- Built-in skill updated β
targets.mdreference adds copy mode to sync modes table;install.mddocuments HTTPS token auth - README updated β v0.15.0 in recent updates; comparison table and platform table mention copy mode
Changelog
- eb397c5 chore(devcontainer): make ss instant and self-healing
- 59ff1bb chore(skill): bump built-in skill version to v0.15.0
- 292d236 docs(readme): add v0.15.0 to recent updates and mention copy mode
- 8290f11 docs(skill): update built-in skill for v0.15.0 features
- 14257b1 docs(skillshare): clarify copy-mode sync and doctor duplicate rules
- 89060c0 docs(sync): fix copy mode schema and document --force flag
- f5893a8 docs(sync): reframe copy mode as a first-class choice, not a workaround
- 084d93b feat(devcontainer): add credential-helper toggle and token forwarding
- a972a0c feat(install): add HTTPS token auth for private repos
- 3b721ee feat(sync): add copy mode for AI CLIs that can't follow symlinks
- 46c7aab fix(doctor): handle group containers and copy managed duplicates
- 854b90e fix(sync): fix copy mode diff, target info, and project remove bugs
- d7d4804 fix(sync): handle non-directory entries in copy mode
- 5b25fa6 fix(sync): propagate errors in DirChecksum instead of swallowing them
- eb6b4cb fix(sync): verify target directory exists before trusting manifest
- 82fa038 fix(test): use strings.Contains in online auth tests
- 3e21826 fix: add HTTPS token auth to check paths
- 15e2b6d fix: add HTTPS token auth to update pull paths
- 62b215f fix: keep devcontainer project mode out of workspace root
- fc94196 fix: repair partial project init when config is missing
- 7f74227 refactor(build): simplify Make/mise targets from 34 to 21
- 595fe84 refactor(devcontainer): simplify dev server management
- be9ac89 refactor(targets): rename agentsβuniversal, fix kimi/replit paths
- 2bb7312 test(install): add auth integration tests and fix docs gaps
- f5144ff test(sync): add smoke test covering all 48 global targets