CommunityCodierung & Entwicklunggithub.com

DrunkMan9o/agent-skills

Gib einen Satz Kristallisationsprozessparameter ein (oder fordere direkt eine Optimierung an) und erhalte die vollständige Pareto-Front mit mehreren Nebenbedingungen (Ausbeute ≥60 %, Reinheit ≥99 %, Partikelgröße D50 ∈ [10,50] μm, Auflösungs-Ähnlichkeitsfaktor f2 ≥50) sowie prognostizierte Qualitätskennzahlen und einen quantitativen Vergleich mit der Literaturbasislinie.

Was ist agent-skills?

Dieses Skill automatisiert die mehrkriterielle Optimierung von pharmazeutischen Kristallisationsprozessen. Es basiert auf einem interpretierbaren, deterministischen kinetischen Modell (digitaler Zwilling), das sechs Prozessvariablen auf vier Qualitätsindikatoren (Ausbeute, Reinheit, Partikelgröße D50, Auflösungs-Ähnlichkeitsfaktor f2) abbildet. Der Workflow orchestriert die Identifikation der Benutzeranforderung, den Aufruf eines Rechenkerns (NSGA-II Pareto-Front-Optimierung plus Gaußprozess-Bayessche Optimierung) und die Interpretation der Ergebnisse inklusive einer unabhängigen Prüfung durch einen Review-Agenten. Das Skill ist vollständig in Python implementiert, benötigt keine externen API-Aufrufe und wird über ein CLI mit JSON-Eingabe gesteuert. Es unterstützt die Modi „evaluate“, „optimize“, „sensitivity“, „agents“ und „explain“ und liefert eine vollständige, reproduzierbare und überprüfbare Optimierungslösung für Kristallisationsparameter unter Einhaltung regulatorischer Grenzwerte.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/DrunkMan9o/agent-skills/tree/HEAD/skills/pharma-crystallization-optimization

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Mehrkriterielle Optimierung von pharmazeutischen Kristallisationsprozessen

Verwendung

Wandelt eine Kristallisationsprozess-Optimierungsanforderung von „einem Satz Parameter / einem zu optimierenden Prozessschritt“ in „ein vollständiges, reproduzierbares und quantitativ vergleichbares optimales Prozessschema (vollständige Pareto-Front)“ um.

Kernstück ist ein interpretierbares deterministisches kinetisches Modell (digitaler Zwilling), das 6 Prozessvariablen auf 4 Qualitätsindikatoren (Ausbeute / Reinheit / Partikelgröße D50 / Auflösungs-Ähnlichkeitsfaktor f2) abbildet. Dieses SKILL orchestriert: Identifikation der Anforderung → Aufruf des Rechenkerns → Interpretation der Pareto-Front → Ausgabe des Soll-Ist-Vergleichs vor/nach der Optimierung.

Kernmethode (interpretierbarer kinetischer Kern)

ModulImplementierungLiteratur-Anker
Löslichkeitskurvevan't Hoff: C*(T)=4.48·exp[8.3/R·(1/293−1/T)]A-Stufe: Biowaiver Monograph 2017 (20°C 4.48 mg/mL)
KeimbildungsrateB = kb·max(σ−0.3,0)⁴ + kb2·G·μ2·f_mixing(Rührung)Primäre klassische Theorie + sekundäre Wachstumskopplung; Grenze S=4.5 (Tian Binbin 2015)
WachstumsrateG = kg·σ^m, m=1.9955 (BCF-Schraubenversetzungswachstum)A-Stufe: Tian Binbin et al., Chemical Engineering 2015, gemessen
Populationsbilanzgleichung (PBE)Momentenmethode μ0…μ4 Rekursion, vollständig gekoppelte Konzentrations-Momenten-Massenbilanz-ErhaltungB-Stufe: Randolph & Larson Momentenmethode

Optimierungsmethode (mehrkriteriell + Multi-Agent)

  • Hauptausgabe: NSGA-II vollständige Pareto-Front mit 4 Zielen (80 nicht-dominierte Lösungen + Kniepunkt + max-f₂/max-Ausbeute-Extremwerte), Ziele = Ausbeute↑ / Reinheit↑ / f2↑ / Partikelgröße bei 30μm↑.
  • Hilfsmittel: Gaußprozess (GP, RBF-Kernel + weißes Rauschen, Hyperparameter via log-marginal likelihood LML gelernt) + Bayes'sche Optimierung (EGO-artiges EI) als skalarisierter Referenzpunkt zur Kreuzvalidierung.
  • Fünf-Agenten-Pipeline: Literature (Literatur-Anker-Wächter) → Kinetics Modeler (PBE-Lösung + Massenbilanz-Selbstprüfung) → Optimizer (Pareto-Front) → Risk/Regulatory (Regulatorische Kriterien + CQA) → Reviewer (Unabhängige Prüfung, PASS/FAIL-Entscheidung).
  • Sensitivitätsanalyse: Robustheitsbewertung unter Störungen von Temperatur ±1°C / pH ±0,1 / Abkühlrate ±10%.

Auslösebedingungen (Wann dieses SKILL laden)

Das SKILL wird geladen, wenn eines der folgenden Szenarien zutrifft:

  • Der Benutzer gibt Kristallisationsprozessparameter an und fordert eine Bewertung der Qualitätsindikatoren oder die Prüfung auf Einhaltung der Vorgaben.
  • Der Benutzer fordert eine „Optimierung / Suche / Optimierung“ der Prozessparameter einer Kristallisationsstufe an.
  • Der Benutzer erwähnt Qualitätsziele wie Ausbeute / Reinheit / Partikelgröße D50 / Auflösungs-f2 im Zusammenhang mit Kristallisation.
  • Der Benutzer fordert eine Bewertung der Auflösungsähnlichkeit (f2) zwischen Generikum und Originalpräparat an.
  • Der Benutzer stellt eine Referenz-Auflösungskurve oder eine Literaturbasislinie zur Verfügung und fordert einen Vergleich an.

Triggerwörter: Kristallisationsprozessoptimierung, Kristallisationsparametersuche, mehrkriterielle Prozessoptimierung, Generikakristallisation, Partikelgrößenfenster, Auflösungs-f2, Abkühlkurve, Impfkristallstrategie, Übersättigungskontrolle, Amoxicillin-Kristallisation, Pareto-Front, Populationsbilanz.

Ein- und Ausgabeformat

Eingabe

Nachdem das SKILL von der KI in der Sitzung geladen wurde, wird der Rechenkern durch Ausführen von scripts/crystallization.py (Übergabe von JSON über Standardeingabe) gesteuert. CLI-Eingabeprotokoll:

{
  "mode": "evaluate | optimize | sensitivity | agents | dissolution_plot | explain",
  "params": {                       // Im Modus „evaluate“ erforderlich, 6 Prozessvariablen
    "T_cryst_C": 15,                // Kristallisationstemperatur °C, [5, 25]
    "r_cool_C_per_min": 0.2,        // Abkühlrate °C/min, [0.05, 1.0]
    "S0": 1.8,                      // Anfangsübersättigung (dimensionslos), [1.2, 2.5]
    "seed_wt_pct": 2,               // Impfkristallmenge Masse-%, [0, 5.0]
    "stir_rpm": 300,                // Rührgeschwindigkeit rpm, [100, 600]
    "hold_t_min": 120               // Haltezeit der Kristallisation min, [30, 240]
  },
  "seed": 42                        // Optional im Modus optimize/agents, Zufallsgenerator-Saat (Standard 42, deterministisch reproduzierbar)
}

Ausgabe

Der Rechenkern gibt über stdout eine einzelne JSON-Zeile aus. Beispiel für mode=optimize, Kernfelder:

{
  "params": {"T_cryst_C": 5.9, "r_cool_C_per_min": 0.11, "S0": 1.9, "seed_wt_pct": 4.58, "stir_rpm": 586, "hold_t_min": 238},
  "metrics": {"yield_pct": 67.75, "purity_pct": 99.44, "D50_um": 44.26, "D90_um": 116.0, "f2": 79.13},
  "score": 174.88,
  "pareto": {"n_pareto": 80, "knee_point": {...}, "extremes": {"max_f2": {...}, "max_yield": {...}}, "pareto_front": [...]},
  "agents": {"literature": {...}, "kinetics": {...}, "optimizer": {...}, "risk_regulatory": {...}, "reviewer": {"verdict": "PASS", ...}},
  "sensitivity": {"robustness": {"conclusion": "Robust: f2 bleibt ≥50 unter Störungen von drei Faktoren", ...}},
  "surrogate_cv": {"r2_mean": 0.74, ...},
  "bo_trace": [...],
  "cqa_coverage": {...}
}

Die KI interpretiert das JSON-Ergebnis als menschenlesbare Soll-Ist-Vergleichsschlussfolgerung. Das Format folgt dem Abschnitt „Ergebnisinterpretation“ dieser Datei.

Ausführungsschritte (Standard-Workflow)

In der angegebenen Reihenfolge ausführen, wobei das Ergebnis des vorherigen Schritts die nächste Aktion bestimmt:

  1. Anforderung identifizieren: Ziel-API und Prozessschritt bestätigen; entscheiden, ob der Benutzer „einzelne Parameter bewerten“ oder „optimale Parameter suchen“ möchte.
  2. Basislinie bestimmen: Klassische Literatur-Prozessbasislinie (oder vom Benutzer bereitgestellt) auslesen; Standard-Amoxicillin-Basislinie siehe references/tuning-guide.md.
  3. Mehrkriterielle Optimierung (optimize): mode=optimize aufrufen, Hauptausgabe ist die vollständige Pareto-Front (NSGA-II, 80 nicht-dominierte Lösungen).
  4. Ergebnisbewertung (evaluate): Für Kandidatenlösungen mode=evaluate aufrufen, checks.all_satisfied und PBE-Prozessgrößen überprüfen.
  5. Unabhängige Prüfung: Der Reviewer-Agent prüft die Pareto-Optimalität und Machbarkeit der Front unabhängig und gibt ein PASS/FAIL aus.
  6. Schlussfolgerung ausgeben: Pareto-Front + Kniepunkt/Extremwerte + Vier-Indikatoren-Vorher-Nachher-Vergleich + Sensitivitätsanalyse-Schlussfolgerung + Randbedingungen angeben.

Abhängigkeiten

TypAbhängigkeitBeschreibung
LaufzeitPython 3 (python3 / python / py eines verfügbar)Ausführung des Rechenkerns
NumerikbibliothekNumPy 2.5.4Vektorisierte Operationen für GP und NSGA-II (pip install numpy==2.5.4)
Kern-Dateiscripts/crystallization.pyInterpretierbarer kinetischer Kern (PBE) + Mehrkriterielle Optimierung + Fünf-Agenten-System, die einzige ausführbare Logik dieses SKILLs
Referenzdokumentationreferences/install-and-usage.mdInstallation, Registrierung, Nutzungsbeispiele
Referenzdokumentationreferences/tuning-guide.mdPhysikalische Bedeutung, Wertebereiche und Auswirkungen aller einstellbaren Parameter
Externe RessourcenKeineEigenständig, benötigt keine Internetverbindung oder externe API-Aufrufe

Aufruf des Rechenkerns (CLI)

# evaluate: Einzelne Parameter bewerten
echo '{"mode":"evaluate","params":{...}}' | python scripts/crystallization.py

# optimize: Vollständige Pareto-Front ausgeben (Haupt) + GP-BO Referenzpunkt
echo '{"mode":"optimize","seed":42}' | python scripts/crystallization.py

# sensitivity: Sensitivitätsanalyse (T±1°C/pH±0.1/Abkühl±10%)
echo '{"mode":"sensitivity","params":{...}}' | python scripts/crystallization.py

# explain: Vollständige Erklärung, was optimize gemacht hat (Modellkarte/Suchraum/Gewichte/Nebenbedingungen vollständig transparent)
echo '{"mode":"explain"}' | python scripts/crystallization.py

Ergebnisinterpretation

  • pareto.n_pareto → Anzahl der nicht-dominierten Lösungen auf der Pareto-Front; knee_point ist die Lösung mit dem geringsten Abstand zum idealen Punkt (Trade-off-Lösung).
  • metrics.f2 >= 50 → Auflösungskurve ist dem Originalpräparat „ähnlich“ (FDA/CDE Bioäquivalenz-Brückenkriterium); f2 < 50 gilt als unähnlich.
  • agents.reviewer.verdict = PASS → Pareto-Optimalität + Machbarkeit + Basislinienvergleich wurden alle durch die unabhängige Prüfung bestätigt.
  • sensitivity.robustness.f2_stays_above_50 → Ob f2 unter Störungen noch ≥50 ist (Prozessrobustheit).
  • bo_trace → 64 Bewertungen einzeln protokolliert (Parameter/Score/Quelle/GP-Hyperparameter/EI), Optimierungsprozess vollständig nachvollziehbar.

Randbedingungen

Die Ausgabe dieses SKILLs ist ein Werkzeug für die Prozesssuche und Vorscreening, basierend auf einem interpretierbaren kinetischen Kern (kein GMP-Experiment-Ersatz). Die endgültige Bioäquivalenz-Schlussfolgerung muss durch reale Experimente und Einreichungsdaten gestützt werden. Ausbeute-Definition: Die Ausbeute in diesem Modell ist die massenbilanzbasierte Ausbeute (ausgefällter Feststoff / gelöster Feststoff) und unterscheidet sich von der „Gesamtausbeute“ in der Literatur; siehe references/tuning-guide.md.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Verwandte Skills