Summary
A semrel doctor command that validates the local environment before a release is attempted would catch configuration issues early and improve the developer experience.
Motivation
Currently, errors during semrel release only surface at runtime — often after the pipeline has already started. A dedicated validation command would let users verify their setup during development or in CI before any release step is executed.
Proposed behaviour
$ semrel doctor
✔ .semrel.yaml found and valid
✔ plugin: provider-github found at ~/.semrel/plugins/semrel-plugin-provider-github (v1.3.0)
✔ plugin: updater-npm found at ~/.semrel/plugins/semrel-plugin-updater-npm (v1.1.0)
✗ plugin: hook-slack NOT FOUND — expected at ~/.semrel/plugins/semrel-plugin-hook-slack or $PATH
⚠ GITHUB_TOKEN not set — provider-github will fail at runtime
✔ git repository detected (branch: main, tag: v1.2.3)
Exit code 0 = all checks pass, non-zero = one or more checks failed.
Checks to include
Acceptance criteria
semrel doctor exits 0 when everything is fine, non-zero otherwise
- Output is human-readable in a terminal and parseable with
--output-format json
- Works offline (no network calls) by default;
--online flag optionally pings provider APIs
Summary
A
semrel doctorcommand that validates the local environment before a release is attempted would catch configuration issues early and improve the developer experience.Motivation
Currently, errors during
semrel releaseonly surface at runtime — often after the pipeline has already started. A dedicated validation command would let users verify their setup during development or in CI before any release step is executed.Proposed behaviour
Exit code 0 = all checks pass, non-zero = one or more checks failed.
Checks to include
.semrel.yamlexists and passes schema validation~/.semrel/plugins/or$PATH)--fixflag suggestion for actionable issues (e.g.semrel plugin install hook-slack)Acceptance criteria
semrel doctorexits 0 when everything is fine, non-zero otherwise--output-format json--onlineflag optionally pings provider APIs