Audit-first skill and plugin manager for Codex, Claude Code, and Copilot CLI.
Project description
skill-install-plus-plus
skillpp is an audit-first skill and plugin manager for Codex, Claude Code,
and Copilot CLI.
It keeps ~/.skills as the source of truth, inventories drift before making
changes, and helps normalize skills, hybrid repositories, and plugin bundles
into a predictable local layout.
Why this exists
Managing AI assistant skills becomes messy quickly once you mix:
- standalone skills
- Git-backed skill repositories
- hybrid repositories that export skills and bundle metadata
- plugin bundles with agents, hooks, manifests, and runtime code
skillpp gives those objects one managed home and exposes only the safe,
explicit skill surfaces into client discovery directories.
Supported clients
- Codex
- Claude Code
- Copilot CLI
Installation
Try it without installing
uvx skillpp audit
Persistent install with uv
uv tool install skillpp
Persistent install with pipx
pipx install skillpp
Quick start
Audit the current managed state:
skillpp audit
Bootstrap the current project into your local managed skill tree:
skillpp bootstrap --source .
Install a skill from a GitHub repository:
skillpp install --repo jackwener/OpenCLI --path skills/opencli-browser
Install a plugin bundle from GitHub:
skillpp install-plugin --publisher acme --name suite --repo acme/suite
Create missing non-destructive exposures:
skillpp align --apply
Refresh managed repositories and git-backed bundles:
skillpp update
Source-of-truth layout
Everything managed by skillpp lives under ~/.skills:
~/.skills/customLocal standalone skills.~/.skills/repos/<owner>/<repo>Git-backed skill repositories.~/.skills/plugins/<publisher>/<name>Managed plugin bundles.~/.skills/registry.jsonRegistry for repo installs and plugin bundle installs.
Client discovery roots stay separate:
- Codex:
~/.agents/skills - Claude Code:
~/.claude/skills - Copilot CLI:
~/.copilot/skills
Mental model
Use custom for small standalone skills.
Use repos for repositories that primarily publish skills, even if they also
carry plugin metadata.
Use plugins for bundle-style installs that may include:
- exported skills under
skills/* - plugin manifests such as
.claude-plugin/plugin.json - agents
- hooks
- runtime code
Current behavior
skillpp is intentionally conservative:
- it audits before changing discovery roots
- it auto-creates missing safe links
- it surfaces legacy copies and mismatched links
- it does not guess undocumented client plugin registries
That boundary matters for larger bundles where exported SKILL.md files are
only one part of the system.
Development
Run the test suite:
uv run python -m unittest tests.test_manager tests.test_cli -v
Build the package:
uv run --with build python -m build
Check built artifacts:
uv run --with twine python -m twine check dist/*
Release
The public package name is skillpp, while the repository remains
skill-install-plus-plus.
The first public release flow is:
- push the repository to GitHub
- configure PyPI Trusted Publishing
- create tag
v0.1.0 - publish
Limitations
- the tool is currently Windows-first because it manages junction-based client exposures there
- bundle-level plugin runtime behavior is intentionally not auto-mutated
- no npm package or
npxwrapper is shipped in v1
Contributing
See CONTRIBUTING.md.
Security
See SECURITY.md.
License
MIT. See 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 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 skillpp-0.1.0.tar.gz.
File metadata
- Download URL: skillpp-0.1.0.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ceead2e12cc612cda4c2c8a4c40b11a86ee00979da9d585b7c35a393e903c85c
|
|
| MD5 |
6f4e142a64f1b20c7dbce1d2c197a05e
|
|
| BLAKE2b-256 |
7dcdc5222e617b3c2eccef6f755aacaf31ead328da65a0bc8c7cd055ccf0d428
|
Provenance
The following attestation bundles were made for skillpp-0.1.0.tar.gz:
Publisher:
release.yml on sank96/skill-install-plus-plus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillpp-0.1.0.tar.gz -
Subject digest:
ceead2e12cc612cda4c2c8a4c40b11a86ee00979da9d585b7c35a393e903c85c - Sigstore transparency entry: 1282649488
- Sigstore integration time:
-
Permalink:
sank96/skill-install-plus-plus@79429a88ae1a6c5c9aa094a1a8a8c6c178be561e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/sank96
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@79429a88ae1a6c5c9aa094a1a8a8c6c178be561e -
Trigger Event:
push
-
Statement type:
File details
Details for the file skillpp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: skillpp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
021bb48864343f90880748b4b8ed5aeff8ee285bbdad860dddcc0f9d8133d614
|
|
| MD5 |
3c3594c82cbcace2c8f40e0cae53101a
|
|
| BLAKE2b-256 |
a3a75df9cede66c3a0151f8d961a8a6856355a7b24e850fa18759e54e3bf6410
|
Provenance
The following attestation bundles were made for skillpp-0.1.0-py3-none-any.whl:
Publisher:
release.yml on sank96/skill-install-plus-plus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillpp-0.1.0-py3-none-any.whl -
Subject digest:
021bb48864343f90880748b4b8ed5aeff8ee285bbdad860dddcc0f9d8133d614 - Sigstore transparency entry: 1282649558
- Sigstore integration time:
-
Permalink:
sank96/skill-install-plus-plus@79429a88ae1a6c5c9aa094a1a8a8c6c178be561e -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/sank96
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@79429a88ae1a6c5c9aa094a1a8a8c6c178be561e -
Trigger Event:
push
-
Statement type: