Communityコーディング&開発github.com

DrunkMan9o/agent-skills

入力された一連の晶析プロセスパラメータ(または直接最適化リクエスト)から、複数の制約条件(収率≥60%、純度≥99%、粒径D50∈[10,50]μm、溶出類似性因子f2≥50)を満たす完全なパレート最適フロンティアと予測品質指標を出力し、文献ベースラインと定量的に比較します。

agent-skills とは?

このスキルは、医薬品結晶化プロセスの多目的最適化のためのエキスパートエージェントです。ユーザーが結晶化プロセスパラメータを入力するか最適化をリクエストすると、可解釈性の高い決定論的動力学モデル(デジタルツイン)を計算コアとして駆動し、6つのプロセス変数(結晶温度、冷却速度、初期過飽和度、種晶量、撹拌速度、保持時間)を4つの品質指標(収率、純度、粒径D50、溶出類似性因子f2)にマッピングします。コアアルゴリズムには、ファントホッフ溶解度曲線、古典的核生成理論とBCF螺旋転位成長速度式、モーメント法による個体群バランス方程式(PBE)が含まれ、NSGA-IIによる多目的最適化でパレート最適フロンティアを生成します。さらに、文献アンカーリング、ベイズ最適化によるサーロゲートモデリング、感度分析、5つのエージェント(Literature → Kinetics Modeler → Optimizer → Risk/Regulatory → Reviewer)によるパイプラインを備え、結果の信頼性と規制適合性を保証します。アモキシシリン結晶化をデフォルトのユースケースとして、FDA/CDEの生物学的同等性評価基準に基づくf2値による溶出曲線比較もサポートします。

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

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

薬物結晶プロセスの多目的最適化

用途

結晶プロセスの最適化要求を、「一連のパラメータ/最適化対象セクションがある」状態から、「複数の制約を満たし、再現可能で定量的比較が可能な最適プロセス方案(完全なパレートフロンティア)を入手する」状態に進めます。

中核は**解釈可能な決定論的動力学モデル(デジタルツイン)**であり、6つのプロセス変数を4つの品質指標(収率/純度/粒径D50/溶出類似性因子f2)にマッピングします。このスキルは次の流れを編成します:要件の特定 → 計算コアの呼び出し → パレートフロンティアの解釈 → 最適化前後の比較結論の出力。

中核的手法(解釈可能な動力学カーネル)

モジュール実装文献アンカーリング
溶解度曲線van't Hoff:C*(T)=4.48·exp[8.3/R·(1/293−1/T)]A級:Biowaiver Monograph 2017(20℃ 4.48 mg/mL)
核形成速度B = kb·max(σ−0.3,0)⁴ + kb2·G·μ2·f_mixing(撹拌)初等古典理論 + 二次成長結合;分岐 S=4.5(田賓賓 2015)
成長速度G = kg·σ^m、m=1.9955(BCF螺旋転位成長)A級:田賓賓等、化学工程 2015 実測
個体群バランス方程式(PBE)モーメント法 μ0…μ4 の漸化、濃度-モーメント完全結合の物質収支保存B級:Randolph & Larson モーメント法

最適化手法(多目的 + マルチエージェント)

  • 主出力:NSGA-II 4目的完全パレートフロンティア(80の非劣解 + 膝点 + max-f₂/max-yield 極値)、目的 = 収率↑ / 純度↑ / f2↑ / 粒径 30μm への適合↑。
  • 補助:ガウス過程(GP、RBFカーネル + ホワイトノイズ、ハイパーパラメータは対数周辺尤度LMLで学習)+ ベイズ最適化(EGO形式のEI)、スカラー化参照点による交差検証。
  • 5エージェントパイプライン:Literature(文献アンカーリングゲートキーパー)→ Kinetics Modeler(PBEソルバー + 物質収支自己チェック)→ Optimizer(パレートフロンティア)→ Risk/Regulatory(規制判断基準 + CQA)→ Reviewer(独立レビュー、PASS/FAIL判定)。
  • 感度分析:温度 ±1℃ / pH ±0.1 / 冷却速度 ±10% 擾乱下でのロバスト性判定。

トリガー条件(いつこのスキルをロードするか)

以下のいずれかのシナリオが発生した場合にトリガーされます:

  • ユーザーが結晶プロセスパラメータを提示し、品質指標の評価や基準達成の確認を要求
  • ユーザーが「最適化/探索/最適値探索」を要求する結晶セクションがある
  • ユーザーが収率/純度/粒径D50/溶出f2などの品質目標に言及し、結晶が関係する
  • ユーザーがジェネリック医薬品と原薬の溶出類似性(f2)評価を要求
  • ユーザーが参照溶出曲線または文献ベースラインを提供し、比較を要求

トリガーワード:結晶プロセス最適化、結晶パラメータ探索、プロセス多目的最適化、ジェネリック医薬品結晶、粒径ウィンドウ、溶出f2、冷却曲線、種晶戦略、過飽和制御、アモキシシリン結晶、パレートフロンティア、個体群バランス。

入出力形式

入力

スキルはAIがセッション内でロード後、scripts/crystallization.pyの実行(標準入力経由でJSONを渡す)により計算コアを駆動します。CLI入力プロトコル:

{
  "mode": "evaluate | optimize | sensitivity | agents | dissolution_plot | explain",
  "params": {                       // evaluate モード必須、6つのプロセス変数
    "T_cryst_C": 15,                // 結晶温度 ℃、[5, 25]
    "r_cool_C_per_min": 0.2,        // 冷却速度 ℃/min、[0.05, 1.0]
    "S0": 1.8,                      // 初期過飽和度(無次元)、[1.2, 2.5]
    "seed_wt_pct": 2,               // 種晶量 質量%、[0, 5.0]
    "stir_rpm": 300,                // 撹拌速度 rpm、[100, 600]
    "hold_t_min": 120               // 保持時間 min、[30, 240]
  },
  "seed": 42                        // optimize/agents モードでオプション、ランダムシード(デフォルト42、決定論的で再現可能)
}

出力

計算コアのstdoutは1行のJSONを出力します。mode=optimize を例とした主要フィールド:

{
  "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": "ロバスト:3因子 ± 擾乱下でf2が≥50を維持", ...}},
  "surrogate_cv": {"r2_mean": 0.74, ...},
  "bo_trace": [...],
  "cqa_coverage": {...}
}

AIはJSON結果を人間が読める比較結論に解釈します。形式は本ファイルの「結果の解釈」セクションを参照してください。

実行手順(標準ワークフロー)

順番に実行し、前のステップの結果が次のアクションを決定します:

  1. 要件の特定:目的APIとセクションを確認;ユーザーが「単一パラメータセットの評価」か「最適パラメータの探索」を求めているかを判断。
  2. ベースラインの決定:文献上の古典的プロセスベースライン(またはユーザー提供)を読み込み;デフォルトのアモキシシリンベースラインは references/tuning-guide.md を参照。
  3. 多目的最適化(optimize):mode=optimize を呼び出し、主出力として完全なパレートフロンティア(NSGA-II 80非劣解)を得る。
  4. 結果評価(evaluate):候補解に対して mode=evaluate を呼び出し、checks.all_satisfied とPBEプロセス量を検証。
  5. 独立レビュー:Reviewerエージェントがフロンティアの非劣性と実現可能性を独立にレビューし、PASS/FAILを発行。
  6. 結論の出力:パレートフロンティア + 膝点/極値 + 4指標の前後比較 + 感度分析結論 + 境界宣言を提示。

依存関係

タイプ依存項目説明
ランタイムPython 3(python3 / python / py のいずれか利用可能)計算コアの実行
数値ライブラリNumPy 2.5.4GPガウス過程とNSGA-IIのベクトル化演算(pip install numpy==2.5.4)
コアファイルscripts/crystallization.py解釈可能な動力学コア(PBE)+ 多目的最適化 + 5エージェント、このスキルの唯一の実行可能ロジック
参考ドキュメントreferences/install-and-usage.mdインストール、登録、使用例
参考ドキュメントreferences/tuning-guide.md全調整可能パラメータの物理的意味、範囲と影響
外部リソースなし自己完結、ネットワーク接続不要、外部API呼び出し不要

計算コアの呼び出し方法(CLI)

# evaluate:単一パラメータセットの評価
echo '{"mode":"evaluate","params":{...}}' | python scripts/crystallization.py

# optimize:完全なパレートフロンティア(主)+ GP-BO参照点の出力
echo '{"mode":"optimize","seed":42}' | python scripts/crystallization.py

# sensitivity:感度分析(T±1℃/pH±0.1/冷却±10%)
echo '{"mode":"sensitivity","params":{...}}' | python scripts/crystallization.py

# explain:optimizeが実行した内容の完全な説明(モデルカード/探索空間/重み/制約の完全透明性)
echo '{"mode":"explain"}' | python scripts/crystallization.py

結果の解釈

  • pareto.n_pareto → パレートフロンティアの非劣解の数;knee_point は理想点への距離が最小のトレードオフ解。
  • metrics.f2 >= 50 → 溶出曲線が原薬と「類似」(FDA/CDEの生物学的同等性ブリッジング基準);f2 < 50 は非類似とみなす。
  • agents.reviewer.verdict = PASS → フロンティアの非劣性 + 実現可能性 + ベースライン比較がすべて独立レビューを通過。
  • sensitivity.robustness.f2_stays_above_50 → 擾乱下でf2が≥50を維持するかどうか(操作ロバスト性)。
  • bo_trace → 64回の評価を1回ごとに記録(パラメータ/スコア/ソース/GPハイパーパラメータ/EI)、最適化プロセスが完全に追跡可能。

境界宣言

このスキルの出力はプロセス探索と事前スクリーニングツールであり、解釈可能な動力学カーネルに基づきます(GMP実験の代替ではありません)。最終的な生物学的同等性の結論は、実際の実験と申請データによって裏付けられる必要があります。収率の範囲:本モデルの収率は物質収支計算上の口径(析出固体/溶液調整固体)であり、文献の「総収率」口径とは異なります。詳細は references/tuning-guide.md を参照してください。

Individual skills in this repo

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

関連スキル