Skill: Gestión de Estado del Workflow
Descripción
Habilidad especializada para gestionar el estado persistente del workflow de Graficador-Experto, permitiendo tracking del progreso, recuperación ante interrupciones y trazabilidad completa del proceso.
Objetivos
- •Mantener estado persistente del workflow en
outputs/workflow_state.json - •Registrar transiciones de fase y progreso por lenguaje
- •Trackear iteraciones y similitudes históricas
- •Validar transiciones de estado
- •Proporcionar consultas de estado actual
Funciones Principales
1. Inicializar Estado
Cuándo usar: Al ejecutar /analizar-imagen por primera vez
Proceso:
- •Crear archivo
outputs/workflow_state.jsoncon estructura inicial - •Establecer
timestamp_iniciocon timestamp ISO 8601 actual - •Establecer
fase_actualcomo "analisis" - •Inicializar todos los lenguajes (tikz, python, r) con estado "pendiente"
- •Establecer
analisis_completadocomofalse
Estructura inicial:
{
"version": "1.0",
"timestamp_inicio": "2025-12-29T10:30:00Z",
"timestamp_ultima_actualizacion": "2025-12-29T10:30:00Z",
"imagen_original": "outputs/original.png",
"fase_actual": "analisis",
"analisis_completado": false,
"tikz": {
"estado": "pendiente",
"iteracion_actual": 0,
"similitud_actual": 0,
"similitud_historico": []
},
"python": {
"estado": "pendiente",
"iteracion_actual": 0,
"similitud_actual": 0,
"similitud_historico": []
},
"r": {
"estado": "pendiente",
"iteracion_actual": 0,
"similitud_actual": 0,
"similitud_historico": []
}
}
2. Marcar Análisis Completado
Cuándo usar: Después de completar el análisis inicial en /analizar-imagen
Proceso:
- •Leer
outputs/workflow_state.json - •Establecer
analisis_completadocomotrue - •Actualizar
timestamp_ultima_actualizacion - •Guardar archivo
3. Iniciar Fase de Lenguaje
Cuándo usar: Al ejecutar /generar-tikz, /generar-python o /generar-r
Proceso:
- •Leer estado actual
- •Validar que el análisis esté completo (si es necesario)
- •Actualizar estado del lenguaje correspondiente:
- •
estado: "en_iteracion" - •
iteracion_actual: 1 (primera iteración) - •
timestamp_inicio: timestamp actual
- •
- •Actualizar
fase_actualsegún lenguaje:- •TikZ: "tikz_iteracion"
- •Python: "python_iteracion"
- •R: "r_iteracion"
- •Actualizar
timestamp_ultima_actualizacion - •Guardar archivo
Validaciones:
- •TikZ puede iniciarse después de análisis
- •Python requiere TikZ validado o al menos iniciado
- •R requiere Python validado o al menos iniciado
4. Registrar Iteración
Cuándo usar: Al ejecutar /iterar o después de cada refinamiento
Proceso:
- •Leer estado actual
- •Identificar lenguaje activo según
fase_actual - •Incrementar
iteracion_actualdel lenguaje correspondiente - •Actualizar
timestamp_ultima_actualizacion - •Guardar archivo
5. Registrar Similitud
Cuándo usar: Después de ejecutar /comparar
Proceso:
- •Leer estado actual
- •Identificar lenguaje evaluado
- •Actualizar
similitud_actualdel lenguaje correspondiente - •Añadir valor al array
similitud_historico - •Actualizar
timestamp_ultima_actualizacion - •Guardar archivo
Ejemplo:
"tikz": {
"estado": "en_iteracion",
"iteracion_actual": 3,
"similitud_actual": 89,
"similitud_historico": [75, 82, 89]
}
6. Validar Lenguaje
Cuándo usar: Cuando el usuario valida un lenguaje (similitud ≥ 95% o validación manual)
Proceso:
- •Leer estado actual
- •Actualizar estado del lenguaje:
- •
estado: "validado" - •
timestamp_validacion: timestamp actual
- •
- •Actualizar
fase_actual:- •TikZ validado: "tikz_validado"
- •Python validado: "python_validado"
- •R validado: "r_validado"
- •Si R está validado, establecer
fase_actualcomo "completado" - •Actualizar
timestamp_ultima_actualizacion - •Guardar archivo
7. Consultar Estado Actual
Cuándo usar: Para el comando /estado o para verificar progreso
Proceso:
- •Leer
outputs/workflow_state.json - •Calcular tiempo transcurrido desde
timestamp_inicio - •Determinar progreso por lenguaje (emojis):
- •✅ Validado:
estado === "validado" - •🟡 En iteración:
estado === "en_iteracion" - •⚪ Pendiente:
estado === "pendiente"
- •✅ Validado:
- •Identificar próximos pasos sugeridos según fase actual
- •Listar archivos generados según estado
Formato de salida:
## Estado del Workflow ### Progreso General 🟢 TikZ: VALIDADO (4 iteraciones, 96% similitud) 🟡 Python: EN ITERACIÓN (2 iteraciones, 88% similitud) ⚪ R: PENDIENTE ### Fase Actual Python - Iteración 2 ### Tiempo Transcurrido - Inicio: 2025-12-29 10:30:00 - Duración: 1h 15min ### Próximos Pasos Sugeridos 1. Ejecutar `/comparar python` para evaluar iteración actual 2. Si similitud < 95%: Ejecutar `/iterar python` 3. Si similitud ≥ 95%: Ejecutar `/generar-r` para continuar
Validaciones de Transición
Reglas de Flujo
- •Análisis → TikZ: Siempre permitido después de análisis completo
- •TikZ → Python: Permitido si TikZ está validado o en iteración (flexible)
- •Python → R: Permitido si Python está validado o en iteración (flexible)
- •Validación: Solo si
similitud_actual ≥ 95o validación manual del usuario
Validación de Estado
Antes de cualquier transición, verificar:
- •¿El estado anterior es válido?
- •¿Se cumplen las condiciones de transición?
- •¿Los datos son consistentes?
Manejo de Errores
Estado No Encontrado
Si outputs/workflow_state.json no existe:
- •Inicializar estado desde cero
- •Continuar con el proceso normal
Estado Corrupto
Si el JSON no es válido:
- •Intentar recuperar datos críticos
- •Reinicializar con datos parciales si es posible
- •Informar al usuario del problema
Recuperación Ante Interrupciones
Si el workflow se interrumpe:
- •Leer estado persistente
- •Identificar última fase completada
- •Sugerir continuar desde donde se quedó
- •Validar que archivos necesarios existan
Integración con Otros Skills
Con analizar-imagen-matematica
- •Inicializar estado después del análisis
- •Guardar referencia a
analisis_inicial.json
Con comparar-visual
- •Registrar similitud después de cada comparación
- •Actualizar historial de mejoras
Con refinar-codigo
- •Incrementar contador de iteración
- •Registrar cambios aplicados
Ejemplos de Uso
Ejemplo 1: Inicialización
# Pseudocódigo estado = inicializar_estado() estado.timestamp_inicio = datetime.now().isoformat() estado.fase_actual = "analisis" guardar_estado(estado)
Ejemplo 2: Iniciar Generación TikZ
estado = leer_estado() estado.tikz.estado = "en_iteracion" estado.tikz.iteracion_actual = 1 estado.tikz.timestamp_inicio = datetime.now().isoformat() estado.fase_actual = "tikz_iteracion" guardar_estado(estado)
Ejemplo 3: Registrar Similitud
estado = leer_estado() similitud = 89 # De comparación visual estado.tikz.similitud_actual = similitud estado.tikz.similitud_historico.append(similitud) guardar_estado(estado)
Ejemplo 4: Validar Lenguaje
estado = leer_estado()
if estado.tikz.similitud_actual >= 95:
estado.tikz.estado = "validado"
estado.tikz.timestamp_validacion = datetime.now().isoformat()
estado.fase_actual = "tikz_validado"
guardar_estado(estado)
Referencias
- •
.claude/schemas/workflow_state.schema.json- Esquema JSON del estado - •
outputs/workflow_state.json- Archivo de estado persistente - •
.claude/commands/estado.md- Comando de visualización de estado