PharmaSkills
Pharma skills for AI agents.
The skills pack that teaches your AI agent the drug development lifecycle: protocols, CDISC, CSRs, safety, CMC and regulatory, with every output checked against the standard it claims.
Status: pre-release. PharmaSkills is not yet published to PyPI, npm, GHCR or any plugin marketplace. Install from a clone until the owner publishes v1.0.0. Everything it produces is a draft for qualified review and it is not validated GxP software. See Guardrails and disclaimer.
Headline
Raw EDC to SDTM with 0 validation errors on two synthetic studies (PSK-001 and PSK-002). Measured 2026-10-14: 100% record match against the gold datasets (18,771 records), byte-identical rebuild, 0.81 s or less per study, validated by the pharmaskills-native 0.5.0 checks (CDISC CORE was not run in this build environment). Details and caveats: Benchmarks.
Demo
A vhs tape is committed at
docs/demo.tape: a raw EDC folder to SDTM datasets and Define-XML 2.1, then a
CSR section with every number traced to its table. The GIF has not been rendered or published
yet; render it with vhs docs/demo.tape (writes docs/assets/demo.gif).
Install
The tools package is on PyPI (pharmaskills). npm, GHCR and the plugin marketplace are not
published yet; the channels below that use them are planned for v1.0.0. Or use
from source.
One command (needs uv; it installs the tool, the skills and the
MCP server for every agent it finds, then runs doctor):
uvx pharmaskills setup # every agent found on this machine
uvx pharmaskills setup --agent claude-code # or name one (repeatable)
uvx pharmaskills setup --dry-run # show what would change
Run it again after an upgrade to refresh the skills. Piece by piece:
# tools package (CLI, checkers, MCP server)
uv tool install pharmaskills
pipx install pharmaskills
npx pharmaskills doctor
# skills for your agent (Codex, Claude Code, Cursor, Gemini CLI, OpenCode)
npx skills add aiagentpro/pharmaskills
# Claude Code plugin marketplace
/plugin marketplace add aiagentpro/pharmaskills
/plugin install pharmaskills
# MCP server entry for an agent
pharmaskills mcp install --client claude-code
# Docker (CLI and MCP server)
docker run ghcr.io/aiagentpro/pharmaskills
| Agent | Skills | MCP |
|---|---|---|
| Claude Code | npx skills add aiagentpro/pharmaskills or the plugin commands |
pharmaskills mcp install --client claude-code |
| Codex | npx skills add aiagentpro/pharmaskills |
pharmaskills mcp install --client codex |
| Cursor | npx skills add aiagentpro/pharmaskills |
pharmaskills mcp install --client cursor |
| Gemini CLI | npx skills add aiagentpro/pharmaskills |
pharmaskills mcp install --client gemini-cli |
| OpenCode | npx skills add aiagentpro/pharmaskills |
pharmaskills mcp install --client opencode |
One skill only: pharmaskills skills install --agent claude-code --skill sdtm-mapper. Skills
work in a degraded, template-only mode (marked unverified) without the tools package. Details:
docs/install.md.
From a clone today:
git clone https://github.com/aiagentpro/pharmaskills && cd pharmaskills
uv sync --extra dev
uv run pharmaskills doctor
uv run pharmaskills skills install --agent claude-code
Lifecycle map
Skill catalogue
36 skills: 24 Tier 1 (backed by a deterministic tool or validator) and 12 Tier 2 (templates,
references and a scored rubric). One page per skill is on the docs site (docs/skills/).
| Skill | Stage | Tier | What it produces | Verified by |
|---|---|---|---|---|
competitive-landscape |
Discovery | 1 | Build a competitor program landscape from ClinicalTrials.gov for an indication or mechanism, grouped by sponsor, mechanism, phase and status, with withdrawn trials separated and readout dates. | connectors clinicaltrials search, trials landscape |
compound-profiler |
Discovery | 1 | Profile small molecules from SMILES or SDF (MW, cLogP, TPSA, HBD, HBA, rotatable bonds, Lipinski, Veber, PAINS and Brenk alerts, QED) and interpret developability risks. | chem profile, chem alerts |
literature-review |
Discovery | 1 | Run a PubMed literature review. | connectors pubmed build-query, connectors pubmed search, connectors pubmed fetch, lit check-prisma, lit check-screening-log |
target-dossier |
Discovery | 1 | Build a target assessment dossier for a gene or protein and disease from Open Targets, UniProt, ChEMBL and PubMed with source ids on every claim, risks, competition and a low-evidence warning. | connectors opentargets search, connectors opentargets fetch, connectors uniprot search, connectors uniprot fetch, connectors chembl search, connectors pubmed search |
fih-dose |
Preclinical | 1 | Derive a first-in-human starting dose from animal NOAELs (HED by body surface area, most sensitive species, safety factor, MRSD) and recommend a MABEL approach for high-risk biologics. | stats hed |
nonclinical-study-plan |
Preclinical | 2 | Draft an IND-enabling nonclinical study plan by clinical stage and modality (ICH M3(R2), S7A, S7B, S2(R1), S5(R3), S6(R1), S9), with a required-study checklist, timeline and gap list. | reg required-studies |
pk-nca |
Preclinical | 1 | Run noncompartmental PK analysis on concentration-time data (AUClast, AUCinf, Cmax, Tmax, half-life, CL/F, Vz/F) with documented BLQ handling and summary statistics. | stats nca |
send-checker |
Preclinical | 1 | Validate SEND (SENDIG) XPT datasets with pharmaskills send validate, summarise findings by domain and severity, and report honestly whether CDISC CORE or the native structural checks ran. | send validate |
crf-cdash |
Clinical development | 1 | Derive an eCRF specification from a protocol schedule of activities, with forms per visit mapped to CDASH variables and controlled terminology codes with codelist ids. | cdash map, cdash build-spec, ct lookup, ct codelist |
icf-writer |
Clinical development | 1 | Draft an informed consent form in plain language from a protocol summary, check the 21 CFR 50.25 elements and the reading grade, and explain randomisation for placebo designs. | docs check-icf, docs readability |
protocol-m11 |
Clinical development | 1 | Draft a clinical trial protocol in ICH M11 structure with a five-attribute estimand for every primary endpoint, a schedule of activities and comparable trials, then check structure. | docs check-structure, protocol check-estimands, protocol check-soa, trials feasibility, stats sample-size |
rbqm-plan |
Clinical development | 2 | Draft a risk-based quality management plan and risk register from a protocol under ICH E6(R3) and E8(R1), covering critical-to-quality factors, key risk indicators, quality tolerance limits and a monitoring strategy, then check the register for completeness. | protocol check-risk-register, protocol check-estimands |
sample-size |
Clinical development | 1 | Write a sample size justification with formula, inputs, result and sensitivity table for means, proportions, log-rank, non-inferiority and equivalence designs, with dropout inflation. | stats sample-size |
sap-writer |
Clinical development | 2 | Draft a statistical analysis plan from a protocol and its estimands under ICH E9 and E9(R1), covering analysis sets, estimand handling, primary and sensitivity analyses, multiplicity, missing data, interim analyses and planned TLFs, then check structure and estimands. | docs check-structure, protocol check-estimands, docs build |
trial-feasibility |
Clinical development | 1 | Assess feasibility from comparable completed trials on ClinicalTrials.gov with enrolment rate per site-month where inputs exist, country footprint and common exclusion criteria. | connectors clinicaltrials search, trials feasibility |
adam-spec |
Clinical data | 1 | Specify ADSL and ADAE from SDTM datasets and the SAP, then build the datasets, derivation programs and spec workbook with unit-tested derivations. | adam build, adam test |
define-xml |
Clinical data | 1 | Build, validate and render Define-XML 2.1 for SDTM datasets from a study folder and mapping spec, and report coverage of datasets, variables and codelists. | define build, define validate, define render |
sdtm-mapper |
Clinical data | 1 | Turn raw EDC exports into SDTM datasets (DM, AE, CM, VS, LB, EX, TS), a mapping spec, Define-XML 2.1, a reviewer's guide draft and a traceability matrix, validated and repaired in a loop. | sdtm init, sdtm profile, sdtm validate-spec, sdtm review, sdtm build, sdtm validate, sdtm repair, sdtm document, sdtm run |
tlf-shells |
Clinical data | 2 | Generate numbered table, listing and figure shells and a tlf_index.csv from a statistical analysis plan, with placeholders only and AE tables by SOC and PT, then check numbering and that every SAP analysis has a shell. | protocol check-tlf-shells, docs build |
csr-e3 |
Regulatory | 1 | Draft clinical study report sections structured to ICH E3 from a protocol, SAP and TLF outputs, with every number traced to its source table. | docs trace-numbers, docs check-structure --standard ich-e3, docs detect-pii |
ctd-module2 |
Regulatory | 1 | Draft CTD Module 2 summaries (2.4 and 2.6 nonclinical, 2.5 and 2.7 clinical) from study summaries, check ICH M4 numbering, add cross-references to Modules 4 and 5, and produce a gap list. | docs check-structure --standard ich-m4, reg ctd-map |
ha-query-response |
Regulatory | 2 | Draft a health authority query response that restates each question, answers with cited data and guidance, flags insufficient data, and lists commitments separately; checks citations with a tool. | docs check-citations, docs build |
ib-writer |
Regulatory | 2 | Draft an investigator's brochure and its reference safety information from nonclinical, clinical and CMC summaries, with a required-section check and frequency-labelled candidate ADRs. | docs check-structure --standard ib, docs build |
ind-assembler |
Regulatory | 1 | Map available documents to 21 CFR 312.23(a) IND content items, Form 1571 and 1572 fields and eCTD placement, and list gaps such as a missing investigator's brochure. | reg ind-checklist, reg ctd-map |
regulatory-intelligence |
Regulatory | 2 | Fetch an official guidance page (FDA, EMA, ICH, MHRA), summarise what changed, state effective dates or mark them unknown, and assess impact on the user's program, with source links checked against an official-domain list. | docs check-citations --require-official-links |
aggregate-report |
Safety | 2 | Draft a PBRER (ICH E2C(R2)) or DSUR (ICH E2F) section structure with data placeholders, a stated reporting interval and a structured benefit-risk framework; checks mandatory sections. | docs check-structure --standard pbrer, docs check-structure --standard dsur, docs build |
icsr-e2b |
Safety | 1 | Turn an email, call note or literature article into a structured case.json, check ICH E2D minimum criteria, seriousness and expectedness, and build and validate an E2B(R3) ICSR XML draft. | safety minimum-criteria, safety seriousness, safety expectedness, safety build-e2b, safety validate-e2b |
literature-surveillance |
Safety | 2 | Run a weekly PubMed search for named products, screen every record for the four ICSR minimum criteria and safety findings (EU GVP VI.B.1.1.2), log each decision with a reason, and document no-result weeks. | connectors pubmed build-query, connectors pubmed search, lit check-screening-log |
signal-detection |
Safety | 1 | Screen a drug-event pair in FAERS with openFDA 2x2 counts and PRR, ROR and IC with intervals, and write a signal report that states the limits of spontaneous reports. | connectors openfda search, stats disproportionality |
specification-builder |
CMC and manufacturing | 1 | Draft drug substance and drug product specifications per ICH Q6A (small molecules) or Q6B (biologics) with impurity thresholds from Q3A and Q3B, residual solvent limits from Q3C and elemental limits from Q3D, as an Excel workbook and a rationale. | cmc impurity-thresholds, cmc solvent-limits, cmc elemental |
stability-protocol |
CMC and manufacturing | 1 | Draft an ICH Q1A(R2) stability protocol with storage conditions and time points by climatic zone and pack, a Module 3.2.P.8 outline, and an ICH Q1E shelf-life estimate when data are supplied. | cmc stability-conditions, stats shelf-life |
csv-gamp5 |
Quality and compliance | 2 | Draft a computerised system validation pack using a GAMP 5 risk-based approach, FDA CSA and Part 11 and Annex 11 checks, including AI agent controls. | quality part11-checklist, docs build, docs detect-pii |
deviation-capa |
Quality and compliance | 2 | Structure a GMP deviation investigation (timeline, 5 whys, Ishikawa), assess product impact, and draft CAPA with owner, due date and effectiveness check. | quality check-capa, docs build, docs detect-pii |
heor-model |
Medical and access | 1 | Compute an ICER with dominance logic and a one-way sensitivity table, and a multi-year budget impact, from supplied costs, QALYs, population and uptake; write a summary and an Excel model. | stats icer, stats budget-impact |
label-writer |
Medical and access | 1 | Draft US PLR prescribing information or an EU SmPC in the required section order, fetch a comparator label from DailyMed by name and compare it section by section, and check structure. | connectors dailymed search, connectors dailymed fetch, docs check-structure |
lifecycle-navigator |
All stages | 2 | Place a drug program on the nine-stage lifecycle map, list the next regulatory milestones and required studies or documents, and route every step to a skill that exists in the pack. | skills list, skills route, reg required-studies, reg ind-checklist |
Every output is checked
Skills that produce a standards-governed artefact run a deterministic check (schema, controlled
terminology, required sections, number tracing) and report what passed and failed, naming the
engine that ran. Prose quality is scored with a rubric. Published numbers are read from
bench/results/ by a script; a number with no result file is not published.
| Benchmark | Result | Source (2026-10-14) |
|---|---|---|
| SDTM mapper, PSK-001 | 0 errors, 2 warnings; spec accuracy 117/117; record match 100% of 10,410; 0.81 s; rebuild identical: yes | bench/results/2026-10-14/sdtm.json |
| SDTM mapper, PSK-002 | 0 errors, 2 warnings; spec accuracy 112/112; record match 100% of 8,361; 0.6 s; rebuild identical: yes | bench/results/2026-10-14/sdtm.json |
| Tool accuracy suite | 7/7 reference calculations matched (100%) | bench/results/2026-10-14/tools.json |
| Skill evals (deterministic replay, 36 skills) | 197/197 cases pass (100%) | bench/results/2026-10-14/deterministic.json |
| Safety and honesty suite | 26/26 tests pass | bench/results/2026-10-14/safety.json |
Read before quoting these numbers:
- The SDTM benchmark runs the deterministic engine on a committed gold specification of two synthetic studies. It shows the engine reproduces the gold datasets exactly; it is not a measurement of a model drafting a spec, and not a result on real data.
- Validation used the native engine (
pharmaskills-native). CDISC CORE was not run in the build environment, so no CORE conformance is claimed. Reports always name the engine. - Skill evals are a deterministic replay of recorded answers, not a model measurement.
Methodology and per-domain tables: docs/benchmarks.md.
Guardrails and disclaimer
- Draft banner on every generated document. Drafts are for qualified review.
- Not validated GxP software; not 21 CFR Part 11 or EU GMP Annex 11 compliant. The
csv-gamp5skill explains how to validate it for your own use. - No licensed content: MedDRA, WHODrug, SNOMED CT and UMLS are not included; bring your own licensed files.
- Local option: no telemetry; the deterministic tools run locally; point your agent at a local OpenAI-compatible model when data must stay on your machine.
- No fabrication: missing inputs become
[DATA NEEDED: ...], never invented values. - Safety outputs (
icsr-e2b,signal-detection) do not replace your reporting obligations. - Honest limits: some rules rest on instruction text only. See docs/guardrails-validation.md and DISCLAIMER.md.
Examples gallery
One synthetic, committed example per lifecycle stage (inputs, real tool outputs, refusal samples). Commands and headline outputs: docs/examples-gallery.md.
| Stage | Skill | Folder |
|---|---|---|
| Discovery | compound-profiler |
examples/discovery/compound-profiler |
| Preclinical | fih-dose |
examples/preclinical/fih-dose |
| Clinical development | sample-size |
examples/clinical/sample-size |
| Clinical data | sdtm-mapper |
examples/clinical-data/sdtm-mapper |
| Regulatory | csr-e3 |
examples/regulatory/csr-e3 |
| Safety | signal-detection |
examples/safety/signal-detection |
| CMC and manufacturing | stability-protocol |
examples/cmc/stability-protocol |
| Quality and compliance | csv-gamp5 |
examples/quality/csv-gamp5 |
| Medical and access | heor-model |
examples/medical-commercial/heor-model |
Contributing a skill
A skill is a skills/<id>/SKILL.md with frontmatter, standard sections, references, templates
and evaluation cases (including an adversarial case). Lint with uv run pharmaskills skills lint,
run uv run pharmaskills eval run --skill <id>, add a synthetic worked example, then make check. See CONTRIBUTING.md, the FAQ and
docs/EXTENSION_POINTS.md. Contributors sign the CLA.
Roadmap
Out of v1, planned for v1.x:
- ADaM beyond ADSL and ADAE
- SDTM domains beyond the six core (plus TS)
- eCTD XML backbone
- MedDRA and WHODrug auto-coding (user-licensed)
- RWE study design
- Medical information letters
- Promotional review
- Pediatric plans
- Orphan designation
- Device and combination products
Licence
Code: Apache-2.0 (LICENSE, NOTICE). Examples and synthetic data: CC BY 4.0.
Metadata
Release files for pharmaskills 0.6.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pharmaskills-0.6.2.tar.gz | 987.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pharmaskills-0.6.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.6 MB
Release files / pharmaskills-0.6.2.tar.gz
| Download URL | pharmaskills-0.6.2.tar.gz |
|---|---|
| Size | 987.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f2dccc5a08dd3df190aac94db2637aed9dec5e1f4a8d7f26fc9d9e601e4beb3b
|
|
BLAKE2b-256 checksum How to use checksums |
4dcb6e2b54da16a8e6a608ed33c47e89ea5caba4bbb4d0c2f73754d3701d02e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / pharmaskills-0.6.2-py3-none-any.whl
| Download URL | pharmaskills-0.6.2-py3-none-any.whl |
|---|---|
| Size | 636.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
958491383ef9115891c7ea0032d687d8be42cc63de3e3910ed6f0eed99a15831
|
|
BLAKE2b-256 checksum How to use checksums |
4c701ec96a33135f0a2bdd80770f4dc4a7afa8ba074400e90b45666d98b3b010
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|