Thanks for your interest in Trace! We welcome contributions of all kinds.
- Open an issue describing your idea or the bug you found
- Wait for maintainer feedback — we may have context that saves you time
- Get the green light, then start coding
This avoids wasted effort on work that doesn't align with the project direction.
- Go 1.26+
- mise —
curl https://mise.run | sh
git clone https://github.com/GrayCodeAI/trace.git
cd trace
mise trust && mise install
go mod download
mise run build
mise run testLook for issues labeled good-first-issue. Great starting points:
- Documentation improvements
- Test coverage
- Small bug fixes
# Create a branch
git checkout -b feature/your-feature
# Make changes, then verify
mise run fmt # Format
mise run lint # Lint
mise run test # Test
# Commit
git commit -m "Add: description of your change"- Standard Go idioms
- All errors handled explicitly
gofmtandgolangci-lintmust pass- See CLAUDE.md for architecture patterns
mise run test # Unit tests
mise run test:integration # Integration tests
mise run test:ci # Full CI suite- Related issue exists and is approved
-
mise run lintpasses -
mise run testpasses - New code has tests
- PR description explains what and why
- Push your branch
- Open a PR against
main - Link the related issue
- Address review feedback
- Maintainer merges
Found a vulnerability? Do not open a public issue.
Email security@graycode.ai instead. See SECURITY.md.
- GitHub Issues — bugs & features
- Discord — questions & discussion
Please read our Code of Conduct before participating.
| Document | Purpose |
|---|---|
| README.md | Setup & usage |
| CLAUDE.md | Architecture & internals |
| AGENTS.md | Agent integration guide |
| SECURITY.md | Vulnerability reporting |
Thank you for helping make Trace better.