Skip to main content

zoo-kcl-check-cli

Local checks for Zoo / KittyCAD KCL: formatting, syntax, style, execution errors, and sketch constraints. Works offline, without a Zoo account or API tokens.

Execution uses a mock CAD engine. A successful check does not validate 3D geometry — verify it in Zoo.

Installation

pipx install zoo-kcl-check-cli

Also available via pip install zoo-kcl-check-cli or uv tool install zoo-kcl-check-cli. Requires Python 3.11–3.14. Package on PyPI.

Usage

kcl-check lint main.kcl
kcl-check execute main.kcl
kcl-check sketches main.kcl
kcl-check format main.kcl --write
Command Purpose
lint Check syntax and style without execution
execute Local execution: names, arguments, types, units, and assert
sketches Check whether sketch constraints fully define sketches and whether they conflict
format Print formatted code by default, write with --write, check with --check

You can pass a directory instead of a file:

kcl-check lint .
kcl-check execute .
kcl-check sketches .
kcl-check format . --check

lint and format process .kcl files recursively, skipping symbolic links. execute and sketches run default_file from project.toml or main.kcl. Imports of neighboring KCL files are supported.

Warnings also cause failure. The sketches command fails for under-constrained or conflicting sketches and incomplete reports.

Use kcl-check COMMAND --help for command options.

Output

Output is text by default. Diagnostics go to stderr; results and reports go to stdout. Engine errors include a code excerpt and a pointer to the problem when that information is available.

For scripts, CI, and coding agents:

kcl-check execute main.kcl --json

--json returns one object in stdout, including on failure. Main fields: ok, exit_code, diagnostics, sketches, formatting. See the result contract for the full format.

All commands support --timeout SECONDS; the default is 60 seconds for the entire command.

Exit code Meaning
0 Check passed
1 KCL diagnostics, constraint problems, or formatting differences with --check
2 Invalid input, timeout, or tool failure
130 Interrupted by the user

Agent skills

  • kcl-modeling — modeling rules and KCL techniques.
  • kcl-check — CLI installation, running checks, and interpreting results.
npx skills add gavroman/zoo-kcl-check --skill kcl-modeling --skill kcl-check

Development

Setup, tests, and builds. Report bugs and suggestions in GitHub Issues.

License

MIT.

Metadata

Release files for zoo-kcl-check-cli 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zoo-kcl-check-cli 0.1.4
File Size Uploaded
zoo_kcl_check_cli-0.1.4.tar.gz 31.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zoo-kcl-check-cli 0.1.4
File Interpreter ABI Platform
zoo_kcl_check_cli-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 47.0 kB

Release files / zoo_kcl_check_cli-0.1.4.tar.gz

Download URL zoo_kcl_check_cli-0.1.4.tar.gz
Size 31.5 kB
Tags Source
SHA-256 checksum
How to use checksums
394c9fb874e3f98d4f692080272c2580eb59acc4de98556be57dafc2e04bbe29
BLAKE2b-256 checksum
How to use checksums
32548be85c10091e1435e2d4e9e4ad40844d792e047cfcfa0c61e7e79e1f9ff7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / zoo_kcl_check_cli-0.1.4-py3-none-any.whl

Download URL zoo_kcl_check_cli-0.1.4-py3-none-any.whl
Size 15.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
915839c138dc84a44d87ce9b9ca78685293d3ef443f4e6a579fa1e78c286fc9a
BLAKE2b-256 checksum
How to use checksums
4920070413dd3cdb459963298376d357f231bddaa93f62ae959849416bca0287
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.1.6

2 release files

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page