sciagent-skill-creator
Scaffold a new SciAgent-Skills entry. Picks pipeline/toolkit/database/guide template, creates skills/{category}/{name}/SKILL.md with valid frontmatter, appends…
protocols.io REST API: search and fetch wet-lab, bioinformatics, and clinical protocols by keyword, DOI, or category, with steps, reagents, materials, equipment, timing. Public access free; auth needed for private or publishing. Pair with opentrons-protocol-api or
$ npx -y skills add jaechang-hits/SciAgent-Skills --skill protocolsio-integration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/protocolsio-integrationContext preview
The summary Claude sees to decide when to auto-load this skill.
protocols.io REST API: search and fetch wet-lab, bioinformatics, and clinical protocols by keyword, DOI, or category, with steps, reagents, materials, equipment, timing. Public access free; auth needed for private or publishing. Pair with opentrons-protocol-api or
name: "protocolsio-integration" description: "protocols.io REST API: search and fetch wet-lab, bioinformatics, and clinical protocols by keyword, DOI, or category, with steps, reagents, materials, equipment, timing. Public access free; auth needed for private or publishing. Pair with opentrons-protocol-api or benchling-integration to execute." license: "CC-BY-4.0"
protocols.io is the leading protocol repository for life sciences with 90,000+ open-access experimental protocols covering molecular biology, cell biology, bioinformatics, clinical research, and lab automation. The REST API provides programmatic access to protocol search, full protocol retrieval (steps, reagents, materials, equipment), protocol versioning, workspace management, and protocol publishing. Public protocols are freely accessible; authentication (OAuth2 token) is required for private protocols or creating/editing.
pip install requests pandas # For private protocol access or publishing: # Register at https://www.protocols.io/developers to obtain an API token
import requests
BASE = "https://www.protocols.io/api/v4"
# For public protocols, no token needed (but add for higher rate limits)
HEADERS = {"Authorization": "Bearer YOUR_TOKEN_HERE"} # Optional for public
# Search for CRISPR protocols
r = requests.get(f"{BASE}/protocols",
params={"q": "CRISPR guide RNA design", "order_field": "views",
"page_size": 5},
headers=HEADERS)
r.raise_for_status()
data = r.json()
print(f"Total CRISPR protocols: {data['pagination']['total_results']}")
for p in data["items"][:3]:
print(f"\n {p['title']}")
print(f" DOI: {p.get('doi')} | Views: {p.get('stats', {}).get('number_of_views')}")
print(f" Authors: {', '.join(a['name'] for a in p.get('creators', [])[:3])}")Search the protocols.io public library by keyword, technique, or full-text.
import requests, pandas as pd
BASE = "https://www.protocols.io/api/v4"
def search_protocols(query, page_size=20, order_field="relevance", category_id=None):
params = {"q": query, "page_size": page_size, "order_field": order_field}
if category_id:
params["filter[categories_ids][]"] = category_id
r = requests.get(f"{BASE}/protocols", params=params)
r.raise_for_status()
return r.json()
data = search_protocols("RNA extraction tissue", page_size=10, order_field="views")
total = data["pagination"]["total_results"]
print(f"RNA extraction protocols: {total}")
rows = []
for p in data["items"][:10]:
rows.append({
"id": p.get("id"),
"title": p.get("title"),
"doi": p.get("doi"),
"views": p.get("stats", {}).get("number_of_views", 0),
"created": p.get("created_on"),
"category": p.get("categories", [{}])[0].get("name", "n/a"),
})
df = pd.DataFrame(rows).sort_values("views", ascending=False)
print(df.to_string(index=False))# Search with category filter (get category IDs from /categories endpoint)
data_pcr = search_protocols("qPCR primer design", order_field="views")
print(f"\nqPCR protocols: {data_pcr['pagination']['total_results']}")
for p in data_pcr["items"][:3]:
print(f" {p['title'][:70]} (DOI: {p.get('doi', 'n/a')})")Fetch the complete protocol with steps, reagents, materials, and equipment.
import requests
BASE = "https://www.protocols.io/api/v4"
def get_protocol(protocol_id):
r = requests.get(f"{BASE}/protocols/{protocol_id}")
r.raise_for_status()
return r.json()
# Retrieve protocol by ID (from search results or DOI lookup)
protocol_id = 45979 # Example: a public protocol
data = get_protocol(protocol_id)
protocol = data.get("payload", data) # Handle API response structure
print(f"Title: {protocol.get('title')}")
print(f"DOI: {protocol.get('doi')}")
print(f"Authors: {', '.join(a['name'] for a in protocol.get('creators', []))}")
print(f"Steps: {len(protocol.get('steps', []))}")
print(f"Materials: {len(protocol.get('materials', []))}")
print(f"Abstract: {protocol.get('description', '')[:200]}")# Parse protocol steps
protocol_steps = protocol.get("steps", [])
for i, step in enumerate(protocol_steps[:5], 1):
step_desc = step.get("description", "")
duration = step.get("duration", {})
print(f"\nStep {i}: {step_desc[:120]}")
if duration:
print(f" Duration: {duration.get('duration')} {duration.get('unit_label', '')}")Fetch a protocol using its DOI for precise citation-based retrieval.
import requests, json
BASE = "https://www.protocols.io/api/v4"
def get_protocol_by_doi(doi):
"""Retrieve protocol using its DOI."""
# URL-encode the DOI for the query
r = reTurn your AI coding agent into a life sciences expert — 199 bioinformatics skills for Claude Code covering RNA-seq, single-cell analysis, genomics, proteomics, drug discovery, and more. Boosted BixBench from 65% to 92%. Open source.
Scaffold a new SciAgent-Skills entry. Picks pipeline/toolkit/database/guide template, creates skills/{category}/{name}/SKILL.md with valid frontmatter, appends…
Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction. Hierarchical, logistic, GP…
Time-to-event modeling with scikit-survival: Cox PH (elastic net), Random Survival Forests, Boosting, SVMs for censored data. C-index, Brier, time-dependent…
Guided statistical analysis: test choice, assumption checks, effect sizes, power, APA reporting. Pick tests, verify assumptions, or format results for…
Python statistical modeling: regression (OLS, WLS, GLM), discrete (Logit, Poisson, NegBin), time series (ARIMA, SARIMAX, VAR), with rigorous inference,…
DL cell/nucleus segmentation for fluorescence and brightfield microscopy. Pre-trained models (cyto3, nuclei, tissuenet) and a generalist flow-based algorithm…