Agent Skills
Benchling Integration
AIPOCH
Integrate with the Benchling R&D platform when you need to programmatically manage registry entities, inventory, ELN entries, workflows, events, or data warehouse analytics via API/SDK.
3
0
FILES
85100Total Score
View Evaluation ReportCore Capability
84 / 100
Functional Suitability
11 / 12
Reliability
9 / 12
Performance & Context
7 / 8
Agent Usability
14 / 16
Human Usability
7 / 8
Security
11 / 12
Maintainability
9 / 12
Agent-Specific
16 / 20
Medical Task
20 / 20 Passed
90Integrate with the Benchling R&D platform when you need to programmatically manage registry entities, inventory, ELN entries, workflows, events, or data warehouse analytics via API/SDK
4/4
86Integrate with the Benchling R&D platform when you need to programmatically manage registry entities, inventory, ELN entries, workflows, events, or data warehouse analytics via API/SDK
4/4
84Integrate with the Benchling R&D platform when you need to programmatically manage registry entities, inventory, ELN entries, workflows, events, or data warehouse analytics via API/SDK
4/4
84Documentation-first workflow with no packaged script requirement
4/4
84End-to-end case for Scope-focused workflow aligned to: Integrate with the Benchling R&D platform when you need to programmatically manage registry entities, inventory, ELN entries, workflows, events, or data warehouse analytics via API/SDK
4/4
SKILL.md
Benchling Integration
When to Use
- Use this skill when the request matches its documented task boundary.
- Use it when the user can provide the required inputs and expects a structured deliverable.
- Prefer this skill for repeatable, checklist-driven execution rather than open-ended brainstorming.
Key Features
- Scope-focused workflow aligned to: Integrate with the Benchling R&D platform when you need to programmatically manage registry entities, inventory, ELN entries, workflows, events, or data warehouse analytics via API/SDK.
- Documentation-first workflow with no packaged script requirement.
- Reference material available in
references/for task-specific guidance. - Structured execution path designed to keep outputs consistent and reviewable.
Dependencies
Python:3.10+. Repository baseline for current packaged skills.Third-party packages:not explicitly version-pinned in this skill package. Add pinned versions if this skill needs stricter environment control.
Example Usage
Skill directory: 20260316/scientific-skills/Others/benchling-integration
No packaged executable script was detected.
Use the documented workflow in SKILL.md together with the references/assets in this folder.
Example run plan:
- Read the skill instructions and collect the required inputs.
- Follow the documented workflow exactly.
- Use packaged references/assets from this folder when the task needs templates or rules.
- Return a structured result tied to the requested deliverable.
Implementation Details
- Execution model: validate the request, choose the packaged workflow, and produce a bounded deliverable.
- Input controls: confirm the source files, scope limits, output format, and acceptance criteria before running any script.
- Primary implementation surface: instruction-only workflow in
SKILL.md. - Reference guidance:
references/contains supporting rules, prompts, or checklists. - Parameters to clarify first: input path, output path, scope filters, thresholds, and any domain-specific constraints.
- Output discipline: keep results reproducible, identify assumptions explicitly, and avoid undocumented side effects.
1. When to Use
Use this skill when you need to:
- Create, read, update, archive, or search Benchling Registry entities (DNA/RNA/AA sequences, custom entities, mixtures) from code.
- Automate Inventory operations (containers, boxes, locations, transfers, check-in/out) across lab storage.
- Create or update ELN entries and link entities/results to notebook documentation.
- Orchestrate Benchling Workflows (create tasks, update statuses/assignees, monitor async jobs).
- Build integrations that sync Benchling data with external systems, including event-driven pipelines (e.g., AWS EventBridge) and analytics via the Benchling Data Warehouse.
2. Key Features
- Authentication support: API key for scripts; OAuth client credentials for apps.
- Registry management: typed create/update models, partial updates, pagination helpers.
- Inventory automation: create containers/boxes, move/transfer items, bulk-style operations.
- ELN operations: create entries, manage schema fields, link entities to entries.
- Workflow automation: create/update tasks, handle asynchronous operations and polling.
- Event-driven integration: consume Benchling events (via AWS EventBridge) to trigger downstream actions.
- Analytics enablement: query the Benchling Data Warehouse using SQL for reporting and trends.
Additional reference docs may exist in
references/(e.g.,references/authentication.md,references/sdk_reference.md,references/api_endpoints.md) for deeper guidance.
3. Dependencies
benchling-sdk(Python) — version: not specified in source document- Python — version: not specified in source document
- Optional (for FASTA import example):
biopython— version: not specified in source document - Optional (for event-driven integrations): AWS EventBridge — version: N/A (managed service)
- Optional (for Data Warehouse access): a SQL client/driver — version: not specified in source document
4. Example Usage
A minimal, runnable example that authenticates with an API key, creates a DNA sequence, lists sequences (paginated), and creates an ELN entry.
import os
from benchling_sdk.benchling import Benchling
from benchling_sdk.auth.api_key_auth import ApiKeyAuth
from benchling_sdk.models import DnaSequenceCreate, EntryCreate
def main():
tenant_url = os.environ["BENCHLING_TENANT_URL"] # e.g. https://your-tenant.benchling.com
api_key = os.environ["BENCHLING_API_KEY"]
folder_id = os.environ["BENCHLING_FOLDER_ID"] # e.g. fld_abc123
benchling = Benchling(
url=tenant_url,
auth_method=ApiKeyAuth(api_key),
)
# 1) Create a DNA sequence in the Registry (unregistered unless entity_registry_id is provided)
created_seq = benchling.dna_sequences.create(
DnaSequenceCreate(
name="Example Plasmid",
bases="ATCGATCG",
is_circular=True,
folder_id=folder_id,
)
)
print("Created DNA sequence:", created_seq.id, created_seq.name)
# 2) List DNA sequences (generator yields pages)
print("\nListing DNA sequences (first page):")
pages = benchling.dna_sequences.list()
first_page = next(iter(pages))
for seq in first_page:
print("-", seq.id, seq.name)
# 3) Create an ELN entry
entry = benchling.entries.create(
EntryCreate(
name="Example Experiment Entry",
folder_id=folder_id,
)
)
print("\nCreated ELN entry:", entry.id, entry.name)
if __name__ == "__main__":
main()
Run:
export BENCHLING_TENANT_URL="https://your-tenant.benchling.com"
export BENCHLING_API_KEY="your_api_key"
export BENCHLING_FOLDER_ID="fld_abc123"
python benchling_example.py
5. Implementation Details
Authentication
- API Key authentication is recommended for scripts and automation:
- API keys are obtained from Benchling profile/settings.
- Permissions match the user/app permissions in the Benchling UI.
- Store secrets in environment variables or a secrets manager; never commit keys.
from benchling_sdk.benchling import Benchling
from benchling_sdk.auth.api_key_auth import ApiKeyAuth
benchling = Benchling(
url="https://your-tenant.benchling.com",
auth_method=ApiKeyAuth("your_api_key"),
)
- OAuth client credentials is suitable for apps/services:
from benchling_sdk.benchling import Benchling
from benchling_sdk.auth.client_credentials_oauth2 import ClientCredentialsOAuth2
auth_method = ClientCredentialsOAuth2(
client_id="your_client_id",
client_secret="your_client_secret",
)
benchling = Benchling(
url="https://your-tenant.benchling.com",
auth_method=auth_method,
)
Registry entities and schema fields
- Registry entity creation uses typed models such as
DnaSequenceCreate. - Custom schema fields are passed via the SDK
fields()helper.
from benchling_sdk.models import DnaSequenceCreate
sequence = benchling.dna_sequences.create(
DnaSequenceCreate(
name="My Plasmid",
bases="ATCGATCG",
is_circular=True,
folder_id="fld_abc123",
schema_id="ts_abc123", # optional
fields=benchling.models.fields({"gene_name": "GFP"}),
)
)
- Registration behavior: the source document notes that
entity_registry_idandnaming_strategyshould not be used together.
sequence = benchling.dna_sequences.create(
DnaSequenceCreate(
name="My Plasmid",
bases="ATCGATCG",
is_circular=True,
folder_id="fld_abc123",
entity_registry_id="src_abc123",
naming_strategy="NEW_IDS", # do not combine with entity_registry_id per source note
)
)
Partial updates
- Updates are partial: unspecified fields remain unchanged.
from benchling_sdk.models import DnaSequenceUpdate
updated = benchling.dna_sequences.update(
sequence_id="seq_abc123",
dna_sequence=DnaSequenceUpdate(
name="Updated Plasmid Name",
fields=benchling.models.fields({"gene_name": "mCherry"}),
),
)
Pagination
- Listing endpoints return generators of pages; iterate page-by-page for memory efficiency.
- Some list iterators provide
estimated_count().
sequences = benchling.dna_sequences.list()
for page in sequences:
for seq in page:
print(seq.name, seq.id)
total = sequences.estimated_count()
Inventory operations (containers/boxes/transfers)
- Inventory objects are created via typed models (e.g.,
ContainerCreate,BoxCreate). - Transfers move items between storage locations.
from benchling_sdk.models import ContainerCreate, BoxCreate
box = benchling.boxes.create(
BoxCreate(
name="Freezer Box A1",
schema_id="box_schema_abc123",
parent_storage_id="loc_abc123",
)
)
container = benchling.containers.create(
ContainerCreate(
name="Sample Tube 001",
schema_id="cont_schema_abc123",
parent_storage_id=box.id,
fields=benchling.models.fields({"concentration": "100 ng/μL"}),
)
)
benchling.containers.transfer(
container_id=container.id,
destination_id="box_xyz789",
)
Workflows and async tasks
- Some operations are asynchronous and return a task object; poll until completion.
from benchling_sdk.helpers.tasks import wait_for_task
result = wait_for_task(
benchling,
task_id="task_abc123",
interval_wait_seconds=2,
max_wait_seconds=300,
)
Retry strategy (error handling)
- The SDK can retry transient failures (e.g., rate limiting and gateway errors) with configurable strategy.
from benchling_sdk.benchling import Benchling
from benchling_sdk.auth.api_key_auth import ApiKeyAuth
from benchling_sdk.retry import RetryStrategy
benchling = Benchling(
url="https://your-tenant.benchling.com",
auth_method=ApiKeyAuth("your_api_key"),
retry_strategy=RetryStrategy(max_retries=3),
)
Events and Data Warehouse
- Events: Benchling can emit events (e.g., entity updates, inventory transfers, workflow status changes) that can be routed via AWS EventBridge for near real-time integrations.
- Data Warehouse: Use SQL access for analytics/reporting (inventory trends, compliance reports, aggregations). Connection details and schemas are provided by Benchling.
When Not to Use
- Do not use this skill when the required source data, identifiers, files, or credentials are missing.
- Do not use this skill when the user asks for fabricated results, unsupported claims, or out-of-scope conclusions.
- Do not use this skill when a simpler direct answer is more appropriate than the documented workflow.
Required Inputs
- A clearly specified task goal aligned with the documented scope.
- All required files, identifiers, parameters, or environment variables before execution.
- Any domain constraints, formatting requirements, and expected output destination if applicable.
Recommended Workflow
- Validate the request against the skill boundary and confirm all required inputs are present.
- Select the documented execution path and prefer the simplest supported command or procedure.
- Produce the expected output using the documented file format, schema, or narrative structure.
- Run a final validation pass for completeness, consistency, and safety before returning the result.
Output Contract
- Return a structured deliverable that is directly usable without reformatting.
- If a file is produced, prefer a deterministic output name such as
benchling_integration_result.mdunless the skill documentation defines a better convention. - Include a short validation summary describing what was checked, what assumptions were made, and any remaining limitations.
Validation and Safety Rules
- Validate required inputs before execution and stop early when mandatory fields or files are missing.
- Do not fabricate measurements, references, findings, or conclusions that are not supported by the provided source material.
- Emit a clear warning when credentials, privacy constraints, safety boundaries, or unsupported requests affect the result.
- Keep the output safe, reproducible, and within the documented scope at all times.
Failure Handling
- If validation fails, explain the exact missing field, file, or parameter and show the minimum fix required.
- If an external dependency or script fails, surface the command path, likely cause, and the next recovery step.
- If partial output is returned, label it clearly and identify which checks could not be completed.
Quick Validation
Run this minimal verification path before full execution when possible:
No local script validation step is required for this skill.
Expected output format:
Result file: benchling_integration_result.md
Validation summary: PASS/FAIL with brief notes
Assumptions: explicit list if any