Contributing Guide
Thank you for your interest in contributing to Atomic Agents! This guide will help you get started with contributing to the project.
Ways to Contribute
There are many ways to contribute to Atomic Agents:
Report Bugs: Submit bug reports on our Issue Tracker
Suggest Features: Share your ideas for new features or improvements
Improve Documentation: Help us make the documentation clearer and more comprehensive
Submit Code: Fix bugs, add features, or create new tools
Share Examples: Create example projects that showcase different use cases
Write Tests: Help improve our test coverage and reliability
Development Setup
Fork and clone the repository:
git clone https://github.com/YOUR_USERNAME/atomic-agents.git cd atomic-agents
Install dependencies:
poetry install
Set up pre-commit hooks:
pre-commit install
Create a new branch:
git checkout -b feature/your-feature-name
Code Style
We follow these coding standards:
Use Black for code formatting
Follow PEP 8 style guide
Write docstrings in Google style
Add type hints to function signatures
Keep functions focused and modular
Write clear commit messages
Creating Tools
When creating new tools:
Use the tool template:
atomic-assembler create-tool my-tool
Implement the required interfaces:
from pydantic import BaseModel from atomic_agents.lib.tools import BaseTool class MyToolInputs(BaseModel): # Define input schema pass class MyToolOutputs(BaseModel): # Define output schema pass class MyTool(BaseTool): name = "my_tool" description = "Tool description" inputs_schema = MyToolInputs outputs_schema = MyToolOutputs def run(self, inputs: MyToolInputs) -> MyToolOutputs: # Implement tool logic pass
Add comprehensive tests:
def test_my_tool(): tool = MyTool() inputs = MyToolInputs(...) result = tool.run(inputs) assert isinstance(result, MyToolOutputs) # Add more assertions
Document your tool:
Add a README.md with usage examples
Include configuration instructions
Document any dependencies
Explain error handling
Testing
Run tests with pytest:
poetry run pytest
Include tests for:
Normal operation
Edge cases
Error conditions
Async functionality
Integration with other components
Documentation
When adding documentation:
Follow the existing structure
Include code examples
Add type hints and docstrings
Update relevant guides
Build and verify locally:
cd docs poetry run sphinx-build -b html . _build/html
Submitting Changes
Commit your changes:
git add . git commit -m "feat: add new feature"
Push to your fork:
git push origin feature/your-feature-name
Create a Pull Request:
Describe your changes
Reference any related issues
Include test results
Add documentation updates
Getting Help
If you need help:
Join our Reddit community
Check the documentation
Ask questions on GitHub Discussions
Code of Conduct
Please note that this project is released with a Code of Conduct. By participating in this project you agree to abide by its terms. You can find the full text in our GitHub repository.