Thank you for your interest in contributing to Knowledge Agent! We welcome contributions from the community.
This project adheres to a code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to sre@freepik.com.
Before creating bug reports, please check existing issues to avoid duplicates. When creating a bug report, include:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Go version, Docker version)
- Logs and error messages
Use the bug report template.
Feature requests are welcome! Please:
- Check existing feature requests to avoid duplicates
- Explain the problem you're trying to solve
- Describe the proposed solution in detail
- Consider alternatives you've thought of
Use the feature request template.
- Fork the repository and create a branch from
main - Make your changes with clear, descriptive commits
- Follow the coding style (run
make fmtandmake lint) - Add tests for new functionality
- Update documentation as needed
- Ensure tests pass (
make test) - Submit a pull request
We follow Conventional Commits:
feat: Add MCP integration for GitHub
fix: Resolve memory leak in session manager
docs: Update deployment guide
refactor: Simplify authentication middleware
test: Add integration tests for A2A API
chore: Update dependencies
This allows automatic changelog generation and semantic versioning.
Types:
feat: New featurefix: Bug fixdocs: Documentation onlyrefactor: Code change that neither fixes a bug nor adds a featureperf: Performance improvementtest: Adding or updating testschore: Changes to build process or auxiliary toolsci: CI/CD changes
Breaking Changes: Add ! after type or add BREAKING: in commit body:
feat!: Change config structure for MCP servers
BREAKING: Config format changed, see migration guide
- Go 1.24+
- Docker & Docker Compose
- Make
- Git
# Clone your fork
git clone https://github.com/YOUR_USERNAME/knowledge-agent.git
cd knowledge-agent
# Add upstream remote
git remote add upstream https://github.com/freepik-company/knowledge-agent.git
# Create config
cp config-example.yaml config.yaml
# Fill in your test credentials
# Start infrastructure
make docker-up
# Run migrations
# Run tests
make test
# Run locally
make devknowledge-agent/
├── cmd/
│ └── knowledge-agent/ # Main application
├── internal/
│ ├── agent/ # Core agent logic (ADK integration)
│ ├── slack/ # Slack integration
│ ├── server/ # HTTP servers
│ ├── config/ # Configuration loading
│ ├── logger/ # Structured logging
│ ├── migrations/ # Database migrations
│ └── tools/ # Custom tools (webfetch)
├── deployments/ # Docker, Kubernetes configs
├── docs/ # Documentation
├── examples/ # Example configs
├── migrations/ # SQL migration files (deprecated, see internal/migrations)
└── tests/ # Integration tests
- Go style: Follow Effective Go
- Formatting: Run
make fmtbefore committing - Linting: Run
make lint(requires golangci-lint) - Comments: Document exported functions, types, and packages
- Error handling: Always handle errors explicitly
- Logging: Use structured logging (
logger.Get())
# Run unit tests
make test
# Run integration tests (requires services)
make integration-test
# Test specific package
go test ./internal/agent/...
# Run with coverage
go test -cover ./...When adding features or changing behavior:
- Update relevant docs in
docs/ - Update README.md if user-facing
- Add examples in
examples/if helpful - Update CLAUDE.md for development guidance
- 🐛 Bug fixes - Always welcome
- 📚 Documentation improvements - Clarifications, examples, translations
- ✅ Tests - Increase coverage, add edge cases
- 🔌 MCP server integrations - New data sources (Notion, Jira, Confluence)
- 🌍 Internationalization - Better language handling
- 📊 Analytics - Usage statistics, insights
- 🔍 Search improvements - Better ranking, filters
- 🎨 Slack UI enhancements - Interactive messages, slash commands
For significant changes:
- Open an issue to discuss your idea
- Wait for maintainer feedback before implementing
- Break into smaller PRs if possible
This prevents wasted effort if the approach needs adjustment.
- Automated checks must pass (tests, linting)
- Maintainer review (usually within 48 hours)
- Address feedback in the same PR
- Squash commits if requested
- Merge by maintainers
Contributors are recognized in:
- GitHub Contributors page
- Release notes for significant contributions
- Special thanks in documentation
- 💬 Discussions - Ask questions
- 📧 Email maintainers at [sre@freepik.com]
- 🐦 Twitter: @freepik
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for making Knowledge Agent better! 🙏