Thank you for your interest in contributing to AnimaWorks! This guide will help you get started quickly.
- Python 3.12+
- uv (recommended) or pip
git clone https://github.com/xuiltul/animaworks.git
cd animaworks
# Using uv (recommended)
uv sync
# Or using pip
python -m venv .venv
source .venv/bin/activate
pip install -e ".[all-tools,test]"python main.py start --host 0.0.0.0 --port 18500# Run unit tests (fast, no external services)
pytest tests/unit/ -x -q -m "not live and not azure and not ollama"
# Run full test suite
pytest
# Run with coverage
pytest --cov=core --cov=serverWe use Ruff for linting and formatting:
# Check for lint errors
ruff check core/ cli/ server/
# Auto-fix lint errors
ruff check core/ cli/ server/ --fix
# Format code
ruff format core/ cli/ server/Configuration: pyproject.toml — line length 120, target Python 3.12.
from __future__ import annotationsat the top of every file- Type hints required (
str | Nonestyle) - Google-style docstrings
logger = logging.getLogger(__name__)
Look for issues labeled good first issue — these are great starting points for new contributors.
Use descriptive branch names:
fix/issue-42-fix-theme-togglefeat/add-health-endpointdocs/improve-contributing
Use semantic commit prefixes:
feat:— new featurefix:— bug fixrefactor:— code restructuringdocs:— documentation changestest:— adding or updating tests
- Create a feature branch from
main - Add tests for new functionality
- Run
pytestand ensure all tests pass - Run
ruff checkandruff format— no lint errors - Submit a PR with a clear description of what changed and why
- Reference the issue:
Fixes #NorCloses #N
All source files must include the Apache 2.0 header:
# AnimaWorks - Digital Anima Framework
# Copyright (C) 2026 AnimaWorks Authors
# SPDX-License-Identifier: Apache-2.0