ckills
A thin Typer wrapper over
npx skillsthat installs skills into Claude Code plugin directories.
The problem
npx skills installs Claude Code skills to ./.claude/skills/<name>/ at the current working directory. It has no flag to redirect the target.
A Claude Code marketplace repo holds many plugins, each with its own skills/ directory at <plugin>/skills/<name>/. Running npx skills at the repo root drops the skill in the wrong place; running it inside a plugin creates <plugin>/.claude/skills/… which the plugin manifest doesn't see.
The idea
ckills runs npx skills add in a temporary directory, then moves each produced skill into <plugin>/skills/. Plugin directories are auto-discovered (presence of .claude-plugin/plugin.json or an existing skills/ dir). skills-lock.json is discarded — plugin dirs track skills as plain files.
Quick start
Requires Python >=3.11, uv, and npx (Node.js).
uv sync
uv run ckills list-plugins
uv run ckills list-available vercel-labs/agent-skills
uv run ckills install marimo-plugin marimo-team/marimo-pair --skill marimo-pair
Commands
| Command | Purpose |
|---|---|
ckills list-plugins |
Print plugin dirs in the current marketplace repo. |
ckills list-available <source> |
Pass-through of npx skills add <source> -l. |
ckills install <plugin> <source> [--skill NAME ...] [--all] [--force] |
Install one or more skills into <plugin>/skills/. |
All commands accept --root PATH to point at a marketplace repo other than the enclosing git repo.
Example
my-marketplace/
├── marimo-plugin/
│ ├── .claude-plugin/plugin.json
│ └── skills/
├── notebook-plugin/
│ └── skills/
└── (etc.)
$ cd my-marketplace
$ ckills list-plugins
marimo-plugin
notebook-plugin
$ ckills install marimo-plugin marimo-team/marimo-pair --skill marimo-pair
✓ marimo-pair → marimo-plugin/skills/marimo-pair
Development
make install # uv sync + pre-commit install
make test # pytest
make check # lint + test
make format # ruff --fix + ruff format
License
MIT
Metadata
Release files for ckills 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ckills-0.1.0.tar.gz | 23.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ckills-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.5 kB
Release files / ckills-0.1.0.tar.gz
| Download URL | ckills-0.1.0.tar.gz |
|---|---|
| Size | 23.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
76157b11478991ba3e55f9e607553713d20d11a6f80487e72331ff118d218e17
|
|
BLAKE2b-256 checksum How to use checksums |
d95adf6bc20651cec334ae95dac2060cb484ea02ccddf9c4a4e55b0636f8a94f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ckills-0.1.0-py3-none-any.whl
| Download URL | ckills-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
01ce4c1920527f99849af3e69d3593a92d26c19ba388e16ce1b6600ed8b5b6b1
|
|
BLAKE2b-256 checksum How to use checksums |
6fabfff9d6200a7af1101e79473eab6f00965b259e336ba290bf0fa25870c918
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|