CLI Reference

Scikit-build-core has a few integrated CLI tools, useful for scaffolding a project and investigating your environment.

These are available through the scikit-build command (also runnable as python -m scikit_build_core), with the modules exposed as subcommands.

The scikit-build-core CLI provides the following commands:
  scikit-build build requires      Get the build requirements
  scikit-build build project-table Get the project table (with dynamic metadata)
  scikit-build builder             Info about the system
  scikit-build builder wheel-tag   Info about the computed wheel tag
  scikit-build builder sysconfig   Info from sysconfig
  scikit-build file-api query      Request CMake file API
  scikit-build file-api reply      Process CMake file API
  scikit-build init                Generate a starter project
  scikit-build settings list       List the supported config-settings

Build utilities

usage: scikit-build build [-h] {requires,project-table} ...

Build backend utilities.

positional arguments:
  {requires,project-table}
                        Commands
    requires            Get the build requirements
    project-table       Get the full project table, including dynamic metadata

options:
  -h, --help            show this help message and exit

Build requirements

usage: scikit-build build requires [-h] [--mode {sdist,wheel,editable}]
                                   [--type {static,dynamic,both}]
                                   [-C KEY=VALUE]

Includes the static build requirements, the dynamically generated ones, and
dynamic-metadata ones.

options:
  -h, --help            show this help message and exit
  --mode {sdist,wheel,editable}
                        The build mode to get the requirements for
  --type {static,dynamic,both}
                        Static (build-system.requires), dynamic (from the
                        backend hook), or both
  -C, --config-setting KEY=VALUE
                        A config-setting passed to the backend hook, can be
                        repeated

Added in version 1.1: The -C/--config-setting and --type options.

Example:

$ scikit-build build requires
[
  "cmake>=3.15",
  "ninja>=1.5",
  "scikit-build-core"
]

Project table

usage: scikit-build build project-table [-h]
                                        [--state {sdist,wheel,editable,metadata_wheel,metadata_editable}]

Processes static and dynamic metadata without triggering the backend, only
handles scikit-build-core's dynamic metadata.

options:
  -h, --help            show this help message and exit
  --state {sdist,wheel,editable,metadata_wheel,metadata_editable}
                        The build state reported to [[tool.dynamic-metadata]]
                        providers

Example:

$ scikit-build build project-table
{
  "name": "example",
  "version": "0.0.1"
}

Building environment info

usage: scikit-build builder [-h] {wheel-tag,sysconfig} ...

Info about the system and build environment.

positional arguments:
  {wheel-tag,sysconfig}
                        Commands
    wheel-tag           Get the computed wheel tag for the current environment
    sysconfig           Print information about the Python environment

options:
  -h, --help            show this help message and exit

Example:

$ scikit-build builder
Scikit-build-core 1.1.2.dev3+g92cb8a5f3 on Python 3.14.6 (main, Jun 25 2026, 18:32:52) [GCC 13.2.0]
Detected Python Library: /home/docs/.asdf/installs/python/3.14.6/lib/libpython3.14.so
Detected ABI3 Python Library: /home/docs/.asdf/installs/python/3.14.6/lib/libpython3.14.so
Detected ABI3T Python Library: /home/docs/.asdf/installs/python/3.14.6/lib/libpython3.14.so
Detected Python Include Directory: /home/docs/.asdf/installs/python/3.14.6/include/python3.14
Detected NumPy Include Directory: /home/docs/checkouts/readthedocs.org/user_builds/scikit-build-core/envs/latest/lib/python3.14/site-packages/numpy/_core/include
Detected Platform: linux-x86_64
Detected SOABI: cpython-314-x86_64-linux-gnu
Detected ABI3 SOABI: abi3
Detected ABI3T SOABI: abi3t
Detected ABI flags: 
Default Wheel Tag: cp314-cp314-linux_x86_64
 - Note: use scikit-build builder wheel-tag -h for further options
Detected CMake and Ninja (all versions):

Wheel tag

usage: scikit-build builder wheel-tag [-h] [--archs [ARCHS ...]] [--abi ABI]
                                      [--purelib]

Get the computed wheel tag for the current environment.

options:
  -h, --help           show this help message and exit
  --archs [ARCHS ...]  Specify one or more archs (macOS only currently)
  --abi ABI            Specify py-api, like 'cp39', 'cp315t', or 'py3'
  --purelib            Specify a non-platlib (pure) tag

Example:

$ scikit-build builder wheel-tag
cp314-cp314-linux_x86_64

Sysconfig

usage: scikit-build builder sysconfig [-h]

Print information about the Python environment.

options:
  -h, --help  show this help message and exit

File API tools

usage: scikit-build file-api query [-h] build_dir

Write a stateless query to a build directory.

positional arguments:
  build_dir   Path to the build directory

options:
  -h, --help  show this help message and exit
usage: scikit-build file-api reply [-h] reply_dir

Read a query written out to a build directory.

positional arguments:
  reply_dir   Path to the reply directory

options:
  -h, --help  show this help message and exit

Settings tools

usage: scikit-build settings [-h] {list} ...

Settings utilities.

positional arguments:
  {list}      Commands
    list      List the config-settings supported when building this project

options:
  -h, --help  show this help message and exit

Config-settings

Lists the config-settings the current project accepts: the built-in scikit-build-core settings plus any the project declares in tool.scikit-build.config-setting.

Added in version 1.1.

usage: scikit-build settings list [-h]

Lists the built-in scikit-build-core settings and any config-settings the
project declares in tool.scikit-build.config-setting.

options:
  -h, --help  show this help message and exit

Starter projects

The init command generates a minimal CMake + scikit-build-core project for the selected binding backend. Run it without --backend to pick one interactively.

usage: scikit-build init [-h]
                         [--backend {pybind11,nanobind,c,cython,swig,fortran,abi3,abi3t}]
                         [--name NAME] [--force]
                         [directory]

Generate a minimal CMake + scikit-build-core starter project.

positional arguments:
  directory             Directory to create the project in (default: current
                        directory)

options:
  -h, --help            show this help message and exit
  --backend {pybind11,nanobind,c,cython,swig,fortran,abi3,abi3t}
                        Binding backend to use (prompts interactively if
                        omitted)
  --name NAME           Project name (default: derived from the directory
                        name)
  --force               Generate into a non-empty directory