English | Français | 中文 | Español | 日本語 | Português | Deutsch | 한국어
Thank you for your interest in contributing to Software Factory! This document provides guidelines and instructions for contributing.
By participating, you agree to abide by our Code of Conduct.
- Check existing issues to avoid duplicates
- Use the bug report template
- Include: steps to reproduce, expected vs actual behavior, environment details
- Open an issue with the feature request template
- Describe the use case and expected behavior
- Explain why this would be useful to other users
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes following the coding standards below
- Write or update tests
- Run tests:
make test - Commit with clear messages (see conventions below)
- Push and open a Pull Request
git clone https://github.com/macaron-software/software-factory.git
cd software-factory
cp .env.example .env
python3 -m venv .venv && source .venv/bin/activate
pip install -r platform/requirements.txt
# Run tests
make test
# Start dev server
make dev- Style: PEP 8, enforced by
ruff - Type hints: required for public APIs
- Docstrings: Google style for modules, classes, public functions
- Imports:
from __future__ import annotationsin all files
Follow Conventional Commits:
feat: add WebSocket real-time channel
fix: resolve route ordering in missions API
refactor: split api.py into sub-modules
docs: update architecture diagrams
test: add worker queue tests
- Unit tests in
tests/usingpytest - Async tests use
pytest-asyncio - E2E tests in
platform/tests/e2e/using Playwright - All new features must have tests
- LLM generates, deterministic tools validate — use AI for creative tasks, scripts/compilers for validation
- No god files — split modules over 500 lines into sub-packages
- SQLite for persistence — no external database dependencies
- Multi-provider LLM — never hard-code a single provider
- Backward compatible — new features must not break existing APIs
platform/ # Core platform (FastAPI)
agents/ # Agent engine (store, executor, loop)
patterns/ # Orchestration patterns (10 types)
missions/ # SAFe lifecycle management
web/routes/ # API routes (modular sub-packages)
llm/ # LLM client with cache and fallback
tools/ # Deterministic tools (AST, lint, type-check)
events/ # Event sourcing
plugins/ # Plugin SDK
workers/ # Job queue
cli/ # CLI client (sf)
tests/ # Test suite
By contributing, you agree that your contributions will be licensed under the AGPL v3 License.