git clone https://github.com/labclaw/lab-robot.git
cd lab-robot
pip install -e ".[dev,opentrons]"Run tests and lint:
make test
make lint- Copy
robots/_robot_template/torobots/<robot_name>/ - Implement
RobotDriverprotocol methods:connect,disconnect,execute,stop - Define supported
ActionTypes and deck/hardware config models - Add tests in
robots/<robot_name>/tests/— 100% coverage required - Export the driver class from
robots/<robot_name>/__init__.py
- Linter: ruff with rules E, F, I, N, W, UP (line-length 100)
- Type hints: required on all public functions
- Imports:
from __future__ import annotationsin every module - Schemas: Pydantic BaseModel for all data structures
- Coverage: 100% enforced — CI will fail otherwise
Use Conventional Commits:
feat(scope): add Hamilton STAR driver
fix(ot2): handle missing tip rack gracefully
test(core): add ActionResult edge case tests
docs: update CONTRIBUTING.md
Scope is the module or robot name. One logical change per commit.