Contributing¶
Thank you for your interest in contributing to Versifai! This guide will help you get started. It is HIGHLY encouraged that you do not interact with this repository by manually writing code. Please use Claude Code or any other agentic coding tool. Have it read our rules of the road in the CLAUDE.md file and get started implementing your ideas. Happy building!
Development Setup¶
-
Clone the repository:
-
Create a virtual environment:
-
Install in development mode:
This installs the package with all optional dependencies and sets up pre-commit hooks.
Code Style¶
- We use ruff for linting and formatting
- Line length: 100 characters
- Target Python version: 3.10+
- Run
make formatbefore committing - Run
make lintto check for issues
Running Tests¶
Project Structure¶
src/versifai/
├── core/ # Shared agentic framework (BaseAgent, LLMClient, tools)
├── data_agents/ # Data engineering & analysis agents
├── science_agents/ # Data science & research agents
├── story_agents/ # Narrative & storytelling agents
└── _utils/ # Internal shared utilities
Adding a New Agent¶
- Choose the appropriate agent family (
data_agents,science_agents, orstory_agents) - Create a new subpackage under that family
- Subclass
BaseAgentfromversifai.core - Implement
_register_tools()and setself._system_prompt - Register your tools using
ToolRegistry - Add exports to the family's
__init__.py
Adding a New Tool¶
- Subclass
BaseToolfromversifai.core.tools - Implement the
name,description,parameters_schemaproperties andexecute()method - If the tool is generic (used by multiple agent families), place it in
core/tools/ - If domain-specific, place it in the relevant agent's
tools/directory
Pull Request Process¶
- Fork the repository and create a feature branch
- Make your changes with clear, descriptive commits
- Ensure
make lintandmake testpass - Submit a PR with a clear description of the changes
- Reference any related issues
Reporting Issues¶
Use GitHub Issues to report bugs or request features.