Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,30 @@
"authentication": "ON_USE"
},
"category": "Business"
},
{
"name": "ngs-analysis",
"source": {
"source": "local",
"path": "./plugins/ngs-analysis"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_USE"
},
"category": "Research"
},
{
"name": "life-science-research",
"source": {
"source": "local",
"path": "./plugins/life-science-research"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_USE"
},
"category": "Research"
}
]
}
14 changes: 9 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
Role-specific plugins make Codex easier to customize for a team's day-to-day work.
These templates package domain-specific skills, connector bindings, and starter
assets so teams can adapt Codex for roles like sales, data analytics, product
design, and financial markets. They were built with OpenAI subject matter
experts around workflows that are already helping teams move faster internally
and with alpha partners. Over the coming weeks, we'll continue expanding this
collection with more roles, workflows, and examples.
design, financial markets, and life sciences research. They were built with
OpenAI subject matter experts around workflows that are already helping teams
move faster internally and with alpha partners. Over the coming weeks, we'll
continue expanding this collection with more roles, workflows, and examples.

The plugins are intended to be customized before use. Connector-backed plugins
may include placeholder app and connector ids that must be replaced with ids
Expand All @@ -20,6 +20,8 @@ available to the target workspace.
| [Data Analytics](./plugins/data-analytics) | Query, visualize, explain, and validate datasets; build dashboards; and investigate metrics. | Databricks, Snowflake, BigQuery, Hex, Amplitude, Mixpanel, Statsig, Metabase, ThoughtSpot, Google Drive, Slack, Microsoft 365, and more |
| [Product Design](./plugins/product-design) | Create product specs, prototypes, UI critiques, and product design artifacts. | Sites |
| [Financial Markets](./plugins/financial-markets) | Build public-equity research, earnings analysis, valuation work, model updates, long/short pitches, risk reviews, dashboards, and investment memos. | FactSet, LSEG, Morningstar, Daloopa, Quartr, S&P, PitchBook, Slack, Google Drive, Gmail, SharePoint, Teams, and more |
| [Life Science Research](./plugins/life-science-research) | Synthesize evidence-backed life-sciences research across genetics, omics, biology, chemistry, structure, clinical evidence, and public dataset discovery. | None |
| [Life Sciences NGS Analysis](./plugins/ngs-analysis) | Guide sequencing intake, route BCL/FASTQ and count-matrix workflows, validate references, and prepare reproducible local run envelopes for supported NGS assays. | None |

## Repository Layout

Expand All @@ -30,7 +32,9 @@ available to the target workspace.
|-- sales/
|-- data-analytics/
|-- product-design/
`-- financial-markets/
|-- financial-markets/
|-- life-science-research/
`-- ngs-analysis/
```

Each plugin generally follows this structure:
Expand Down
53 changes: 53 additions & 0 deletions plugins/life-science-research/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"name": "life-science-research",
"version": "1.0.0",
"description": "General life-sciences research workflows with query routing, evidence synthesis, and optional parallel subagent analysis across genetics, omics, biology, chemistry, structure, clinical evidence, and public dataset discovery.",
"author": {
"name": "OpenAI"
},
"homepage": "https://github.com/openai/openai/tree/master/plugins/life-science-research",
"repository": "https://github.com/openai/openai/tree/master/plugins/life-science-research",
"license": "Proprietary",
"keywords": [
"life-science",
"research",
"bioinformatics",
"human-genetics",
"functional-genomics",
"transcriptomics",
"proteomics",
"metabolomics",
"clinical-research",
"drug-discovery",
"skill-routing",
"evidence-synthesis",
"parallel-analysis",
"gwas",
"variant-interpretation",
"pathway-biology",
"protein-structure"
],
"skills": "./skills/",
"interface": {
"displayName": "Life Science Research",
"shortDescription": "General life-sciences research with routing, evidence synthesis, and optional parallel subagent analysis",
"longDescription": "Internal life-science research workflows that help Codex interpret a user's research question, normalize the relevant entities, choose the right skills, and synthesize evidence-backed answers across public resources. The plugin spans human genetics, functional genomics, expression, pathways, protein structure, chemistry, pharmacology, literature, clinical evidence, and public study discovery, with a research-router entrypoint for broad tasks and optional subagent-assisted parallel work when evidence lanes are independent.",
"developerName": "OpenAI",
"category": "Research",
"capabilities": [
"Interactive",
"Read",
"Write"
],
"websiteURL": "https://openai.com/",
"privacyPolicyURL": "https://openai.com/policies/row-privacy-policy/",
"termsOfServiceURL": "https://openai.com/policies/row-terms-of-use/",
"defaultPrompt": [
"Use relevant skills and databases to support life-science research tasks."
],
"brandColor": "#166534",
"composerIcon": "./assets/app-icon.png",
"logo": "./assets/app-icon.png",
"screenshots": []
}
}
175 changes: 175 additions & 0 deletions plugins/life-science-research/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
# Life Science Research Plugin

This plugin is a general life-sciences research layer for Codex. It packages a broad set of modular skills that can be composed to answer questions across human genetics, functional genomics, expression, pathway biology, protein structure, chemistry, clinical evidence, and public study discovery.

The goal is not to force every request through one fixed workflow. The goal is to help Codex understand the user's research question, normalize the relevant entities, choose the smallest useful set of skills, and synthesize a concise evidence-backed answer.

The plugin now includes a `research-router-skill` that should be treated as the default entrypoint for broad, ambiguous, or multi-step life-sciences research tasks.

## What This Plugin Should Do

When a user invokes this plugin, treat it as a general research copilot for life sciences:

1. Understand the research task.
Determine whether the user is asking for gene or target background, variant interpretation, locus-to-gene prioritization, pathway context, expression profiling, structure lookup, chemistry or ligand evidence, clinical-trial landscape, literature discovery, or dataset discovery.
2. Normalize the core entities.
Resolve the gene, protein, disease, phenotype, variant, compound, tissue, cell type, species, accession, or pathway identifiers before branching into downstream lookups.
3. Route to the right skills.
Prefer the minimum number of skills needed to answer the question well. Use single-source lookups for focused questions and multi-skill chains only when the question requires synthesis.
4. Parallelize only when it helps.
If the work breaks into independent evidence lanes and Codex subagents are available, use them for bounded parallel retrieval and analysis. Keep initial scoping, entity normalization, and final synthesis with the coordinating agent.
5. Cross-check evidence across sources.
Where the answer matters, compare orthogonal evidence types instead of over-indexing on one source.
6. Synthesize for the user.
Return a concise research answer with the key evidence, important caveats, and clear next steps. Save raw payloads only when the user asks for them.

## Research Patterns

This plugin is meant to support workflows like:

- target and gene background research
- variant interpretation and identifier resolution
- locus-to-gene prioritization
- cohort replication and PheWAS follow-up
- expression and tissue or cell-type context
- pathway and network interpretation
- protein, structure, and function lookup
- chemistry, ligand, and pharmacology research
- clinical, translational, and cancer evidence review
- literature, preprint, and public dataset discovery
- metabolomics, proteomics, and microbiome context gathering

## Entry Point

- `research-router-skill`: the default orchestration layer for broad life-sciences questions. It classifies the request, normalizes entities, selects downstream skills, decides whether parallel subagents are useful, and synthesizes the final answer.

## Skill Families

The plugin currently bundles 50 skills. The most useful way to think about them is by research area rather than as a flat list.

### Human Genetics And Variant Evidence

- `opentargets-skill`
- `gwas-catalog-skill`
- `clinvar-variation-skill`
- `gnomad-graphql-skill`
- `ensembl-skill`
- `eva-skill`
- `epigraphdb-skill`
- `genebass-gene-burden-skill`
- `gtex-eqtl-skill`
- `eqtl-catalogue-skill`
- `locus-to-gene-mapper-skill`
- `finngen-phewas-skill`
- `ukb-topmed-phewas-skill`
- `biobankjapan-phewas-skill`
- `tpmi-phewas-skill`

### Expression, Cell Context, And Functional Genomics

- `bgee-skill`
- `human-protein-atlas-skill`
- `cellxgene-skill`
- `encode-skill`
- `rnacentral-skill`

### Protein, Structure, Pathway, And Functional Biology

- `alphafold-skill`
- `rcsb-pdb-skill`
- `uniprot-skill`
- `string-skill`
- `quickgo-skill`
- `reactome-skill`
- `rhea-skill`

### Chemistry, Metabolites, And Pharmacology

- `bindingdb-skill`
- `chembl-skill`
- `pubchem-pug-skill`
- `chebi-skill`
- `pharmgkb-skill`
- `hmdb-skill`

### Clinical, Translational, And Disease Evidence

- `clinicaltrials-skill`
- `cbioportal-skill`
- `civic-skill`
- `ipd-skill`

### Literature, Search, And Public Study Discovery

- `ncbi-entrez-skill`
- `ncbi-pmc-skill`
- `biorxiv-skill`
- `biostudies-arrayexpress-skill`
- `ncbi-datasets-skill`
- `ncbi-blast-skill`
- `ncbi-clinicaltables-skill`

### Multi-Omics, Proteomics, And Specialized Data Sources

- `pride-skill`
- `proteomexchange-skill`
- `metabolights-skill`
- `mgnify-skill`
- `efo-ontology-skill`

## Recommended Query Strategy

For broad or ambiguous requests, route work in this order:

1. Clarify the objective from the user prompt.
Is the user trying to explain biology, prioritize targets, interpret a variant, find public evidence, or discover studies and datasets?
2. Resolve identifiers and ontology terms first.
Use entity-normalization and ontology skills before deeper evidence retrieval.
3. Pull evidence from the smallest relevant set of source families.
For example:
genetics plus expression for target prioritization
structure plus chemistry for ligandability questions
literature plus datasets for exploratory research
clinical plus pharmacology for translational questions
4. Parallelize only if the evidence lanes are independent.
Good examples include genetics versus expression, structure versus chemistry, or literature versus clinical evidence for the same question. Avoid parallelization for narrow lookups or tightly coupled chains where every step depends on the previous one.
5. Reconcile disagreements.
Call out conflicts across datasets, ancestry limitations, tissue specificity, study design caveats, and evidence gaps.
6. End with a direct synthesis.
Answer the user's actual question instead of returning an unsorted dump of source results.

## Subagent Guidance

When Codex subagents are available, use them as a retrieval and analysis accelerator, not as a replacement for core reasoning.

Use subagents when:

- the request spans multiple evidence families that can be gathered independently
- several genes, variants, compounds, or datasets need side-by-side comparison
- a broad research brief benefits from separate lane summaries before synthesis

Keep the coordinating agent responsible for:

- interpreting the user request
- defining scope and analysis lanes
- resolving identifiers and canonical entities
- reconciling conflicting evidence
- writing the final synthesis

Each subagent should receive a bounded objective and return concise findings, caveats, sources used, and any artifact paths. The final answer should present one integrated conclusion rather than a stack of disconnected sub-results.

## Example Prompts

- `Use Life Science Research to summarize the public genetics and expression evidence linking IL6R to asthma.`
- `Find preprints, public datasets, and pathway context relevant to TREM2 in microglia.`
- `Map the most plausible causal genes at this inflammatory bowel disease locus and explain why.`
- `Summarize known structure, ligand, and pathway information for EGFR.`
- `Pull ClinicalTrials.gov, ChEMBL, and PharmGKB context for JAK inhibitors in alopecia areata.`
- `Find metabolomics and proteomics resources relevant to MASLD and PPARG.`
- `Interpret this variant using ClinVar, gnomAD, Ensembl, and cohort association evidence.`

## Operational Notes

The plugin does not require plugin-local app connectors or MCP servers. The bundled skills are self-contained under `plugins/life-science-research/skills/` and generally call their own scripts or public APIs directly.

This plugin should be treated as a routing and synthesis layer over those skills. A focused question may require only one skill. A broader research question may require a short multi-skill chain, and when the work splits naturally into independent lanes, optional subagent-assisted parallel analysis before final synthesis.
Binary file added plugins/life-science-research/assets/app-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
41 changes: 41 additions & 0 deletions plugins/life-science-research/skills/alphafold-skill/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
name: alphafold-skill
description: Submit compact AlphaFold Protein Structure Database API requests for prediction, UniProt summary, sequence summary, and annotation lookups. Use when a user wants AlphaFold metadata or concise structure summaries
---

## Operating rules
- Use `scripts/rest_request.py` for all AlphaFold API calls.
- Use `base_url=https://alphafold.ebi.ac.uk/api`.
- The script accepts `max_items`, but set it explicitly only when trimming array-heavy responses; single-entry lookups usually do not need it.
- For `sequence/summary` or `annotations`, start around `max_items=3` to `5`.
- Re-run the request if the conversation is long instead of trusting older tool output.
- Treat displayed `...` in tool previews as UI truncation, not part of the real request.
- If the user asks for full JSON, set `save_raw=true` and report the saved file path instead of pasting the payload into chat.

## Execution behavior
- Return concise markdown summaries from the script JSON by default.
- Return the script JSON verbatim only if the user explicitly asks for machine-readable output.
- Prefer these paths: `prediction/<qualifier>`, `uniprot/summary/<qualifier>.json`, `sequence/summary`, and `annotations/<qualifier>.json`.
- Keep sequence-style inputs compact and prefer rerunning instead of copying prior output back into context.

## Input
- Read one JSON object from stdin.
- Required fields: `base_url`, `path`
- Optional fields: `method`, `params`, `headers`, `json_body`, `form_body`, `record_path`, `response_format`, `max_items`, `max_depth`, `timeout_sec`, `save_raw`, `raw_output_path`
- Common AlphaFold patterns:
- `{"base_url":"https://alphafold.ebi.ac.uk/api","path":"prediction/Q5VSL9"}`
- `{"base_url":"https://alphafold.ebi.ac.uk/api","path":"uniprot/summary/Q5VSL9.json"}`
- `{"base_url":"https://alphafold.ebi.ac.uk/api","path":"annotations/Q5VSL9.json","params":{"type":"MUTAGEN"},"max_items":3}`

## Output
- Success returns `ok`, `source`, `path`, `method`, `status_code`, `warnings`, and either compact `records` or a compact `summary`.
- Use `raw_output_path` when `save_raw=true`.
- Failure returns `ok=false` with `error.code` such as `invalid_json`, `invalid_input`, `network_error`, or `invalid_response`.

## Execution
```bash
echo '{"base_url":"https://alphafold.ebi.ac.uk/api","path":"prediction/Q5VSL9"}' | python scripts/rest_request.py
```

## References
- No additional runtime references are required; keep the import package limited to this file and `scripts/rest_request.py`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
interface:
display_name: "AlphaFold"
short_description: "Fetch AlphaFold structure summaries"
Loading