Skip to main content

uv-installable wrapper for the vercel-labs/skills CLI with an embedded Node runtime

Project description

npx-skills

npx-skills is a uv-installable Python wrapper around the upstream skills CLI.

This allows you to use skills.sh from within Python projects without a global dependency on Node/npm and impose versioning constraints on npx skills on a project-by-project basis.

It does this by shipping a vendored Node runtime and the published JavaScript CLI payload, then forwards execution to the embedded runtime so users do not need a separate Node install.

Install

uv add npx-skills
skills -h

OR use with uvx

uvx npx-skills

Versioning

The npx-skills package version tracks the upstream skills npm module version one-to-one. Installing npx-skills==1.4.8 gives you exactly skills@1.4.8 — the CLI payload is baked into the wheel at build time, so pinning npx-skills in your pyproject.toml or lockfile pins the underlying JavaScript CLI too. A new upstream skills release on npm has no effect on an already-installed npx-skills; you only move when you explicitly bump npx-skills. Packaging-only republishes of an existing upstream version use PEP 440 post-releases (e.g. 1.4.8.post1).

How it works

Refresh Vendored Artifacts

The repository includes a vendoring script that copies:

  • the published skills package payload (package.json, bin/, dist/, README.md, ThirdPartyNoticeText.txt)
  • the package's runtime node_modules dependencies
  • the current platform's node binary

By default it will use a built package root if you pass --source, or fall back to the newest cached ~/.npm/_npx/*/node_modules/skills install.

uv run python scripts/vendor_upstream.py

Or point it at a specific built package root:

uv run python scripts/vendor_upstream.py --source /path/to/node_modules/skills

If you point --source at the upstream git repo, it must already contain dist/cli.mjs.

To rebuild only the embedded Node runtime from the payload already committed in this repo, point --source at the vendored package root:

uv run python scripts/vendor_upstream.py --source src/npx_skills/vendor/skills

Build

The wheel is intentionally platform-specific because it includes a native node binary.

uv build

Release Automation

GitHub Actions builds one wheel per native runner target:

  • Linux x64 via manylinux_2_28
  • Linux arm64 via manylinux_2_28
  • macOS x64
  • macOS arm64
  • Windows x64
  • Windows arm64

The workflow lives at .github/workflows/wheels.yml. It reuses the committed skills payload, re-vendors the Node runtime for the current runner architecture, runs the test suite, builds wheels with uv (cibuildwheel via uvx on Linux), smoke-tests the built wheel, and uploads wheel artifacts for manual release use.

This project intentionally publishes wheels only. An sdist would not be portable without re-vendoring the embedded Node runtime for the target platform.

Publishing runs through a separate manual workflow at .github/workflows/publish.yml. It invokes the wheel builder in the same workflow run, then publishes from GitHub after all target wheels succeed. The intended entrypoint is the npx-skills-dev helper:

uv run --package npx-skills-dev npx-skills-dev publish-to-pypi

Or via make:

make publish

Use --ref <branch> to dispatch the workflow from a specific branch and --dry-run to build and validate without publishing.

The GitHub publish job authenticates to PyPI using a project API token stored as the PYPI_API_TOKEN repository secret and consumed via UV_PUBLISH_TOKEN. The job runs in the pypi GitHub Actions environment, which can optionally be gated with required reviewers.

Upstream Sync Automation

A scheduled workflow at .github/workflows/auto-sync-upstream.yml runs daily (06:17 UTC) and keeps the vendored payload in lock-step with the upstream skills npm release. It is the mechanism that preserves the one-to-one version mapping described in the Versioning section above.

The job is implemented by the npx-skills-dev auto-sync-upstream command (packages/npx-skills-dev/src/npx_skills_dev/commands/auto_sync_upstream.py) and performs the following steps:

  1. Reads the currently vendored version from src/npx_skills/vendor/manifest.json (upstream.version).
  2. Fetches skills@latest from the npm registry.
  3. If the versions match (and --force was not passed) the job exits as a no-op.
  4. Otherwise it npm installs skills@<latest> into a temporary directory and runs scripts/vendor_upstream.py --source ... against it to refresh the vendored payload.
  5. Rewrites the version in pyproject.toml and src/npx_skills/__init__.py to match the new upstream version.
  6. Runs the unit test suite.
  7. Commits src/npx_skills/vendor, src/npx_skills/__init__.py, and pyproject.toml with the message Auto-sync upstream skills@<version> and pushes to master.
  8. Dispatches publish.yml against master, which builds wheels for every target platform and publishes them to PyPI.

The workflow can also be triggered manually via workflow_dispatch, with an optional force input that re-runs the full flow even when the upstream version is unchanged.

Layout

The vendored runtime is kept under src/npx_skills/vendor/:

vendor/
  manifest.json
  node/<platform>/node
  skills/
    package.json
    bin/cli.mjs
    dist/
    node_modules/

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

npx_skills-1.4.9-py3-none-win_arm64.whl (30.1 MB view details)

Uploaded Python 3Windows ARM64

npx_skills-1.4.9-py3-none-win_amd64.whl (33.7 MB view details)

Uploaded Python 3Windows x86-64

npx_skills-1.4.9-py3-none-manylinux_2_28_x86_64.whl (45.5 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

npx_skills-1.4.9-py3-none-manylinux_2_28_aarch64.whl (44.7 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

npx_skills-1.4.9-py3-none-macosx_15_0_arm64.whl (37.3 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

npx_skills-1.4.9-py3-none-macosx_10_13_universal2.whl (39.0 MB view details)

Uploaded Python 3macOS 10.13+ universal2 (ARM64, x86-64)

File details

Details for the file npx_skills-1.4.9-py3-none-win_arm64.whl.

File metadata

  • Download URL: npx_skills-1.4.9-py3-none-win_arm64.whl
  • Upload date:
  • Size: 30.1 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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 npx_skills-1.4.9-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 d8262644a68d1da71aae935a44f6921263abc8d55241143d58be51c202de0825
MD5 9c60ba16bc528fb00e2cb6f0897ebb80
BLAKE2b-256 60a91d62d9cd8d57e50bb03ba3b3407e14a7122c11b56410d37b7d56e17003b5

See more details on using hashes here.

File details

Details for the file npx_skills-1.4.9-py3-none-win_amd64.whl.

File metadata

  • Download URL: npx_skills-1.4.9-py3-none-win_amd64.whl
  • Upload date:
  • Size: 33.7 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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 npx_skills-1.4.9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1dfe19fd456b414b23e9417a36dbbed7ac135de206d7e5aaa6ccd2ed9dbd6443
MD5 87dce79f376275a02ef0bb763956ed32
BLAKE2b-256 1482c0a34a71f25896d2af4e532cbdeb9341357757984c8409b4ac90241787e7

See more details on using hashes here.

File details

Details for the file npx_skills-1.4.9-py3-none-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: npx_skills-1.4.9-py3-none-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 45.5 MB
  • Tags: Python 3, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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 npx_skills-1.4.9-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a9aa52f42466344080b1695d7daa88bac8d964bcfc5b3653af2fe6b0bf7be477
MD5 3084508e19e1de8210f49b04a61051d9
BLAKE2b-256 6f6a9f16278ef6c5ed6500f79677fc0c7123d6e07b0c0de5a0af6ab8de7fb0d3

See more details on using hashes here.

File details

Details for the file npx_skills-1.4.9-py3-none-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: npx_skills-1.4.9-py3-none-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 44.7 MB
  • Tags: Python 3, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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 npx_skills-1.4.9-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b0ed9f163263ff0c44ba9503bf74ee9f7d2f2559a89c188e59a7c56bc53f8ed2
MD5 f8fedb1b1c3785f2538301627eb1a111
BLAKE2b-256 a9b61a8fa71f6a805df8143bcaeb7103cb876dcef78c6ecefd63a44852edc7f3

See more details on using hashes here.

File details

Details for the file npx_skills-1.4.9-py3-none-macosx_15_0_arm64.whl.

File metadata

  • Download URL: npx_skills-1.4.9-py3-none-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 37.3 MB
  • Tags: Python 3, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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 npx_skills-1.4.9-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 535de1ee1107ede4d12cb6cf6f291371d4c11d13a12a22abd9f584aa718eaeba
MD5 4b61447cd4ce78b238c1009118975407
BLAKE2b-256 ad06c15785a7ac9ae159a8d56bcaf4b7aeb2ae9a18e36cbe703954a62baa08b1

See more details on using hashes here.

File details

Details for the file npx_skills-1.4.9-py3-none-macosx_10_13_universal2.whl.

File metadata

  • Download URL: npx_skills-1.4.9-py3-none-macosx_10_13_universal2.whl
  • Upload date:
  • Size: 39.0 MB
  • Tags: Python 3, macOS 10.13+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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 npx_skills-1.4.9-py3-none-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 7b1a0ae356d5a0aeea8bd27dccb9b25dadc5a6c16b11aca3aee81ded31a00bc6
MD5 f5cc0a70251c70dbfe7ce65f5ae9a2f8
BLAKE2b-256 e2761d42ebc10ce0e3e5b3704a227fcfcf75d25305410fbadbc818c66aee21ad

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