Skip to content

Releases: runkids/skillshare

v0.19.3

19 Apr 02:31

Choose a tag to compare

skillshare v0.19.3 Release Notes

Release date: 2026-04-18

TL;DR

  1. Web-based skill editor — edit SKILL.md files directly in the browser with a two-pane Markdown editor, structured frontmatter fields, and a diff review step before saving
  2. Open in local editor — one click to open any skill in your preferred terminal editor ($EDITOR)
  3. Web UI localization — 11 languages with auto-detection from browser settings; Persian displays in right-to-left layout

Web-Based Skill Editor

Skill files can now be edited without leaving the browser. Open any skill from the Resources page and click Edit to enter the editor.

The editor has three layout modes — Edit, Split, and Preview — switchable with ⌘P. An outline drawer in the sidebar lets you jump to any heading. The status bar shows live token, word, and line counts, and warns when you approach the 5K-character limit.

Markdown editor

Side-by-side textarea and live preview with synced scrolling. ⌘S saves, Esc cancels.

Structured frontmatter editor

All 13 official SKILL.md fields are available as a form, grouped into four sections:

  • Identity — name, description, when_to_use
  • Invocation — triggers, arguments
  • Execution — tools, shell
  • Metadata — targets, version, and other metadata fields

Controls match the field type: toggles for booleans, segmented controls for enums, chip inputs for list-valued fields. description and when_to_use share a 1,536-character budget with a live progress bar. A raw YAML mode is also available and round-trips cleanly with the form view. Legacy root-level targets: is automatically migrated to metadata.targets on load.

Diff review before save

Clicking Save opens a side-by-side diff modal. You see exactly what changes will be written before confirming. The YAML serializer avoids spurious quote changes, so only real modifications appear in the diff.


Open in Local Editor

A new Open action on the resource detail page sends the skill file to your preferred local editor via $EDITOR. Useful when you prefer vim, VS Code, or any other editor over the browser.

# Set your preferred editor (if not already set)
export EDITOR=nvim

Web UI Localization

The Web UI is now available in 11 languages: English, 中文, 日本語, 한국어, Español, Français, Deutsch, فارسی, Português (BR), and Bahasa Indonesia.

The language is auto-detected from your browser's language settings on first load. Change it any time from the language switcher in the top navigation bar — the preference is saved to your browser. Persian (فارسی) automatically activates right-to-left layout.


Backward Compatibility

Fully backward compatible. The editor writes back to the same SKILL.md file on disk with no format changes.

Changelog

  • c663fe5 chore: release v0.19.3
  • f4409e7 feat(i18n): extract DashboardPage strings to en.json
  • 5fc5ee4 feat(ui): add web-based skill editor with metadata, live preview, and diff review
  • 489cbcf feat: add i18n
  • 8f48906 fix(server): restrict editor whitelist and harden withinDir path check
  • 6353bb2 fix(ui): remove unused prefix variable in InstallForm
  • fdf2ce0 refactor(ui): consolidate skill editor controls and throttle scroll sync
  • 615bcf9 refactor(ui): simplify skill editor — dedupe parser, defer preview, drop dead code
  • e3c5208 style(ui): restore paper-themed segmented control in skill editor
  • 0c5efdb test(ui): update useCursorField test for bare list value handling

v0.19.2

14 Apr 13:00

Choose a tag to compare

skillshare v0.19.2 Release Notes

Release date: 2026-04-14

TL;DR

  1. Local agent count in Targets — the Targets page and CLI now show how many local (non-source) agents exist per target, with a one-click Collect button to pull them back to source
  2. Agent batch uninstall fixed — selecting multiple agents from a tracked repo on the Uninstall page now correctly removes each agent individually instead of failing
  3. Tab-aware empty states — switching to the Agents tab on Resources or Uninstall pages shows "No agents installed" instead of generic skill text
  4. Richer target list --json output — each target entry now includes targetNaming, sync, and agentSync fields for use in scripted workflows

Local Agent Count in Targets

The Targets page now surfaces local agent counts alongside linked and expected counts. If a target directory contains agents that aren't managed by skillshare (e.g. manually created or left behind after uninstalling a repo), the count appears in the agent summary line.

A new Collect button appears on any target row that has local agents. Clicking it navigates directly to the Collect page with the agent scope pre-selected and auto-starts the scan — no manual scope switching required.

The same data is available in CLI output:

skillshare target --json   # includes agentLocalCount per target

The plain-text target detail view also shows local counts:

Agents:  .claude/agents
         2/5 linked, 3 local

Agent Batch Uninstall Fixed

Selecting multiple agents from the same tracked repo on the Uninstall page previously collapsed all selections into a single repo name and sent that to the API. The API expects individual agent names, so every batch uninstall of tracked-repo agents failed with "agent not found".

The confirmation dialog now lists each agent individually, and the API receives the correct names. Non-repo agents and skill-mode uninstalls were not affected.

Tab-Aware Empty States

The Resources and Uninstall pages now show contextual empty state messages when switching to the Agents tab. Previously, both tabs showed the same "No skills installed" text regardless of which tab was active.

Richer target list --json Output

skillshare target list --json now includes three additional fields per target:

  • targetNaming — the effective naming strategy in use (e.g. flat)
  • sync — a human-readable skill sync summary (e.g. 3 merged)
  • agentSync — a human-readable agent sync summary
skillshare target list --json   # targetNaming, sync, agentSync per target

These fields are available in both global and project mode and make the JSON output suitable for use in dashboards, audit scripts, or CI pipelines that need to inspect sync state without running a separate status command.

Changelog

  • 85abcb8 chore: release v0.19.2
  • 1a5b4f8 feat(target): add targetNaming, sync, and agentSync fields to target list JSON output
  • 8a2196a feat(ui): show local agent count in targets and fix agent batch uninstall
  • cb69b78 fix(test): resolve macOS symlink path mismatch in target list project JSON test
  • 80061a7 fix(ui): show tab-aware empty state on Resources Agents tab
  • 5d17da8 fix(ui): show tab-aware empty text on Uninstall Agents tab

v0.19.1

13 Apr 15:16

Choose a tag to compare

[0.19.1] - 2026-04-13

Bug Fixes

  • Orchestrator repos no longer copy the entire repository — installing a multi-skill repo with a root SKILL.md (e.g. skillshare install user/project) previously copied the entire repo root into the root skill directory, including source code, assets, CI configs, and build scripts. Now the root skill installs only its SKILL.md, and each child skill installs as an independent flat directory. Refs: #124

    # Before: skills/MyProject/ contained the entire repo
    # After:
    skills/MyProject/SKILL.md       ← root skill (SKILL.md only)
    skills/child-a/...              ← independent child
    skills/child-b/...              ← independent child
    
  • Structured output no longer corrupted by update notices--json, -j, and --format json/sarif/markdown modes could emit a trailing human-readable update notification into stdout, producing invalid JSON for downstream consumers. The update check is now skipped entirely in structured-output modes, and the notification itself writes to stderr as a safety net. Refs: #129

Changelog

  • 77cf272 docs(changelog): fix v0.19.0 CLI examples
  • 8b72af5 fix(install): root orchestrator skill copies only SKILL.md (#124)
  • e32f216 fix: suppress update notice in all structured-output modes

v0.19.0

11 Apr 07:45
f159f9e

Choose a tag to compare

skillshare v0.19.0 Release Notes

Release date: 2026-04-11

TL;DR

  1. Agent management — agents are a first-class resource type alongside skills. Install, sync, audit, update, uninstall, and back them up with the same workflow
  2. Positional kind filterskillshare sync agents, skillshare audit agents, and so on. Commands default to skills when no keyword is given (existing behavior unchanged)
  3. Agent auto-detectioninstall detects agents in agents/ subdirectories, mixed-kind repos, and pure-agent repos. Tracked agent repos are supported with git-pull updates
  4. Unified Web UI Resources — the old /skills page is now /resources with Skills and Agents tabs. Targets, Update, Filter Studio, and Audit pages all support both kinds
  5. Centralized .metadata.json — a single metadata file replaces the old registry.yaml + per-skill sidecar files, with automatic migration on first load. Fixes long-standing nested-name collisions
  6. Theme system — light/dark terminal palette with SKILLSHARE_THEME, WCAG-AA-compliant light colours, OSC 11 auto-detection
  7. Audit --all flag removed — superseded by the positional kind filter (audit agents)

Agent Management

Agents are now a core resource type in skillshare. Until v0.18, skillshare only synced skills (directories with a SKILL.md). v0.19 adds a parallel track for agents — single .md files representing custom agent definitions — that targets like Claude Code, Cursor, OpenCode, and Augment can consume directly.

Everything you can do with skills, you can now do with agents:

skillshare install github.com/team/agents-repo    # auto-detects agents
skillshare sync agents                             # sync agents only
skillshare sync --all                              # sync skills + agents + extras
skillshare list agents                             # list installed agents
skillshare check agents                            # detect drift on tracked agent repos
skillshare update agents --all                     # update every agent
skillshare audit agents                            # scan agents for security issues
skillshare uninstall agents my-agent               # uninstall a single agent
skillshare enable my-agent --kind agent
skillshare disable my-agent --kind agent

Most commands take a positional agents keyword as a kind filter. Without the keyword, commands default to skills — so existing scripts and muscle memory keep working.

Agent source directory

Agents live in their own source directory alongside skills:

~/.config/skillshare/
├── skills/      ← SKILL.md directories (unchanged)
├── agents/      ← single .md agent files (new)
└── extras/      ← rules, commands, prompts (unchanged)

In project mode, the layout mirrors this under .skillshare/. skillshare init and skillshare init -p automatically create the agents/ directory on first run.

The path is configurable via a new agents_source field in the config file, which works exactly like the existing source field for skills.

Installing agents from repos

skillshare install auto-detects three agent repo layouts:

  1. agents/ convention — a subdirectory called agents/ containing .md files
  2. Mixed-kind repos — a repo that has both SKILL.md directories and an agents/ folder
  3. Pure-agent repos — no SKILL.md, no agents/ folder, but root-level .md files

Conventional files (README.md, LICENSE.md, CHANGELOG.md) are automatically excluded from agent discovery so you don't have to list them manually.

If you want to be explicit, use the new flags:

skillshare install github.com/team/repo --kind agent   # force agent mode
skillshare install github.com/team/repo --agent foo    # install specific agents

Agent installs go through the same audit gate as skills. Use --force, --skip-audit, or --audit-threshold to adjust.

Tracked agent repos

Agents support --track for pull-based updates, the same way tracked skill repos already work. check, update, doctor, and uninstall all recognise tracked agent repos, and the --group / -G flag lets you filter by repo group when you have several installed.

Nested agents (e.g. demo/code-reviewer.md inside a tracked repo) are discovered correctly via the recursive walk.

Sync modes

Agent sync supports all three modes:

  • merge (default) — creates per-file symlinks in the target's agents path
  • symlink — symlinks the whole agents/ directory
  • copy — hard copy of each agent file

Targets that don't declare an agents: path (for example, targets that only support skills) are skipped automatically, with a warning so you know why nothing changed.

Before any agent sync runs, the existing agent files in each target are backed up, matching how skill sync already works. Restore is available from the backup and trash TUIs, which tag agents with an [A] badge and route restores to the correct source directory.

.agentignore

Agents can be excluded from sync via .agentignore and .agentignore.local, using the same gitignore-style pattern syntax as .skillignore. The Web UI Config page has a new .agentignore tab that edits the file with live pattern preview and ignored-file counts.

Project-mode agent support

Every agent command works in project mode with -p. Agents are reconciled into .skillshare/agents/ alongside skills, respecting the project's agents_source and filters.

JSON output

skillshare install --json and skillshare update --json now emit agent-aware payloads and apply the same audit block-threshold gate as skills. Useful for scripted agent workflows in CI:

skillshare update agents --json --audit-threshold high

Kind badges everywhere

The TUI and Web UI surface [S] / [A] badges so you can tell at a glance what kind of resource you're looking at — in list, diff, audit, trash, backup, update, targets, collect, and detail views. The list TUI also has a new k:kind filter tag for quick agent/skill filtering inside the fuzzy filter.

Unified Web UI Resources

/resources route

The old /skills page has been renamed to /resources and now has Skills and Agents tabs. Tab state persists to localStorage, and the underline tab style follows the active theme (playful mode gets wobble borders). The page shows a single resource count in the header, with counts split across the tabs.

Targets page redesign

The Targets page now has equal Skills and Agents sections, each with its own filter editor and target picker. Adding a target opens a modal picker with kind-aware presets. Links to Filter Studio include a ?kind= param, so clicking "Edit filters" jumps you directly into the right context.

Update page three-phase flow

The Update page has been redesigned around a clearer three-phase flow: selecting → updating → done. The selecting phase has tabs for Skills and Agents, group-based sorting, and grouped status cards. The updating phase streams progress via EventSource with proper cleanup on page change. The done phase summarizes what happened.

Filter Studio agent support

Filter Studio is a single-context view driven by the ?kind=skill|agent query param. Each context edits its own include/exclude patterns and sync mode. The skillshare target <name> command gained a parallel set of flags for agent filters, mirroring the existing skill filter flags:

skillshare target claude --add-agent-include "team-*"
skillshare target claude --add-agent-exclude "legacy/*"
skillshare target claude --remove-agent-include "team-*"
skillshare target claude --remove-agent-exclude "legacy/*"
skillshare target claude --agent-mode copy        # merge | symlink | copy

The same changes are exposed in the Web UI via PATCH /api/targets/:name, which now accepts agent_include, agent_exclude, and agent_mode fields alongside their skill counterparts. The overview API also returns agentsSource and extrasSource alongside the skills source, so the UI can show the full picture.

Audit cache

Audit results are now cached with React Query and invalidated on mutation, so repeated visits to the Audit page are instant. The audit card icon colour on the dashboard follows the max severity instead of being static, and the card count no longer mixes agent totals with finding counts. _cross-skill findings are excluded from the card total and shown in a separate slot.

Collect page

The Collect page has a new segmented control for switching between collecting skills and agents from existing targets.

Centralized .metadata.json

Installation metadata used to be split across two places: a top-level registry.yaml keyed by skill basename, and per-skill .skillshare-meta.json sidecar files. This caused subtle bugs with grouped skills — two skills both named dev in different folders would clash in the basename-keyed registry.

v0.19 consolidates everything into a single ~/.config/skillshare/skills/.metadata.json file (and an equivalent one under agents/), keyed by the full source-relative path. Atomic writes, single source of truth, no more collisions.

Automatic migration

The first time any v0.19 command loads metadata, it:

  1. Detects any existing registry.yaml and per-skill sidecar files
  2. Merges them into a unified .metadata.json
  3. Deletes the old files

This is idempotent — if .metadata.json already exists, no migration runs. No user action required; upgrades Just Work.

Theme System

A new internal/theme package provides a unified light/dark terminal palette. Resolution order:

  1. NO_COLOR env var → colours disabled
  2. SKILLSHARE_THEME=light → forced light palette
  3. SKILLSHARE_THEME=dark → forced dark palette
  4. `SKILLSHARE_TH...
Read more

v0.18.9

07 Apr 09:34

Choose a tag to compare

skillshare v0.18.9 Release Notes

Release date: 2026-04-07

TL;DR

  1. Relative symlinks in project modeskillshare sync -p creates portable relative symlinks; existing absolute links are auto-upgraded on next sync
  2. Status version detection fixedskillshare status now correctly reads the skill version from SKILL.md

Relative Symlinks in Project Mode

skillshare sync -p now creates relative symlinks (e.g., ../../.skillshare/skills/my-skill) instead of absolute paths. This makes the entire project directory portable — rename it, move it to a different location, or clone it on another machine and all skill symlinks continue to work without re-running sync.

Existing absolute symlinks from earlier versions are automatically upgraded to relative format on the next skillshare sync -p. The upgrade is atomic — if anything goes wrong during conversion, the original link is preserved.

Global mode continues to use absolute paths, since source and target directories live in separate filesystem locations where relative paths would be fragile.

The implementation correctly handles edge cases:

  • Symlinked project directories (e.g., workspace opened through a symlink)
  • Target directories that traverse symlinks outside the project — falls back to absolute
  • Windows without Developer Mode — junctions remain absolute without repeated conversion attempts

Status Version Detection

skillshare status previously used its own local SKILL.md parser that only looked for a top-level version: key in the YAML frontmatter. Since the version field now lives under metadata.version, the status command always reported:

! Skill: not found or missing version
→   Run: skillshare upgrade --skill

This is now fixed — status uses the same shared version parser that doctor (fixed in v0.18.7) and upgrade already use. The duplicate local functions and the unused skillshareSkillURL constant have been removed.

Changelog

  • 1d62b15 feat(sync): add relative parameter to createLink
  • c450078 feat(sync): add shouldUseRelative helper for project-mode relative symlinks
  • 465db30 feat(sync): pass projectRoot from project-mode callers
  • bbf2e43 feat(sync): unify extras symlinks through createLink
  • 3c8c560 feat(sync): wire projectRoot through merge and symlink sync paths
  • 741564b fix(status): use shared version parser for skill version check
  • 9ff0069 fix(sync): canonicalize paths for relative symlinks, atomic reformat
  • de0291c fix(sync): handle root projectRoot prefix, use abs paths for Windows Rel
  • adec637 fix(sync): prevent infinite reformat loop on Windows junction fallback
  • 3316c90 fix(sync): resolve relative readlink against link parent, check os.Remove errors
  • e51fe60 fix(sync): upgrade existing absolute symlinks to relative in project mode
  • fe244e8 refactor(sync): simplify shouldUseRelative and hoist extras computation

v0.18.8

06 Apr 09:38

Choose a tag to compare

[0.18.8] - 2026-04-06

Bug Fixes

  • Sync no longer deletes registry entries for installed skills — running skillshare sync (or project-mode sync -p) would silently remove registry.yaml entries for skills whose source files were not present on disk. This meant that installing a skill and then syncing could erase the installation record entirely. Sync now leaves the registry untouched — only install and uninstall manage registry entries

Changelog

  • eceb487 chore: remove badge from README
  • 9a02d82 docs(blog): add multi-account Claude Code setup guide
  • 9ddff32 docs(blog): update legacy target config format to current style
  • 17da67a fix(blog): correct image path and remove outdated posts
  • 96b357b fix(ui): prevent modal close when selecting text in input fields
  • e82d18c fix: sync must not prune registry entries for installed skills
  • 162f5e3 refactor(skills): split /changelog and create /release skill

v0.18.7

04 Apr 09:15

Choose a tag to compare

skillshare v0.18.7 Release Notes

Release date: 2026-04-04

TL;DR

  1. Folder-level target display & bulk editing — grouped view folders show aggregated target info; right-click to set targets for all skills at once
  2. Right-click context menu — all three skill views support right-click for quick actions (set target, enable/disable, uninstall, view detail)
  3. Table view redesign — inline target dropdown, actions column, simplified 5-column layout
  4. Dashboard tracked repos in project mode — project-mode dashboard now shows tracked repos with update/uninstall actions
  5. Nested tracked repo operations fixed — update, uninstall, trash, and registry prune all work correctly for nested repo paths
  6. Target management hardened — tracked-repo skills are protected from direct SKILL.md writes, context menu offers repo-level uninstall, enable/disable correctly handles glob patterns

Folder-Level Target Display & Bulk Editing

The grouped view now shows a target badge on every folder row, derived from the skills in that folder's subtree. If all skills share the same target, that target is shown. If targets are mixed, the union is displayed with a warning indicator. Folders with 4+ targets show a compact count with the full list in a tooltip.

Right-click any folder and select Available in... to change the target for every skill in that subtree at once. The operation writes metadata.targets to each SKILL.md and normalizes any legacy top-level targets field. Disabled skills are automatically skipped.

Right-Click Context Menu

All three skill views (grouped, grid, table) now support right-click for quick actions:

  • Available in... — opens a submenu with All and each installed target
  • View Detail — navigates to the skill detail page
  • Enable / Disable — toggles skill visibility
  • Uninstall — removes the skill with a confirmation dialog

Folders in grouped view show Folder available in... for batch target editing. The menu uses a submenu pattern with hover-expand — future actions can be added as flat items alongside.

A one-time tip banner appears on first visit to help users discover the right-click functionality.

Table View Redesign

The table view has been simplified from 7 columns to 5:

  • Name now includes the path (as a subtitle) and source (as a clickable globe icon linking to the repo)
  • Available in column has an inline dropdown for one-click target switching
  • Actions column () provides View Detail, Enable/Disable, and Uninstall
  • Page size selection (10/25/50) is remembered across sessions

Optimistic Updates

All skill mutations — set target, enable/disable, and uninstall — now update the UI instantly. If the server request fails, the change is automatically rolled back and an error toast is shown.

Dashboard Tracked Repos in Project Mode

The Web UI dashboard now displays tracked repositories when running in project mode (skillshare ui -p). Each repo row shows the repo name, skill count, clean/modified status, and Update/Uninstall actions — the same functionality previously available only in global mode.

Nested Tracked Repo Operations

Tracked repos installed at nested paths (e.g. skillshare install github.com/org/team-skills --track --into org) can now be updated and uninstalled from the Web UI. The server resolves nested paths correctly, including automatic _ prefix matching and basename fallback.

Additional Fixes

  • Project-mode gitignore — uninstalling a tracked repo in project mode now removes entries from .skillshare/.gitignore instead of the global source .gitignore
  • Registry prune safety — uninstalling a nested tracked repo no longer accidentally removes registry entries belonging to a sibling with the same basename
  • Nested trash lifecycle — trash, restore, cleanup, and listing now work correctly for nested tracked repo names
  • Config page dashed border — in playful theme, the Structure panel's dashed borders were clipped at the right edge; fixed by using overflow-visible when expanded
  • Bulk target folder matching — setting targets on a folder with a trailing slash no longer silently skips all skills
  • Doctor version detectionskillshare doctor no longer reports "Skill: missing version" when the version is under metadata.version
  • Target display — Skills page API now parses frontmatter, so saved targets persist visually after refetch
  • Target editing + tracked repos — batch/single target edits skip tracked-repo skills; audit hashes are refreshed after writes
  • Uninstall Repo from context menu — tracked-repo skills show "Uninstall Repo" instead of the always-failing individual uninstall
  • Enable/disable with glob patterns — returns an error instead of false success when disabled by a glob rule
  • Disabled tracked skills in Tracked view — discovery now preserves isInRepo for root-ignored skills

Changelog

  • b625b8c Merge origin/main into fix/dashboard-tracked-repo-actions
  • 7b283ea Merge pull request #117 from amdoi7/fix/dashboard-tracked-repo-actions
  • 9abd9af feat(server): add SetFrontmatterList utility + batch/single target endpoints
  • feaf086 feat(ui): add SkillContextMenu + TargetMenu with submenu pattern
  • 59e6e71 feat(ui): add batchSetTargets and setSkillTargets API client methods
  • 5d9b3c5 feat(ui): optimistic batch target update with inline spinner and interaction lock
  • 4e20a71 feat(ui): target display + context menu actions across all 3 skill views
  • ce76f58 fix(doctor): read metadata.version + harden frontmatter delimiter parsing
  • 4fbee52 fix(server): batch targets folder matching + reduce mutex scope
  • 115edf3 fix(server): correct project-mode gitignore path + prevent registry prune basename collision
  • 7dcf64e fix(server): drop reconcile from repo uninstall to avoid pruning agents
  • a4984cd fix(server): resolve nested repos in update + prune registry on uninstall
  • 657e400 fix(server): resolve order + registry prune for repo uninstall
  • b22cd6b fix(server): scope registry prune to tracked entries only
  • 7e160de fix(trash): support nested tracked repo names in trash lifecycle
  • e3ea2af fix(ui): address tracked repo review feedback
  • 14da64f fix(ui): manage tracked repos from dashboard
  • 8e4a8b1 fix(ui): normalize wildcard targets and scope folder summary to direct skills
  • 603f7e8 fix(ui): refine tracked repo row — add xs button size, move status to info group
  • a8f3aaf fix(ui): resolve TypeScript build errors in Docker sandbox CI
  • 97fe0eb fix(ui): show error toast when batch target edit hits only tracked-repo skills
  • 814e14c fix(ui): show tracked repos section in project mode dashboard
  • 343e29c fix(ui,server): harden target management, toggle, and tracked-repo UX
  • b1dde02 test(server): cover tracked repo uninstall edge cases

Notes

Contributors

@amdoi7

v0.18.6

01 Apr 14:39

Choose a tag to compare

skillshare v0.18.6 Release Notes

Release date: 2026-04-01

TL;DR

  1. Registry cleanup after uninstall — batch uninstall from the Web UI now correctly removes nested skill entries from registry.yaml
  2. Sync prunes stale registry entriesskillshare sync automatically cleans up registry entries for skills that no longer exist on disk
  3. UI polish — uninstall page search, path display, and update page cleanup

Registry Cleanup After Uninstall

Batch uninstall from the Web UI was not removing registry.yaml entries for nested/grouped skills (e.g. frontend/vue/vue-best-practices). The API handler was matching against flat names (frontend__vue__vue-best-practices) but the registry stores path names with /. This caused stale entries to accumulate.

The handler now tracks the exact resolved path for each successfully removed skill, so registry entries are accurately cleaned up regardless of nesting depth.

Sync Prunes Stale Registry Entries

skillshare sync (CLI and Web UI) now automatically removes registry.yaml entries for skills that no longer exist in the source directory. This covers scenarios where skills were manually deleted from disk without using uninstall.

rm -rf ~/.config/skillshare/skills/some-old-skill
skillshare sync    # registry.yaml entry for some-old-skill is automatically removed

Skills hidden by .skillignore are preserved — only entries whose source directory is truly gone are pruned.

UI Polish

  • Uninstall page search — plain text (e.g. matt) now works as a substring match, finding mattpocock/tdd. Glob patterns (*matt*, frontend/*) still work when * or ? is present
  • Uninstall page path display — confirmation dialogs and result summaries show frontend/vue/vue-best-practices instead of frontend__vue__vue-best-practices
  • Updates page — removed the redundant "0 repo(s) and 20 skill(s) already up to date" line when everything is already current

Changelog

  • a570670 fix: registry cleanup after uninstall and sync, UI polish

v0.18.5

01 Apr 06:31

Choose a tag to compare

skillshare v0.18.5 Release Notes

Release date: 2026-04-01

TL;DR

  1. --help for all commands — every CLI command now shows usage info when --help or -h is passed, instead of accidentally executing the command

--help Support for All Commands

All CLI commands now handle --help / -h and display usage information with available flags and examples. Previously, 7 commands (push, pull, sync, status, collect, doctor, ui) did not check for --help, so running e.g. skillshare push --help would actually push to the remote instead of showing help.

skillshare push --help     # shows usage, flags, and examples
skillshare sync -h         # shows --dry-run, --force, --json, etc.
skillshare ui --help       # shows --port, --host, --no-open, etc.

Each command's help output includes:

  • A brief description of what the command does
  • All available flags with short descriptions
  • Usage examples

This was reported as #113.

Changelog

  • 3f7cfc7 feat: add --help support to all commands

v0.18.4

31 Mar 17:12

Choose a tag to compare

skillshare v0.18.4 Release Notes

Release date: 2026-03-31

TL;DR

  1. Branch support--branch / -b flag for skillshare install lets you clone from any branch, with full lifecycle support (update, check, registry rebuild)
  2. Target naming mode — new target_naming config lets you choose between flattened directory names (flat) and Agent Skills spec-compliant bare names (standard)
  3. Sync accuracy — Targets page now shows accurate skill counts and explains why skills were skipped (naming conflicts, collisions)
  4. Folder tree view — the Skills page folder layout is now a real tree with expand/collapse, sticky headers, and virtualized rendering
  5. GitHub Actions — one-step CI setup with setup-skillshare@v1

Branch Support

A new --branch / -b flag for skillshare install lets you clone from a specific git branch instead of the remote default:

skillshare install github.com/team/skills --branch develop --all
skillshare install github.com/team/skills --track --branch frontend

This works with both tracked repos and regular skill installs. The branch is persisted in metadata, so skillshare update and skillshare check automatically use the correct branch without you needing to specify it again.

To install the same repo on multiple branches, use --name to avoid collisions:

skillshare install github.com/team/skills --track --branch frontend --name team-frontend
skillshare install github.com/team/skills --track --branch backend --name team-backend

The Web UI Install form shows a Branch input field inline with the Source when a git URL is detected. The Skills page displays a branch badge on cards, and the Skill Detail page includes branch in the metadata section.

Sync Accuracy

The Targets page now shows accurate expected skill counts. Previously, targets using standard naming could display misleading numbers like 39032/64075 shared — the 64075 included skills that were silently dropped due to name collisions or validation failures, while all 39032 resolved skills were actually in sync.

Now the expected count reflects what sync actually resolves, and the Targets page and Sync page show a summary when skills are skipped (e.g. "12345 skill(s) skipped, 456 name collision(s)"), with a suggestion to switch to flat naming to include all skills.

The CLI sync command also no longer floods the terminal with per-skill validation warnings — these are now shown as a compact summary line.

Target Naming Mode

A new target_naming config option controls how synced skill directories are named in targets:

target_naming: standard
targets:
  claude:
    skills:
      target_naming: flat  # per-target override

In flat mode (the default, unchanged behavior), nested skills like frontend/dev become frontend__dev in targets. In standard mode, the SKILL.md name field is used directly (e.g. dev), following the Agent Skills specification.

Standard mode validates naming rules, detects collisions (multiple skills mapping to the same bare name), and warns about both. Switching from flat to standard automatically migrates existing managed entries — symlinks and copies are renamed in place. If a local skill already occupies the bare name, the legacy entry is preserved with a warning.

Name conflict output has also been redesigned: duplicate warnings are now deduplicated across targets and shown as a compact summary.

Folder Tree View (Web UI)

The second layout on /skills is now a true folder tree. Directories are rendered as collapsible nodes matching the structure you created with --into, and skills appear as leaf nodes inside their folders.

Key interactions:

  • Click any folder row to expand or collapse it
  • Expand All / Collapse All buttons in the toolbar
  • Sticky header — when scrolling through a long folder, the folder name stays pinned below the toolbar. Click it to scroll back to the folder
  • Search-aware — typing in the search box or applying a filter auto-expands all folders containing matches. Clearing the filter restores your previous collapse state
  • Hover tooltip — hovering over a skill row for 1.5 seconds shows its path, source, and install date at the cursor position
  • Collapse state persists across page reloads

The tree is virtualized, so it handles 10,000+ skills without slowing down.

Also in this release: the Enable/Update/Uninstall buttons on the Skill Detail page no longer wrap awkwardly on narrow screens.

Agent Target Paths

Targets that support agents (Claude, Cursor, OpenCode, Augment) now declare separate agents: paths in targets.yaml. This is internal groundwork for upcoming agent sync support — no user-facing changes yet, but the config structure is ready.

GitHub Actions

A new setup-skillshare action makes CI setup a single step:

- uses: runkids/setup-skillshare@v1

This replaces the manual curl-based installation in CI pipelines. The CI/CD documentation has been updated with examples using the action.

Changelog

  • 1791899 Support custom INSTALL_DIR variable in install.sh
  • 354db51 feat(check): branch-aware remote ref comparison and registry rebuild
  • 8def337 feat(install): add Branch field to InstallOptions, SkillMeta, SkillEntry, SkillEntryDTO
  • 1c4aeff feat(install): parse --branch / -b flag
  • 55ce0fb feat(install): pass --branch to discovery clone for regular installs
  • 09a40a4 feat(install): pass --branch to git clone for tracked repos
  • 428eb11 feat(install): persist branch to metadata and registry, read in update
  • db69638 feat(install): project mode --branch support and branch display in check
  • c760206 feat(list): show branch in CLI list TUI detail panel
  • 903df9f feat(server): add branch to skills API and install handlers
  • ccdafd3 feat(sync): add target_naming config option (flat/standard)
  • 6e3f7ea feat(ui): branch support in web UI
  • d2716e1 feat(ui): replace grouped view with folder tree view
  • 14713f9 fix(install): pass source.Branch to sparse checkout in subdir discovery
  • 24b7b4d fix(reconcile): write tracked repo branch to registry.yaml
  • 6f70e76 fix(sync): accurate expectedSkillCount and surface skipped skills
  • f01ec9e fix(sync): summarize resolution warnings instead of printing each one
  • 284b3cb fix(test): update sync warning assertion to match summary format
  • 0424a69 fix(ui): improve table name truncation, tooltip positioning, and detail metadata layout
  • c75ab36 fix(ui): optimistic update for target mode/naming dropdowns
  • f9163d7 fix(ui): reduce table tooltip delay from 1500ms to 1000ms
  • 178462d fix: three branch-related bugs found in review
  • f0f15ce refactor(targets): restructure targets.yaml to nested per-kind format
  • 94d7ccd refactor: deduplicate branch helpers and cache per-repo git calls

Notes

Contributors

@kevincobain2000