A fast multi-source, multi-target skill manager.
Project description
skillmux
skillmux is a high-performance CLI for managing Skills across multiple remote sources and multiple local runtime targets.
Table of Contents
- What is skillmux
- Core Capabilities
- Installation
- Command Overview
- Configuration
- Source Resolution Rules
- Install Targets
- Examples
- Troubleshooting
- Development
- License
What is skillmux
Modern agent runtimes often need skills from different ecosystems (official registries, internal hubs, GitHub repos), and they may store those skills in different local folders.
skillmux solves this by providing:
- One unified CLI for search / install / list / update / remove.
- Multiple source backends in one tool.
- Multiple target layouts for different agent products.
- Reproducible metadata tracking for installed skills.
Core Capabilities
1) Multi-source skill discovery
- Search skills from configured source providers.
- Built-in source adapters include:
kingdeeclawhub
- Rich search output includes:
- slug
- version
- description
2) Flexible install flows
Install from:
- Named skill slug from configured source.
- GitHub shorthand:
gh:owner/repogithub:owner/repo
- Full GitHub repository URL.
Optional install controls:
--versionto pin a version when source supports versioning.--refto install from a specific git ref.--subdirto install from a repository subdirectory.--asto rename the local installed folder.--forceto overwrite/refresh existing content.--jsonfor machine-readable output.
For registry sources, the local folder name defaults to the skill slug. Display names from SKILL.md are saved as metadata, which avoids duplicate installs when a skill has a localized display name.
3) Rich local inventory
skillmux list shows installed skills with metadata such as:
- target
- local skill name
- source
- version
- description
4) Safe updates
- Update one installed skill by name.
- Update all installed skills with
--allor with no update argument. - Shows per-skill
installed/updated/unchangedstatus instead of repeated install logs. - Keeps source information to make update behavior deterministic.
5) Clean removal
- Remove a skill from managed targets.
- Optional purge mode for deeper cleanup.
6) Multi-target support
Supports target-specific install layouts, including:
codexqoderqoderworkkiroworkbuddy
Installation
Via pip
pip install skillmux
Verify installation
skillmux --version
Command Overview
Search
skillmux search <keyword> [--limit <n>] [--page <n>] [--json]
Install
skillmux install <skill_or_repo>
[--version <version>]
[--ref <git-ref>]
[--subdir <path>]
[--as <name>]
[-y|--yes]
[--force]
[--json]
List
skillmux list [--json]
Update
skillmux update [skill]
skillmux update --all [--ref <git-ref>]
Remove
skillmux remove <skill> [--purge]
Config
skillmux config list
skillmux config get <key>
skillmux config set <key> <value>
skillmux config targets <target1,target2,...>
skillmux config targets set <target1,target2,...>
skillmux config targets add <target1,target2,...>
skillmux config targets remove <target1,target2,...>
Configuration
skillmux reads settings from config and command-line overrides.
Common configuration dimensions:
- API endpoint and timeout.
- Default source.
- Install targets.
- Token resolution strategy.
CLI-level override flags:
--config <path>: use a specific config file.--api <url>: override API endpoint.--token <token>: provide token for the current run.--source <name>: override default source.
Source Resolution Rules
When installing:
- If input looks like GitHub shorthand/URL, it is handled by GitHub flow.
- Otherwise it is resolved through the currently selected source backend.
- Source metadata is persisted for future updates.
This design allows predictable updates even when multiple sources may contain similarly named skills.
Install Targets
Each target maps to a specific local directory layout.
Why this matters:
- Different agent products discover skills in different paths.
skillmuxnormalizes install/update/remove operations across these paths.
Recommended workflow:
- Configure the target list once.
- Install skills normally.
- Use
listandupdate --allfor routine maintenance.
Examples
Basic flow
skillmux search pdf
skillmux install pdf-processing
skillmux list
skillmux update --all
skillmux remove pdf-processing
Install from GitHub
skillmux install gh:owner/repo
skillmux install https://github.com/owner/repo
Install from subdirectory at a ref
skillmux install gh:owner/repo --ref v1.2.3 --subdir skills/my-skill --as my-skill
JSON output for automation
skillmux search retrieval --json
skillmux list --json
Troubleshooting
Skill not found
- Confirm source selection (
--sourceor config default). - Retry with a broader search keyword.
Update fails for one skill
- Check whether the original source is still reachable.
- If source changed, remove and reinstall from desired source.
Target mismatch
- Verify configured targets:
skillmux config get install.targets
Development
Build
cargo build
Format and check
cargo fmt
cargo check
Release
The release helper keeps Cargo.toml and pyproject.toml in sync, commits the version bump, creates an annotated tag, pushes the branch and tag, then creates a GitHub release with generated notes.
Interactive:
python scripts/release.py
Non-interactive:
python scripts/release.py patch --yes
python scripts/release.py major --yes
PowerShell:
.\scripts\release.cmd patch --yes
Use --dry-run to preview the release. The script requires a clean git worktree, git, and an authenticated GitHub CLI (gh auth status).
The publish GitHub Actions workflow runs when a GitHub Release is published. It builds PyPI wheels and standalone CLI archives for:
x86_64-unknown-linux-gnuaarch64-unknown-linux-gnux86_64-pc-windows-msvcaarch64-pc-windows-msvcx86_64-apple-darwinaarch64-apple-darwin
The workflow uploads all build outputs plus SHA256SUMS.txt to the same GitHub Release, publishes wheels to PyPI, and can update Homebrew, WinGet, and Launchpad PPA when the related secrets and variables are configured. See packaging/homebrew, packaging/winget, and packaging/ppa for the required CI configuration.
License
Released under the terms of the repository license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skillmux-3.2.2-py3-none-win_arm64.whl.
File metadata
- Download URL: skillmux-3.2.2-py3-none-win_arm64.whl
- Upload date:
- Size: 3.0 MB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60de114b8b2b6ba78eb40c0ad1823f1d9a354f007483141b20493e9f57aff5bc
|
|
| MD5 |
55ad4a4f83986fc1d21d530b32ca16c3
|
|
| BLAKE2b-256 |
e21388e7a64a120bc9ba8805e5f7ac48487998fa675f0e5fc1fef3b9ebe1206f
|
Provenance
The following attestation bundles were made for skillmux-3.2.2-py3-none-win_arm64.whl:
Publisher:
publish.yml on zack-zzq/skillmux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillmux-3.2.2-py3-none-win_arm64.whl -
Subject digest:
60de114b8b2b6ba78eb40c0ad1823f1d9a354f007483141b20493e9f57aff5bc - Sigstore transparency entry: 1656763831
- Sigstore integration time:
-
Permalink:
zack-zzq/skillmux@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Branch / Tag:
refs/tags/v3.2.2 - Owner: https://github.com/zack-zzq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file skillmux-3.2.2-py3-none-win_amd64.whl.
File metadata
- Download URL: skillmux-3.2.2-py3-none-win_amd64.whl
- Upload date:
- Size: 3.2 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f941ed639a8165f52cd58d2c15826cf582d534a5d3fd4d2751c0ab37c117f46b
|
|
| MD5 |
7800cdbf6b40736647c8f2cd86e4fe02
|
|
| BLAKE2b-256 |
0efe39f4a6b4679b691eb3ef8ffaae4a8f7fa9a9f13fc51ab840268a11b38caa
|
Provenance
The following attestation bundles were made for skillmux-3.2.2-py3-none-win_amd64.whl:
Publisher:
publish.yml on zack-zzq/skillmux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillmux-3.2.2-py3-none-win_amd64.whl -
Subject digest:
f941ed639a8165f52cd58d2c15826cf582d534a5d3fd4d2751c0ab37c117f46b - Sigstore transparency entry: 1656763050
- Sigstore integration time:
-
Permalink:
zack-zzq/skillmux@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Branch / Tag:
refs/tags/v3.2.2 - Owner: https://github.com/zack-zzq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file skillmux-3.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: skillmux-3.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 5.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ab3a07018df8b7d8ea43aa8e84b60007a49feab0544738cd55eb8db460aedf4
|
|
| MD5 |
df209b151a3e4996bc7f1e918b377107
|
|
| BLAKE2b-256 |
1f7d4ccf13f881fe833c2111b5117d0c87a898de9c5bc24fde9632b07642f49c
|
Provenance
The following attestation bundles were made for skillmux-3.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on zack-zzq/skillmux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillmux-3.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
4ab3a07018df8b7d8ea43aa8e84b60007a49feab0544738cd55eb8db460aedf4 - Sigstore transparency entry: 1656762763
- Sigstore integration time:
-
Permalink:
zack-zzq/skillmux@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Branch / Tag:
refs/tags/v3.2.2 - Owner: https://github.com/zack-zzq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file skillmux-3.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: skillmux-3.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 5.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe22faa9471c2758e332f48e6ad38bb26b7d990cdb186b425b1f975191433533
|
|
| MD5 |
042d75d0902644397002ae686e1082ec
|
|
| BLAKE2b-256 |
3719b32764ff7a4a6e6506cd6ea5edb6ff5f52e67aa027e462fab6dc826f2f14
|
Provenance
The following attestation bundles were made for skillmux-3.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
publish.yml on zack-zzq/skillmux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillmux-3.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
fe22faa9471c2758e332f48e6ad38bb26b7d990cdb186b425b1f975191433533 - Sigstore transparency entry: 1656763591
- Sigstore integration time:
-
Permalink:
zack-zzq/skillmux@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Branch / Tag:
refs/tags/v3.2.2 - Owner: https://github.com/zack-zzq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file skillmux-3.2.2-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: skillmux-3.2.2-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.5 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ed3caf3f6b427d4d634f74f91879ce5c64ba3358b12c7c7eaf61e8b2e20cf54
|
|
| MD5 |
cb354fb813a87f67ec5aad90e40fb8fc
|
|
| BLAKE2b-256 |
9724d1a9c52c2f2c11eb7c8c83a0214304d35424d60dc1d653d5bfcec3947a86
|
Provenance
The following attestation bundles were made for skillmux-3.2.2-py3-none-macosx_11_0_arm64.whl:
Publisher:
publish.yml on zack-zzq/skillmux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillmux-3.2.2-py3-none-macosx_11_0_arm64.whl -
Subject digest:
1ed3caf3f6b427d4d634f74f91879ce5c64ba3358b12c7c7eaf61e8b2e20cf54 - Sigstore transparency entry: 1656763723
- Sigstore integration time:
-
Permalink:
zack-zzq/skillmux@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Branch / Tag:
refs/tags/v3.2.2 - Owner: https://github.com/zack-zzq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file skillmux-3.2.2-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: skillmux-3.2.2-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 4.3 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b46dd9e7f8646ee6680f6a13311c6a66fc63b78e0e1e0a8f74323d1d5e21489
|
|
| MD5 |
72e8cebdc9aad2e366fef0edb68ce899
|
|
| BLAKE2b-256 |
36fb9c7f22e84204abc922f69bd15e939346bc9e1d55d826fc9496765ab62316
|
Provenance
The following attestation bundles were made for skillmux-3.2.2-py3-none-macosx_10_12_x86_64.whl:
Publisher:
publish.yml on zack-zzq/skillmux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillmux-3.2.2-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
0b46dd9e7f8646ee6680f6a13311c6a66fc63b78e0e1e0a8f74323d1d5e21489 - Sigstore transparency entry: 1656763401
- Sigstore integration time:
-
Permalink:
zack-zzq/skillmux@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Branch / Tag:
refs/tags/v3.2.2 - Owner: https://github.com/zack-zzq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dbc6011718d1dc84f4a85f75a307797c88945df2 -
Trigger Event:
release
-
Statement type: