Contributing¶
We welcome contributions to SPADE_LLM! This guide will help you get started.
Quick Start¶
- Fork the repository on GitHub
- Clone your fork locally
- Create a branch for your changes
- Make your changes and test them
- Submit a pull request
Development Setup¶
Prerequisites¶
- Python 3.10+
- Git
- Virtual environment tool (venv, conda, etc.)
- A XMPP server connection
Installation¶
# Clone your fork
git clone https://github.com/your-username/spade_llm.git
cd spade_llm
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install in development mode
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
Running Tests¶
# Run all tests
pytest
# Run with coverage
pytest --cov=spade_llm
# Run specific test file
pytest tests/test_agent/test_llm_agent.py
# Run with verbose output
pytest -v
Types of Contributions¶
Bug Reports¶
When reporting bugs, please include:
- Clear description of the problem
- Steps to reproduce the issue
- Expected vs actual behavior
- Environment details (Python version, OS, etc.)
- Minimal code example that reproduces the bug
Feature Requests¶
For new features, please:
- Check existing issues to avoid duplicates
- Describe the use case and motivation
- Propose implementation approach if possible
- Consider backward compatibility
Submitting Changes¶
Pull Request Process¶
-
Create a feature branch
-
Make your changes
- Write code
- Add tests
-
Update documentation
-
Test your changes
-
Commit with clear messages
-
Push to your fork
-
Create pull request on GitHub
Pull Request Guidelines¶
- Clear title describing the change
- Detailed description of what and why
- Link related issues using keywords (fixes #123)
- Include screenshots for UI changes
- Check that CI passes
Development Guidelines¶
Architecture Principles¶
- Extend, don't replace SPADE functionality
- Maintain compatibility with existing SPADE agents
- Use async/await throughout
- Keep interfaces simple and consistent
- Favor composition over inheritance
Code Organization¶
spade_llm/
├── agent/ # Agent classes
├── behaviour/ # Behaviour implementations
├── context/ # Context management
├── providers/ # LLM provider interfaces
├── tools/ # Tool system
├── routing/ # Message routing
├── mcp/ # MCP integration
└── utils/ # Utility functions
Release Process¶
Version Numbering¶
We use semantic versioning (semver):
- Major (X.0.0) - Breaking changes
- Minor (0.X.0) - New features, backward compatible
- Patch (0.0.X) - Bug fixes, backward compatible
Release Checklist¶
- [ ] All tests pass
- [ ] Documentation updated
- [ ] Changelog updated
- [ ] Version bumped
- [ ] Release notes prepared
- [ ] Tagged release created
Community¶
Getting Help¶
- GitHub Issues - Bug reports and feature requests
- Discussions - General questions and ideas
- Documentation - Comprehensive guides and API reference
Code of Conduct¶
- Be respectful and inclusive
- Help others learn and contribute
- Focus on constructive feedback
- Follow project guidelines and standards
Recognition¶
Contributors are recognized in:
- CONTRIBUTORS.md file
- Release notes for significant contributions
- Documentation acknowledgments
Thank you for contributing to SPADE_LLM! 🚀