skills/latchbio-integration/SKILL.md
This skill targets Latch SDK 2.76.8, released July 10, 2026. The package metadata supports Python 3.9–3.12 and declares Python 3.9+.
Treat the installed package and its changelog as authoritative when a guide disagrees with the SDK. Some Latch guides retain older Python ranges or compatibility-specific pre-release pins, especially the Snakemake v2 tutorial. Never combine commands or imports from different tracks without checking their version requirements.
Use this skill to:
LPath, LatchFile, LatchDir, or the CLIlatch register --staging and latch developRead only the references needed for the task:
| Need | Reference |
|---|---|
| Python workflows, tasks, maps, conditions, caching | references/workflow-creation.md |
LPath, legacy file types, Latch URLs, data CLI | references/data-management.md |
| Registry reads, transactions, samplesheets | references/registry.md |
| CPU, memory, storage, GPU, dynamic resources | references/resource-configuration.md |
| Nextflow and Snakemake packaging | references/nextflow-snakemake.md |
| Metadata, forms, launch plans, messages, automations | references/ui-and-automation.md |
| Registration, development, execution, monitoring | references/operations-and-debugging.md |
Ready-to-use workflows and latch.verified | references/verified-workflows.md |
| Remote MCP setup and tool workflow | references/latch-mcp.md |
Before relying on a symbol, run scripts/inspect_latch_sdk.py against the
target SDK version. It performs local imports only and does not authenticate or
make network requests.
For a reproducible environment:
uv venv --python 3.12
source .venv/bin/activate
uv pip install "latch==2.76.8"
On Windows, use WSL for the documented Linux workflow tooling.
Authenticate through the supported OAuth flow; do not read, print, copy, or
parse ~/.latch/token manually:
latch login
latch workspace
Select a workspace non-interactively when its numeric ID is already known:
latch workspace --id 12345
latch login credentials are for the SDK and CLI. Latch MCP uses a separate
OAuth authorization and its credentials cannot be reused for general SDK
access.
Create and remotely register the maintained subprocess template:
latch init covid-wf --template subprocess
latch register --yes --open covid-wf
Remote image building is the default. Use --no-remote only when a local
Docker daemon is available and a local build is intentional.
Keep workflow bodies declarative: invoke tasks and return their promises. Perform computation and side effects inside tasks.
from latch import small_task, workflow
@small_task
def reverse_complement(sequence: str) -> str:
table = str.maketrans("ACGTacgt", "TGCAtgca")
return sequence.translate(table)[::-1]
@workflow
def reverse_complement_workflow(sequence: str) -> str:
"""Return the reverse complement of a DNA sequence."""
return reverse_complement(sequence=sequence)
Use @workflow(metadata) when the generated interface needs custom labels,
sections, validation rules, samplesheets, or documentation links. Use LatchFile or
LatchDir for automatic task input staging and output upload; use LPath for
imperative remote path operations.
Inspect compatibility
Define a typed interface
workflow_reference,
which resolves the active workspace when its decorator is evaluated.Configure metadata and resources
custom_task only when measured
requirements justify it.Validate in the execution image
Fresh Nextflow and Snakemake projects must generate their
version-compatible Python entrypoint before staging. In SDK 2.76.8, the
staging branch does not generate one from --nf-script or --snakefile.
latch register --staging .
latch develop .
Re-run staging registration after changing the Dockerfile or dependencies. Edits made inside the development container are not synced back.
Register deliberately
latch register --yes --open .
Useful controls:
latch register --workspace-id 12345 .
latch register --mark-as-release .
latch register --workflow-module wf.custom_entrypoint .
Duplicate registration exits with status 2; it is not the same as a build
failure.
Launch only after reviewing cost and parameters
latch_cli.services.launch.launch_v2 for Python automation.latch launch CLI as a new integration pattern.Monitor and verify
LPath.rmr, latch rmr, Registry deletion, or
overwriting shared destinations.get_secret() only inside a task, use the returned value only for its
intended service, and never return it as workflow output.subprocess.run(..., check=True).From this skill directory:
uv run --no-project --python 3.12 --with "latch==2.76.8" \
python scripts/inspect_latch_sdk.py
Use JSON output for automated comparisons:
uv run --no-project --python 3.12 --with "latch==2.76.8" \
python scripts/inspect_latch_sdk.py --json