Overview
The authoritative contributor guide lives at CONTRIBUTING.md in the source tree. This page is a docs-flavoured summary and the entry point when you're reading docs first, code second.
Ground rules
- Commit style: Conventional Commits.
feat(slack): …,fix(whatsapp): …,docs(concepts): …,refactor: …. - Every exported identifier has a godoc comment.
- No
interface{}/anyin exported APIs without a written justification. - Every fact in the docs is code-truthful. Cite the file when possible.
Quality gates (run locally before opening a PR)
make check mirrors the CI matrix:
make check
Under the hood:
go vet ./...golangci-lint run(18 linters)go test -race -count=1 -covermode=atomic ./...govulncheck ./...
Coverage floor is 75% total. Core packages sit 85–100% — keep them there.
Sending a patch
git clone git@github.com:<you>/rousseau-agent
cd rousseau-agent
git checkout -b feat/awesome
# … edit …
make check
git commit -m "feat(<area>): <what changed>"
git push -u origin feat/awesome
# open PR against sebastienrousseau/rousseau-agent:main
CI runs the same gates. Every commit must pass.
Contribution shapes
Reproduce first. Add a failing test. Fix. Verify the test passes. Send the PR with both the fix and the test in the same commit.
Docs live in a separate repo (rousseau-agent-docs). English content lives under content/; language variants under content/<lang>/.
-
Use the frontmatter template from an existing page.
-
Prefer editing over creating; new pages need an owner willing to keep them fresh.
-
Cross-link with absolute paths.
A transport lives at internal/transport/<name>/. It needs:
- A
Newconstructor andConfigstruct. - Implementation of the
transport.Transportinterface (Start,Stop,Deliver). - Table-driven tests.
- A CLI wire-up at
internal/cli/<name>.go. - A config struct on
Configininternal/config/config.go. - A docs page under
content/transports/<name>.md.
The Slack + Discord PR history is a good template.
A provider lives at internal/llm/<name>/. It needs:
- A
Newconstructor andConfigstruct. - Implementation of
agent.Provider(Chat) and, ideally,agent.StreamingProvider(ChatStream). - Table-driven tests.
- A config struct on
Config. - A docs page under
content/providers/<name>.md.
The Bedrock and Vertex commit history is a good template.
Filing a bug
Include, at minimum:
rousseau versionoutput.rousseau doctoroutput.- The exact command you ran.
- The stderr you got.
- What you expected.
Use the GitHub Issues bug-report template — it prompts for exactly this.