Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add bigbio/sdrf-skills --skill sdrf-annotategit clone --depth 1 https://github.com/bigbio/sdrf-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bigbio/sdrf-skills/sdrf-annotate)<a href="https://agentmods.dev/skills/bigbio/sdrf-skills/sdrf-annotate"><img src="https://agentmods.dev/badge/skills/bigbio/sdrf-skills/sdrf-annotate.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 3 findings, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Data Exfiltration · line 806 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Data Exfiltration · line 807 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
- medium Excessive Agency · line 984 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00068 | $0.15479 |
| Opus 5 | $0.00034 | $0.07739 |
| Sonnet 5 | $0.00014 | $0.03096 |
| Haiku 4.5 | $0.00007 | $0.01548 |
Grade A, and why
sdrf-annotate scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
**The audit must not run on a failed download.** `curl -o` truncates its target How it starts
The opening of the file, as written. The whole thing — 1,164 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SDRF Annotation Workflow
You are performing a complete SDRF annotation. Follow these steps IN ORDER. Do not skip steps. Do not guess — use MCP tools to verify everything.
Step 0a: Isolate this dataset's working files (required)
When annotators run concurrently they collide through a shared scratchpad:
generic filenames (files_all.json, build.py, efetch.xml) written by several
agents into one directory silently overwrite each other. The failure is silent —
the file still parses, it just describes a different dataset — so an agent that
trusts the re-read annotates the wrong PXD. This has happened (a cached PRIDE file
list overwritten mid-run with another accession's data; an efetch.xml replaced
by an unrelated paper).
- Derive your working directory from the accession —
scratchpad/<PXD>/— and write every temp file there and nowhere else. - Never read a scratch file you did not write in this run.
- Point PDF/full-text fetchers at that directory
(
get_pdf_by_unpaywall(output_dir="scratchpad/<PXD>/"));mcp/pdf/is shared by default and two agents fetching different papers will collide. - Assert on read anyway (defence in depth — the substitution also comes from
outside): after fetching the file list, check every entry's
projectAccessionscontains your accession; when you pull supplementary files or anefetchresult, verify the returned title/accession, not just HTTP 200. (Europe PMCsupplementaryFileshas returned another paper'smmc*.xlsx;efetchwithid=PMC…silently returns a different article — use the numeric id.)
Step 0: Check parse_sdrf availability
Before starting, verify that parse_sdrf is available (run parse_sdrf --version or which parse_sdrf). If it is not installed:
- Inform the user that programmatic validation will be skipped
- Suggest
/sdrf-skills:sdrf-setuporconda env create -f environment.yml && conda activate sdrf-skills(orpip install -r requirements.txt) - Offer to continue with manual checks only, or wait for the user to install and retry
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago Changed 6608bf9f10c8
- 8d ago First seen · 1,164 lines · 68 tokens per session scan A 16e92471a165
sdrf-annotate is a skill published in the GitHub repository bigbio/sdrf-skills (18 stars, last pushed 2d ago), licensed MIT. It adds 68 tokens to every session and 15,479 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
uniprot-query
Query UniProt database for protein sequences, metadata, and search by criteria. Use this skill when: (1) Looking up protein information by UniProt accession ID, (2) Searching proteins by gene name, organism, function, or disease, (3) Retrieving comprehensive protein metadata including domains, PTMs, and annotations.
proteomics-data-import
Load when ingesting a MaxQuant proteinGroups.txt, FragPipe combinedprotein.tsv, DIA-NN report, or generic CSV / TSV protein-quantification table — normalises columns to a standard schema, emits tables/proteins.csv. Skip when raw spectra are the input (run the search engine first); the file is already OmicsClaw schema.
proteomics-de
Load when computing two-group differential protein abundance (group2 vs group1, log2FC + p-value + BH-adjusted FDR) via Welch t-test, equal-variance t-test, or Mann-Whitney on a wide protein × sample CSV. Skip when you need multi-condition DE (run pairwise contrasts manually); label-based TMT linear-mixed models.
proteomics-enrichment
Load when running over-representation analysis (ORA) on a list of proteins via Fisher's exact test against a built-in 8-pathway DEMO dictionary, with BH-FDR correction. Skip when needing a real pathway database (this skill is demo-only) (use bulkrna-enrichment); rank-based GSEA.
proteomics-identification
Load when summarising peptide identifications (PSM count, unique peptide count, distinct protein count, score / charge distributions) from a peptide-level CSV produced by MaxQuant / FragPipe / DIA-NN. Skip when raw spectra are the input (run a search engine first); working with protein-quantification tables (use…
proteomics-ptm
Load when summarising PTM sites (phosphorylation, acetylation, ubiquitination, etc.) from a per-site CSV — site-class assignment (Olsen et al. Class I/II/III by localizationprobability), per-PTM-type counts, amino-acid distribution, sites-per-protein. Skip when raw spectra are the input; you only need protein-level…