development.md

Development

Markdown

Development

Onyx is deliberately boring Go. The local contract is the same one enforced by CI:

files="$(gofmt -l $(git ls-files '*.go'))"
test -z "$files" || { echo "$files"; exit 1; }
go vet ./...
go test ./...

The project is stdlib-only. Do not add third-party requirements or go.sum unless the no-dependency contract is being changed deliberately.

When changing generated output, preserve relative URLs, the .nojekyll behavior, the conservative overwrite guards, and the generated-file markers. Update tests alongside behavior changes.

Rebuilding this site

Because the website is itself an Onyx site, regenerate it from the repository root after editing anything under docs/:

go run ./onyx .

That rewrites index.html and public/. Commit the regenerated files together with your Markdown changes. See Deploying for how the output is served.

Onyx lives on GitHub.