K-Dense-AI/scientific-agent-skills

pylabrobot

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.

87CollectingRuns scripts
See how to use itView GitHub source
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills --skill "skills/pylabrobot"
Automated source guideReview and auditDeep source

Source checked Jul 28, 2026·Refresh due Oct 26, 2026

Reorganized from the pinned upstream SKILL.md

Source-grounded review guide: pylabrobot

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"
Check the pinned source

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

  • The exact backend below is software-only. Do not substitute a hardware backend.

Review workflow

Read pylabrobot through these 5 source sections

Sections are extracted automatically from the pinned SKILL.md and link back to the source.

01

Offline-first workflow

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.

SKILL.md · Offline-first workflow
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.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,…
02

Verified snapshot

PyPI stable: PyLabRobot==0.2.1, released 2026-03-23.

SKILL.md · Verified snapshot
PyPI stable: PyLabRobot==0.2.1, released 2026-03-23.Upstream requirement: Python =3.9. This skill uses Python 3.11 for its/stable/ documentation identifies itself as 0.2.1. /dev/ and repository
03

Non-negotiable hardware boundary

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.

SKILL.md · Non-negotiable hardware boundary
Explicitly confirm the exact backend, device identity, firmware, transport,Reconcile the physical deck against the resource tree, including carriers,Verify calibration, teaching, motion envelopes, collision risks, gripper or
04

Required intake

Do not guess any of these:

SKILL.md · Required intake
Exact device model, installed options, firmware, computer/OS, and transport.Stable PyLabRobot version and required extras.Deck/deck origin, carriers, adapters, resource definitions, dimensions,
05

Reproducible install

For offline API inspection and chatterbox simulation:

SKILL.md · Reproducible install
For offline API inspection and chatterbox simulation: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…

SkillSignal prompt templates

Provide the task, context, and acceptance criteria

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

Verify each item before delivery

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

Inspect the exact source lines that triggered a signal

These are source excerpts matched by deterministic rules, not findings of malicious behavior, safety, or actual execution.

Choose a different workflow

When another Skill is the better fit

FAQ

What does the pylabrobot source document cover?

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.

How do I install pylabrobot?

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.

Which permission-related actions were detected?

Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.

Repository stars
31,966
Repository forks
3,175
Quality
87/100
Source repository last pushed

Quality breakdown

Based on traceable docs and repository signals; stars are not treated as quality.

87/100
Documentation28/30
Specificity16/25
Maintenance20/20
Trust signals23/25

Compare before choosing

Related Agent Skills and source variants

These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.

opentrons-integration by k-dense-ai

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.

dask by k-dense-ai

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.

medchem by k-dense-ai

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.

neurokit2 by k-dense-ai

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.

flowstudio-power-automate-mcp by github

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,

View original Skill.mdThis page is parsed directly from the repository SKILL.md without editorial rewriting. Collected: Jul 28, 2026 · about 4 min

PyLabRobot

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.

Verified snapshot

  • PyPI stable: PyLabRobot==0.2.1, released 2026-03-23.
  • Upstream requirement: Python >=3.9. This skill uses Python 3.11 for its reproducible smoke tests.
  • /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.
  • Stable liquid-handler backends include STARBackend, VantageBackend, EVOBackend, OpentronsOT2Backend, and the offline LiquidHandlerChatterboxBackend.
  • PyLabRobot's GitHub Releases page has no 0.2.x software release entry; use the PyPI history, v0.2.1 tag, and changelog as release evidence.

Non-negotiable hardware boundary

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:

  1. Explicitly confirm the exact backend, device identity, firmware, transport, deck, and protocol revision.
  2. Reconcile the physical deck against the resource tree, including carriers, adapters, lids, plates, tip racks, waste, labware orientation, barcodes, and every occupied coordinate.
  3. Verify calibration, teaching, motion envelopes, collision risks, gripper or channel clearances, and all aspiration/dispense coordinates.
  4. Review source identity and actual fill volume, dead volume, destination capacity, tip type/capacity/filter compatibility, channel mapping, units, heights, rates, liquid class, blowout/mixing, and contamination boundaries.
  5. Confirm guards, doors, waste capacity, containment, emergency stop readiness, PPE, biosafety/chemical controls, and a safe abort/recovery procedure.
  6. Approve a slow dry run or nonhazardous commissioning run when anything is new or changed.

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.

Required intake

Do not guess any of these:

  • Exact device model, installed options, firmware, computer/OS, and transport.
  • Stable PyLabRobot version and required extras.
  • Deck/deck origin, carriers, adapters, resource definitions, dimensions, coordinates, orientations, and motion clearances.
  • Plate/tube/reservoir capacities and dead volumes; initial physical volumes.
  • Tip model, filter, fitting, capacity, rack state, channel count, and channel mapping.
  • Transfer units (uL, mm, uL/s, s), heights, rates, mixing, air gaps, blowout, liquid properties, and validated vendor liquid class.
  • Contamination policy, controls, waste handling, operator interventions, acceptance criteria, and recovery procedure.

If information is missing, produce an assumptions/blockers list and an offline draft only.

Reproducible install

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".

Offline-first workflow

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.

Verified software-only example

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()

API rules that prevent stale code

  • Current names are STARBackend, VantageBackend, EVOBackend, and OpentronsOT2Backend; do not use stale STAR, TecanBackend, OpentronsBackend, or ChatterboxBackend imports.
  • Use 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.
  • There is no generic 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.
  • Most frontend methods are async. Backend kwargs and capabilities are vendor/model specific; a shared frontend does not imply identical behavior.

References

  • Liquid handling — operations, tips, tracking, liquid classes, units, and validation.
  • Resources — decks, coordinates, plates, tip racks, collisions, state, and serialization.
  • Hardware backends — verified names, support levels, capabilities, and live-run gate.
  • Analytical equipment — plate readers and scales.
  • Material handling — pumps, heaters, shakers, temperature control, storage, and centrifuges.
  • Visualization — chatterbox, Visualizer, localhost services, and simulation limits.

Dated upstream sources

Checked 2026-07-23:

Skill path
skills/pylabrobot/SKILL.md
Commit SHA
e7ac42510774
Repository license
MIT
Data collected