You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Skill usage analytics (#56): real Skill invocations, extracted from session transcripts and never confused with textual mentions of a skill's name, are now tracked end to end. ccboard skills [--json] [--since] [--project] [--include-subagents] [<skill>] prints an exact leaderboard (invocation count, project count, total tokens, estimated cost, first/last seen) straight from SQLite, no rescan needed. Token and cost attribution reuses the exact proportional split already used for tool-call accounting in the session parser, applied to the real namespaced skill name (superpowers:brainstorming, never split on :), never the generic "Skill" literal.
Skills leaderboard, TUI and Web (#56): a new dedicated tab (TUI) and page (Web), at parity, surfacing the same leaderboard. Skills with invocation history but no matching on-disk definition (including plugin-installed, namespaced skills) get a [retired] badge, resolved against the local skills directory plus the full plugin marketplace/cache catalogue on both surfaces.
Live invocation counters: the file watcher now updates skill/agent/command invocation counts incrementally as sessions change, instead of only at startup. Fixes a pre-existing gap where the TUI's needs_refresh signal was set but never consumed, so the Agents tab's usage badges never actually updated live.
Fixed
classify_plugin() namespace false positives: exact matches across all categories (skill, command) are now checked before any substring fallback, closing a case where a short local name could shadow an unrelated namespaced plugin invocation.
Two pre-existing clippy::useless_borrows_in_formatting lint violations, unrelated to this feature but caught by a newer stable toolchain, in masked_api_key() (duplicated across ccboard-core and ccboard-types) and the Brain page.