Seatbelts for biomedical coding agents.
Labcoat is portable skills first, deterministic scanner when available. Agents get prompt-level biomedical discipline immediately, then command hooks and CI can add scanner-backed findings.
Real source-backed examples
UCSC Genome Browser FAQ example: rs429358 maps to different chromosome positions in different genome assemblies: hg18: chr19:50103781 hg38: chr19:44908684 Labcoat lesson: A bare coordinate without assembly context is not enough for reliable genomic software.
Genome assembly context
Labcoat flags genomic coordinates when code or prose does not say which assembly, such as hg18, hg19, hg38, GRCh37, or GRCh38.
Data access boundaries
NIH says controlled-access human genomic data requires an access request. Labcoat treats uploads or commits of patient-like fields as a privacy risk.
Analysis assumptions
AnnData and Scanpy workflows can store raw, normalized, or transformed matrices. Labcoat warns when code assumes `adata.X` means raw counts.
Sources: UCSC Genome Browser FAQ, NIH dbGaP data access guidance, AnnData raw documentation, and Scanpy normalize_total documentation.
Actual Labcoat output
Input given to Labcoat: Agent draft: rs429358 at chr19:44908684 is actionable. Command: printf '%s\n' 'Agent draft: rs429358 at chr19:44908684 is actionable.' \ | python -c 'import sys; from labcoat.core.scanner import scan_text; from labcoat.core.markdown import render_markdown; print(render_markdown(scan_text(sys.stdin.read(), path="demo-agent-draft.txt")), end="")'
# Labcoat Findings Summary: high=2 ## HIGH genome-build - Location: `demo-agent-draft.txt:1` - Message: Genomic coordinate or variant appears without an explicit genome build. - Evidence: `Agent draft: rs429358 at chr19:44908684 is actionable.` - Suggestion: Require a genome_build parameter or ask the user; do not silently assume GRCh37/GRCh38/hg19/hg38/T2T/mm10/mm39. ## HIGH variant-notation - Location: `demo-agent-draft.txt:1` - Message: Variant notation appears without transcript, reference sequence, or build context. - Evidence: `Agent draft: rs429358 at chr19:44908684 is actionable.` - Suggestion: Specify transcript/reference/build before making definitive variant claims.
This output was generated by the Labcoat scanner in this repository. When the same draft includes `hg38`, Labcoat returns `Labcoat found no issues.`
What Labcoat checks
Privacy
Flags likely patient identifiers before they are committed, uploaded, or included in generated examples.
Reproducibility
Warns when omics code skips seeds, QC thresholds, genome builds, input-layer assumptions, or output contracts.
Safety boundaries
Blocks patient-specific treatment advice and high-risk operational wet-lab or biosecurity details.
Use it at three levels
Level 1: install skills for prompt-level biomedical discipline. Level 2: Codex hooks run the bundled scanner when python3 is available. Level 3: install the CLI for CI, JSON, and SARIF. python -m labcoat.cli.main doctor python -m labcoat.cli.main review --diff python -m labcoat.cli.main ci --format sarif --fail-on high .