🚀 skillshare v0.17.8 Release Notes
Release date: 2026-03-19
TL;DR
- Configurable extras source — extras source paths are no longer hardcoded; use
extras_sourceor per-extrasourcein config extras sourcecommand — show or setextras_sourcefrom the CLI without editing config manually--forceforextras init— overwrite an existing extra without needingextras removefirst--sourceflag —extras init --source <path>sets a custom source directory per extra (global mode only)- Source type tracking —
extras list --jsonshows which level resolved each extra's source path - Web UI source support — create extras with custom source from the dashboard
- Config editor assistant panel — right-side panel with field docs, structure tree, real-time validation, and diff preview
- Audit rules assistant panel — same panel for the audit rules YAML editor, plus inline regex tester
- Tracked repo ignores fix — ignored skills from tracked repos now visible even without root
.skillignore
Configurable Extras Source Paths
Previously, extras source directories were always derived from the skills source path — users who set a custom source in config.yaml couldn't control where extras were read from. Now extras support a three-level priority chain:
extras_source: ~/my-extras # global default for all extras
extras:
- name: rules
source: ~/company-shared/rules # per-extra override (highest priority)
targets:
- path: ~/.claude/rules
- name: commands # uses extras_source → ~/my-extras/commands/
targets:
- path: ~/.cursor/commandsPriority: per-extra source > extras_source > default (~/.config/skillshare/extras/<name>/).
All extras commands respect the resolved path: sync extras, extras collect, doctor, status, and diff all use the correct custom source directory.
CLI: --source Flag and TUI Phase
extras init now accepts --source to specify a custom source directory:
skillshare extras init rules --target ~/.claude/rules --source ~/company-shared/rulesThe interactive TUI wizard also includes a new source directory step between name and target input. Leave it empty to use the default path.
Note: --source is only supported in global mode. Using it with -p now returns a clear error instead of silently ignoring the flag.
CLI: extras source Command
Show or set the global extras_source directory without manually editing config.yaml:
skillshare extras source # show current value
skillshare extras source ~/company-shared/extras # set new valueThis is global-only — project mode always uses .skillshare/extras/.
CLI: --force for extras init
Overwrite an existing extra without needing to extras remove first:
skillshare extras init rules --target ~/.cursor/rules --forceThis replaces the existing config entry (name, targets, mode, source) with the new values. The source directory on disk is not deleted.
Source Type in JSON Output
extras list --json and the GET /api/extras API now include a source_type field indicating which level resolved the path:
"per-extra"— from the extra'ssourcefield"extras_source"— from the globalextras_sourceconfig"default"— standard derived path
The TUI detail panel shows a label for non-default sources.
Web UI Extras Source
The Extras dashboard page now supports custom source paths:
- Source type badge next to non-default source paths
- Optional "Source path" input field in the Add Extra modal
POST /api/extrasaccepts an optionalsourcefield
Config Editor Assistant Panel
The Config page now has a context-aware assistant panel on the right side of the YAML editor. As you move your cursor through the config, the panel automatically shows relevant documentation:
- Field docs — description, type, allowed values, and example for the field under your cursor. Covers all config fields including nested ones like
audit.block_thresholdandextras.targets.mode - Structure tree — visual outline of your YAML with line numbers. Click any node to jump to that line
- Real-time validation — inline gutter markers for YAML syntax errors, plus schema warnings for unknown target names (with typo suggestions like "did you mean claude?"), invalid sync modes, and invalid audit settings
- Diff preview — colored add/remove lines showing what changed since last save, with a Revert All button
The panel auto-switches by priority (errors → field docs → structure), or you can lock it to Structure or Diff view. Collapse with Cmd+B, save with Cmd+S.
The .skillignore tab gets a simplified panel showing change count and the full list of ignored skills from all sources.
Audit Rules Assistant Panel
The Audit Rules page's YAML editor now has the same assistant panel as the Config editor, with one addition: an inline regex tester.
- Field docs: cursor-aware documentation for all audit rule fields — id, severity, pattern, message, regex, exclude, enabled — with allowed values and examples
- Regex tester: move your cursor to a
regex:field and the panel auto-fills the pattern. Paste test lines to see match results instantly, with highlighted matches and exclude pattern preview. Go-specific syntax like\x{NNNN}is detected and labeled;(?i)flags are auto-converted to JavaScript's/iflag - Real-time validation: warns about invalid severity values and uncompilable regex patterns
- Structure tree + Diff preview: same as Config editor
- Save button: moved to the page header (top-right) for better visibility
Bug Fixes
.skillignoresave no longer shows the "Preview Sync" banner (only relevant for config changes)- Tracked repo ignore entries now appear even when no root
.skillignorefile exists - Switching tabs with unsaved changes now shows a confirmation dialog
Backward Compatibility
Fully backward compatible. No extras_source or per-extra source set → identical behavior to previous versions.
Changelog
- f51026a feat(ui): add RegexTester and AuditAssistantPanel components
- e5b5095 feat(ui): add audit rules field documentation map
- 5a11a5d feat(ui): add config editor assistant panel hooks and field docs
- cb07a6e feat(ui): add config editor assistant panel with polished UI
- 86f1fa8 feat(ui): add structured view panel components for audit rules
- d9f1fe6 feat(ui): add structured view panel with selection and cross-view jump
- 1f78559 feat(ui): add useAuditYamlValidation hook
- d12a328 feat(ui): add useRegexTester hook for inline regex testing
- 3c5d39b feat(ui): extract YAML view with audit assistant panel
- a4b69d6 feat(ui): virtualize uninstall list and show results in modal dialog
- 5aa6ee8 feat: configurable extras source with 3-level priority
- 23224b5 feat: extras source config in server API and Web UI
- e276c95 fix(cli): add --source flag to extras init help text
- 76e614c fix(server): return ignored skills stats even without root .skillignore
- 5a0a875 fix(test): update extras source-not-exist test for auto-create behavior
- cd80e77 fix(ui): Cmd+S saves in Config page instead of navigating to Sync
- 798d209 fix(ui): add 'copy' to valid sync modes in config validation
- 4f42740 fix(ui): convert (?i) inline flag to JS /i instead of Go-specific error
- 2fcb1b7 fix(ui): don't show sync preview banner after .skillignore save
- 34819c6 fix(ui): fix TypeScript build errors for tsc -b strict mode
- ae313a7 fix(ui): fix structured panel sticky position and overflow
- 742c48b fix(ui): hide Cmd+S sync HUD on Config page
- 14a45ea fix(ui): move panel toggle into editor header, smooth CSS transition
- 1eca08a fix(ui): show available fields when config editor is empty
- b8e31cf fix(ui): smooth panel collapse/expand with CSS transition
- 3400f14 fix(ui): unify editor and panel height with flex stretch
- a99b6a6 fix(ui): use PageSkeleton for uninstall page loading state
- 414f177 fix(ui): use type import for FieldDoc in auditFieldDocs
- bf5255a fix(ui): validate top-level mode and audit config fields
- 4dbaf38 refactor(ui): clean up audit panel after simplify review
- d9de54a refactor(ui): genericize FieldDocs and add audit mode to StatusBar
- faa73cd refactor(ui): remove structured view panel, move Save to PageHeader
- 72cfca6 refactor(ui): simplify uninstall route from /skills/batch-uninstall to /uninstall