Install
$ agentstack add skill-bigbio-sdrf-skills-sdrf-autoresearch ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
SDRF Autoresearch Protocol
This workflow is a domain-specific autonomous loop for SDRF annotation. It is intended to function with minimal user supervision once the target and optimization goal are clear.
Use it when the user asks for:
- annotation of all datasets in a category
- repeated refine → validate → fix loops
- maximum metadata completion without blind guessing
- autonomous SDRF improvement until no more retained gains are possible
This is a protocol skill, not a dedicated runner script. Execute the loop by following the steps below and by calling the existing sdrf:* skills in order.
Console Triggers
Claude-style examples:
/sdrf:autoresearch target="all PRIDE cell line datasets"
/sdrf:autoresearch target="all sandbox crosslinking datasets" profile="crosslinking"
/sdrf:autoresearch target="manifest:data/cell_line_manifest.tsv" objective="maximize_valid_field_coverage"
Codex-style examples:
$sdrf-autoresearch target="all PRIDE cell line datasets"
$sdrf-autoresearch target="accessions:PXD001234,PXD005678" profile="clinical"
$sdrf-autoresearch target="all sandbox crosslinking datasets" objective="crosslinking_assay_completion" write="sandbox"
Step 1: Parse the Request into a Loop Config
Normalize the user request into these fields:
target- What dataset set to operate on
- Examples:
all PRIDE cell line datasetsall sandbox crosslinking datasetsmanifest:data/cell_line_manifest.tsvaccessions:PXD001234,PXD005678
profile- Domain preset that biases which templates, columns, and evidence sources matter most
- Supported defaults:
general-proteomicscell-linecrosslinkingclinicalimmunopeptidomics
objective- The optimization target for retained improvements
- Supported defaults:
maximize_valid_field_coverageminimize_unknownscrosslinking_assay_completioncell_line_sample_completionclinical_sample_completion
focus_fields- Optional list of fields to prioritize
- Examples:
cell line,disease,organism part,treatmentcross-linker,crosslink enrichment method,collision energy
evidence- Which sources are allowed
- Defaults to
pride,files,europepmc - Common values:
pride,filespride,files,europepmcmanuscript-first
stop- When the loop should stop
- Supported defaults:
3_no_improve_roundscoverage>=0.95only_low_confidence_candidates_left
write- Where edits should land
- Supported values:
sandboxbranchreport-only
If the user does not specify these explicitly, infer them conservatively and state the inferred config before the loop begins.
Step 2: Build the Dataset Target Set
Interpret target into a concrete dataset set:
accessions:...- Use those accessions directly
manifest:...- Read the manifest TSV/CSV and use those datasets
all PRIDE datasets- Use PRIDE MCP + local manifests to discover datasets matching the category
- Examples:
cell linecrosslinkinghuman clinicalimmunopeptidomics
all sandbox datasets- Use local sandbox inventory first
Always resolve the target into a manifest-like working list before annotation begins.
Plasma Campaign Heuristic
For blood plasma or plasma biomarker campaigns:
- Audit the local project collection first
- enumerate existing SDRFs under the relevant project tree
- separate true plasma SDRFs from blood-cell / tissue / platelet / serum-only SDRFs
- extract the current disease coverage before searching PRIDE
- Treat discovery as two layers
new_dataset: accession not yet present in the local plasma collectionupgrade_existing_sdrf: accession already present locally, but disease wording, ontology, or field coverage should be improved
- Default to human plasma unless the user explicitly says otherwise
- treat
Homo sapiensas the default species scope for biomarker-style plasma campaigns - use PRIDE
organismsfirst to confirm species - if PRIDE species is missing or generic, confirm human-only status from the manuscript title, abstract, methods, or supplementary text
- keep non-human or mixed-species plasma projects as audit rows, not as automatically promoted annotation targets
- When querying PRIDE, do not trust
plasmahits blindly
- expand disease names before PRIDE search:
- start with lexical OLS disease lookup in
MONDO,DOID,EFO, andNCIT - add useful exact labels and synonyms
- for broad disease requests like
kidney tumor, use OLS embedding search to surface likely subtype names such as renal-cancer variants - keep useful child-term labels when the study is still clearly in scope, for example
myositis->dermatomyositis,sarcoma->Ewing sarcoma,myeloma->multiple myeloma, oralcohol-related liver disease->alcoholic hepatitis - for influenza-like campaigns, acceptable query widening can include
influenza A,IAV,H1N1,flu, and, if the user explicitly allows it, broaderviral pneumoniaplusserum - then query PRIDE and Europe PMC with the expanded disease family, not only the original user wording
- record whether a promoted hit is an
exact,child_term,related, orsurrogatedisease match so downstream ranking does not overstate coverage - annotate the candidate workflow class during discovery:
- use PRIDE
experimentTypesfor acquisition style such asData-independent acquisition,Data-dependent acquisition,Gel-based experiment, orBottom-up proteomics - use PRIDE
quantificationMethodsfirst for labeling style such asTMT,iTRAQ,label-free quantification,Dimethyl Labeling, orNSAF - if
quantificationMethodsis empty, inspectsampleProcessingProtocol,dataProcessingProtocol, and keywords for explicit terms likeTMT16plex,iTRAQ,label-free quantification,LFQ,MaxQuant,DIA,SWATH, orSpectronaut - store separate
acquisition_modeandquant_modecolumns so campaigns can prioritizeDIA-LFQ,DDA-TMT,DDA-LFQ, and related workflows explicitly - distinguish
blood plasma/plasma proteome/plasma extracellular vesiclesfrom false positives such asplasma cellsorplasma membrane - for the current plasma-dataset campaigns, keep only accessions hosted by
PRIDE,MassIVE,jPOST, oriProX; treatPanoramaPublicdiscoveries as audit-only until the campaign policy changes - prefer candidates where both the disease and the blood-plasma context are explicit in the title or description
- for automatic shortlist generation, only promote accessions when plasma context is
positiveorambiguousand the disease context isexplicit - keep disease-only hits with missing plasma context as low-confidence discovery rows, not as prioritized plasma projects
- do not promote datasets that lack usable raw or acquisition files; keep them as audit-only rows even if the disease and matrix look promising
- after shortlist generation, run a manuscript-backed plasma review and classify each accession as:
confirmed_plasma: explicit plasma evidence in title, abstract, methods, results, or supplementary textmixed_includes_plasma: plasma is explicit, but other sample matrices are also part of the studylikely_non_plasma: manuscript shows a different primary matrix such as CSF, urine, platelet releasate, BALF, or cell-line materialunclear: insufficient manuscript evidence; do not prioritize automatically- prefer
confirmed_plasmafirst, thenmixed_includes_plasmaif mixed-matrix studies are acceptable for the campaign
- Search Europe PMC independently when publication links may be missing from PRIDE
- run disease-focused Europe PMC queries even when PRIDE does not already point to a publication
- include
PXD,PRIDE, orProteomeXchangein the literature query to favor papers that reference a proteomics dataset - when a paper is open access, inspect the full text and extract explicit
PXD.../MSV...mentions - use the literature-side accession hits to cross-link back into PRIDE and recover datasets that are weakly linked or unlinked in the archive record
- Prioritize candidates in this order
- missing disease coverage with explicit blood-plasma context
- related-only local coverage where a disease-specific plasma accession exists
- already covered diseases only when the existing local SDRF is clearly incomplete
Step 3: Choose the Scoring Objective
Do not optimize for raw field count alone. Optimize for valid, evidence-supported, template-compliant completion.
Default scoring dimensions:
- Required-field completion
- Recommended-field completion
- Objective-specific completion
- Validation success
- Ontology quality
- Evidence support
- Placeholder penalty
Recommended derived objectives:
maximize_valid_field_coverage
Use when the user wants the most complete valid SDRF possible.
Reward:
- required columns present and filled
- recommended columns present and filled
- validated ontology terms
- technical metadata recovered from files or manuscript evidence
Penalize:
not available,not applicable,unknown- invalid ontology terms
- unsupported guesses
minimize_unknowns
Use when the main problem is placeholders and unresolved values.
Reward:
- replacing
unknownandunknown crosslinker - resolving generic metadata into validated terms
Penalize:
- replacements that are not evidence-backed
crosslinking_assay_completion
Use for XL-MS datasets. Focus strongly on:
comment[cross-linker]comment[crosslink enrichment method]characteristics[enrichment process]characteristics[crosslink distance]comment[crosslinker concentration]characteristics[crosslinking reaction time]characteristics[crosslinking temperature]comment[quenching reagent]comment[collision energy]
cell_line_sample_completion
Use for cell line datasets. Focus strongly on:
characteristics[cell line]characteristics[cell type]characteristics[disease]characteristics[organism part]characteristics[treatment]characteristics[sex]characteristics[age]
For human or clinical campaigns, also treat demographic evidence conservatively:
- promote
characteristics[developmental stage]when the cohort is clearly adult, pediatric, fetal, juvenile, and so on, even if the paper reports only cohort-level age summaries - do not auto-fill per-sample
characteristics[age],characteristics[sex], orcharacteristics[ethnicity]unless the manuscript or supplementary tables map them to individual source samples - if only cohort summaries exist, record the evidence in notes rather than forcing those values into every SDRF row
Step 4: Run the Annotation Loop
For each dataset:
- Discover evidence
- PRIDE metadata
- PRIDE files
- manuscript from Europe PMC when available
- supplementary and tables for sample metadata
- methods for technical metadata
For PRIDE file discovery, prefer the complete Archive REST endpoint when you need exact file coverage or file counts: ``text GET https://www.ebi.ac.uk/pride/ws/archive/v3/projects/PXD######/files/all ` Use this to avoid partial paged counts when auditing raw files, checking whether a candidate accession is tractable, or comparing SDRF comment[data file] values against the archive. If this endpoint returns 0 files for a valid PXD hosted through PanoramaPublic, MassIVE, iProX, or jPOST, treat that as archive endpoint empty for external repository rather than no dataset`. Keep the accession in play and note the repository-backed limitation in the ranking output.
- Run
/sdrf:annotate
- draft or extend the SDRF using the selected templates
- Run
/sdrf:terms
- normalize ontology-backed fields
- use lexical OLS first
- use embeddings for fuzzy manuscript-derived mentions
- use ZOOMA as slower fallback when useful
- Run
/sdrf:techrefine
- refine technical MS metadata when raw files or techsdrf evidence are available
- Run
/sdrf:validate
- validate template structure, reserved words, and ontology-backed fields
- keep validation concurrency bounded: default to serial, and never run more than
2parse_sdrfjobs at once - if
sdrf-techrefine, raw-file conversion, or other heavy analysis is active, validate only1dataset at a time
- Run
/sdrf:fix
- apply safe corrections to known SDRF error patterns
- Run
/sdrf:improve
- rescore completeness, specificity, consistency, standards, and design
- Keep or discard
- keep only if the score improves and validation does not regress
- discard any refinement that adds unsupported metadata
Step 5: Repeat Until the Stop Rule Fires
Repeat the full loop until one of these is true:
- no retained improvement for 3 rounds
- objective score crosses the configured threshold
- only low-confidence or unsupported candidates remain
- the remaining work is clearly manual-only
Never keep looping just to replace placeholders with guesses.
Validation Resource Guard
Autonomous annotation must not compromise the machine.
Use these defaults:
validation_mode=serialunless there is a demonstrated need for limited parallel validationmax_validation_jobs=2max_validation_jobs=1whenever raw-file analysis, file conversion, or large manuscript processing is already active- validate changed datasets first
- use representative smoke checks before full collection sweeps
If validation hangs or the system becomes resource-constrained, reduce the number of concurrent validators before continuing.
Step 6: Refinement Heuristics by Evidence Source
Prioritize evidence as follows:
Sample metadata
Best sources:
- PRIDE sample description
- manuscript Methods
- manuscript Results
- supplementary sample tables
- figure and table captions
Technical metadata
Best sources:
- raw-file analysis
- PRIDE protocols
- manuscript Methods
- search-parameter tables
File mapping and replicate logic
Best sources:
- PRIDE file list
- SDRF row structure
- file names
Step 7: Output Requirements
At the end of the run, report:
- resolved target set
- inferred or explicit config
- retained vs discarded rounds
- final score or stopping condition
- files changed
- remaining unresolved high-value gaps
If write=report-only, produce the same retained-improvement report without writing SDRFs.
Example Configs
Cell lines
/sdrf:autoresearch target="all PRIDE cell line datasets" profile="cell-line" objective="maximize_valid_field_coverage" focus_fields="cell line,disease,organism part,treatment" evidence="pride,files,europepmc" stop="3_no_improve_rounds" write="sandbox"
Crosslinking
/sdrf:autoresearch target="all sandbox crosslinking datasets" profile="crosslinking" objective="crosslinking_assay_completion" focus_fields="cross-linker,crosslink enrichment method,collision energy,crosslinking reaction time" evidence="pride,files,europepmc" stop="only_low_confidence_candidates_left" write="sandbox"
Report-only review
/sdrf:autoresearch target="manifest:data/review_set.tsv" objective="minimize_unknowns" write="report-only"
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: bigbio
- Source: bigbio/sdrf-skills
- License: MIT
- Homepage: https://sdrf.quantms.org
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.