Skip to content

Contributing

Issues and pull requests are welcome. The full guide lives in CONTRIBUTING.md.

A go.work file at the root ties the modules together, so local changes to one module are picked up by the others without a replace directive of your own.

Terminal window
make test-all # go test -race in every module
make lint-all # golangci-lint in every module
make build-all # go build in every module
  • Conventional commits (feat:, fix:, docs:, and so on).
  • Sign off every commit with git commit -s; the DCO requires it.
  • New features need tests. Bug fixes need a regression test.
  • Keep pull requests focused: one logical change each.

The site is Starlight and lives in docs/.

Terminal window
cd docs
npm install
npm run dev

Code blocks that show real wiring are not written in Markdown. They are imported from docs/snippets/, a Go module that compiles as part of the workspace, and sliced by region marker:

// #region app
app := gas.NewApp(
gas.WithSingletonService[gas.StorageProvider](storages3.New()),
)
// #endregion app
import wiring from '../../../snippets/wiring/main.go?raw';
import { region } from '../../lib/snippet';
<Code code={region(wiring, 'app')} lang="go" />

That way go build ./... and CI catch documentation drift, and a renamed region fails the docs build rather than silently publishing an empty code block. When you add a snippet, put it in the Go file first.