Skip to main content

A thin Typer wrapper over `npx skills` that installs skills into Claude Code plugin directories.

Project description

ckills

License: MIT Python 3.11+ uv Ruff ty

A thin Typer wrapper over npx skills that 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ckills-0.1.0.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ckills-0.1.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file ckills-0.1.0.tar.gz.

File metadata

  • Download URL: ckills-0.1.0.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for ckills-0.1.0.tar.gz
Algorithm Hash digest
SHA256 76157b11478991ba3e55f9e607553713d20d11a6f80487e72331ff118d218e17
MD5 ceff4705564418fec21754bb85b14b0b
BLAKE2b-256 d95adf6bc20651cec334ae95dac2060cb484ea02ccddf9c4a4e55b0636f8a94f

See more details on using hashes here.

File details

Details for the file ckills-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ckills-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for ckills-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 01ce4c1920527f99849af3e69d3593a92d26c19ba388e16ce1b6600ed8b5b6b1
MD5 94efdd863c88efaebf1444c8998f3ace
BLAKE2b-256 6fabfff9d6200a7af1101e79473eab6f00965b259e336ba290bf0fa25870c918

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page