Skip to content
CAI
Software that uses CAICheck a score

xingkongliang/skills-manager

50.9

Adequate · 30 September 2026

57.2k

lines of production code

Rust

with TypeScript

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Skills Manager is a cross-platform desktop application built with Tauri that manages AI coding agent skills, presets, and tools. It provides a unified interface for installing, updating, and synchronizing skills across multiple agents, supported by a CLI for automation and Git-based backup and sync capabilities. The system features a modern UI with theme support, multi-language localization, and an object-level merge engine to handle concurrent skill modifications across devices.

Features

Add Chinese (Simplified and Traditional) and English localization files with first-run OS language detection

The application now ships with full translation resources for English, Simplified Chinese (zh), and Traditional Chinese (zh-TW), covering all user-facing strings including the sidebar, help guide, backup status, and settings. The i18n initialization logic has been updated to detect the user's preferred language from the OS locale on first run, matching primary subtags correctly (e.g., distinguishing zh-Hans from zh-Hant) and falling back to English for unsupported locales or zh-TW to Simplified Chinese if needed. Existing users' saved language preferences are preserved and not overridden by this auto-detection.

src/i18n · high confidence

Initial Tauri desktop configuration and Windows long-path support

This change introduces the core Tauri configuration for the Skills Manager desktop application, establishing the app identifier, window dimensions, and Content Security Policy settings. It also adds a custom Windows application manifest that enables long-path support, ensuring skills with deeply nested directories can be installed without hitting path-length limits on Windows.

src-tauri · high confidence

Initial release of Skills Manager v1.0.0

This entry marks the initial commit of the project, establishing the foundational structure for Skills Manager. The diff introduces the core documentation files (README.md, CHANGELOG.md, CHANGELOG-zh.md), the MIT LICENSE, and the .gitignore configuration. It sets up the project's identity as a tool for managing AI coding agent skills, defining the initial version as 1.0.0 and outlining the supported platforms (macOS, Windows, Linux) and key features such as a unified skill library, preset management, and multi-agent synchronization.

(repo-wide) · high confidence

Introduce app-wide state and theme contexts

The application now uses React Context to manage global state and theming. AppContext centralizes data for presets, tools, skills, and projects, handling persistence of the user's current selection and syncing UI state with backend changes. ThemeContext provides access to the current theme and resolution logic, enabling consistent light/dark mode support across the UI.

src/context · high confidence

Introduces new workspace, skill, and agent management UI components

Adds a suite of new interface components to support the redesigned workspace-first model and Skills Manager v2. This includes the AddProjectDialog for manual, scan, and linked workspace project creation; the AddSkillsSheet for global and project-specific skill installation with agent targeting; and the AgentControlSetupCard to guide users in enabling the manage-skills capability. It also introduces AgentIcon for consistent agent representation, AgentToggleSection and BatchSyncAgentDialog for granular and bulk agent skill synchronization, BatchTagDialog for mass tag editing, CardActionMenu for card-level actions, CloseActionGuard/Dialog for tray-based close behavior, CommandPalette for global navigation, ConfirmDialog for safe destructive actions, and CreatePresetDialog for defining new presets.

src/components · high confidence

Introduces structured error handling, startup diagnostics, and automatic background backups

The core application logic now uses a structured \AppError\ type with specific error kinds (Database, Network, Git, TargetConflict) instead of generic strings, allowing the frontend to handle issues like deployment refusals more precisely. Startup performance is now tracked via \StartupTimings\, logging detailed breakdowns of initialization steps to help diagnose slow launches. Additionally, a new automatic backup system runs in the background, debouncing changes and pushing updates to the central repository to keep skills in sync across devices without manual intervention.

src-tauri/src/core · high confidence

Introduces system tray integration with preset management and update monitoring

The application now includes a system tray icon that allows users to manage presets (previously called scenarios) and monitor skill update status without opening the main window. The tray menu displays the number of available updates and provides quick access to apply or remove presets. It also features a 'Check for updates' action that disables itself while a check is in progress to prevent duplicate requests. The tray respects a user setting to show or hide the icon and handles window restoration and application quitting gracefully across platforms.

src-tauri/src · high confidence

New CLI for end-to-end skill management

A new shared-core CLI tool, \skills-manager-cli\, is now available for managing skills, tools, presets, and git repositories. Users can now install, update, deploy, and undeploy skills to specific agents, manage preset memberships, and re-point skills to new git sources. The CLI supports JSON output for automation and includes commands for listing, searching, and checking skill status, providing a unified interface for skill lifecycle management.

src-tauri/src/bin · high confidence

New Tauri command modules for agents, presets, and skills management

The application introduces a set of new Tauri backend command modules to support the expanded skill and agent management features. The \agent\_workspace\ module provides commands to retrieve and manage local skills for specific agents, including document reading and path validation. The \presets\ module (replacing the previous 'scenario' terminology) handles the creation, retrieval, and updating of presets, which define the active set of skills and tools. The \projects\ module manages project-level skills, including sync health status and agent target configurations. The \skills\ module contains the core logic for skill updates, including handling pending removals and batch operations. The \sync\ module handles the synchronization of skills to specific tools and presets. The \git\_backup\ module manages Git-based backup and sync operations, including device naming and credential handling. The \browse\ module provides access to the SkillsSh API for leaderboards and search. The \scan\ module handles local skill scanning and import. The \settings\ module manages application settings, including central repository paths and update checks. The \tools\ module manages tool adapters and their configurations. These modules collectively enable the new skill management, preset-based workflows, and Git backup features.

src-tauri/src/commands · high confidence

New build and release automation scripts

Added a suite of scripts to the \scripts/\ directory to streamline asset generation and release management. \build\_macos\_icon.py\ and \build\_tray\_icons.py\ automate the creation of macOS-compliant squircle-wrapped app icons and platform-specific tray icons (white silhouette for macOS, colored for Windows/Linux) from source artwork. \prepare-release.mjs\ centralizes the version-bumping process, synchronizing versions across \package.json\, \package-lock.json\, \src-tauri/tauri.conf.json\, \Cargo.toml\, \Cargo.lock\, and i18n files, while also updating changelogs and refreshing the self-hosted star-history chart. Supporting utilities include \run-rust-cli.mjs\ for locating and running the Rust CLI, \strip-empty-sections.awk\ for cleaning up release notes, and \gen-star-history.py\ for generating the README's star history SVG.

scripts · high confidence

New library modules for agent icons, error handling, and skill management

The \src/lib\ directory now includes several new modules that support the application's core features. \agentIcons.ts\ provides a centralized mapping for agent icons, including logic to invert specific monochrome icons (like Codex and Roo Code) for dark mode visibility. \error.ts\ introduces a structured \AppError\ type with specific kinds (e.g., \database\, \git\, \network\) and utilities to extract human-readable messages, replacing generic string errors. \exportAgents.ts\ defines the logic for determining default export targets, prioritizing specific agents like Claude Code and Cursor while ensuring only installed and enabled agents are included. \gitErrors.ts\ maps raw Git error messages to user-friendly translations for backup and sync operations. \presetIcons.tsx\ and \presetStatus.ts\ add support for visual categorization of presets and compute their installation status (active, partial, inactive, empty). \skillPickerStatus.ts\ classifies skills as available, installed, or conflicting within global or project contexts. \skillTags.ts\ manages tag filtering, including logic to prune stale tags and assign consistent colors. Finally, \tauri.ts\ expands the TypeScript type definitions for Tauri commands, adding detailed interfaces for tools, skills, presets, and project states, while \textScale.ts\ handles UI text size scaling.

src/lib · high confidence

Behavioural changes

Introduces light/dark theme support and a unified design system

The application now supports light and dark themes, with CSS variables defined in index.css to handle color schemes and a ThemeProvider wrapping the app in App.tsx to manage state. This change also establishes a consistent design system by introducing shared utility classes (e.g., app-page, app-toolbar, app-button) for standardizing UI components. Additionally, the app shell now includes global context providers (AppProvider, ThemeProvider), a ThemedToaster for notifications, and new global dialogs for help, close actions, and first-run restore.

src · high confidence

Major UI overhaul: new design system, backup page, and workspace views

The application has been redesigned with a unified, compact design system, replacing the previous hardcoded mock data and static layouts with dynamic, data-driven views. A dedicated Backup page has been added to manage Git-based backups, including conflict resolution and version history. The Dashboard now provides a global overview of skills and sync status, while new Workspace views (Global and Lobster) organize agents by category. The MySkills and InstallSkills pages now feature multi-select batch operations, drag-and-drop reordering, and a debounced, cached market search. Settings have been expanded to include in-app auto-updates, light/dark theme support, and customizable agent ordering.

src/views · high confidence

New object-level merge engine replaces legacy line-level sync

The sync mechanism for the skills library has been replaced with a new object-level three-way merge engine. This engine operates on logical objects (skills, scenarios, memberships) rather than raw files, enabling component-level merging within skills and whole-file merging for other assets. It introduces a new protocol (version 2) with commit trailers and a \protocol.json\ marker to detect legacy clients, and includes a hidden-ref system to track pending conflicts and resolutions across devices. The object merge is now the default behavior; users can opt out and revert to the legacy line-level git merge by setting \merge\_engine=system\.

src-tauri/src/core/merge · high confidence

Updated Android app launcher icon assets

The Android launcher icon has been updated to use a new adaptive icon configuration. This change introduces an XML-based adaptive icon definition that separates foreground and background layers, along with a new white background color resource, ensuring the app icon renders correctly on modern Android versions.

src-tauri/icons · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 48 → 51 (+3.1)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 63 → 62 (-0.2)
  • Architecture 96 → 92 (-3.7)
  • Maturity 58 → 56 (-2.4)
  • Readiness 39 → 40 (+0.8)
  • Security 46 → 64 (+18.0)
  • Accessibility 56 → 56 (+0.0)
  • Performance 100 (new)

Resolved (29)

  • Change coupling: tools.rs ↔ Settings.tsx (src-tauri/src/commands/tools.rs)
  • Change-coupling hub: ProjectDetail.tsx → projects.rs, project_scanner.rs, WorkspaceView.tsx (src/views/ProjectDetail.tsx)
  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (28 lines × 2) (src-tauri/src/bin/skills-manager-cli.rs)
  • Duplicated block (9 lines × 2) (src-tauri/src/commands/agent_workspace.rs)
  • High CVE: [CVE redacted] (package-lock.json)
  • High CVE: [CVE redacted] (package-lock.json)
  • High CVE: [CVE redacted] (package-lock.json)
  • High CVE: [CVE redacted] (package-lock.json)
  • High CVE: [CVE redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • Hotspot: src-tauri/src/commands/skills.rs (src-tauri/src/commands/skills.rs)
  • Hotspot: src-tauri/src/core/merge/apply.rs (src-tauri/src/core/merge/apply.rs)
  • Hotspot: src-tauri/src/core/merge/decision.rs (src-tauri/src/core/merge/decision.rs)
  • Hotspot: src-tauri/src/core/merge/pending.rs (src-tauri/src/core/merge/pending.rs)
  • …and 9 more

New (52)

  • Change coupling: ProjectDetail.tsx ↔ WorkspaceView.tsx (src/views/ProjectDetail.tsx)
  • Change coupling: project_scanner.rs ↔ ProjectDetail.tsx (src-tauri/src/core/project_scanner.rs)
  • Duplicate DTOs for GitHub connection state. Both types expose url, login, repo_created, and repo_private. GithubBackupConnectResult adds remote_has_content while GithubConnectInfo adds repo_full_name. This suggests two different layers (commands vs core API) are returning nearly identical data structures without sharing a common type.
  • Duplicate scanning result structures. Both ScanResultDto and ScanPlan contain tools_scanned, skills_found, and a group/collection of discovered items (groups vs discovered). ScanResultDto is a DTO (likely for API/IPC) while ScanPlan is an internal core type, but they represent the same semantic state of a scan operation.
  • Duplicated block (31 lines × 2) (src-tauri/src/bin/skills-manager-cli.rs)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • Hotspot: src-tauri/src/core/app_state.rs (src-tauri/src/core/app_state.rs)
  • Hotspot: src/components/BatchTagDialog.tsx (src/components/BatchTagDialog.tsx)
  • Hotspot: src/components/FirstRunRestoreDialog.tsx (src/components/FirstRunRestoreDialog.tsx)
  • Hotspot: src/components/PresetBar.tsx (src/components/PresetBar.tsx)
  • Hotspot: src/components/Sidebar.tsx (src/components/Sidebar.tsx)
  • Hotspot: src/context/AppContext.tsx (src/context/AppContext.tsx)
  • Inconsistent naming for audit record vs builder. AuditEntry is the final record, while AuditDraft is the builder. This is generally acceptable, but AuditEntry properties like skill_id are PathBuf while AuditDraft methods take impl Into<String>. The internal representation (PathBuf) vs input interface (String) mismatch is inconsistent with other parts of the API where String is often used for IDs.
  • Medium vulnerability: RUSTSEC-2026-0285 (src-tauri/Cargo.lock)
  • Members sharing a duplicated core (5 members, 50+ identical tokens) (src-tauri/src/commands/projects.rs)
  • Near-duplicate member pair (58 shared lines) (src-tauri/src/bin/skills-manager-cli.rs)
  • Nearly identical result types for distinct operations. UpdateSkillResult and ReimportSkillResult share skill, pending_removals, and removal_approval. The only difference is the type name, implying the operations are handled separately despite having identical output contracts. This forces callers to handle two different types for effectively the same outcome.
  • Outdated: anyhow
  • …and 32 more

Changes since last survey

  • 32 commits — 12 feature/other, 20 fixes

By area

  • src-tauri/src — 16 commits
  • (root) — 8 commits
  • src/components — 3 commits
  • src/i18n — 2 commits
  • (repo) — 1 commit
  • scripts/prepare-release.mjs — 1 commit
  • src/lib — 1 commit

Notable commits

  • fix: Merge pull request #460 from zhirogo/fix/removal-ownership-preflight
  • fix: fix(add-skills): stop shift-click from selecting the row text
  • fix: fix(central-repo): address review of the relocation fix
  • fix: fix(central-repo): make a changed library path actually take effect (#449 #469 #393)
  • fix: fix(central-repo): set the old copy aside after a cross-volume move
  • fix: fix(central-repo): share a lifetime library lease; tighten repoint and debris rules
  • fix: fix(hash): stop line endings alone from reading as an update
  • fix: fix(i18n): fall back to English outside the Chinese locales (#394)
  • fix: fix(preset-bar): stop a half-applied preset from reading as untouched
  • fix: fix(preset-bar): wrap preset chips onto multiple lines instead of (#448)
  • fix: fix(projects): count one logical skill once and stop guessing its library match (#267)
  • fix: fix(projects): let a unique content hash outrank another skill's directory
  • fix: fix(sync): gate every row-driven removal behind the ownership preflight
  • fix: fix(sync): keep a deployment another tool shares when disabling or unchecking one
  • fix: fix(ui): keep the confirm dialog's buttons on screen with a long file list (#432)
  • fix: fix(ui): make the confirm dialog's height cap survive the text-size zoom
  • fix: fix(workspace): do not detach a source_ref through a symlinked adoption target
  • fix: fix(workspace): re-point source_ref before an adoption replaces the import source dir (#425) (#427)
  • fix: fix: preflight CLI dry-run deployments (#483)
  • fix: fix: preserve nested agent skill paths during import (#482)
  • …and 12 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

xingkongliang/skills-manager was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 1d41f1878b8d4506d57e1c2f19de866ea52febc7 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.