Thank you for your interest in contributing. This document provides a quick overview; see docs/DEVELOPMENT.md for full conventions and implementation details.
-
Clone the repository and ensure you have:
bash4+,jq1.6+,python3- Optional:
pre-commitfor linting (pipx install pre-commit)
-
Run static checks locally:
make lint # pre-commit (shfmt, shellcheck, etc.) make static-checks # Full CI checks
- Modules live under
scripts/, each withSCRIPT_NAMEandsource lib/common.sh - Status values: Use only
ok,warn,error,skipped(neverpass,fail,timeout) - Module manifest:
specs/modules.jsonis the single source of truth; add new modules there - Config: Thresholds in
conf/defaults.sh; overrides viaconf/local.sh(gitignored) - POSIX: Prefer portable
awk; avoid gawk-specific features likematch($0, re, arr)
- Create
scripts/<module>.sh(executable) - Register in
specs/modules.json(phase, order, required_cmds) - Use
finish_moduleoremit_jsonfor output;skip_modulefor hardware gaps - Run
make smokeormake quickto verify
- Run
make lintandmake static-checksbefore pushing - Keep commits focused; reference issues where applicable