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)
| File | Size | Uploaded | |
|---|---|---|---|
| zoo_kcl_check_cli-0.1.4.tar.gz | 31.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|