Thanks for taking the time. This covers the mechanics; open a discussion if you want to talk through an idea before writing code.
You need Go 1.24 or later. Make is optional, but every command below assumes it.
git clone https://github.com/your-username/forge.git
cd forge
make install-toolsWork on a branch, not on main.
make test # all tests
make test-coverage # with coverage
go test ./extensions/graphql/...Before you push, run what CI runs:
make ciThat covers formatting, linting and tests together. The individual targets are there when you want to iterate faster:
make fmt # format
make lint # lint
make lint-fix # lint and fix what can be fixed
make security-scan # security scan
make vuln-check # check dependencies for known vulnerabilitiesCommits follow Conventional Commits. The prefix is not cosmetic: Release Please reads it to decide the next version and to build the changelog, so a mislabelled commit produces a wrong release.
feat: a new feature, bumps the minor version
fix: a bug fix, bumps the patch version
docs: documentation only
style: formatting, no behaviour change
refactor: neither a fix nor a feature
perf: a performance change
test: adding or correcting tests
chore: build, tooling, dependencies
Add a scope when it narrows things usefully, for example fix(router): or
feat(client):.
Open the PR against main. Describe what changes and why; if the reason is a
bug, say what the bug did rather than only that it existed.
A PR is ready to review when make ci passes and the change is covered by
tests. If part of the work is deliberately left out, say so in the description
rather than leaving a reviewer to notice.
You do not need to do anything to release your change. Merging to main with a
conventional commit message is enough: Release Please opens a PR with the
version bump and changelog, and merging that PR tags and publishes.
See the README for the full pipeline, including how to cut a release by hand.
Forge is Apache 2.0. By contributing you agree that your contribution is licensed under the same terms. See LICENSE.