Contributing
Getting Started
Section titled “Getting Started”go-output uses Nix for reproducible builds. If you have Nix installed:
nix develop # Enter dev shell (Go 1.26, golangci-lint, gopls)nix run .#setup-workspace # Generate go.work from go.work.exampleIf you don’t use Nix, set up the workspace manually:
git clone https://github.com/larsartmann/go-output.gitcd go-outputcp go.work.example go.workBuild & Test
Section titled “Build & Test”nix run .#build # Build all modulesnix run .#test # Test all modulesnix run .#test-race # Race-test nom + tuinix run .#lint # golangci-lint across all modulesArchitecture
Section titled “Architecture”Read these before non-trivial work:
AGENTS.md— Architecture patterns and gotchasdocs/FORMAT_ARCHITECTURE.md— Format/shape matrix internalsdocs/DOMAIN_LANGUAGE.md— Ubiquitous languagedocs/adr/— Architecture Decision Records
Core Invariant
Section titled “Core Invariant”Root (package output) has ZERO imports of any sub-module. This is the load-bearing architectural rule. go get github.com/larsartmann/go-output pulls no lipgloss, bubbletea, yaml, or diagram deps.
Pull Requests
Section titled “Pull Requests”- Fork and clone the repo
- Create a feature branch
- Make your changes
- Ensure
nix run .#testandnix run .#lintpass - Open a PR with a clear description
See CONTRIBUTING.md for details.