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.6
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.6.tar.gz | 31.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| zoo_kcl_check_cli-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 47.6 kB
Release files / zoo_kcl_check_cli-0.1.6.tar.gz
| Download URL | zoo_kcl_check_cli-0.1.6.tar.gz |
|---|---|
| Size | 31.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2cb1ebdeb50497c9ac83b7c530d6d204a24656bf0ff023a6b7af289dd114615e
|
|
BLAKE2b-256 checksum How to use checksums |
7deb9b644bcafe17cf141f3ca2217ce871114a89e6b7bf623f2216c72b46c203
|
| 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.6-py3-none-any.whl
| Download URL | zoo_kcl_check_cli-0.1.6-py3-none-any.whl |
|---|---|
| Size | 15.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dc3cae3bc1b67e81317951cf4ddbcdff6457b0883fd2db6f43ce6619ea7e68d6
|
|
BLAKE2b-256 checksum How to use checksums |
1846a4adcca773d7bef3f1eb05a39a73639b0d4451d346b11f5af83b3fb953b7
|
| 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}
|