Troubleshooting
zsh-lint: command not foundโ
Go normally installs binaries under $(go env GOPATH)/bin. Add that directory
to PATH, or invoke the binary directly:
"$(go env GOPATH)/bin/zsh-lint" path/to/script.zsh
Passing a directory failsโ
The published CLI opens each argument as one file. It does not recurse through directories. Build an explicit file list as described in Choosing files.
A Bash or sh file reports strange parse errorsโ
Zsh Lint does not classify dialects from the shebang or extension. Every path you pass is parsed as Zsh. Remove non-Zsh files from the input list.
Valid Zsh reports a parser errorโ
First check the same file with the supported native Zsh version:
zsh -f -n -- path/to/script.zsh
If native Zsh accepts it, collect a minimal example and report a parser gap in z-shell/zsh-lint. Do not rewrite valid native Zsh only to satisfy a supplemental parser.
--config is rejectedโ
The option is not available in v1.1.0. It currently exists only on main; see
the project configuration preview.
Exit status 1 with no obvious errorโ
Warnings also return status 1. Read the human diagnostics or save JSON and inspect the summary:
zsh-lint --format=json path/to/script.zsh | jq '.summary'
Because the linter itself exits 1 for findings, append || status=$? only when
you are deliberately inspecting output. Do not hide the failure in CI.
An intentional pattern keeps failingโ
Read the rule, verify that the code is intentional, then add a line-scoped suppression with the exact rule ID and a reason. See Rules and suppressions.