github runkids/skillshare v0.18.0

latest release: v0.18.1
12 hours ago

πŸ“Š skillshare v0.18.0 Release Notes

Release date: 2026-03-26
Discussion: #99

TL;DR

  1. skillshare analyze β€” new command to measure context window token usage per target and lint skill quality
  2. Skill quality lint β€” 7 built-in rules catch missing fields, short descriptions, and missing trigger phrases
  3. Analyze TUI β€” interactive exploration with target switching, color dots, sort cycling, and lint icons
  4. Web UI Analyze page β€” dashboard with chart, table, and token breakdown
  5. Update page polish β€” sticky search filter and SplitButton actions

Analyze Command

skillshare analyze calculates how much context window budget your skills consume for each configured target. It reports two layers:

  • Always loaded β€” the name + description from SKILL.md frontmatter, which AI tools load on every request to decide which skills to trigger
  • On-demand β€” the skill body after frontmatter, loaded only when the skill is actually invoked

Token estimates use chars / 4 as an approximation.

skillshare analyze               # interactive TUI (default)
skillshare analyze claude        # details for one target (auto-verbose)
skillshare analyze --verbose     # top 10 largest descriptions per target
skillshare analyze --json        # JSON output for scripting
skillshare analyze -p            # project mode

Passing a target name automatically enables verbose output. Use --no-tui to disable the interactive TUI and print plain text.

Skill Quality Lint

analyze also runs a built-in lint engine against every discovered skill. The engine checks SKILL.md structure and description quality using 7 rules defined in lint_rules.yaml:

Rule Severity What it checks
missing-name error name field is empty or missing
missing-description error description field is empty or missing
empty-body error Skill body (after frontmatter) is empty
description-too-short warning Description under 50 characters
description-too-long warning Description exceeds 1024-character limit
description-near-limit warning Description between 900–1024 characters
no-trigger-phrase warning Description lacks trigger phrases like "Use when…"

Lint issues appear in the TUI next to skill names (βœ— for errors, ⚠ for warnings) and in --json output as lint_issues per skill. This makes it easy to find and fix skills that AI tools might not trigger correctly.

Interactive TUI

The default analyze mode launches a full-screen bubbletea TUI with:

  • Left panel β€” skill list sorted by token cost, with color-coded dots (red = P75+, yellow = P25–P75, green = below P25)
  • Right panel β€” detail view showing token breakdown, lint quality issues, file path, tracked status, and description preview
  • Bottom bar β€” target selector and token totals

Targets with identical skill sets are merged into groups (e.g., "claude, cursor" shown as one tab). Press Tab/Shift+Tab to switch, / to filter, s to cycle sort order (tokens↓ β†’ tokens↑ β†’ name Aβ†’Z β†’ Zβ†’A), and Ctrl+d/Ctrl+u to scroll the detail panel.

Web UI Analyze Page

The web dashboard adds a new Analyze page accessible from the sidebar navigation. It shows:

  • Per-target token usage summary with a chart
  • Skill table with description/body character and token counts
  • Lint issue indicators per skill
  • Token breakdown on individual Skill Detail pages

A new GET /api/analyze endpoint powers the page, returning per-target context analysis including lint issues, skill paths, tracked status, and descriptions.

Update Page Improvements

The Update page gets two usability improvements:

  • Sticky search filter β€” the search input sticks to the top when scrolling long skill lists
  • SplitButton actions β€” action buttons are now a compact SplitButton component instead of separate buttons

Unified Dialog Styling

All modal dialogs across the Web UI now share consistent styling via a DialogShell component, replacing per-dialog styling that had minor visual inconsistencies.

Changelog

  • a636fc6 feat(analyze): add --no-tui flag and TUI dispatch
  • 10415a7 feat(analyze): add Quality section and lint icons to TUI
  • 439abbd feat(analyze): add TUI list delegate with color dots and bar chart
  • 956a719 feat(analyze): add TUI-only fields to analyzeSkillEntry
  • 620141a feat(analyze): add context analysis command
  • 2e43e37 feat(analyze): add lint rules YAML and LintSkill engine
  • 64ed9b0 feat(analyze): add malformed-frontmatter lint rule and polish UI/TUI
  • e88c32b feat(analyze): implement interactive TUI with target switching and detail panel
  • 2811a19 feat(analyze): return description from calcContextFromContent for TUI
  • 57ce3f5 feat(analyze): wire lint into discovery and analyze data flow
  • fe3e72f feat(ui): add GET /api/analyze endpoint
  • 920feab feat(ui): add analyze API types, route, and nav item
  • 977d761 feat(ui): add sticky search filter to Update page
  • ae39892 feat(ui): add token breakdown to skill detail and polish AnalyzePage
  • 9f38326 feat(ui): implement full AnalyzePage with dashboard, chart, and table
  • 9ecd78e feat(ui): redesign AnalyzePage and unify dialog styling across all modals
  • 89df6d2 fix(ui): center pin decoration on playful theme detail cards
  • bb30924 refactor(analyze): merge identical targets into groups in TUI
  • 78ba5c7 refactor(analyze): polish TUI rendering and add docs
  • deb834c refactor(analyze): remove Context category bar from TUI
  • d377e6b refactor(analyze): simplify lint engine and fix review findings
  • d58b272 refactor(ui): replace Update page action buttons with SplitButton
  • 68111d2 refactor: rename project skills with skillshare- prefix
  • d404eda test(analyze): add integration test for JSON lint output
  • 42dd4e4 test(analyze): add sort cycling and target switch unit tests
  • f5e5588 test(analyze): add unit tests for all 7 lint rules

Don't miss a new skillshare release

NewReleases is sending notifications on new releases.