Skip to content

Releases: runkids/skillshare

v0.19.5

23 Apr 12:02

Choose a tag to compare

[0.19.5] - 2026-04-23

New Features

Search Experience

  • Skill preview modal — clicking a search result card or table row now opens a preview modal that renders the remote SKILL.md so you can read the full content before installing. The Install button has moved inside the modal

    skillshare ui              # open Search, click any result

    Backed by a new GET /api/preview?source=owner/repo/path endpoint that fetches SKILL.md from the GitHub Contents API with a Git Tree fallback for hub sources, plus a 5-minute in-memory cache. If the fetch fails but hub metadata exists, the modal falls back to showing the description and tags instead of an error. Refs: #141

  • Higher-quality search results — the scoring formula that ranked search hits was dominated by name matches (45%) while stars — the strongest quality signal — only contributed 5%, so zero-star personal experiments often outranked well-known skill repos. Weights are now rebalanced (name 28%, description 18%, stars 24%, source 12%, repository 18%), with a better star-count curve in the 5–50 range where most useful skills live

  • Popular repo boost — a new repository-match score means searching a repo name (e.g. superpowers) surfaces the well-known hub (obra/superpowers) above lower-signal personal copies that happen to share the skill name

  • Broader skill discovery — search now also queries GitHub's repository search and walks each repo's git tree for SKILL.md files, so skills living in popular repos that code search misses still appear in results

  • Low-quality result filtering — search now filters out 0-star non-preferred repos, results with very short descriptions, and known spam orgs, and boosts preferred hubs like anthropics/skills and vercel-labs/skills. Results are also deduplicated when the same skill appears from multiple sources

  • Repo-scoped search queries — you can now search inside a specific repo (or subdirectory) using owner/repo or owner/repo/subdir patterns

  • Frontmatter validation — search results without valid SKILL.md frontmatter are filtered out, so non-skill .md files no longer appear in results

  • One-line frontmatter supportSKILL.md files written as a single line (--- name: X description: Y ---) are now parsed correctly and surface with the right name and description

Skill Detail Editor

  • Editable source URL on skill detail page — the skill editor now exposes a Source URL field so you can correct or reassign the upstream URL without touching disk
    skillshare ui              # open any skill's detail page → edit Source URL
    For tracked repos, updating one skill's source URL updates every sibling skill from the same repo and rewrites the git remote origin to match. Saving source-URL-only changes skips the diff review dialog
  • Backed by a new PATCH /api/resources/{name}/source endpoint

Bug Fixes

  • Fixed a skill lookup collision when a standalone skill and a tracked-repo skill shared the same base name — detail-page requests now prefer an exact FlatName match before falling back to the base name, so the correct skill is always returned
  • Fixed spurious frontmatter diffs when only the body or source URL changed — the YAML serializer now preserves the original formatting (quote style, line wrapping) unless a field's value actually changed
  • Fixed IntersectionObserver on the Search page not reconnecting after "load more", so infinite scrolling now continues to fire as you reach the bottom of the list
  • Fixed background page scrolling when a modal was open — DialogShell now locks body scroll for all modal dialogs

Improvements

  • Keyboard-accessible search results — search result cards and table rows now have role="button" with tabIndex=0 and respond to Enter/Space, so the preview modal can be opened without a mouse
  • Bounded preview cache — the preview cache is now capped at 200 entries with TTL purge plus a full reset on overflow to prevent unbounded memory growth on long-running UI sessions
  • Shared input components in the frontmatter editor — the editor now uses the same Input / Textarea primitives as the rest of the UI (with a new size="sm" variant) for visual consistency, and the editor header now uses the shared KindBadge / SourceBadge components

Changelog

  • d9ee14a feat(search): add FetchSkillContent for remote skill preview
  • 0c2981d feat(search): add repo-scoped results and inline frontmatter parsing
  • 4c5c56b feat(search): improve result quality with rebalanced scoring and quality filters
  • 63a4a57 feat(ui): allow editing source URL on skill detail page
  • a323547 feat: add skill preview modal to Search page (#141)
  • 07c0915 refactor(search): harden preview error handling, cache, and a11y

v0.19.4

22 Apr 10:12

Choose a tag to compare

[0.19.4] - 2026-04-22

Bug Fixes

  • UI install no longer deletes local source files — installing a skill from a local path via the Web UI would permanently delete the original source directory after discovery. The cleanup logic now only removes temporary directories created by git clones, leaving user directories untouched. CLI installs were unaffected. Refs: #139

Improvements

  • $ARGUMENTS tokens highlighted on detail page — skill detail pages in the Web UI now render $ARGUMENTS placeholders with the same warning-badge style used in the editor, making them easier to spot when reviewing a skill's content

Changelog

  • 10126e0 feat(ui): highlight $ARGUMENTS tokens on detail page
  • ccb07c1 fix(install): do not remove local source dirs in CleanupDiscovery
  • d0cc43a refactor(install): gate CleanupDiscovery on git sources only

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