Releases: runkids/skillshare
v0.10.2
v0.10.2
Added
- Web Dashboard: Project Mode —
skillshare ui -plaunches a project-aware dashboard - Auto-detects project mode when .
skillshare/config.yamlexists in cwd - Git Sync and Backup pages hidden (project uses its own git)
- Config page edits
.skillshare/config.yamlinstead of global config - Install reconciles remote skill entries in project config automatically
- "Project" badge in sidebar indicates active mode
- Docker playground: project mode demo —
make sandbox-upnow pre-configures ~/demo-project with a sample skill, skillshare-ui-palias for one-command project dashboard - Built-in skill updated — skillshare skill now documents web dashboard usage, triggers, REST API reference
Changed
- upgrade --skill always refreshes and overwrites the built-in skill (no skip when version matches)
- Docker sandbox scripts refactored with shared entrypoint and _sandbox_common.sh to eliminate duplication
- internal/server/dist/ gitignored; make build auto-creates placeholder so fresh clones compile without frontend build
- README reorganized with refreshed messaging
Changelog
- 5df04bd chore: gitignore internal/server/dist/ and auto-create placeholder on build
- 14bd568 feat: add project mode support to web dashboard (
skillshare ui -p) - afc932c feat: make upgrade --skill always refresh and overwrite
- 503ee8a refactor: DRY up Docker sandbox scripts with shared entrypoint and boilerplate
v0.10.1
v0.10.1 Release Notes
Fixes
- Fixed an issue on Windows where
diffcould still showlocal copy (sync --force to replace)after runningsync --force. - Added proper detection and target resolution for Windows junctions (
mklink /J), which were previously misclassified as regular folders.
Improvements
- Unified sync/diff link-state detection across both CLI and Web flows for consistent results.
- Added cross-platform link utilities that handle:
- standard symlinks
- Windows junctions / reparse points
Impact
- On Windows,
skillshare sync --forcenow correctly replaces local copies with recognized link states. skillshare diffno longer repeatedly reports the same items as pending local copies after a force sync.
Compatibility
- No breaking changes.
- Unix/macOS behavior remains unchanged.
Changelog
v0.10.0
skillshare v0.10.0 — Web Dashboard Release
v0.10.0 is focused on one major milestone: a full Web Dashboard experience for skillshare.
Highlights
-
New
skillshare uicommand
Launch a full-featured web app for managing skills visually. -
Rich dashboard workflows (single binary)
No Node.js required at runtime. Frontend assets are embedded in the Go binary viago:embed. -
Comprehensive UI pages
- Dashboard overview
- Skills browser + SKILL.md viewer
- Targets management
- Sync with dry-run/force + diff preview
- Collect from targets
- GitHub search with one-click and batch install
- Config editor with YAML validation
- Backup/restore management
- Git sync (push/pull, dirty-file checks, force-pull)
- Install and tracked repo update workflows
-
REST API foundation (
/api/*)
30+ endpoints power the dashboard and prepare for further integrations.
Also in v0.10.0
- Bitbucket/GitLab install URL improvements (branch-prefix handling)
- New utilities for git operations, version checks, and frontmatter parsing
- Integration tests for UI server startup
- Docker sandbox support for Web UI (
--host 0.0.0.0, port19420) - CI/release pipeline updated to include frontend build
- Website/docs updated for the new UI command
Changelog
- 092fb14 feat: add web dashboard with embedded React SPA (
skillshare ui)
v0.9.3
skillshare v0.9.3
This release focuses on a complete Docker sandbox workflow and fixes install naming/root-discovery behavior.
✨ Highlights
- Added three Docker sandbox modes:
- Offline test sandbox: deterministic mainline for build + unit + integration tests
- Online test sandbox: optional network-enabled validation for remote
install/update - Persistent playground: long-running interactive container where you can run
skillshare/ssdirectly
- Added command entry points via both
miseandMakefile:test-docker,test-docker-onlinesandbox-up,sandbox-shell,sandbox-down
- Expanded documentation:
- README now links to Docker Sandbox docs
- Website includes a dedicated Docker Sandbox guide, quick reference updates, navigation updates, and Mermaid diagrams
🐛 Fixes (install) (#8)
- Fixed git source discovery:
- Supports repositories where a single skill is at repo root (
SKILL.mdat/) - Root skill naming now uses the source repo name instead of temp directory naming
- Supports repositories where a single skill is at repo root (
- Path normalization improvements:
github/.../.,https://.../., andfile:///.../.are normalized and treated as root correctly
- Clearer
--namebehavior:- Allowed only when exactly one discovered skill is being installed
- Now errors explicitly when used with multi-skill discovery
install -pwithout a source now errors when--nameis provided
✅ Test Coverage
- Added/expanded unit and integration tests for:
- Root skill discovery
file://and/.source handling--nameconstraints and failure paths- Online-tagged remote install test path
⚠️ Behavior Notes
- If existing workflows used
--nameagainst multi-skill sources, they will now fail with an explicit error (intended behavior change).
Changelog
v0.9.2
v0.9.2 Release Note ─
Bug Fixes
-
Fix Windows backup failure with NTFS junctions (#7)
On Windows,
skillshare syncfailed to backup targets containing NTFS junctions (created by previous syncs) with "Incorrect function" error. A single unreadable
junction would crash the entire backup for that target, preventing all local skills from being backed up.Root cause:
filepath.Walkcallsos.Lstaton junctions, which can fail on Windows withnilfile info — bypassing all junction-detection logic.Fixed by replacing
filepath.Walkwithos.ReadDir+os.Lstat, so junctions are identified and skipped before any read attempt. Backup now only copies real
local files.
Tests
- Add unit tests for
copyDir(regular files, symlink skipping, mixed content, broken symlinks) - Add integration test: backup after sync correctly skips symlinked skills
Changelog
v0.9.1
🔍 Search with Project Mode
skillshare search now supports --project / -p and --global / -g flags. When you find a skill interactively, it installs directly to .skillshare/skills/ — no separate install -p step needed.
skillshare search pdf -p # Search → select → install to project
skillshare search react --global # Force global install- Auto-detects project mode when
.skillshare/config.yamlexists - Auto-runs
init -pif the project hasn't been initialized yet - Updates
.skillshare/config.yamland.gitignoreautomatically
Changelog
- 63421c4 feat: add project mode support to search command
v0.9.0
v0.9.0
✨ Project-Level Skills
Scope skills to a single repository — shared with your team via git.
The biggest feature in this release: skillshare now supports project mode. Instead of managing skills globally in ~/.config/skillshare/, you can manage them per-project in .skillshare/ — committed directly to your repo.
How It Works
<project-root>/
├── .skillshare/
│ ├── config.yaml # Targets + remote skills list
│ ├── .gitignore # Ignores cloned remote/tracked skill dirs
│ └── skills/
│ ├── my-skill/ # Local skill
│ └── _team-repo/ # Tracked repo (--track)
├── .claude/skills/ # ← symlinked from .skillshare/skills/
└── .cursor/skills/ # ← symlinked from .skillshare/skills/
Quick Start
# Initialize project-level skills
skillshare init -p
# Create or install skills
skillshare new my-skill -p
skillshare install anthropics/skills/skills/pdf -p
# Sync to targets
skillshare syncKey Features
- Project-scoped — Skills live in
.skillshare/skills/, committed to the project repo - Auto-detection — Commands auto-detect project mode when
.skillshare/config.yamlexists (no-pflag needed) - Force flags — Use
-p(project) or-g(global) to override auto-detection - Team onboarding — New members just run
skillshare install -p && skillshare sync - Coexists with global — Project and global skills work independently
- Tracked repos —
skillshare install --track -pworks in project mode, auto-added to.gitignore
All Commands Support Project Mode
| Command | Project Mode | Notes |
|---|---|---|
init -p |
✓ | Creates .skillshare/ with config, gitignore, and skills directory |
sync |
✓ | Auto-detects project mode |
install -p |
✓ | Install remote skills to project source |
uninstall -p |
✓ | Remove skills from project source |
update -p |
✓ | Update remote/tracked skills |
list |
✓ | Auto-detects project mode |
status |
✓ | Auto-detects project mode |
target add/remove/list -p |
✓ | Manage project targets |
collect |
✓ | Collect local skills from project targets |
push / pull |
✗ | Not needed — use git directly |
backup / restore |
✗ | Not needed — project targets are reproducible |
🔍 Search with Project Mode
skillshare search now supports --project / -p and --global / -g flags. When you find a skill interactively, it installs directly to .skillshare/skills/ — no separate install -p step needed.
skillshare search pdf -p # Search → select → install to project
skillshare search react --global # Force global install- Auto-detects project mode when
.skillshare/config.yamlexists - Auto-runs
init -pif the project hasn't been initialized yet - Updates
.skillshare/config.yamland.gitignoreautomatically
🎯 Per-Target Sync Mode (Project Mode)
Project targets can now set sync mode individually — merge (default) or symlink — matching the global mode behavior.
# .skillshare/config.yaml
targets:
- claude-code # merge (default)
- name: cursor
mode: symlink # symlink for this target only
- name: custom-ide
path: ./tools/ide/skills
mode: mergeFeatures
- Per-target
modefield inconfig.yamlwith YAML marshal/unmarshal skillshare target <name> --mode symlink -pto change mode- Mode-aware
target remove(proper cleanup for both modes) - Unified sync UI output format between project and global modes
🔧 Internal
- New
mode.gohandles-p/-gflag parsing and auto-detection logic - New
project_runtime.gofor project config loading - Extracted
internal/config/targets.gowithtargets.yamlfor known target definitions internal/config/project.gofor project-specific config types (ProjectTargetEntrywithModefield)- Comprehensive integration test coverage for all project-mode commands
📖 Documentation
- New concept page: Project Skills
- New guide: Project Setup
- New workflow: Project Workflow
- Updated all command docs with project-mode sections (
init,install,list,status,sync,target,uninstall,update) - Updated README with Project Skills section
Changelog
- 010b707 chore(docs): update docs
- 1bbfb66 chore: update website links to new domain
- 7e8cab2 docs(skill): improve built-in skillshare skill v0.8.2
- 46d1ee5 docs(skill): update built-in skill to v0.9.0 with project mode support
- 4b914b0 docs(website): add Docusaurus docs synced from docs/
- 9cef926 docs(website): refactor docs
- 087ac0b feat(website): add SEO essentials - sitemap, robots.txt, social card
- 0162bdd feat: add per-target sync mode support for project mode
- b83300a feat: project level skills
- 671ea97 fix(install.sh): use redirect to avoid API rate limit
- 6cba953 fix(website): responsive footer padding and README link corrections
- 6650a8c style: fix docs formatting
Full Changelog: v0.8.1...v0.9.0
v0.8.1
v0.8.1
🐛 Bug Fixes
Orchestrator Skill Structure Preserved
Fixed a bug where installing skill packs with nested structure (root + children) would flatten all skills to the root directory.
Before (broken):
skills/
├── game-development/ # only root
├── 2d-games/ # flattened!
├── 3d-games/ # flattened!
After (fixed):
skills/
└── game-development/
├── SKILL.md
├── 2d-games/
├── 3d-games/
└── ...
GitHub API Rate Limit Handling
skillshare upgradenow gracefully handles API rate limits- Uses cached version information to continue upgrades when API fails
- No more blocking error messages when rate limited
Install Script Rate Limit Fix
install.shnow uses GitHub redirect instead of API to fetch latest version- Avoids rate limit issues during fresh installations
✨ UX Improvements
Two-Stage Install for Skill Packs
When installing orchestrator-style skill packs, a clearer selection flow is now available:
? Install mode:
▸ Install entire pack game-development + 10 children
Select individual skills
- Install entire pack: Installs root skill with all children nested underneath
- Select individual skills: Choose specific child skills to install separately
📝 Other Changes
- Optimized built-in
skillshareskill for conciseness - Documentation updates
🔧 Installation
# macOS/Linux
brew install runkids/tap/skillshare
# Or via script
curl -fsSL https://raw.githubusercontent.com/runkids/skillshare/main/install.sh | sh
# Upgrade existing installation
skillshare upgradeChangelog
- 2909030 chore(docs): modify docs
- df1c6fa docs(readme): show recent version highlights (0.6-0.8)
- e922f31 fix(install): preserve nested structure for orchestrator skills
- d084e59 fix(upgrade): gracefully handle rate limit, use cached version
- 0355d36 refactor(skill): optimize skillshare skill for conciseness
v0.8.0
⚠️ Breaking Changes
Command Rename for Clearer Symmetry
| Before | After | Description |
|---|---|---|
pull claude |
collect claude |
Collect skills from target to source |
pull --all |
collect --all |
Collect from all targets |
pull --remote |
pull |
Pull from git remote |
New Command Structure
Remote (git)
↑ push ↓ pull
Source
↓ sync ↑ collect
Targets
| Operation | Commands | Direction |
|---|---|---|
| Local sync | sync / collect |
Source ↔ Targets |
| Remote sync | push / pull |
Source ↔ Git Remote |
🔧 Refactoring
Reduce cyclomatic complexity across CLI commands
Extract options structs and helper functions:
| Command | Before | After |
|---|---|---|
init |
49 | 5 |
uninstall |
39 | 12 |
list |
33 | 12 |
install |
28 | 6 |
search |
29 | ~5 |
main |
24 | 9 |
target remove |
21 | 7 |
update --all |
20 | ~10 |
push |
19 | 10 |
Overall: 19 functions > 15 reduced to 11 (42% improvement)
Command separation
- Split
pull.gointocollect.go(local) andpull.go(git remote) - Separated concerns: local sync vs remote sync
✨ Improvements
- Added spinner effects to
pullandpushcommands - Unified error handling with spinner feedback
- Updated help examples with practical daily workflows
- Added team workflow examples in help
📖 Migration
# Before
skillshare pull claude
skillshare pull --remote
# After
skillshare collect claude
skillshare pullChangelog
- ffd019e chore(readme): add GitHub stars badge and call-to-action
- 1ae5921 chore(readme): adjust align
- 743055a chore: remove badge from README
- a739902 feat!: rename pull to collect, simplify pull for git-only
- 3201498 fix(diff,sync): improve diff clarity and fix sync --force for merge mode
- e456500 refactor: reduce cyclomatic complexity across CLI commands
Full Changelog: v0.7.0...v0.8.0