IA-Ingenieria-MLOps · Skill Design

Skill: mlops-pipeline-audit

Diseño estructurado usando el patrón Sequential Pipeline — 5 fases con criterios de entrada/salida explícitos, herramientas de solo lectura y output de informe normalizado.

Patrón: Sequential Pipeline Fases: 5 Herramientas: Read · Glob · Grep · TodoRead · TodoWrite Privilegio: Solo lectura Generado por: diseno-skills-flujo-trabajo
Frontmatter SKILL.md Generado

El campo description es el único trigger de activación. Palabras clave específicas, tercera persona, sin pasos del workflow.

SKILL.md — mlops-pipeline-audit
---
name: mlops-pipeline-audit
description: "Audits MLOps pipeline repos for structural antipatterns — use when reviewing
  a machine learning pipeline for code quality, credential exposure, missing
  versioning, monitoring gaps, or CI/CD misconfiguration. Triggers on: audit pipeline,
  review mlops, check ml pipeline, pipeline health check, mlops review."
allowed-tools: Read Glob Grep TodoRead TodoWrite
context: fork
argument-hint: "[ruta al repo o directorio raíz del pipeline]"
---
Regla AP-20 aplicada description ≠ workflow steps

La descripción lista condiciones de activación y sinónimos de keywords, NO describe los 5 pasos del pipeline. Esto evita el antipatrón más común y de mayor impacto.


Selección de patrón Sequential Pipeline

Árbol de decisión aplicado al brief de mlops-pipeline-audit.

Árbol de decisión · Skill Design
¿Cuántos caminos distintos tiene la skill?
│
├── Un camino, siempre igual
│   ├── ¿Realiza acciones destructivas?
│   │   ├── SÍ  → Safety Gate Pattern
│   │   └── NO  → Linear Progression Pattern
│   └── ¿Pasos con dependencias complejas / tolerancia a fallo parcial?
│       ├── SÍ  → Sequential Pipeline Pattern  ◄ ELEGIDO
│       └── NO  → Linear Progression Pattern
│
├── Múltiples caminos independientes desde setup compartido
│   └── Routing Pattern
│
└── Múltiples caminos dependientes en secuencia
    └── Task-Driven Pattern

RAZÓN: La auditoría siempre sigue la misma secuencia
(descubrimiento → análisis → antipatrones → scoring → informe).
Cada fase depende del output de la anterior. Sin acciones destructivas.
→ Sequential Pipeline es el patrón correcto.

Pipeline de 5 fases

Cada fase tiene criterios de entrada, acciones numeradas y criterios de salida explícitos.

1
Descubrimiento
Mapear estructura
2
Análisis
Componentes ML
3
Antipatrones
Detección
4
Scoring
Severidad
5
Informe
Output final
Fase 1 — Descubrimiento
Mapear la estructura del repositorio y localizar archivos relevantes del pipeline.
ENTRADA
Criterio de entrada

Ruta al repositorio disponible (argumento o cwd). El directorio existe y es accesible vía Glob.

Criterio de salida

Mapa de archivos ML clasificados: ingest/, transform/, train/, evaluate/, deploy/. Lista de archivos de config CI/CD.

Acciones numeradas
# Acción 1.1 — Glob para archivos Python del pipeline (NUNCA usar Bash find)
Glob: "{rootDir}/**/*.py"  → lista todos los .py
Glob: "{rootDir}/**/*.yaml" → CI/CD, kubeflow, vertex
Glob: "{rootDir}/**/*.json" → configs, schemas

# Acción 1.2 — Una sola búsqueda combinada (AP-18: evitar cartesian products)
Grep: "(train|fit|predict|transform|ingest|pipeline)"
      en todos los .py de una sola llamada, luego filtrar

# Acción 1.3 — TodoCreate para registrar progreso
TodoWrite: [
  {id: "discover", text: "Fase 1 Descubrimiento", status: "in_progress"},
  {id: "analyze",  text: "Fase 2 Análisis",      status: "pending"},
  ...
]
Fase 3 — Detección de Antipatrones
Búsquedas de patrones problemáticos con regex combinados. Sin Bash. Sin N×M calls.
ANÁLISIS
Antipatrón MLOps Regex combinado Severidad Tool
Credenciales hardcodeadas (password|secret|api_key|token)\s*=\s*["'][^"']+["'] CRÍTICA Grep
Sin versionado de modelos mlflow\.(log_model|register_model) ausente ALTA Grep
Sin seed reproducible (random_state|seed|np\.random\.seed) ausente en train MEDIA Read + Grep
Data leakage en splitting train_test_split(?!.*stratify) MEDIA Grep
Sin logging estructurado print\((?!.*log) en archivos de pipeline BAJA Grep
Sin health checks CI/CD pytest|unittest ausente en .yaml de CI ALTA Read
AP-18 aplicado — Sin cartesian product de tool calls

Un solo Grep con regex alternado cubre N archivos × M patrones en una llamada. Sin este patrón, un repo de 1.000 archivos con 10 patrones generaría 10.000 calls.


Antipatrones aplicados en este diseño

6 antipatrones del catálogo evitados explícitamente en mlops-pipeline-audit.

AP-20 EVITADO
Description resume workflow steps
Description solo lista trigger keywords y casos de uso, nunca los 5 pasos.
AP-18 EVITADO
Cartesian product de tool calls
Un Grep con regex alternado cubre N archivos × M patrones en 1 llamada.
AP-11 EVITADO
Bash para operaciones de archivo
Glob/Grep/Read en lugar de find/grep/cat — más robusto y reproducible.
AP-6 EVITADO
Fases sin numerar
Cada fase tiene número, criterio de entrada, acciones numeradas y criterio de salida.
AP-7 EVITADO
Sin criterios de salida
"Done" está definido explícitamente para cada fase — el LLM no infiere cuándo pasar.
AP-12 EVITADO
Herramientas con sobreprivilegios
Solo Read/Glob/Grep/TodoRead/TodoWrite — sin Write, Bash ni Exec. Solo lectura.

Output de ejemplo Informe generado

Extracto del informe normalizado que produce la skill al ejecutarse sobre un repo cliente ficticio (cliente-rentabiliza-ia/ml-churn-pipeline).

3
Hallazgos críticos
Requieren acción inmediata
5
Hallazgos medios
Planificar en sprint
72/100
Pipeline Health Score
Objetivo: ≥ 85
Informe estructurado — Extracto
# Informe de Auditoría MLOps
## Repo: cliente-rentabiliza-ia/ml-churn-pipeline
## Fecha: 2026-06-18  |  Generado por: mlops-pipeline-audit v1.0

### CRÍTICO — C1: Credenciales hardcodeadas
Archivo: src/ingest/db_connector.py:47
Hallazgo: DB_PASSWORD = "prod_pass_2024!"
Riesgo:  Exposición en historial de git, logs de CI, pull requests públicos.
Fix:     Mover a variable de entorno + python-dotenv + .env en .gitignore.
         # Tiempo estimado: 30 min

### CRÍTICO — C2: Sin versionado de modelos
Archivo: src/train/train_churn.py
Hallazgo: joblib.dump() sin MLflow.log_model() ni DVC tracking.
Riesgo:  Modelos en producción no reproducibles. Imposible rollback.
Fix:     mlflow.sklearn.log_model(model, "churn-classifier") + experimento tracking.
         # Tiempo estimado: 2h

### ALTO — A1: Sin tests en pipeline CI/CD
Archivo: .github/workflows/train.yml
Hallazgo: Workflow ejecuta train.py sin pytest previo.
Fix:     Añadir job "test" antes de "train" con pytest tests/.
         # Tiempo estimado: 1h

### Plan de remediación — Priorizado
Sprint 1 (urgente):  C1 credenciales, C2 versionado, C3 secrets CI
Sprint 2 (1-2 sem): A1 tests CI/CD, A2 data schema validation
Sprint 3 (1 mes):  M1-M4 mejoras de monitoring y observabilidad

Success Checklist

Verificación de que mlops-pipeline-audit cumple todos los criterios de la skill de diseño.

  • Tiene secciones "Cuándo usar" Y "Cuándo NO usar" con alternativas específicas
  • Usa patrón reconocible (Sequential Pipeline) correctamente seleccionado via árbol de decisión
  • Todas las fases numeradas con criterios de entrada y salida explícitos
  • Lista solo herramientas que usa realmente: Read Glob Grep TodoRead TodoWrite — principio de mínimo privilegio
  • SKILL.md bajo 500 líneas — detalles de patrones en references/, flujos en workflows/
  • Sin rutas hardcodeadas — usa {rootDir} y {baseDir} para todas las referencias internas
  • Sin reference chains — todos los archivos a un salto desde SKILL.md
  • Fase 5 incluye paso de verificación: validar que el informe contiene hallazgos en todos los 6 patrones
  • Description activa correctamente con keywords: "audit pipeline", "review mlops", "pipeline health check"
  • Ejemplos concretos: input (repo path) → output (informe estructurado con severidades)
  • Racionalizaciones rechazadas documentadas: "Bash puede hacer todo", "el LLM inferirá el orden"
  • Test de escala 10.000 archivos: Glob + Grep combinado mantiene tool calls acotadas (O(1) no O(N×M))
Skill lista para producción
12/12 criterios verificados. Diseño según patrón Sequential Pipeline. Sin antipatrones AP-6, AP-7, AP-11, AP-12, AP-18, AP-20.
Generado por skill diseno-skills-flujo-trabajo · CULTIVA IA · 2026-06-18
Sequential Pipeline AP-18 safe read-only v1.0.0 CC-BY-SA-4.0