---
name: rdkit-triage
description: Triage small molecules for drug-likeness. Use when the user gives SMILES strings, a .smi file, or a CSV of compounds and wants them validated, standardized (salt stripping, neutralization), profiled (MW, cLogP, HBD/HBA, TPSA, rotatable bonds, QED, Lipinski, Veber) or screened for PAINS / Brenk structural alerts. Triggers - "triage these compounds", "check drug-likeness", "Lipinski", "PAINS filter", "clean up this SMILES list", "which hits are worth following up".
---

# Compound triage

Run the bundled script; do not reimplement the chemistry inline.

```bash
uv run "${CLAUDE_PLUGIN_ROOT}/scripts/triage.py" INPUT -o triage.csv [--smiles-col COLUMN]
```

- `INPUT` is a CSV (SMILES column defaults to `smiles`; an `id`/`name`/`chembl_id` column is used as the ID if present), a `.smi`/`.txt` file (`SMILES [id]` per line), or a single quoted SMILES string.
- If the CSV's SMILES column has another name, inspect the header first and pass `--smiles-col`.
- Requires `uv`. If missing, tell the user to install it (`curl -LsSf https://astral.sh/uv/install.sh | sh`); RDKit is fetched automatically on first run.

## Verdicts

| verdict | rule |
|---|---|
| pass | 0 Lipinski violations, Veber OK, no alerts |
| review | 1 Lipinski violation, or Veber fail, or Brenk alert(s) |
| fail | >1 Lipinski violations, or any PAINS alert |
| invalid | SMILES did not parse |

## Reporting back

1. Quote the script's summary line.
2. Show a compact markdown table of the most relevant rows (failures and reviews first, max ~15 rows; columns id, verdict, MW, cLogP, TPSA, QED, alerts).
3. Explain the top alerts in one line each in medicinal-chemistry terms (e.g. *ene_rhod*: rhodanine Michael acceptor, frequent assay interference).
4. Point to the full CSV path.

Remind the user that rules of thumb are not verdicts: Brenk/PAINS flags warrant a closer look, not automatic rejection, and many approved drugs (natural products, biologics-adjacent, beyond-Rule-of-5 macrocycles) violate Lipinski.
