Skip to content

Releases: runkids/skillshare

v0.10.2

08 Feb 09:33

Choose a tag to compare

v0.10.2

Added

  • Web Dashboard: Project Mode — skillshare ui -p launches a project-aware dashboard
  • Auto-detects project mode when .skillshare/config.yaml exists in cwd
  • Git Sync and Backup pages hidden (project uses its own git)
  • Config page edits .skillshare/config.yaml instead 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-up now pre-configures ~/demo-project with a sample skill, skillshare-ui-p alias 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

08 Feb 07:19

Choose a tag to compare

v0.10.1 Release Notes

Fixes

  • Fixed an issue on Windows where diff could still show local copy (sync --force to replace) after running sync --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 --force now correctly replaces local copies with recognized link states.
  • skillshare diff no longer repeatedly reports the same items as pending local copies after a force sync.

Compatibility

  • No breaking changes.
  • Unix/macOS behavior remains unchanged.

Changelog

  • 61b741d chore: modify icon
  • 6185849 fix: handle Windows junctions in sync and diff

v0.10.0

07 Feb 21:12

Choose a tag to compare

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 ui command
    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 via go: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, port 19420)
  • 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

07 Feb 13:58

Choose a tag to compare

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 / ss directly
  • Added command entry points via both mise and Makefile:
    • test-docker, test-docker-online
    • sandbox-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.md at /)
    • Root skill naming now uses the source repo name instead of temp directory naming
  • Path normalization improvements:
    • github/.../., https://.../., and file:///.../. are normalized and treated as root correctly
  • Clearer --name behavior:
    • Allowed only when exactly one discovered skill is being installed
    • Now errors explicitly when used with multi-skill discovery
    • install -p without a source now errors when --name is provided

✅ Test Coverage

  • Added/expanded unit and integration tests for:
    • Root skill discovery
    • file:// and /. source handling
    • --name constraints and failure paths
    • Online-tagged remote install test path

⚠️ Behavior Notes

  • If existing workflows used --name against multi-skill sources, they will now fail with an explicit error (intended behavior change).

Changelog

  • 080e29e feat: add docker sandbox test/playground workflows and docs
  • bf41422 fix(install): naming behavior and docs

v0.9.2

06 Feb 16:38

Choose a tag to compare

v0.9.2 Release Note ─

Bug Fixes

  • Fix Windows backup failure with NTFS junctions (#7)

    On Windows, skillshare sync failed 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.Walk calls os.Lstat on junctions, which can fail on Windows with nil file info — bypassing all junction-detection logic.

    Fixed by replacing filepath.Walk with os.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

  • 5c0fede chore(docs): fix docs link
  • 78924f0 fix(backup): replace filepath.Walk with os.ReadDir to handle Windows junctions

v0.9.1

05 Feb 08:21

Choose a tag to compare

🔍 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.yaml exists
  • Auto-runs init -p if the project hasn't been initialized yet
  • Updates .skillshare/config.yaml and .gitignore automatically

Changelog

  • 63421c4 feat: add project mode support to search command

v0.9.0

05 Feb 06:28

Choose a tag to compare

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 sync

Key Features

  • Project-scoped — Skills live in .skillshare/skills/, committed to the project repo
  • Auto-detection — Commands auto-detect project mode when .skillshare/config.yaml exists (no -p flag 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 reposskillshare install --track -p works 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.yaml exists
  • Auto-runs init -p if the project hasn't been initialized yet
  • Updates .skillshare/config.yaml and .gitignore automatically

🎯 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: merge

Features

  • Per-target mode field in config.yaml with YAML marshal/unmarshal
  • skillshare target <name> --mode symlink -p to change mode
  • Mode-aware target remove (proper cleanup for both modes)
  • Unified sync UI output format between project and global modes

🔧 Internal

  • New mode.go handles -p / -g flag parsing and auto-detection logic
  • New project_runtime.go for project config loading
  • Extracted internal/config/targets.go with targets.yaml for known target definitions
  • internal/config/project.go for project-specific config types (ProjectTargetEntry with Mode field)
  • 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

01 Feb 00:37

Choose a tag to compare

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 upgrade now 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.sh now 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 skillshare skill 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 upgrade

Changelog

  • 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

31 Jan 12:54

Choose a tag to compare

⚠️ 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.go into collect.go (local) and pull.go (git remote)
  • Separated concerns: local sync vs remote sync

✨ Improvements

  • Added spinner effects to pull and push commands
  • 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 pull

Changelog

  • 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

v0.7.2

31 Jan 08:53

Choose a tag to compare

Changelog

  • 0f7ba6f fix(windows): improve junction error messages and path comparison