Contributor guide# General Contributing to PyLabRobot Getting Started Development Tips Testing, linting, formatting Code conventions API conventions Writing documentation Common Tasks Support How to Open Source Prerequisites The 8 step workflow Quick changes Support Contributing to Docs Images Adding Backends/Drivers Writing PyLabRobot Device Drivers & Hello-World Guides 1. Understand the device 2. Structure the driver 3. Hello-world notebook 4. Register the device and its guide 5. Verify the integration The device registry Adding a device Rendering a table Rendering a card Styling EventBus Contributor Guide When to emit events Choosing an instrumentation style Event contract Required fields for semantic device operations Canonical operation schemas Failure events Contributor checklist Event Schema Registry Extending the registry Record classes Canonical common fields Machine lifecycle Resource-model state Resource transfer Liquid handling Shaking and environmental control Centrifugation Brooks PreciseFlex Diagnostic transports and firmware Schema compatibility Adding Resource Definitions Contributing New Resources 1. Update the resource library 2. Document attribute sources 3. Add imports 4. Submit a pull request Expanding the Visualizer/Simulator Visualizer Architecture and Contributing File layout Browser side Developing the visualizer Contributing tips Adding to the Cookbook Contributing a New Recipe 1. Where to add the Recipe 2. Adding a Recipe Card to the Cookbook Page 3. Adding New Tags (Optional) 4. Checklist Before Submitting Your Pull Request 5. Example Pull Request 6. Style Tips for Cookbook Recipes 7. Questions & Support