Reporting Adverse Events
maziyarpanahi/openmed
Structures adverse-event mentions that OpenMed extracts into FAERS / ICH E2B(R3) reportable fields — suspect drug, reaction (MedDRA PT), seriousness criteria, and outcome.
Derives an ADaM Adverse Events Analysis Dataset (ADAE) using the {admiral} R package and pharmaverse ecosystem.
$ npx skills add RConsortium/pharma-skills --skill admiral-adae -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install RConsortium/pharma-skills admiral-adae --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/RConsortium/pharma-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/admiral/admiral-adae .claude/skills/admiral-adae && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "admiral-adae" agent skill from https://github.com/RConsortium/pharma-skills/tree/main/admiral/admiral-adae into .claude/skills/admiral-adae/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "admiral-adae", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/RConsortium/pharma-skills/tree/main/admiral/admiral-adaeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add RConsortium/pharma-skills --skill admiral-adae -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install RConsortium/pharma-skills admiral-adae --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/RConsortium/pharma-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/admiral/admiral-adae .agents/skills/admiral-adae && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "admiral-adae" agent skill from https://github.com/RConsortium/pharma-skills/tree/main/admiral/admiral-adae into .agents/skills/admiral-adae/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "admiral-adae", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add RConsortium/pharma-skills --skill admiral-adae -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install RConsortium/pharma-skills admiral-adae --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/RConsortium/pharma-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/admiral/admiral-adae .cursor/skills/admiral-adae && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "admiral-adae" agent skill from https://github.com/RConsortium/pharma-skills/tree/main/admiral/admiral-adae into .cursor/skills/admiral-adae/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "admiral-adae", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/RConsortium/pharma-skills.git --path admiral/admiral-adae--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add RConsortium/pharma-skills --skill admiral-adae -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install RConsortium/pharma-skills admiral-adae --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/RConsortium/pharma-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/admiral/admiral-adae .gemini/skills/admiral-adae && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "admiral-adae" agent skill from https://github.com/RConsortium/pharma-skills/tree/main/admiral/admiral-adae into .gemini/skills/admiral-adae/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "admiral-adae", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install RConsortium/pharma-skills admiral-adaeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add RConsortium/pharma-skills --skill admiral-adae -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/RConsortium/pharma-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/admiral/admiral-adae .github/skills/admiral-adae && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "admiral-adae" agent skill from https://github.com/RConsortium/pharma-skills/tree/main/admiral/admiral-adae into .github/skills/admiral-adae/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "admiral-adae", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add RConsortium/pharma-skills --skill admiral-adae -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install RConsortium/pharma-skills admiral-adae --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/RConsortium/pharma-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/admiral/admiral-adae .opencode/skills/admiral-adae && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "admiral-adae" agent skill from https://github.com/RConsortium/pharma-skills/tree/main/admiral/admiral-adae into .opencode/skills/admiral-adae/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "admiral-adae", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
admiral-adaeDerives an ADaM Adverse Events Analysis Dataset (ADAE) using the {admiral} R package and pharmaverse ecosystem.
Admiral Adae is an agent skill from RConsortium/pharma-skills. Derives an ADaM Adverse Events Analysis Dataset (ADAE) using the {admiral} R package and pharmaverse ecosystem. Use when a user needs to create ADAE from SDTM AE and supporting domains, derive standard adverse event analysis variables (severity, seriousness, treatment-emergent flags, study day variables, baseline flags), or generate QC-ready R code following CDISC ADaM conventions. Requires SDTM input data, ADSL, and an ADaM spec.
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `DESIGN.md`, `README.md` and `benchmarks/README.md`). Compatibility notes: Requires R with admiral, dplyr, lubridate, and pharmaversesdtm installed. Designed for use in a GxP-compliant environment with access to SDTM datasets, a…
The repository describes itself as: A collection of agent skills for BioPharma use cases GSDBench Intake https://rconsortium.github.io/pharma-skills/gsdbench-intake/. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ae5d83b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are r).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires R with admiral, dplyr, lubridate, and pharmaversesdtm installed. Designed for use in a GxP-compliant environment with access to SDTM datasets, a completed ADSL dataset, and an ADaM ADAE specification.
From compatibility in the SKILL.md frontmatter.
Admiral Adae loads about 3.9k tokens when it runs, and up to ~9.2k if it reads all its reference files. Until then it costs about 112 tokens; SKILL.md has 1,076 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from RConsortium/pharma-skills at commit ae5d83b, republished under its MIT licence (© RConsortium). 1,076 words, ~3,859 tokens.
.claude/skills/admiral-adae/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Derives a CDISC-conformant ADAE dataset using {admiral}. Outputs executable, QC-ready R code with derivation logic traceable to the ADaM specification.
The primary design challenge in ADAE is the treatment-emergent adverse event (TEAE) flag (TRTEMFL) and its supporting date infrastructure. All date and study day derivations must flow from this before any analysis variables are added.
Before generating code, confirm the following are available or explicitly noted as absent:
| Input | Required | Notes |
|---|---|---|
| AE | Yes | One record per AE per subject; subject spine for ADAE |
| ADSL | Yes | Provides TRTSDT, TRTEDT, TRT01P/A, population flags |
| MH | No | Medical history; needed for pre-existing condition flag (PREFL) |
| CM | No | Concomitant medications; sometimes linked to AE causality |
| ADaM ADAE spec | Yes | Variable list, derivation rules, TEAE definition, grading rules |
| Study context | Yes | TEAE window definition, SMQ/grouping flag scope, severity scale |
If AE or ADSL are absent, stop and request them. If optional domains are absent, omit the corresponding derivations and note this in code comments.
Note on pharmaversesdtm test data: The pharmaversesdtm::ae dataset does
not contain AETOXGR. Users running this skill against pharmaverse test data
should skip the AETOXGR derivation in Step 7. The derivation is retained in
the skill for use with real study data where NCI CTCAE grading was collected.
Critical ADSL dependency: ADAE must merge a defined set of ADSL variables onto every AE record. Confirm with the statistician which ADSL variables are required — at minimum: TRTSDT, TRTEDT, TRTSDTM, TRT01P, TRT01PN, TRT01A, TRT01AN, and all population flags in scope (SAFFL, ITTFL).
Follow these steps in order. Generate code section by section, not as a single block.
library(admiral)
library(dplyr)
library(lubridate)
library(pharmaversesdtm)
# Load SDTM domains
ae <- pharmaversesdtm::ae
adsl <- adsl # assumed derived upstream; replace with path/load as needed
# mh <- pharmaversesdtm::mh # uncomment if pre-existing condition flag in scope
# Remove DOMAIN from AE to avoid variable conflicts in merges
ae <- ae |> select(-DOMAIN)
# Confirm AE has at least one record
stopifnot(nrow(ae) > 0)ADAE is a one-record-per-AE dataset; the subject spine is AE itself. Start here and add ADSL variables in the next step.
adae <- aeMerge a controlled subset of ADSL variables onto every AE record. Do not merge all of ADSL — select only variables referenced in the ADAE derivation logic and required for the output dataset per the ADaM spec.
# REVIEW: Confirm which ADSL variables are required per the ADAE spec.
# The list below covers the minimum set for TEAE flag derivation and treatment
# labelling. Extend with population flags and other ADSL variables as needed.
adsl_vars <- exprs(
STUDYID, USUBJID,
TRTSDT, TRTEDT, TRTSDTM,
TRT01P, TRT01PN, TRT01A, TRT01AN,
SAFFL, ITTFL
)
adae <- adae |>
derive_vars_merged(
dataset_add = adsl |> select(!!!adsl_vars),
by_vars = exprs(STUDYID, USUBJID)
)Derive analysis start and end dates from AE.AESTDTC and AE.AEENDTC. Always
use derive_vars_dt() — never as.Date() directly on DTC variables.
Use date_imputation = "first" for start dates and "last" for end dates per
CDISC convention. Always retain imputation flag variables (ASTDTF, AENDTF).
adae <- adae |>
derive_vars_dt(
dtc = AESTDTC,
new_vars_prefix = "AST",
date_imputation = "first",
flag_imputation = "auto"
) |>
derive_vars_dt(
dtc = AEENDTC,
new_vars_prefix = "AEN",
date_imputation = "last",
flag_imputation = "auto"
)Use derive_vars_dy() relative to TRTSDT from ADSL. Do not compute study days
manually with date subtraction — this bypasses the Day 1 = first dose date
offset logic required by ADaM.
adae <- adae |>
derive_vars_dy(
reference_date = TRTSDT,
source_vars = exprs(ASTDT, AENDT)
)This is the central derivation in ADAE. TRTEMFL = "Y" when:
The derive_var_trtemfl() function handles this logic. The end_window
parameter defines how many days post-last-dose an AE is still considered
treatment-emergent — this is study- and protocol-specific.
# REVIEW: end_window is protocol-specific. Common values are 30 days post-last
# dose for SAEs and 7 days for non-serious AEs, but always confirm from the
# SAP. If the protocol does not specify a post-treatment window, set end_window
# to 0 to include only AEs on or before the last dose date.
# The ignore_time_for_trt_end argument should be TRUE if TRTEDTM is not
# reliable for all subjects — confirm with the data manager.
adae <- adae |>
derive_var_trtemfl(
new_var = TRTEMFL,
start_date = ASTDT,
end_date = AENDT,
trt_start_date = TRTSDT,
trt_end_date = TRTEDT,
end_window = 30, # PLACEHOLDER — confirm from SAP
ignore_time_for_trt_end = TRUE
)Map AESEV from AE.AESEV (already decoded in SDTM) and AETOXGR from AE.AETOXGR if NCI CTCAE grading is used. If only AESEV is in scope, skip AETOXGR.
adae <- adae |>
mutate(
# AESEV: severity — use decoded AESEV directly from AE; no transformation required
AESEV = AESEV,
# AESEVN: optional numeric mapping for sorting
# REVIEW: Confirm severity ordering and numeric mapping against the ADaM spec.
AESEVN = case_when(
AESEV == "MILD" ~ 1L,
AESEV == "MODERATE" ~ 2L,
AESEV == "SEVERE" ~ 3L
)
)
# AETOXGR: CTCAE numeric grade — carry through from AE if grading was collected
# Uncomment if in scope per ADaM spec:
# adae <- adae |>
# mutate(AETOXGR = AETOXGR)These variables typically carry through from AE SDTM with controlled
terminology alignment. If the ADaM spec requires recoding, apply case_when()
with explicit # REVIEW: annotations.
adae <- adae |>
mutate(
# AESER: serious AE flag — "Y" or NA only; never "N" per CDISC convention
AESER = if_else(AESER == "Y", "Y", NA_character_),
# AESDTH: AE resulted in death — "Y" or NA
AESDTH = if_else(AESDTH == "Y", "Y", NA_character_),
# AEOUT: outcome — verify CDISC CT values in spec
# REVIEW: Confirm AEOUT coded values align with the CDISC AE outcome codelist
# (RECOVER, NOT RECOVERED/NOT RESOLVED, RECOVERING/RESOLVING, etc.)
AEOUT = AEOUT
)Carry through from AE, applying if_else() for flag recoding to "Y"/NA
convention where applicable.
adae <- adae |>
mutate(
# AEREL: relationship to study treatment — usually "RELATED" / "NOT RELATED"
# REVIEW: Some studies use "POSSIBLE", "PROBABLE" — confirm CT per spec.
AEREL = AEREL,
# AERELN: numeric causality code for sorting/analysis if required by spec
AERELN = case_when(
AEREL == "NOT RELATED" ~ 1L,
AEREL == "RELATED" ~ 2L
),
# AERELNST: causality to non-study treatment if applicable
# Uncomment if in scope: AERELNST = AERELNST
#
# AEACN: action taken with study treatment
AEACN = AEACN
)PREFL = "Y" when the AE term (AEDECOD) is present in MH prior to treatment start. Requires MH domain. If MH is absent, comment out this section.
# PREFL: pre-existing condition flag from MH
# REVIEW: The matching logic below uses AEDECOD = MHDECOD. Confirm the
# match strategy with the medical reviewer — some specs require AEBODSYS
# matching or a more specific term hierarchy.
# Requires: mh <- pharmaversesdtm::mh |> select(-DOMAIN)
#
# mh_terms <- mh |>
# filter(MHSTAT != "HISTORY OF") |> # REVIEW: filter condition is study-specific
# distinct(STUDYID, USUBJID, MHDECOD)
#
# adae <- adae |>
# derive_var_merged_exist_flag(
# dataset_add = mh_terms,
# by_vars = exprs(STUDYID, USUBJID, AEDECOD = MHDECOD),
# new_var = PREFL,
# condition = TRUE,
# true_value = "Y",
# false_value = NA_character_,
# missing_value = NA_character_
# )If the spec requires a worst-case severity flag per subject (AMAXSEVFL) or
cumulative AE counts, derive using derive_var_extreme_flag().
# AMAXSEVFL: flag for the most severe AE per subject within TRTEMFL == "Y"
# REVIEW: Confirm whether worst-severity flag applies to TEAE only or all AEs.
adae <- adae |>
restrict_derivation(
derivation = derive_var_extreme_flag,
args = params(
by_vars = exprs(STUDYID, USUBJID),
order = exprs(desc(AESEVN), ASTDT, AESEQ),
new_var = AMAXSEVFL,
mode = "first"
),
filter = TRTEMFL == "Y"
)If the spec includes standardised MedDRA queries (SMQs) or custom AE grouping
flags, derive using derive_vars_query() with a query dataset constructed from
the specification.
# SMQ / grouping flags via derive_vars_query()
# REVIEW: SMQ membership lists are sponsor-defined; confirm the query dataset
# structure and variable names against the ADaM ADAE spec and MedDRA version.
# Requires: queries_smq — a data frame in admiral query format
# (see admiral::queries_mednav for structure reference)
#
# adae <- adae |>
# derive_vars_query(
# dataset_queries = queries_smq
# )Assign a within-subject sequence number. AE.AESEQ from SDTM is typically carried through to ADaM — do not re-derive unless the spec explicitly requires a different ordering.
# REVIEW: If AESEQ from AE SDTM is the correct sequence variable per spec,
# carry it through directly. If the spec requires a re-derived sequence,
# use derive_var_obs_number() instead.
# adae <- adae |>
# derive_var_obs_number(
# new_var = AESEQ,
# by_vars = exprs(STUDYID, USUBJID),
# order = exprs(ASTDT, AETERM),
# check_type = "warning"
# )# Required variable check
required_vars <- c(
"STUDYID", "USUBJID",
"AETERM", "AEDECOD", "AEBODSYS",
"ASTDT", "ASTDTF", "AENDT", "AENDTF",
"ASTDY", "AENDY",
"AESEV", "AESER",
"TRTEMFL",
"TRT01P", "TRT01A"
)
missing_vars <- setdiff(required_vars, names(adae))
if (length(missing_vars) > 0) {
stop("Missing required ADAE variables: ", paste(missing_vars, collapse = ", "))
}
# Record count sanity check — ADAE should have at least as many records as AE
stopifnot(nrow(adae) >= nrow(ae))
# Apply variable labels — use xportr for submission context
# adae <- adae |>
# xportr_label(metacore_obj, domain = "ADAE") |>
# xportr_type(metacore_obj, domain = "ADAE") |>
# xportr_length(metacore_obj, domain = "ADAE") |>
# xportr_order(metacore_obj, domain = "ADAE")
# xportr_write(adae, "adae.xpt", label = "Adverse Events Analysis Dataset")Generated code must meet these standards for QC-readiness:
# ASTDT: AE onset analysis date from AE.AESTDTC)# REVIEW: comments where protocol-specific
decisions are required (TEAE window, causality coding, SMQ membership,
PREFL matching logic, severity ordering)stopifnot() for critical assertions (AE not
empty, required variables present, row count preserved after merge)|> and exprs() for admiral verb argumentsas.Date() on AESTDTC or AEENDTC — always use derive_vars_dt()
to handle partial dates with proper imputationflag_imputation = "auto" without including ASTDTF and AENDTF in the
output — imputation flags must appear in the dataset per ADaM specificationend_window in derive_var_trtemfl() without a # REVIEW:
annotation — this is always protocol-specific and must come from the SAPAESER == "N" comparisons — SDTM AE.AESER is "Y" or "" (blank),
not "Y" or "N"; align to ADaM convention of "Y" or NA in outputASTDT - TRTSDT + 1) — use
derive_vars_dy() to ensure correct ADaM study day offset logiccase_when() lookup"N" for any flag variable (TRTEMFL, AESER, AESDTH, PREFL) — CDISC
convention is "Y" or NA, never "N"end_window against the SAP — an
incorrect window silently miscategorises AEs with major safety implicationsderive_vars_merged() calls — causes
variable conflict errorsBefore returning code, verify:
stopifnot() at loadselect(everything())derive_vars_dt() with imputation arguments explicitderive_vars_dy() not manual arithmeticderive_var_trtemfl() with end_window annotated with # REVIEW:"Y" / NA convention# REVIEW: comments placed at protocol-specific decision pointsstop() on failure© RConsortium, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (references) in admiral/admiral-adae of RConsortium/pharma-skills.
Open the folder on GitHubat commit ae5d83b
Admiral Adae next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Admiral Adae this skillRConsortium/pharma-skills | 120 | — | ~3.9k | Automated safety check: Pass | MIT | |
| Reporting Adverse Eventsmaziyarpanahi/openmed | 5.5k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Eventscoreyhaines31/marketingskills | 54k | — | ~3k | Automated safety check: Pass | MIT | |
| Adverse Event Narrativeaipoch/medical-research-skills | 1.9k | — | ~3k | Automated safety check: Pass | MIT | |
| Event Sourcing Architectdavila7/claude-code-templates | 33k | 4 repos | ~659 | Automated safety check: Pass | MIT | |
| Event Store Designwshobson/agents | 40k | 9 repos | ~828 | Automated safety check: Pass | MIT |
maziyarpanahi/openmed
Structures adverse-event mentions that OpenMed extracts into FAERS / ICH E2B(R3) reportable fields — suspect drug, reaction (MedDRA PT), seriousness criteria, and outcome.
coreyhaines31/marketingskills
When the user wants to plan, run, sponsor, speak at, or get pipeline from events — webinars, conferences, trade shows, meetups, dinners, workshops, virtual summits, or user conferences.
aipoch/medical-research-skills
Generates CIOMS I-compliant ICSR narratives from adverse event case data for FDA and EMA regulatory submission.
davila7/claude-code-templates
Expert in event sourcing, CQRS, and event-driven architecture patterns.
wshobson/agents
Designs event stores for event-sourced systems: requirements, a comparison of EventStoreDB, PostgreSQL, Kafka, DynamoDB and Marten, and stream and versioning practices.
Arize-ai/phoenix
Understand what a Phoenix dataset is and reason well about its examples, outputs, splits, and how it feeds evaluators and experiments.
RConsortium/pharma-skills
Audit R code that prepares CSR/TLF statistics for SAS-compatible rounding compliance (ties away from zero, round-once-at-display, fixed trailing-zero precision).
RConsortium/pharma-skills
Converts one or more GitHub Issues into standardized benchmark data using automated scripts.
RConsortium/pharma-skills
Generate a concise weekly progress summary for the pharmaskills repository.
RConsortium/pharma-skills
Derives an ADaM Subject-Level Analysis Dataset (ADSL) using the {admiral} R package and pharmaverse ecosystem.
RConsortium/pharma-skills
Derives ADaM Basic Data Structure (BDS) datasets using the {admiral} R package.
RConsortium/pharma-skills
Derives CDISC SDTM domains from raw clinical (EDC/eCRF) data using the {sdtm.oak} R package.
Derives an ADaM Adverse Events Analysis Dataset (ADAE) using the {admiral} R package and pharmaverse ecosystem. Admiral Adae is an agent skill from RConsortium/pharma-skills. Derives an ADaM Adverse Events Analysis Dataset (ADAE) using the {admiral} R package and pharmaverse ecosystem.
Admiral Adae fits situations like: A user needs to create ADAE from SDTM AE and supporting domains; derive standard adverse event analysis variables (severity; treatment-emergent flags; study day variables.
Run `npx skills add RConsortium/pharma-skills --skill admiral-adae -a claude-code`. Or copy the skill folder (admiral/admiral-adae in RConsortium/pharma-skills) into .claude/skills/admiral-adae in your project. Claude Code loads it when a task matches its description.
Run `npx skills add RConsortium/pharma-skills --skill admiral-adae -a codex`. Or copy the skill folder (admiral/admiral-adae in RConsortium/pharma-skills) into .agents/skills/admiral-adae in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add RConsortium/pharma-skills --skill admiral-adae -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/admiral-adae, .gemini/skills/admiral-adae, .github/skills/admiral-adae and .opencode/skills/admiral-adae in your project.
SKILL.md names no scripts, command-line tools or credentials: Admiral Adae is instructions for the agent only. Compatibility (from SKILL.md): Requires R with admiral, dplyr, lubridate, and pharmaversesdtm installed. Designed for use in a GxP-compliant environment with access to SDTM datasets, a completed ADSL dataset, and an ADaM ADAE specification. .
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Admiral Adae is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Admiral Adae: Reporting Adverse Events (maziyarpanahi/openmed, 5.5k stars), Events (coreyhaines31/marketingskills, 54k stars), Adverse Event Narrative (aipoch/medical-research-skills, 1.9k stars) and Event Sourcing Architect (davila7/claude-code-templates, 33k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
RConsortium (a GitHub organization) maintains it in RConsortium/pharma-skills, which has 120 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 4, 2026.
Source: RConsortium/pharma-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.