verifylisted
Install: claude install-skill filippolmt/toolbox
# /verify
Validate the toolbox repo the way the human would before pushing. These are the same three jobs PR CI runs (`.github/workflows/ci.yml`: `lint`, `test`, `docker-build`), so passing locally means passing on CI — just faster feedback. The host has no Go toolchain; every Go command has to go through the `golang:1.26` container via the Makefile. Skipping that turns into "command not found: go", which wastes a round trip.
## Order matters
Run the three checks in ascending order of cost. Stop on the first failure — downstream checks can't pass on a broken build.
1. **`make go-lint`** — golangci-lint v2 in a container. Cheapest signal (static analysis, no test run). Catches errcheck / staticcheck / unused before they get masked by a test failure.
2. **`make go-test`** — `go test ./... -count=1` in a container. Runs the unit suite.
3. **Smoke test (conditional).** Only if the image already exists locally. Check with `docker image inspect ghcr.io/filippolmt/toolbox:latest >/dev/null 2>&1`:
- If present → `internal/build/assets/smoke-test.sh` (default arg targets the same registry tag). This validates every bundled CLI in the runtime image.
- If absent → skip. Do **not** trigger `make build` implicitly: it's a multi-minute rebuild and the user hasn't asked for it.
## Reporting
After every run, print a single line per check so the status is grep-able:
```
lint: OK | FAIL
go-test: OK | FAIL
smoke-test: OK | SKIPPED | FAIL
```
On failure, also show the firs