Put it into the agents that should have it, then check
August 30, 2026 Β· View on GitHub
Skills Manager
One app to manage AI agent skills across all your coding tools.
π¬ Video intro (YouTube) Β Β·Β θ§ι’δ»η» (Bilibili)
δΈζθ―΄ζ Β Β·Β @JayTL00 on X Β Β·Β Buy me a coffee
Install Skills β Marketplace

Global Workspace

Agent Workspace

Project Workspace

Backup & Multi-Device Sync

Settings

Features
- Unified skill library β Install skills from Git repos, local folders,
.zip/.skillarchives, or the skills.sh marketplace. Everything goes into one central repo, which defaults to~/.skills-managerand can be customized in Settings. - Marketplace β Browse popular skills from the marketplace and find them with keyword search.
- Your agents can manage skills β Claude Code, Codex, Cursor and the rest can install a skill, deploy it to another agent, or report what is where, by driving Skills Manager instead of writing into an agent's folder behind its back β so sources, presets, update tracking and per-agent state stay intact. The Dashboard sets this up in one click; see Let your agents manage skills.
- Presets β Group skills into named presets. In any workspace, click a preset pill to instantly activate or deactivate all its skills for the current agent scope. Applying a preset is a one-time copy, not a live sync. The sidebar lists all presets for quick access.
- Global Workspace β Each agent gets its own page listing every skill in its global folder β including ones installed outside Skills Manager β so the view always reflects what the agent actually sees. Add or remove skills per agent, or use the All Agents overview to manage every installed agent at once.
- Project Workspaces β View and manage project-local skill folders for supported agents, compare them with your central library, and sync changes in either direction. Supports nested skill directories and per-agent assignment when exporting.
- Linked Workspaces β Point to any directory as a skills root β useful for skills that live outside the default agent paths. Managed as a standalone workspace without participating in global preset sync.
- Multi-tool sync β Sync skills to any supported tool via symlink or copy with a single click. Every skill card shows an agent icon badge per enabled agent β click a badge to install or remove that skill for that agent right from the card, with the badge reflecting live sync state.
- Add from Library sheet β In any workspace, click + Add Skills to open a unified picker: search your central library, toggle target agents with always-visible chips (with select-all/clear), and batch-add multiple skills in one click.
- Batch operations β Multi-select skills for bulk enable/disable, export, or delete. Project Workspaces also support bulk enable/disable for project-local skills.
- Skill tagging and filters β Tag skills, use tags to group similar skills, and filter by source or tag β including an Untagged pill to quickly find skills missing labels.
- Update tracking β Check for upstream updates on Git-based skills; re-import local ones.
- Skill preview and source inspection β Read
SKILL.md/README.md, inspect source metadata, and compare local content with the upstream version inside the app. - Custom tools β Add your own agents/tools with custom skills directories, or override the default path for any built-in tool.
- Backup & multi-device sync β Connect a private GitHub repository with one sign-in (or any Git remote), and the app backs your library up automatically and keeps all connected devices in sync. Merges are skill-aware β a rename on one machine combines cleanly with an edit on another β and true conflicts never block: your local version stays put until you choose keep mine / use remote / keep both. Snapshot versions are restorable at any time.
- Activity log & Export Logs β Install / remove / update / sync operations are recorded locally. Use Settings β Export Logs to bundle recent logs and activity history into a single zip for easier issue reports.
- Flexible app settings β Configure repo path, sync mode, theme, text size, language, tray behavior, proxy, Git remote, update checks, and the order agents appear throughout the app β all in one place.
- In-app updates β The app tells you when a new version is out and installs it for you on macOS and Windows. Nothing downloads or installs on its own: checking only notifies, and installing and restarting each take a click.
Install
macOS
Install with Homebrew:
brew install --cask skills-manager
You can also download the .dmg for your Mac from the latest release.
Windows and Linux
Download the installer for your platform from the latest release: .exe or .msi for Windows, and .AppImage, .deb, or .rpm for Linux (x64 and arm64).
Every installer ships the CLI inside the app β see Where the binary lives.
Quick Start
- Install skills from local folders, Git repositories, archives, or the marketplace.
- Open Global Workspace from the sidebar and pick an agent (e.g. Claude Code).
- Click a Preset pill to activate its skills for that agent, or use + Add Skills to pick from your library and toggle target agents inline. Active presets show a β; partial installs show a count badge.
- To manage project-local skills, open a Project Workspace and use the same preset pills or the + Add Skills picker with its multi-agent target selector.
- Configure agent paths, custom tools, theme, language, proxy, and Git preferences in Settings.
- If you want history or multi-machine sync, open Backup in the sidebar and click Sign in with GitHub β backup and cross-device sync run automatically from then on.
Let your agents manage skills
Claude Code, Codex, Cursor and the rest can install a skill, deploy it to another agent, or report what is where β by driving Skills Manager rather than writing into an agent's folder behind its back. That is what keeps source metadata, preset membership, update tracking and cross-agent deployment state intact.
The Dashboard offers a one-time setup: pick the agents that should be able to do it, and the app installs the manage-skills skill and deploys it to exactly those. Afterwards it is an ordinary library skill β adding or removing an agent is the agent badge row on its own card. No PATH setup is involved: the app publishes a copy of its CLI where agents look for it.
It is also an ordinary published skill, so it can be installed without the app:
npx skills add xingkongliang/skills-manager
Backup & Multi-Device Sync
The Backup page (sidebar) keeps your skill library versioned in a Git repository. One device gets versioned backup with restorable snapshots; several devices connected to the same repository stay in sync with each other automatically. The remote stays a plain Git repository β you can git clone it anywhere, no lock-in.
Connect
- Sign in with GitHub (recommended): an 8-digit device-flow sign-in creates a private
skills-manager-backuprepository for you. The token is stored in the OS keychain β never in files or the repo config. - Advanced: paste any Git URL (HTTPS + PAT, SSH, self-hosted) under Settings β Git Sync Configuration.
- On a new machine with an empty library, the first launch asks: start fresh, or restore from a backup?
How syncing works
- Automatic: local changes are committed and pushed in the background a couple of minutes after you stop editing; updates pushed by your other devices are merged in and pushed back automatically. Back Up Now is always available for an immediate run, and every backup in the history shows which device made it.
- Skill-aware merging: changes are merged per skill, not per text line β renaming a skill on one machine combines cleanly with editing its content on another.
- Conflicts never block or overwrite: if the same skill was edited on two devices at once, everything else syncs normally while that skill keeps your local version and appears under Needs attention (also badged on its card in the Library). Pick keep mine / use remote / keep both β a safety snapshot is taken before any choice is applied, so every decision is undoable.
- Snapshots & restore: manual backups create snapshot versions; open the Backup page history to restore any of them. A restore first saves the current state as its own snapshot.
What's included
Skills, tags, presets, and per-agent skill toggles are backed up. Secrets (API keys, tokens, proxy settings) and machine-specific wiring never leave the machine. Skills over 100 MB stay local and are excluded from backup automatically (labeled on the Backup page). The SQLite database is not in Git β it stores metadata that is rebuilt from the skill files.
Disconnecting
The Backup page offers three levels: disconnect this machine (other devices and remote data untouched), revoke the GitHub authorization, or delete the remote backup entirely (routed through GitHub's own type-the-name confirmation).
Supported Tools
53 agents are supported out of the box, including:
Claude Code Β· Codex Β· Cursor Β· GitHub Copilot Β· Gemini CLI Β· OpenCode Β· OpenClaw Β· Hermes Agent Β· OpenHands Β· Cline Β· Goose Β· Windsurf Β· Continue Β· Grok Β· Antigravity Β· Qwen Code Β· ZCode Β· Crush Β· Kilo Code Β· Roo Code Β· Amp Β· Kiro CLI Β· Droid Β· TRAE IDE Β· Warp Β· Qoder Β· CodeBuddy
Settings lists them all, leading with the ones detected on your machine. You can also add custom tools there and manage their skills the same way.
Tech Stack
| Layer | Tech |
|---|---|
| Frontend | React 19, TypeScript, Vite, Tailwind CSS |
| Desktop | Tauri 2 |
| Backend | Rust |
| Storage | SQLite (rusqlite) |
| i18n | react-i18next |
Getting Started
Prerequisites
- Node.js 20.19+ or 22.12+ (required by Vite 7)
- Rust 1.77.2 or newer
- Tauri prerequisites for your OS
Development
npm install
npm run tauri:dev
CLI
The repository includes an agent-friendly CLI built on the same Rust shared core used by the desktop app. Both the CLI and the desktop app go through the same SQLite database, central library, and sync engine.
# Look around
npm run cli -- skills list
npm run cli -- skills show db
# Install into the library (does NOT deploy to any agent by itself)
npm run cli -- skills install ./my-skill
npm run cli -- skills install https://github.com/foo/bar/tree/main/skills/baz
npm run cli -- skills install vercel-labs/agent-skills@react-best-practices
# Put it into the agents that should have it, then check
npm run cli -- skills deploy react-best-practices --agent claude_code --agent codex
npm run cli -- skills status react-best-practices
# Pull upstream changes, and adopt what an agent already has
npm run cli -- skills check --all
npm run cli -- skills update --all
npm run cli -- skills adopt ~/.claude/skills --dry-run
--help on any group or subcommand prints the full surface β the groups below
each carry more than these examples show, and destructive commands take
--dry-run (and remove requires --yes).
Available command groups:
repoβ inspect or change the configured base directoryagents(toolsalias) β list agents and globally enable or disable themskillsβ manage the central library and real per-agent deployments (deploy / undeploy / status)presetsβ create, update, delete, organize, deploy, undeploy, and inspect presetsgitβ operate on the git-backedskills/repository (clone,pull,push,commit,versions,restore)
Extra flags:
--skills-root <path>β operate on a cloned/exported skills repo directly instead of the local app default. The manager's state (DB, presets, cache, logs) lives in~/.skills-manager/external/<name>-<hash>/, namespaced by the canonical path of the skills root, so the external checkout itself stays clean.--jsonβ machine-readable output for scripts/agents. Failures print{"ok": false, "code": β¦, "message": β¦}on stderr with a non-zero exit. A deployment refused because the target is not ours carries the paths as data (code: "TARGET_CONFLICT",details.conflicts[].path) so a caller can name the directory in the way instead of quoting a sentence.
npm run -s cli -- --skills-root /path/to/my-skills --json skills list
Where the binary lives
At startup the app publishes a copy of its own CLI to ~/.skills-manager/bin/skills-manager-cli, always matching the running app, so agents can find it without anything on your PATH. A .version stamp beside it is written only after the copy is verified and removed before each republish, so a copy that failed β a binary held open on Windows, say β is never presented as usable.
Putting the CLI on your own PATH, for typing commands yourself, is separate:
npm run cli:install
# equivalent to:
# cargo install --path src-tauri --bin skills-manager-cli --locked --force
This drops the binary at ~/.cargo/bin/skills-manager-cli. Re-run after pulling updates to refresh it.
Official releases also publish standalone CLI binaries for macOS arm64/x64, Windows x64, and Linux x64. Download the matching skills-manager-cli-* asset, make it executable on macOS/Linux, and place it on PATH.
Concurrent use with the desktop app
The CLI and desktop app share the same SQLite database and repository lock. The app's filesystem watcher normally refreshes after CLI metadata or deployment changes. If the app was suspended while a command ran, trigger one manual refresh.
Build
npm run tauri:build
npm run cli:build
Troubleshooting
macOS refuses to open the app. Releases from v1.29.0 onward are signed with an Apple Developer ID certificate and notarized, so they open normally. If you see "Apple could not verifyβ¦" or "App is damaged", you are on v1.28.5 or older β upgrading is the fix. (Upgrading changes the code signature, so macOS may ask once more for the skills-manager-git-backup keychain entry; click Always Allow.)
Anything else β open an issue, and attach the bundle from Settings β Export Logs.
Star History
License
MIT