Thank you for your interest in contributing to A2A StoryLab! This project implements Google's A2A (Agent-to-Agent) protocol for multi-agent storytelling.
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/<your-username>/A2A-StoryLab.git cd A2A-StoryLab
-
Set up your development environment:
# Create virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt
-
Install Ollama (required for LLM functionality):
curl -fsSL https://ollama.ai/install.sh | sh ollama serve ollama pull gemma3:1b
-
Create a new branch for your feature or fix:
git checkout -b feature/your-feature-name
-
Make your changes following the code style:
- Use type hints for all function parameters and returns
- Add docstrings to all functions and classes
- Follow PEP 8 style guide
- Keep functions focused and under 50 lines when possible
-
Write or update tests:
# Run tests to ensure nothing broke pytest tests/ -v -
Format your code:
black src/ tests/
-
Test your changes locally:
# Start all services ./start_all.sh # Verify services are running curl http://localhost:8000/health # Stop services ./stop_all.sh
-
Commit your changes:
git add . git commit -m "Brief description of your changes"
-
Push to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub:
- Go to the original repository
- Click "New Pull Request"
- Select your branch
- Fill in the PR template with details about your changes
- Clear description: Explain what your PR does and why
- Link related issues: Reference any related issues (e.g., "Fixes #123")
- Tests: Include tests for new functionality
- Documentation: Update docs if you changed APIs or added features
- Small PRs: Keep changes focused - one feature/fix per PR
- Clean commits: Use clear commit messages
If you find a bug, please create an issue with:
- Clear title: Summarize the issue
- Steps to reproduce: How can we recreate the bug?
- Expected behavior: What should happen?
- Actual behavior: What actually happens?
- Environment: OS, Python version, Ollama version
- Logs: Include relevant logs from
logs/directory
We welcome feature suggestions! Please create an issue with:
- Use case: Why is this feature needed?
- Proposed solution: How should it work?
- Alternatives: Any other approaches you considered?
- A2A protocol alignment: How does it fit with A2A protocol goals?
Please read and follow our Code of Conduct. We are committed to providing a welcoming and inclusive environment for all contributors.
- Documentation: Check the docs/ directory
- GitHub Issues: Ask questions by creating an issue
- GitHub Discussions: For general discussions about the project
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to A2A StoryLab! 🚀