Claude-skill-registry-data Maintenance Robot Architect
Especialista en la actualización del sistema de auto-migración "Maintenance Robot" en orchestrator_service/main.py.
git clone https://github.com/majiayu000/claude-skill-registry-data
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/maintenance-robot-architect-adriangmrraa-multiagents-platform" ~/.claude/skills/majiayu000-claude-skill-registry-data-maintenance-robot-architect && rm -rf "$T"
data/maintenance-robot-architect-adriangmrraa-multiagents-platform/SKILL.mdMaintenance Robot Architect
Este Skill instruye al agente sobre cómo modificar, extender y mantener el sistema de inicialización de base de datos automatizado, conocido como "Maintenance Robot". Dicho sistema reside en la lista
migration_steps dentro de orchestrator_service/main.py.
Propósito
Asegurar que CADA NUEVO DESPLIEGUE en un entorno limpio (Zero-Config / Self-Hosted) nazca completamente funcional, con:
- Todas las tablas necesarias creadas.
- Datos semilla ("seed data") críticos insertados.
- Columnas nuevas agregadas a tablas existentes.
Esto elimina la necesidad de ejecutar scripts SQL manuales o depender de carpetas
db/init que a veces no se montan correctamente en orquestadores como EasyPanel.
Reglas de Oro (Protocolo Omega)
-
Idempotencia Absoluta:
- Todo create table debe ser
.CREATE TABLE IF NOT EXISTS - Toda inserción de datos semilla debe tener
(oON CONFLICT DO NOTHING
si es configuración mutable).DO UPDATE - Toda alteración de columna debe usar bloques
para capturar errores si la columna ya existe.DO $$ ... EXCEPTION ... END $$
- Todo create table debe ser
-
Atomicidad por Paso:
- Cada elemento de la lista
se ejecuta como una transacción individual implícita.migration_steps - Si un paso falla, se loguea el error pero el sistema intenta continuar (Soft Fail), a menos que sea una tabla crítica que impida el arranque.
- Cada elemento de la lista
-
No Borrar Pasos Antiguos:
- La historia de migración se mantiene secuencial. Agrega nuevos pasos al final de la lista.
- Solo modifica pasos existentes si detectas un error grave de sintaxis que rompe el arranque.
Guía de Implementación
1. Ubicación
El código vive en
orchestrator_service/main.py. Busca la variable:
migration_steps = [ # ... pasos previos ... ]
2. Formato de Nuevo Paso
Para agregar una nueva tabla o semilla, añade un string triple-comilla al final de la lista:
# N. Nombre Descriptivo (vX.X Update) """ -- Tu SQL Aquí CREATE TABLE IF NOT EXISTS nueva_tabla (...); INSERT INTO nueva_tabla (...) VALUES (...) ON CONFLICT DO NOTHING; """
3. Manejo de Seeds Complejos
Si necesitas lógica condicional (ej: "Solo insertar X si existe Y"), usa bloques PL/pgSQL anónimos:
DO $$ DECLARE parent_id INT; BEGIN SELECT id INTO parent_id FROM parent_table WHERE name = 'target'; IF parent_id IS NOT NULL THEN INSERT INTO child_table (parent_id, ...) VALUES (parent_id, ...); END IF; END $$;
Casos de Uso Comunes
- Nuevas Credenciales: Si el sistema ahora soporta un nuevo proveedor (ej: TikTok), debes agregar el
enINSERT
y sus tipos enoauth_providers
aquí.credential_types - Nuevas Columnas: Si el modelo SQLAlchemy agrega un campo, agrega el
aquí para que las BD existentes se actualicen al reiniciar.ALTER TABLE - Configuración Global: Si cambias políticas globales (ej: Prompt del Sistema por defecto), actualiza el paso de
.UPDATE tenants SET system_prompt_template = ...