Cross-harness checks
Separates valid shared structure from events and handler behavior that differ between Codex and Claude Code.
Hooks look portable until one harness ignores a matcher, skips a handler type, or launches the same command from a different directory. HookLint catches those differences before the agent starts.
$ hooklint . --harness codex Scanned 1 source, 1 group, 1 handler. WARNING codex-handler-skipped Codex currently skips prompt handlers. WARNING codex-async-skipped Async hooks are parsed, then skipped. Result: 0 errors, 2 warnings.
Separates valid shared structure from events and handler behavior that differ between Codex and Claude Code.
Reads repository configuration without executing commands, contacting URLs, evaluating prompts, or exposing handler bodies.
Text for humans, JSON for tooling, Markdown for reviews, and a strict exit code when you want warnings to fail.
Requires Node.js 18 or newer and has no runtime dependencies.
npx --yes --registry=https://codeberg.org/api/packages/automa-tan/npm/ \
hooklint . --harness auto