Evidence and findings
- The exact backend below is software-only. Do not substitute a hardware backend.
K-Dense-AI/scientific-agent-skills
Develop and review PyLabRobot lab-automation resources, liquid-handling plans, offline simulations, and supported-device integrations. Use for PyLabRobot protocols or API questions; keep physical execution behind an explicit operator safety gate.
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills --skill "skills/pylabrobot"Source checked Jul 28, 2026·Refresh due Oct 26, 2026
Reorganized from the pinned upstream SKILL.md
Use PyLabRobot's hardware-agnostic frontends, resource tree, trackers, and device-specific backends to develop laboratory automation. Default to local manifest validation, bookkeeping, and the software-only chatterbox backend.
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills --skill "skills/pylabrobot"The pinned source contains enough sections and task detail for a source-grounded deep guide; automated content is still not an independent test.
1,099 source words · 8 usable sections
Evidence and findings
Review workflow
Sections are extracted automatically from the pinned SKILL.md and link back to the source.
Run from the repository root. Every bundled CLI uses strict, bounded UTF-8 JSON/CSV, local non-symlink paths, fixed allowlists, and JSON output. None can select a live backend.
PyPI stable: PyLabRobot==0.2.1, released 2026-03-23.
Never connect to, initialize, home, move, heat, shake, spin, pump, open/close, or otherwise command physical equipment automatically. Do not turn a simulation plan into a live backend merely by changing an environment variable, config value, or import.
Do not guess any of these:
For offline API inspection and chatterbox simulation:
SkillSignal prompt templates
These prompts were written by SkillSignal from the source structure; they are not upstream text.
Source-grounded prompt
Use for a review or audit task while explicitly checking the source sections.
Use pylabrobot for this review or audit task: [task]. Inputs and constraints: [details]. Work through these pinned SKILL.md sections: “Offline-first workflow”, “Verified snapshot”, “Non-negotiable hardware boundary”, “Required intake”, “Reproducible install”. Cite the concrete requirements that shape each step, do not invent capabilities absent from the source, and verify the result against: [acceptance criteria].
Review checklist
The source section “Offline-first workflow” has been checked.
The source section “Verified snapshot” has been checked.
The source section “Non-negotiable hardware boundary” has been checked.
The source section “Required intake” has been checked.
Source output checked: The exact backend below is software-only. Do not substitute a hardware backend.
Static permission evidence
These are source excerpts matched by deterministic rules, not findings of malicious behavior, safety, or actual execution.
SKILL.md · L89
python3 skills/pylabrobot/scripts/validate_manifest.py \The documentation asks the agent to run terminal commands or scripts.
SKILL.md · L92
python3 skills/pylabrobot/scripts/check_deck_geometry.py \The documentation asks the agent to run terminal commands or scripts.
Choose a different workflow
Author, review, migrate, simulate, and troubleshoot official Opentrons Python Protocol API v2 protocols for Flex and OT-2 robots. Use for robot-specific liquid handling, deck and labware setup, pipettes, modules, runtime parameters, liquid classes, and Opentrons App analysis. Use pylabrobot instead when one workflow must support multiple robot vendors.
A separate implementation from K-Dense-AI/scientific-agent-skills; compare its source, maintenance signals, and permission requirements.
Open source detailDistributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.
A separate implementation from K-Dense-AI/scientific-agent-skills; compare its source, maintenance signals, and permission requirements.
Open source detailMedicinal chemistry filters for compound triage. Apply drug-likeness rules (Lipinski, Veber, CNS), structural alert catalogs (PAINS, NIBR, ChEMBL), complexity metrics, and the medchem query language for library filtering.
A separate implementation from K-Dense-AI/scientific-agent-skills; compare its source, maintenance signals, and permission requirements.
Open source detailFAQ
Use PyLabRobot's hardware-agnostic frontends, resource tree, trackers, and device-specific backends to develop laboratory automation. Default to local manifest validation, bookkeeping, and the software-only chatterbox backend.
The source record exposes this install command: npx skills add https://github.com/K-Dense-AI/scientific-agent-skills --skill "skills/pylabrobot". Inspect the command and pinned source before running it.
Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.
Quality breakdown
Based on traceable docs and repository signals; stars are not treated as quality.
Compare before choosing
These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.
Author, review, migrate, simulate, and troubleshoot official Opentrons Python Protocol API v2 protocols for Flex and OT-2 robots. Use for robot-specific liquid handling, deck and labware setup, pipettes, modules, runtime parameters, liquid classes, and Opentrons App analysis. Use pylabrobot instead when one workflow must support multiple robot vendors.
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.
Medicinal chemistry filters for compound triage. Apply drug-likeness rules (Lipinski, Veber, CNS), structural alert catalogs (PAINS, NIBR, ChEMBL), complexity metrics, and the medchem query language for library filtering.
Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.
Foundation skill for Power Automate via FlowStudio MCP — auth setup, the reusable MCP helper (Python + Node.js), tool discovery via `list_skills` / `tool_search`, and oversized-response handling. Load this skill first when connecting an agent to Power Automate. For specialized workflows, load `flowstudio-power-automate-build`, `flowstudio-power-automate-debug`, `flowstudio-power-automate-monitoring` (Pro+), or `flowstudio-power-automate-governance` (Pro+) — each contains the workflow narrative,
Use PyLabRobot's hardware-agnostic frontends, resource tree, trackers, and device-specific backends to develop laboratory automation. Default to local manifest validation, bookkeeping, and the software-only chatterbox backend.
PyLabRobot==0.2.1, released 2026-03-23./stable/ documentation identifies itself as 0.2.1. /dev/ and repository
main describe unreleased work and must not be assumed available in 0.2.1.STARBackend, VantageBackend,
EVOBackend, OpentronsOT2Backend, and the offline
LiquidHandlerChatterboxBackend.v0.2.1 tag, and changelog as release evidence.Never connect to, initialize, home, move, heat, shake, spin, pump, open/close, or otherwise command physical equipment automatically. Do not turn a simulation plan into a live backend merely by changing an environment variable, config value, or import.
Before any separately authorized live run, require a trained human to:
Tracker state is bookkeeping, not sensing. It cannot prove that liquid or a tip is physically present. The Visualizer renders resource/tracker events; it does not model physics. Chatterbox prints planned operations; it does not prove calibration, reachability, collision freedom, liquid behavior, or device state.
Do not guess any of these:
uL, mm, uL/s, s), heights, rates, mixing, air gaps,
blowout, liquid properties, and validated vendor liquid class.If information is missing, produce an assumptions/blockers list and an offline draft only.
For offline API inspection and chatterbox simulation:
uv venv --python 3.11 .venv-pylabrobot
uv pip install --python .venv-pylabrobot/bin/python "PyLabRobot==0.2.1"
On Windows, use .venv-pylabrobot\Scripts\python.exe. Do not install hardware
extras until the user names the device and explicitly approves its transport
dependencies. Then inspect the matching stable device page before considering a
pin such as "PyLabRobot[serial]==0.2.1" or "PyLabRobot[usb]==0.2.1".
Run from the repository root. Every bundled CLI uses strict, bounded UTF-8 JSON/CSV, local non-symlink paths, fixed allowlists, and JSON output. None can select a live backend.
python3 skills/pylabrobot/scripts/validate_manifest.py \
--input tests/pylabrobot/fixtures/protocol_manifest.json
python3 skills/pylabrobot/scripts/check_deck_geometry.py \
--input tests/pylabrobot/fixtures/protocol_manifest.json
python3 skills/pylabrobot/scripts/plan_transfers.py \
--manifest tests/pylabrobot/fixtures/protocol_manifest.json \
--transfers tests/pylabrobot/fixtures/transfers.csv
python3 skills/pylabrobot/scripts/generate_simulation_plan.py \
--manifest tests/pylabrobot/fixtures/protocol_manifest.json \
--transfers tests/pylabrobot/fixtures/transfers.csv
python3 skills/pylabrobot/scripts/inspect_backends.py \
--expected-version 0.2.1 --strict
The geometry checker uses conservative static axis-aligned boxes; it is not a
motion planner. The transfer planner requires one new tip per row and checks
source/dead/destination volumes, tip capacity, wells, channels, heights, rates,
units, and allowlists. Review
assets/protocol-manifest.schema.json and the synthetic fixtures before making
a project-specific manifest.
The exact backend below is software-only. Do not substitute a hardware backend.
from pylabrobot.liquid_handling import LiquidHandler
from pylabrobot.liquid_handling.backends import LiquidHandlerChatterboxBackend
from pylabrobot.resources import (
Cor_96_wellplate_360ul_Fb,
PLT_CAR_L5AC_A00,
TIP_CAR_480_A00,
hamilton_96_tiprack_1000uL_filter,
set_tip_tracking,
set_volume_tracking,
)
from pylabrobot.resources.hamilton import STARLetDeck
set_tip_tracking(True)
set_volume_tracking(True)
deck = STARLetDeck()
tip_carrier = TIP_CAR_480_A00(name="tip_carrier")
tips = hamilton_96_tiprack_1000uL_filter(name="tips")
tip_carrier[0] = tips
plate_carrier = PLT_CAR_L5AC_A00(name="plate_carrier")
source = Cor_96_wellplate_360ul_Fb(name="source")
destination = Cor_96_wellplate_360ul_Fb(name="destination")
plate_carrier[0] = source
plate_carrier[1] = destination
deck.assign_child_resource(tip_carrier, rails=3)
deck.assign_child_resource(plate_carrier, rails=15)
source.get_well("A1").tracker.set_volume(100.0) # planned state, not sensing
lh = LiquidHandler(backend=LiquidHandlerChatterboxBackend(), deck=deck)
await lh.setup() # safe here only because the backend above is software-only
try:
await lh.pick_up_tips(tips["A1"])
await lh.aspirate(source["A1"], vols=[10.0])
await lh.dispense(destination["A1"], vols=[10.0])
await lh.return_tips()
finally:
await lh.stop()
STARBackend, VantageBackend, EVOBackend, and
OpentronsOT2Backend; do not use stale STAR, TecanBackend,
OpentronsBackend, or ChatterboxBackend imports.LiquidHandlerChatterboxBackend for generic offline liquid-handler
testing. ChatterBoxBackend is a separate legacy-named export; do not
conflate the two.Visualizer(resource=...) is valid, followed by await vis.setup() and
await vis.stop(); it starts localhost HTTP/WebSocket servers and may open a
browser.from pylabrobot.liquid_handling import LiquidClass in
0.2.1. Stable liquid classes are vendor-specific, for example
pylabrobot.liquid_handling.liquid_classes.hamilton.HamiltonLiquidClass.Checked 2026-07-23:
v0.2.1 source tag
and changelog
— tag dated 2026-03-23; Unreleased is development-only.