Thank you for considering contributing! This document outlines the process for contributing code, reporting issues, and submitting changes.
- Fork the repository
- Open in GitHub Codespaces (or clone locally with Go 1.22+)
- Run
go mod download - Copy
.env.exampleto.envand configure your Rocket.Chat server - Run
go run ./cmd/bot - Run
go test ./...to verify everything works
This project uses a feature flow branching model:
main (stable, protected)
├── feat/rocket-connection ← new feature
├── feat/standup-report ← new feature
├── fix/login-timeout ← bug fix
├── docs/contributing ← documentation
└── chore/update-deps ← maintenance
| Branch prefix | Purpose |
|---|---|
feat/ |
New features |
fix/ |
Bug fixes |
docs/ |
Documentation changes |
refactor/ |
Code refactoring |
test/ |
Adding or updating tests |
chore/ |
Maintenance, dependencies, config |
All branches are created from main and merged back via pull requests.
This project uses Conventional Commits for all commit messages.
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
| Type | When to use |
|---|---|
feat |
A new feature |
fix |
A bug fix |
docs |
Documentation only |
style |
Formatting, linting (no logic change) |
refactor |
Code restructuring (no feature/fix) |
perf |
Performance improvement |
test |
Adding or updating tests |
build |
Build system or dependencies |
ci |
CI configuration changes |
chore |
Maintenance, tooling, config |
feat: add standup report generation
Implement /standup report command that aggregates
all responses and posts formatted output to channel.
Closes #8
fix: handle empty standup submissions gracefully
Prevent panic when user submits with no answers.
Fixes #12
docs: add API reference for slash commands
- Use present tense, imperative mood: "add" not "added" or "adds"
- Keep the first line under 72 characters
- Reference issues in the body or footer:
Closes #123,Refs #456 - One logical change per commit
- Create a feature branch from
main:git checkout -b feat/my-feature - Make your changes with conventional commit messages
- Ensure all tests pass:
go test ./... - Ensure code is clean:
go vet ./... - Push your branch and open a PR against
main - In the PR description, explain what changed and why
- Link related issues (e.g., "Closes #4")
- Wait for review and address any feedback
Use the same conventional commit format:
feat: add team admin CRUD commands
fix: prevent duplicate standup submissions
docs: update command reference table
- Run
go fmt ./...before committing - Run
go vet ./...— zero warnings required - Follow standard Go conventions (effective Go, Go idioms)
- Use meaningful names — no
temp,data,resultwithout context - Prefer standard library over external dependencies
- Write tests for all new functionality
- Run tests:
go test ./... - Aim for meaningful test coverage (not just happy paths)
- Test edge cases: empty inputs, unauthorized users, duplicate submissions
- Create a handler in
internal/commands/ - Register it in the command registry
- Add permission checks in the middleware
- Write tests for the handler
- Update the README command table
Before adding a new dependency:
- Check if the existing code solves the problem
- Check the dependency's maintenance status and license
- Run
go mod tidyafter adding
When filing a bug, include:
- Steps to reproduce
- Expected vs actual behavior
- Bot logs (if available)
- Rocket.Chat server version
Describe:
- What you want to accomplish
- Why it's useful
- How you envision it working
Be respectful, constructive, and inclusive. Disagreements are fine — personal attacks are not.
By contributing, you agree that your contributions will be licensed under the MIT License.