Agent skill

Adverse Event Narrative

by aipoch in aipoch/medical-research-skills

Generates CIOMS I-compliant ICSR narratives from adverse event case data for FDA and EMA regulatory submission.

MITAuto-check passedResearch & Science

Install Adverse Event Narrative

skills CLI
$ npx skills add aipoch/medical-research-skills --skill adverse-event-narrative -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install aipoch/medical-research-skills adverse-event-narrative --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/aipoch/medical-research-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/'scientific-skills/Academic Writing/adverse-event-narrative' .claude/skills/adverse-event-narrative && rm -rf skills-src

Use ~/.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/

Facts

Skill name
adverse-event-narrative
GitHub stars
1.9k
Token cost
~3k tokens
SKILL.md length
1,180 words
Files
10 (incl. scripts, references)
Skills in repo
578
Repo updated
First seen
Licence
MIT

At a glance

Generates CIOMS I-compliant ICSR narratives from adverse event case data for FDA and EMA regulatory submission.

  • Works in 4 steps: CIOMS I Narrative Structure → Temporal Relationship Analysis → Causality Evaluation Support → …
  • Research & Science work in your project
  • SKILL.md covers Quick Check, Audit-Ready Commands, Workflow and Overview, plus 11 more sections
  • Runs Python scripts from its folder; calls python

What it does

Adverse Event Narrative is an agent skill from aipoch/medical-research-skills. Generates CIOMS I-compliant ICSR narratives from adverse event case data for FDA and EMA regulatory submission. Includes temporal analysis, MedDRA coding, causality assessment using WHO-UMC or Naranjo criteria, and multi-format output.

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts and reference files (for example `POLISH_CHANGELOG.md`, `eval_report_adverse-event-narrative_result.json` and `references/CIOMS_I_Guidelines.md`).

It sits in Research & Science. The repository describes itself as: Hundreds of agent skills for medical research, including protocol design, data analysis, evidence insights, and academic writing. The licence is MIT.

When your agent uses it

  • Research & Science work in your project

Example prompts

  • “Use the adverse-event-narrative skill to generate CIOMS I-compliant ICSR narratives from adverse event case data for FDA and EMA regulatory submission”
  • “/adverse-event-narrative”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. CIOMS I Narrative Structure
  2. Temporal Relationship Analysis
  3. Causality Evaluation Support
  4. Multi-Format Output

What it can do on your machine

Read from SKILL.md and the folder at commit 686e09d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Adverse Event Narrative loads about 3k tokens when it runs, and up to ~6.3k if it reads all its reference files. Until then it costs about 65 tokens; SKILL.md has 1,180 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~65
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.3k

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.

Safety

Auto-check passed

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); the scripts in this folder are not scanned.

SKILL.md

The full file from aipoch/medical-research-skills at commit 686e09d, republished under its MIT licence (© aipoch). 1,180 words, ~3,032 tokens.

Download SKILL.mdSave it as .claude/skills/adverse-event-narrative/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.
name
adverse-event-narrative
description
Generates CIOMS I-compliant ICSR narratives from adverse event case data for FDA and EMA regulatory submission. Includes temporal analysis, MedDRA coding, causality assessment using WHO-UMC or Naranjo criteria, and multi-format output.
license
MIT
author
AIPOCH

Source: https://github.com/aipoch/medical-research-skills

Adverse Event Narrative Generator

Quick Check

Use this command to verify that the packaged script entry point can be parsed before deeper execution.

bash
python -m py_compile scripts/main.py

Audit-Ready Commands

Use these concrete commands for validation. They are intentionally self-contained and avoid placeholder paths.

bash
python -m py_compile scripts/main.py
python scripts/main.py --help
python scripts/main.py --help
python scripts/main.py --validate-only --help

Workflow

  1. Collect case data: Receive adverse event case data including: patient demographics, medical history, concomitant medications, suspect drug(s) with dosing, adverse event description, diagnostic results, treatment, dechallenge/rechallenge dates, outcome, and causality assessment.
  2. Validate completeness: Check that required CIOMS I fields are present (case ID, patient age/sex, suspect drug, AE with MedDRA PT, dates). Flag missing fields.
  3. Checkpoint: Display case summary and list of missing fields to user. Confirm whether to proceed with partial data or wait for complete information.
  4. Reconstruct timeline: Analyze temporal relationships: time to onset, dechallenge response, rechallenge response, temporal plausibility with known drug profile.
  5. Generate narrative: Compose CIOMS I-compliant narrative in all 10 standard sections (demographics → causality assessment). Use objective, factual language; reserve opinion for causality section only.
  6. Checkpoint: User reviews draft narrative for clinical accuracy and verifies that no patient identifiers remain.
  7. Format output: Generate in requested format (CIOMS I, ICH E2B R3, FDA MedWatch 3500A). Apply MedDRA coding.
  8. Fallback: If case data is too incomplete for narrative generation, output a structured checklist of required fields with example entries and a partial narrative for completed sections only.

Overview

Regulatory-grade narrative generation tool that transforms adverse event case data into CIOMS-compliant ICSR narratives suitable for submission to FDA, EMA, and other health authorities.

Key Capabilities:

  • CIOMS I Compliance: Standardized narrative structure per international guidelines
  • ICH E2B Integration: Electronic submission format compatibility
  • Temporal Analysis: Timeline reconstruction and causality assessment
  • Medical Accuracy: Clinical terminology and MedDRA coding
  • Multi-Case Processing: Batch narrative generation for periodic reporting
  • Quality Validation: Automated checks for completeness and consistency

When to Use

  • Use this skill when writing adverse event narratives for regulatory submission (FDA, EMA, CIOMS I).
  • Use this skill when preparing ICSR reports or generating safety narratives with MedDRA coding and causality assessment.
  • Use this skill when the user says "AE narrative", "ICSR", "CIOMS narrative", "safety report", or "MedWatch narrative".

Core Capabilities

1. CIOMS I Narrative Structure

Generate standardized sections per CIOMS guidelines:

python
from scripts.narrative_generator import NarrativeGenerator

generator = NarrativeGenerator()

# Generate complete narrative
narrative = generator.generate(
    case_data=case_json,
    format="cioms_i",  # or "ich_e2b", "fda_medwatch"
    include_meddra=True
)

narrative.save("ICSR_2024_001_narrative.txt")

Standard Sections:

  1. Patient Demographics - Age, sex, weight, relevant characteristics
  2. Medical History - Significant pre-existing conditions
  3. Concomitant Medications - Other drugs at time of event
  4. Suspect Drug(s) - Medication(s) in question with dosing
  5. Adverse Event - Detailed reaction description with MedDRA terms
  6. Diagnostic Results - Lab values, imaging, procedures
  7. Treatment - Medical management of the event
  8. Dechallenge/Rechallenge - Effect of drug withdrawal/reintroduction
  9. Outcome - Final patient status and sequelae
  10. Causality Assessment - Reporter's relationship evaluation
2. Temporal Relationship Analysis

Reconstruct timeline and assess temporal plausibility:

python
# Analyze temporal relationships
timeline = generator.analyze_timeline(
    drug_start="2024-01-15",
    drug_stop="2024-02-01",
    ae_onset="2024-01-28",
    dechallenge_date="2024-02-01",
    rechallenge_date=None
)

# Output shows temporal assessment
# "AE onset 13 days after drug initiation, positive dechallenge within 24h"

Assessments Generated:

  • Time to onset (latency period)
  • Dechallenge response (positive/negative/unknown)
  • Rechallenge response (if applicable)
  • Temporal plausibility (consistent with known drug profile)
3. Causality Evaluation Support

Structure causality assessment per WHO-UMC criteria:

python
# Generate causality section
causality = generator.assess_causality(
    case_data=case,
    criteria="who_umc",  # or "naranjo", "cochrane"
    include_rationale=True
)

# Output structured assessment with points for each criterion

WHO-UMC Categories:

  • Certain - Event reproduced on rechallenge
  • Probable/Likely - Reasonable time, positive dechallenge, alternative causes unlikely
  • Possible - Compatible time, but alternative causes possible
  • Unlikely - Incompatible time or alternative cause probable
  • Conditional/Unclassified - Insufficient information
  • Unassessable/Unclassifiable - Data contradictory or incomplete
4. Multi-Format Output

Generate narratives for different regulatory contexts:

python
# FDA MedWatch Form 3500A
fda_narrative = generator.generate(
    case_data=case,
    format="fda_medwatch",
    max_length=2000  # Character limit
)

# EMA E2B(R3) electronic format
ema_narrative = generator.generate(
    case_data=case,
    format="ich_e2b",
    version="R3"
)

# CIOMS I paper format
cioms_narrative = generator.generate(
    case_data=case,
    format="cioms_i"
)

Quality Checklist

Pre-Generation:

  • Case ID unique and formatted per SOP
  • Patient age/sex complete
  • Suspect drug(s) clearly identified
  • Adverse event(s) coded with MedDRA PT
  • Dates consistent (no future dates)
  • Reporter information included

Narrative Content:

  • All CIOMS I sections present
  • Temporal sequence clear and logical
  • Dechallenge/rechallenge described (if applicable)
  • Lab values with reference ranges
  • Concomitant medications listed
  • Medical history relevant to event
  • Outcome clearly stated
  • Causality assessment justified

Post-Generation:

  • MedDRA terms accurate and current
  • No contradictory information
  • Language objective and factual
  • No speculation or opinion (except causality section)
  • Patient identifiers removed or de-identified
  • CRITICAL: Medical review completed
  • CRITICAL: Causality assessment by qualified physician

Common Pitfalls

Completeness Issues:

  • ❌ Missing dechallenge information → Cannot assess causality

    • ✅ Always document effect after drug discontinuation
  • ❌ Vague temporal information → "Recently started" vs. specific dates

    • ✅ Use exact dates when available
  • ❌ Incomplete concomitant medication list → Alternative causes missed

    • ✅ Include all medications within relevant timeframe

Medical Accuracy Issues:

  • ❌ Incorrect MedDRA coding → Wrong medical concept

    • ✅ Use current MedDRA version; verify with medical reviewer
  • ❌ Confusing correlation with causation → Temporal = causal

    • ✅ Clearly state "temporally associated" vs. "causally related"
  • ❌ Omitting alternative diagnoses → Biased toward drug causation

    • ✅ Include all differential diagnoses considered

Regulatory Issues:

  • ❌ Opinion in narrative body → "Clearly caused by drug"

    • ✅ Reserve opinion for causality section; narrative should be factual
  • ❌ Patient identifiers → HIPAA/privacy violation

    • ✅ De-identify per regulatory requirements
  • ❌ Abbreviations not defined → Assumes reader knowledge

    • ✅ Spell out on first use in each narrative
Show full SKILL.md (424 more words)Show less

References

Available in references/ directory:

  • cioms_i_guidelines.pdf - CIOMS I international reporting standards
  • ich_e2b_specifications.md - ICH E2B(R3) electronic format details
  • meddra_coding_guide.md - MedDRA terminology and coding principles
  • who_umc_causality.md - WHO causality assessment criteria
  • fda_medwatch_guide.md - FDA Form 3500A instructions
  • gvp_module_vi.md - EU Good Pharmacovigilance Practices
  • narrative_templates.md - Example narratives by case type

Scripts

Located in scripts/ directory:

  • main.py - CLI interface for narrative generation
  • narrative_generator.py - Core narrative composition engine
  • temporal_analyzer.py - Timeline reconstruction and analysis
  • causality_assessor.py - Causality evaluation support
  • meddra_integrator.py - Medical terminology and coding
  • validator.py - Completeness and quality checks
  • format_converter.py - Convert between CIOMS, E2B, MedWatch formats
  • batch_processor.py - Multi-case narrative generation

Limitations

  • Medical Review Required: Generates draft only; requires physician review before submission
  • Causality Assessment: Structures reporter's assessment; does not perform independent causality evaluation
  • MedDRA Version: Uses installed MedDRA version; may not have latest terms
  • Language: Optimized for English; other languages may need translation
  • Literature Integration: Does not automatically search literature for similar cases
  • Signal Detection: Individual case narratives only; aggregate analysis requires other tools
  • Legal Proceedings: Not suitable for litigation support or expert witness reports

⚠️ CRITICAL: This tool generates draft narratives for efficiency. All adverse event narratives require review by qualified drug safety physicians before regulatory submission. Causality assessment must be performed by healthcare professionals with access to complete medical records.

Output Requirements

Every final response should make these items explicit when they are relevant:

  • Objective or requested deliverable
  • Inputs used and assumptions introduced
  • Workflow or decision path
  • Core result, recommendation, or artifact
  • Constraints, risks, caveats, or validation needs
  • Unresolved items and next-step checks

Error Handling

  • If required inputs are missing, state exactly which fields are missing and request only the minimum additional information.
  • If the task goes outside the documented scope, stop instead of guessing or silently widening the assignment.
  • If scripts/main.py fails, report the failure point, summarize what still can be completed safely, and provide a manual fallback.
  • Do not fabricate files, citations, data, search results, or execution outcomes.

Input Validation

This skill accepts requests that match the documented purpose of adverse-event-narrative and include enough context to complete the workflow safely.

Do not continue the workflow when the request is out of scope, missing a critical input, or would require unsupported assumptions. Instead respond:

adverse-event-narrative only handles its documented workflow. Please provide the missing required inputs or switch to a more suitable skill.

Response Template

Use the following fixed structure for non-trivial requests:

  1. Objective
  2. Inputs Received
  3. Assumptions
  4. Workflow
  5. Deliverable
  6. Risks and Limits
  7. Next Checks

If the request is simple, you may compress the structure, but still keep assumptions and limits explicit when they affect correctness.

© aipoch, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 9 other files (scripts, references) in scientific-skills/Academic Writing/adverse-event-narrative of aipoch/medical-research-skills.

  • SKILL.md
  • POLISH_CHANGELOG.md
  • eval_report_adverse-event-narrative_result.json
  • references/CIOMS_I_Guidelines.md
  • references/ICSR_Template.md
  • references/MedDRA_Reference.md
  • references/Quick_Reference.md
  • references/sample_case_001.json
  • references/sample_case_minimal.json
  • scripts/main.py

Open the folder on GitHubat commit 686e09d

Compare with similar skills

Adverse Event Narrative 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.

Adverse Event Narrative compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Adverse Event Narrative this skillaipoch/medical-research-skills1.9k—~3kAutomated safety check: PassMIT
Hypothesis Generationspacering-net/codeg3.9k14 repos~3.6kAutomated safety check: NotesMIT
GitHub Deep Researchbytedance/deer-flow84k4 repos~1.3kAutomated safety check: PassMIT
Nature Paper CardYuan1z0825/nature-skills47k2 repos~2.1kAutomated safety check: PassApache-2.0
Content Research Writerweapp-tailwindcss/weapp-tailwindcss1.9k25 repos~3.5kAutomated safety check: PassMIT
Last30daysmvanhorn/last30days-skill64k—~7.9kAutomated safety check: NotesMIT

Similar skills

  • Hypothesis Generation

    spacering-net/codeg

    Structured hypothesis formulation from observations. An agent skill from spacering-net/codeg.

    3.9k GitHub starsUsed in 14 repos~3.6k tokens
    Research & ScienceAuto-check: notes
  • GitHub Deep Research

    bytedance/deer-flow

    Researches a GitHub repository over four rounds using the GitHub API and web search, then writes a structured markdown report with timeline, metrics and Mermaid diagrams.

    84k GitHub starsUsed in 4 repos~1.3k tokens
    Research & ScienceAuto-check passed
  • Nature Paper Card

    Yuan1z0825/nature-skills

    Builds a structured deep-reading card for one scientific paper, covering methods, how experiments support claims, limitations and research ideas, with a script to prepare the source.

    47k GitHub starsUsed in 2 repos~2.1k tokens
    Research & ScienceAuto-check passed
  • Content Research Writer

    weapp-tailwindcss/weapp-tailwindcss

    Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time feedback on each section.

    1.9k GitHub starsUsed in 25 repos~3.5k tokens
    Research & ScienceAuto-check passed
  • Last30days

    mvanhorn/last30days-skill

    Research what people actually say about any topic in the last 30 days.

    64k GitHub stars~7.9k tokensUpdated today
    Research & ScienceAuto-check: notes
  • Peer Review

    spacering-net/codeg

    Structured manuscript/grant review with checklist-based evaluation.

    3.9k GitHub starsUsed in 17 repos~5.9k tokens
    Research & ScienceAuto-check: notes

More from aipoch/medical-research-skills

All 578 skills in this repo
  • Academic Poster Generator

    aipoch/medical-research-skills

    Complete workflow for generating academic research posters from PDF literature; use when you need to extract paper content from PDFs and produce a LaTeX-based poster…

    1.9k GitHub stars~2.2k tokensUpdated 23 days ago
    Auto-check passed
  • Diagnostic Study Quality Assessment Quadas

    aipoch/medical-research-skills

    Analyzes clinical diagnostic accuracy studies for bias using the QUADAS-2 tool.

    1.9k GitHub stars~1.4k tokensUpdated 23 days ago
    Auto-check passed
  • Exploratory Data Analysis

    aipoch/medical-research-skills

    Perform comprehensive exploratory data analysis on scientific data files across 200+ file formats.

    1.9k GitHub stars~3.7k tokensUpdated 23 days ago
    Auto-check passed
  • Iso Certification

    aipoch/medical-research-skills

    A toolkit for preparing ISO 13485:2016 certification documentation for medical device QMS.

    1.9k GitHub stars~1.8k tokensUpdated 23 days ago
    Auto-check passed
  • Journal Skills

    aipoch/medical-research-skills

    Recommends target journals for manuscript submission by analyzing the paper topic/abstract and the journal distribution of similar PubMed literature; use when users ask for journal…

    1.9k GitHub stars~1.7k tokensUpdated 23 days ago
    Auto-check passed
  • Latex Posters

    aipoch/medical-research-skills

    Creates academic-poster writing packages for LaTeX using beamerposter, tikzposter, or baposter.

    1.9k GitHub stars~1.3k tokensUpdated 23 days ago
    Auto-check passed

Questions about Adverse Event Narrative

What does Adverse Event Narrative do?

Generates CIOMS I-compliant ICSR narratives from adverse event case data for FDA and EMA regulatory submission. Adverse Event Narrative is an agent skill from aipoch/medical-research-skills. Generates CIOMS I-compliant ICSR narratives from adverse event case data for FDA and EMA regulatory submission.

When should I use Adverse Event Narrative?

Adverse Event Narrative fits situations like: research & Science work in your project.

How do I install Adverse Event Narrative in Claude Code?

Run `npx skills add aipoch/medical-research-skills --skill adverse-event-narrative -a claude-code`. Or copy the skill folder (scientific-skills/Academic Writing/adverse-event-narrative in aipoch/medical-research-skills) into .claude/skills/adverse-event-narrative in your project. Claude Code loads it when a task matches its description.

How do I install Adverse Event Narrative in Codex?

Run `npx skills add aipoch/medical-research-skills --skill adverse-event-narrative -a codex`. Or copy the skill folder (scientific-skills/Academic Writing/adverse-event-narrative in aipoch/medical-research-skills) into .agents/skills/adverse-event-narrative in your project. Codex loads it when a task matches its description.

Can I use Adverse Event Narrative in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aipoch/medical-research-skills --skill adverse-event-narrative -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/adverse-event-narrative, .gemini/skills/adverse-event-narrative, .github/skills/adverse-event-narrative and .opencode/skills/adverse-event-narrative in your project.

What does Adverse Event Narrative need to run?

Going by SKILL.md and its folder, Adverse Event Narrative needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3.

Does Adverse Event Narrative access the network?

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.

Is Adverse Event Narrative safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Adverse Event Narrative use?

Adverse Event Narrative is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Adverse Event Narrative use?

About 3k tokens (SKILL.md is roughly 12k 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 3.3k tokens, read only when the agent opens those files.

What are the alternatives to Adverse Event Narrative?

Skills that share tags, products or a category with Adverse Event Narrative: Hypothesis Generation (spacering-net/codeg, 3.9k stars), GitHub Deep Research (bytedance/deer-flow, 84k stars), Nature Paper Card (Yuan1z0825/nature-skills, 47k stars) and Content Research Writer (weapp-tailwindcss/weapp-tailwindcss, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Adverse Event Narrative?

aipoch (a GitHub organization) maintains it in aipoch/medical-research-skills, which has 1,937 GitHub stars. The repository holds 578 skills in this directory. The repository was last updated on September 17, 2026.

Source: aipoch/medical-research-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.