DrunkMan9o/agent-skills

Insira um conjunto de parâmetros de processo de cristalização (ou solicite otimização diretamente) e obtenha a fronteira de Pareto completa que satisfaz múltiplas restrições (rendimento ≥ 60%, pureza ≥ 99%, tamanho de partícula D50 ∈ [10,50] μm, fator de similaridade de dissolução f2 ≥ 50), juntamente com métricas de qualidade previstas e comparação quantitativa com a linha de base da literatura.

O que é agent-skills?

Esta skill é projetada para otimização multi-objetivo de processos de cristalização farmacêutica, transformando uma necessidade de otimização de processo em um conjunto de soluções ótimas que satisfazem múltiplas restrições. No centro, há um modelo cinético determinístico interpretável (gêmeo digital) que mapeia 6 variáveis de processo (temperatura, taxa de resfriamento, supersaturação inicial, quantidade de semente, rotação de agitação, tempo de retenção) para 4 indicadores de qualidade (rendimento, pureza, D50, fator f2). A skill utiliza NSGA-II para gerar uma fronteira de Pareto completa com 80 soluções não dominadas, incluindo o ponto de joelho e extremos. Ela também incorpora um pipeline de cinco agentes inteligentes (Literatura, Modelagem Cinética, Otimizador, Risco/Regulatório, Revisor) para garantir que as soluções sejam baseadas em literatura, viáveis cineticamente, otimizadas e em conformidade regulatória. A skill suporta os modos 'avaliar', 'otimizar', 'sensibilidade' e 'explicar', e é executada via CLI com um script Python. É útil para engenheiros de processo e formuladores que precisam explorar rapidamente o espaço de parâmetros de cristalização, reduzir experimentos e garantir a qualidade e reprodutibilidade do produto, com foco em equivalência biofarmacêutica (f2 ≥ 50) e robustez do processo.

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

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Otimização Multi-objetivo de Processos de Cristalização Farmacêutica

Finalidade

Transformar uma necessidade de otimização de processo de cristalização, de "um conjunto de parâmetros / uma seção a ser otimizada" para "um conjunto de soluções ótimas de processo que satisfazem múltiplas restrições, são reproduzíveis e têm comparação quantitativa (fronteira de Pareto completa)".

O núcleo é um modelo cinético determinístico interpretável (gêmeo digital) que mapeia 6 variáveis de processo para 4 indicadores de qualidade (rendimento / pureza / tamanho de partícula D50 / fator de similaridade de dissolução f2). Esta SKILL é responsável por orquestrar: identificar a necessidade → chamar o núcleo computacional → interpretar a fronteira de Pareto → produzir conclusões comparativas antes/depois da otimização.

Métodos Principais (Núcleo Cinético Interpretável)

MóduloImplementaçãoÂncora na Literatura
Curva de Solubilidadevan't Hoff: C*(T)=4.48·exp[8.3/R·(1/293−1/T)]Grau A: Biowaiver Monograph 2017 (20°C 4.48 mg/mL)
Taxa de NucleaçãoB = kb·max(σ−0.3,0)⁴ + kb2·G·μ2·f_mixing(agitação)Teoria clássica primária + acoplamento de crescimento secundário; limite S=4.5 (Tian Binbin 2015)
Taxa de CrescimentoG = kg·σ^m, m=1.9955 (crescimento por deslocamento helicoidal BCF)Grau A: Tian Binbin et al., Chemical Engineering 2015 (medição real)
Equação de Balanço Populacional (PBE)Método dos momentos μ0…μ4 recursivo, balanço de massa totalmente acoplado concentração-momentoGrau B: Randolph & Larson, método dos momentos

Métodos de Otimização (Multi-objetivo + Multi-agente)

  • Saída principal: Fronteira de Pareto completa NSGA-II com 4 objetivos (80 soluções não dominadas + ponto de joelho + extremos max-f₂/max-rendimento), objetivos = rendimento↑ / pureza↑ / f2↑ / tamanho de partícula próximo de 30μm↑.
  • Auxiliar: Processo Gaussiano (GP, kernel RBF + ruído branco, hiperparâmetros aprendidos por verossimilhança marginal logarítmica LML) + Otimização Bayesiana (EI estilo EGO), como ponto de referência escalar para validação cruzada.
  • Pipeline de cinco agentes: Literature (guardião de âncoras da literatura) → Kinetics Modeler (solução PBE + autoverificação de balanço de massa) → Optimizer (fronteira de Pareto) → Risk/Regulatory (critérios regulatórios + CQA) → Reviewer (revisão independente, veredito PASS/FAIL).
  • Análise de sensibilidade: Determinação de robustez sob perturbações de temperatura ±1°C / pH ±0,1 / taxa de resfriamento ±10%.

Condições de Ativação (Quando Carregar esta SKILL)

Ative quando qualquer um dos cenários abaixo for atendido:

  • O usuário fornece parâmetros de processo de cristalização e solicita avaliação de indicadores de qualidade ou conformidade.
  • O usuário solicita "otimizar / buscar / encontrar o ótimo" para os parâmetros de processo de uma seção de cristalização.
  • O usuário menciona objetivos de qualidade como rendimento / pureza / tamanho de partícula D50 / f2 de dissolução envolvendo cristalização.
  • O usuário solicita avaliação de similaridade de dissolução (f2) entre um genérico e o medicamento de referência.
  • O usuário fornece uma curva de dissolução de referência ou linha de base da literatura e solicita comparação.

Palavras-chave de ativação: otimização de processo de cristalização, busca de parâmetros de cristalização, otimização multi-objetivo de processo, cristalização de genérico, janela de tamanho de partícula, f2 de dissolução, curva de resfriamento, estratégia de semente, controle de supersaturação, cristalização de amoxicilina, fronteira de Pareto, balanço populacional.

Formato de Entrada e Saída

Entrada

Após carregada pela IA na sessão, a SKILL aciona o núcleo computacional executando scripts/crystallization.py (JSON via stdin). Protocolo de entrada CLI:

{
  "mode": "evaluate | optimize | sensitivity | agents | dissolution_plot | explain",
  "params": {                       // Obrigatório no modo evaluate, 6 variáveis de processo
    "T_cryst_C": 15,                // Temperatura de cristalização °C, [5, 25]
    "r_cool_C_per_min": 0.2,        // Taxa de resfriamento °C/min, [0.05, 1.0]
    "S0": 1.8,                      // Supersaturação inicial (adimensional), [1.2, 2.5]
    "seed_wt_pct": 2,               // Quantidade de semente % massa, [0, 5.0]
    "stir_rpm": 300,                // Rotação de agitação rpm, [100, 600]
    "hold_t_min": 120               // Tempo de retenção min, [30, 240]
  },
  "seed": 42                        // Opcional nos modos optimize/agents, semente aleatória (padrão 42, determinístico reproduzível)
}

Saída

O núcleo computacional gera uma única linha JSON no stdout. Exemplo para mode=optimize, campos principais:

{
  "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": "Robusto: f2 mantém ≥50 sob perturbações de três fatores", ...}},
  "surrogate_cv": {"r2_mean": 0.74, ...},
  "bo_trace": [...],
  "cqa_coverage": {...}
}

A IA interpreta o resultado JSON como conclusões comparativas legíveis por humanos, seguindo o formato na seção "Interpretação de Resultados" deste arquivo.

Etapas de Execução (Fluxo de Trabalho Padrão)

Execute em ordem; o resultado da etapa anterior determina a ação seguinte:

  1. Identificar necessidade: Confirmar o API alvo e a seção do processo; determinar se o usuário deseja "avaliar um único conjunto de parâmetros" ou "buscar parâmetros ótimos".
  2. Determinar linha de base: Ler a linha de base clássica do processo da literatura (ou fornecida pelo usuário); a linha de base padrão para amoxicilina está em references/tuning-guide.md.
  3. Otimização multi-objetivo (optimize): Chamar mode=optimize, saída principal é a fronteira de Pareto completa (NSGA-II 80 soluções não dominadas).
  4. Avaliação de resultados (evaluate): Para as soluções candidatas, chamar mode=evaluate e verificar checks.all_satisfied e quantidades de processo PBE.
  5. Revisão independente: O agente Reviewer faz uma revisão independente da não dominância e viabilidade da fronteira, emitindo veredito PASS/FAIL.
  6. Produzir conclusões: Fornecer fronteira de Pareto + ponto de joelho/extremos + comparação antes/depois dos quatro indicadores + conclusão da análise de sensibilidade + declaração de limitações.

Dependências

TipoDependênciaDescrição
RuntimePython 3 (python3 / python / py qualquer disponível)Executa o núcleo computacional
Biblioteca numéricaNumPy 2.5.4Operações vetorizadas do GP e NSGA-II (pip install numpy==2.5.4)
Arquivo principalscripts/crystallization.pyNúcleo cinético interpretável (PBE) + otimização multi-objetivo + cinco agentes, única lógica executável desta SKILL
Documentos de referênciareferences/install-and-usage.mdInstalação, registro, exemplos de uso
Documentos de referênciareferences/tuning-guide.mdSignificado físico, faixa de valores e impacto de todos os parâmetros ajustáveis
Recursos externosNenhumAutocontido, não requer internet, não chama APIs externas

Modo de Chamada do Núcleo Computacional (CLI)

# evaluate: Avaliar um único conjunto de parâmetros
echo '{"mode":"evaluate","params":{...}}' | python scripts/crystallization.py

# optimize: Produzir fronteira de Pareto completa (principal) + pontos de referência GP-BO
echo '{"mode":"optimize","seed":42}' | python scripts/crystallization.py

# sensitivity: Análise de sensibilidade (T±1°C/pH±0.1/resfriamento±10%)
echo '{"mode":"sensitivity","params":{...}}' | python scripts/crystallization.py

# explain: Explicação completa do que a otimização executou (modelo/espaço de busca/pesos/restrições totalmente transparente)
echo '{"mode":"explain"}' | python scripts/crystallization.py

Interpretação de Resultados

  • pareto.n_pareto → Número de soluções não dominadas na fronteira de Pareto; knee_point é a solução de compromisso com a menor distância até o ponto ideal.
  • metrics.f2 >= 50 → A curva de dissolução é "similar" ao medicamento de referência (critério de ponte bioequivalente FDA/CDE); f2 < 50 é considerado não similar.
  • agents.reviewer.verdict = PASS → Não dominância da fronteira + viabilidade + comparação com linha de base aprovados pela revisão independente.
  • sensitivity.robustness.f2_stays_above_50 → Se f2 permanece ≥50 sob perturbações (robustez operacional).
  • bo_trace → Registro detalhado de 64 avaliações (parâmetros/pontuação/fonte/hiperparâmetros GP/EI), processo de otimização totalmente auditável.

Declaração de Limitações

A saída desta SKILL é uma ferramenta de busca e pré-seleção de processo, baseada em um núcleo cinético interpretável (não um substituto para experimentos GMP). Conclusões finais de bioequivalência devem ser suportadas por experimentos reais e dados de submissão regulatória. Escopo de rendimento: O rendimento neste modelo é o rendimento do balanço de massa (sólido precipitado/sólido em solução), diferente do "rendimento total" da literatura; veja detalhes em references/tuning-guide.md.

Individual skills in this repo

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

Habilidades Relacionadas