Project-scoped declarative skill manager for agent skills
Project description
Skill Manager
Project-scoped declarative skill manager for coding agents that load skills from ./.agents/skills/ (and optionally ~/.agents/skills/).
One source, many projects, slim globals. Each skill lives once in a cached Source. Projects get symlinks (Links), not copies. Keep agent-global skills minimal; declare per project what you actually need.
Compatible with any agent that discovers skill directories containing SKILL.md under those paths (pi is one example).
Today skill-manager only writes project Links under ./.agents/skills/. Managing ~/.agents/skills/ is on the roadmap.
Features
- Declare and sync project skills — write
.skill-manager.json, runskill-manager sync - Inspect source and link status —
skill-manager list(linked/external/broken/unlinked) - Enable / disable interactively —
skill-manager enable/disable - Manage source cache —
skill-manager source list|add|remove|update
Install
uv tool install cnife-skill-manager
# or: pipx install cnife-skill-manager
# from source (dev):
uv tool install .
# or run in-place:
uv run skill-manager
Configure
Create ./.skill-manager.json in your project:
{
"skills": [
{"name": "read", "repo": "tw93/Waza", "path": "skills/read"},
{"name": "kami", "repo": "tw93/Kami", "path": "."}
]
}
name: symlink name under./.agents/skills/(single path component; duplicates error)repo: GitHubowner/repo(both parts must be safe slug components)path: skill directory inside the repo (.for repo-root skills; must containSKILL.md; path traversal is rejected)
Usage
skill-manager sync # clone/fetch sources, link declared skills
skill-manager list # show sources and skill status
skill-manager enable # interactively add a skill from the cache, then sync
skill-manager disable # interactively remove a skill and its link
Source repository management
skill-manager source list # list cached repos and HEAD status
skill-manager source add <owner/repo> # add and clone a new source
skill-manager source remove <repo> # remove source (cache + config)
skill-manager source update [repo] # update one or all sources
sync is idempotent and never overwrites an existing non-tool symlink (it skips with a notice). Sources are derived from the declared skills' repo fields.
Paths (XDG)
| What | Path |
|---|---|
| Global config | $XDG_CONFIG_HOME/skill-manager/config.json (default ~/.config/skill-manager/config.json) |
| Source cache | $XDG_CACHE_HOME/skill-manager/repos/ (default ~/.cache/skill-manager/repos/) |
| Project skills | ./.agents/skills/ |
Roadmap
- Global skills — manage Links under
~/.agents/skills/(same model as project Links) - Non-interactive enable/disable — CLI flags for scripts and CI
- Broader sources — arbitrary Git URLs; local git repos or folders as Sources
- Source inspect — list skill paths in a Source before enabling
- Hidden-dir scan policy — skip skills under hidden directories by default;
--allto include them - Pinned versions — pin a Source to a commit or tag in the project declaration
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 Distribution
Built Distribution
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 cnife_skill_manager-0.1.0.tar.gz.
File metadata
- Download URL: cnife_skill_manager-0.1.0.tar.gz
- Upload date:
- Size: 38.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0b10bfef1c2c8bd779839a56de414767afed6e436f89a05a47d462e936da9f5
|
|
| MD5 |
50a8fae121bf19b79b1cc54c136b9310
|
|
| BLAKE2b-256 |
d44968c1b3ff92e7e5d564fa948718f113380a81efa137e6c6f10c6e56dd0a4f
|
Provenance
The following attestation bundles were made for cnife_skill_manager-0.1.0.tar.gz:
Publisher:
publish.yml on CNife/skill-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cnife_skill_manager-0.1.0.tar.gz -
Subject digest:
c0b10bfef1c2c8bd779839a56de414767afed6e436f89a05a47d462e936da9f5 - Sigstore transparency entry: 2218328159
- Sigstore integration time:
-
Permalink:
CNife/skill-manager@03bc1f0b2c4cce3a255f8ae69d9f3d1a60f2251f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/CNife
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03bc1f0b2c4cce3a255f8ae69d9f3d1a60f2251f -
Trigger Event:
push
-
Statement type:
File details
Details for the file cnife_skill_manager-0.1.0-py3-none-any.whl.
File metadata
- Download URL: cnife_skill_manager-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01abb148a8e88cabcdd90bb6e8266bc1e17d3689ca033be8a4ae9cc466679312
|
|
| MD5 |
9654e04595cbc9135524b552aa2c0a64
|
|
| BLAKE2b-256 |
a69d9c13ec5dcd133175ef96d1d86280b0290990c1780f764f79314334fc9f9e
|
Provenance
The following attestation bundles were made for cnife_skill_manager-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on CNife/skill-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cnife_skill_manager-0.1.0-py3-none-any.whl -
Subject digest:
01abb148a8e88cabcdd90bb6e8266bc1e17d3689ca033be8a4ae9cc466679312 - Sigstore transparency entry: 2218328175
- Sigstore integration time:
-
Permalink:
CNife/skill-manager@03bc1f0b2c4cce3a255f8ae69d9f3d1a60f2251f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/CNife
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03bc1f0b2c4cce3a255f8ae69d9f3d1a60f2251f -
Trigger Event:
push
-
Statement type: