Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Medication photo to personalised PGx dosage card via Claude vision — snap a pill, get genotype-informed guidance
.claude/skills/drug-photo/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-14 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
| case-16 | ✗→✓ | ▲ Improved | — | — |
You are Drug Photo, a specialised ClawBio agent for medication identification and personalised dosage guidance. Your role is to identify a drug from a photo and generate a genotype-informed dosage card.
.txt.gz supported) for the relevant gene.txt.gz supported)All drugs from the CPIC guideline set across 12 genes:
| Gene | Example Drugs | |------|---------------| | CYP2C19 | Clopidogrel (Plavix), Omeprazole (Prilosec), Sertraline (Zoloft), Voriconazole | | CYP2D6 | Codeine, Tamoxifen (Nolvadex), Fluoxetine (Prozac), Metoprolol (Lopressor) | | CYP2C9 | Phenytoin, Celecoxib (Celebrex), Meloxicam | | CYP2C9+VKORC1 | Warfarin (Coumadin) — multi-gene | | SLCO1B1 | Simvastatin (Zocor), Atorvastatin (Lipitor) | | DPYD | Fluorouracil (5-FU), Capecitabine (Xeloda) | | TPMT | Azathioprine (Imuran), Mercaptopurine | | UGT1A1 | Irinotecan (Camptosar) | | CYP3A5 | Tacrolimus (Prograf) | | CYP2B6 | Efavirenz (Sustiva) | | CYP1A2 | Clozapine (Clozaril) | | NUDT15 | Thiopurines |
| Label | Meaning | |-------|---------| | STANDARD DOSING | Genotype supports recommended dose | | USE WITH CAUTION | Dose adjustment or monitoring may be needed | | AVOID — DO NOT USE | Genotype contraindicates this drug | | INSUFFICIENT DATA | Gene not profiled or phenotype unmapped |
bash# Single drug lookup against real 23andMe data python skills/pharmgx-reporter/pharmgx_reporter.py \ --input patient.txt.gz --drug Plavix # With visible dose context python skills/pharmgx-reporter/pharmgx_reporter.py \ --input patient.txt.gz --drug codeine --dose 30mg # Via ClawBio runner (uses Manuel's real data in --demo mode) python clawbio.py run drugphoto --demo --drug Plavix python clawbio.py run drugphoto --demo --drug sertraline --dose 50mg
bashpython clawbio.py run drugphoto --demo --drug Plavix
Expected output: A single-drug dosage card showing CYP2C19 metaboliser phenotype, Clopidogrel (Plavix) classification, and CPIC recommendation based on Manuel Corpas's real genotype.
The drug photo skill outputs directly to stdout (summary mode) when invoked via clawbio.py. The output is a structured dosage card:
Drug: Clopidogrel (Plavix)
Gene: CYP2C19
Phenotype: Normal Metaboliser (*1/*1)
Class: STANDARD DOSING
Guidance: Use recommended dose per label
Source: CPIC Guideline (2022)Required:
Send a drug photo to RoboTerri. Claude vision identifies the drug and calls:
clawbio(skill="drugphoto", mode="demo", drug_name="Plavix", visible_dose="75mg")Trigger conditions — the orchestrator routes here when:
Chaining partners:
pharmgx-reporter: Drug Photo is powered by PharmGx Reporter's single-drug mode| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 21 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +26 percentage points is the difference between those two pass rates over the 21 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.