Contributing to BootAgent
August 13, 2026 · View on GitHub
Thanks for considering a contribution. This file covers what you need to send a
change; AGENTS.md holds the fuller development conventions and is worth reading
before a larger one. Participation is governed by CODE_OF_CONDUCT.md.
Before you start
For a bug fix or a small change, open a pull request directly.
For a new feature, a new Agent, or a new built-in Provider, open an issue first.
BootAgent has a deliberate scope — docs/product-boundary-baseline.md records what it
does and does not do — and an issue is a cheaper place to find out that something
falls outside it than a finished branch.
Prerequisites
- Go — the version in
go.mod - Node.js and pnpm, for the frontend
- Python 3 is not needed to build or test.
scripts/check-docs.pyuses it, and installing Aider needs Python 3.12 at runtime, which uv resolves on its own.
Local verification
Run the relevant checks before opening a pull request. .github/workflows/ci.yml
runs four jobs — Go, Frontend, Docs, and Release compliance — and the commands
below cover their repository-local checks.
go test ./...
go test -race ./...
go vet ./...
cd frontend
pnpm install --frozen-lockfile
pnpm run test
pnpm run build
pnpm run test:e2e
Run the documentation and release-compliance checks as well:
python3 scripts/check-docs.py
python3 -m unittest scripts/test_generate_third_party_licenses.py
python3 scripts/generate_third_party_licenses.py --check
CI also runs staticcheck for Go. Report what you actually ran. If something
fails or you could not run it, say so in the pull request — that is more useful
than a green summary that does not hold.
What a change should include
A test for behaviour. A bug fix needs a test that fails before it and passes after. Verify that by running it against the unfixed code: a test that passes either way is documentation, not a guard.
Comments that say why, not what. Explain a constraint the code cannot show. The next reader can see what the line does.
Matching style. Read the surrounding code first and follow it rather than introducing a new pattern.
Keep the change focused. A bug fix does not need the surrounding code tidied up; unrelated cleanup is easier to review as its own pull request.
Things that are easy to get wrong
frontend/bindings/is generated. Do not edit it by hand. Regenerate it with the invocation inbuild/Taskfile.yml, including its build-tag flag — without the flag the generator reports zero services and empties the directory.- Secrets stay out of everything user-visible. No API key in logs, error messages, ordinary configuration files, status payloads, URLs, global frontend state, browser storage, or test fixtures. Only Provider editing and configuration forms read a key, on demand, through a local binding.
- UI copy is Chinese-source. Add the Chinese string to
frontend/src/i18n.tsxfirst; the translation key is a closed union, so English-only copy will not compile. - A new bundled dependency or third-party mark means a
NOTICEupdate.docs/distribution-compliance-policy.mdtreats this as a release prerequisite. - User-visible changes mean a README update, in both
README.mdandREADME_ZH.md, in the same change.
Documentation
docs/ is organised by audience, and AGENTS.md says which directory takes what.
The rule that catches people out is language: README.md and the specifications in
the docs/ root are English-only, while AGENTS.md and docs/internal/ are
Chinese, because their audience is maintainers. scripts/check-docs.py enforces
this.
Commits and pull requests
Write commit subjects as <type>: <imperative summary> — fix:, feat:, chore:,
docs:, test:. Keep one logical change per commit.
In the pull request, say what was wrong and why the change is the right fix, not only what you edited. If you decided against an alternative approach, saying so saves the reviewer from proposing it.
Reporting bugs
Include the BootAgent version, your platform, what you did, what you expected, and what happened. If an Agent install or a Provider connection failed, the message shown in the UI is the useful part.
Never paste an API key, in an issue or anywhere else. Redact it. If you already have, revoke it at the Provider.
Security
Do not report vulnerabilities through issues. SECURITY.md has the private
reporting path.
License
Contributions are licensed under Apache-2.0, the same as the project.