- Clone the repository
- From the repo root, install dependencies:
make install - Install frontend deps (if needed):
make frontend-install - Verify the CLI:
uv run agentic-fleet --help
- Formatting: Use
make format(Ruff) - Linting: Use
make lint(Ruff) - Type Checking: Use
ty(Python 3.12 target; config inpyproject.toml) - Naming: snake_case for functions, PascalCase for classes
- Run tests:
make test(oruv run pytest -v) - Run a specific test:
uv run pytest -q tests/workflows/test_supervisor_workflow.py::test_name - With coverage:
uv run pytest --cov=src --cov-report=term-missing - Tests use
pytest-asynciofor async tests
src/- Source code (package root)tests/- Test filessrc/agentic_fleet/config/- Configuration filessrc/agentic_fleet/data/- Training dataexamples/- Example scriptsdocs/- Documentationsrc/agentic_fleet/scripts/- Utility scripts
Follow PEP 8 import order:
- Standard library imports
- Third-party imports
- Local imports
Group with comments:
# Standard library imports
import os
from pathlib import Path
# Third-party imports
import typer
from rich import Console
# Local imports
from agentic_fleet.workflows import SupervisorWorkflow- Add config in
src/agentic_fleet/config/workflow_config.yamlunderagents: - Instantiate in
agents/coordinator.py:_create_agent()using factory method - Add to team description in
reasoner.py:get_execution_summary() - Add training examples in
src/agentic_fleet/data/supervisor_examples.json
- Define in
src/agentic_fleet/dspy_modules/signatures.py - Add ChainOfThought wrapper in
reasoner.py:__init__ - Create method to call it (follow pattern of
route_task,analyze_task)
- Implement
ToolProtocolinsrc/agentic_fleet/tools/<name>.py - Register in
agents/coordinator.pywhen creating agents - Tool will be automatically registered in
ToolRegistry
- Use imperative mood: "Add feature" not "Added feature"
- Conventional prefixes optional but encouraged
- Ensure tests pass before committing
- Ensure all tests pass:
make test - Run formatter:
make format - Run linter/type checks:
make check - Update documentation if needed
- Update
README.mdfor user-facing changes - Update
docs/developers/architecture.mdfor architectural changes - Add docstrings to all public functions/classes
- Use Google/NumPy style docstrings