Reglas del Agente IA - CreaRack Pro
Documento de referencia obligatoria para agentes IA (Claude, Gemini, etc.) Contiene las reglas detalladas de comportamiento y configuraciones fijas.
Nota histórica (2026-07): varias secciones de abajo citan rutas
Documentation/…del repo CreaRack-Pro. La carpetaDocumentation/fue archivada y eliminada en abril de 2026; la documentación técnica canónica vive ahora en la wiki del workspace y, para contexto de agente, enCreaRack-Pro/context/. Trata esas rutasDocumentation/…como referencias históricas.
Reglas de Oro
1. Idioma
Responde SIEMPRE en Español.
2. Duplicidad de Código
EVITA A TODA COSTA LA DUPLICIDAD DE CÓDIGO. Antes de crear nuevo código, analiza exhaustivamente si ya existe una función o utilidad centralizada.
Servicios Centralizados Frontend
OBLIGATORIO: Consultar
Documentation/frontend/CENTRALIZED_SERVICES.mdantes de crear nuevos servicios.
Servicios existentes que NO debes duplicar:
ApiService.js- HTTP requests con CSRF (NUNCA usar fetch() directo)TabHelper.js- “New Tab” standalone mode (Terminal, Observatory)EChartsService.js- Factory para gráficas Apache EChartsToastService.js- Notificaciones toastStateManager.js- Undo/Redo globalPersistenceManager.js- LocalStorage wrapperIpValidator.js- Validación de IPs RFC 1918Logger.js- Sistema de logging con niveles
Checklist antes de crear nuevo servicio:
- ¿Consulté
CENTRALIZED_SERVICES.md? - ¿Busqué en
static/js/services/ystatic/js/utils/? - ¿Será usado en más de 2 lugares?
- ¿Es específico de un módulo o reutilizable?
Si es reutilizable → añadir a services/ o utils/ y documentar en CENTRALIZED_SERVICES.md.
3. Documentación Incremental
Actualizar en CADA commit los siguientes archivos cuando corresponda:
| Archivo | Cuándo actualizar |
|---|---|
CLAUDE.md | Cambios de versión, stack, endpoints |
README.md | Nuevas features, cambios de arquitectura, versión |
CHANGELOG.md | SIEMPRE en cada release/feature significativa |
RELEASE_NOTES.md | Cambios funcionales o de infraestructura (incluir autor Edu/Dani/Txell y ámbito) |
context/ (STACK.md, PATTERNS.md, INFRA.md…) | Cambios estructurales de arquitectura, patrones o stack |
Estado vivo de tareas:
TASK.mdfue jubilado (s185, 02-07-2026). El estado vivo de tareas ya NO vive en un archivo del repo, sino en el Supercontexto (CreaRackSL-workspace/public/supercontext/STATE.md+briefings/NEXT.md) y en el Gestor de tareas del workspace. Los docs vivos del repo Pro son:CLAUDE.md,CHANGELOG.md,RELEASE_NOTES.md,README.mdycontext/.
Principio: Pequeñas actualizaciones en cada commit son menos laboriosas que regularizar múltiples versiones acumuladas.
4. GitHub — Equipo plano de 3 (Edu + Dani + Txell)
Equipo plano de confianza total: los 3 (Edu, Dani, Txell) commitean, pushean y mergean por igual, sin aprobación de nadie más. Quien conduce la sesión es quien sube. El “consenso” se refiere al plan/diseño (Regla 6), NUNCA a un permiso por persona.
- Rama principal:
main(protegida — todo se mergea aquí) - Feature branches:
edu/<feature>·dani/<feature>para trabajo concurrente (cortas, 1-2 días) - Antes de push:
git pull --rebase origin mainSIEMPRE - Commits: Nunca incluir “Co-authored-by: CLAUDE/GEMINI”
- Conflictos docs:
rerereactivo +CHANGELOG.md/RELEASE_NOTES.mdconmerge=union; si conflicta, el último en push resuelve - Push vs PR: flujo híbrido (Regla 20). Merge al verde MANUAL (
gh pr merge <N> --squash; el auto-merge está OFF en el repo) - Repositorio: https://github.com/CreaRackSL/CreaRack-Pro
Si trabajáis en módulos distintos: push directo a main sin branch es aceptable (hacer
git pull --rebaseantes)
4b. Directriz de Push — siempre inmediato
Política vigente desde 30-04-2026: tras cada commit, push inmediato a
main. Sin[skip ci]. Da igual si el cambio es código, docs o mixto. Reformulada con el upgrade a GitHub Pro (3000 min/mes) y al detectar que[skip ci]saltaba CF Pages Deploy (los cambios de docs no llegaban aworkspace.crearack.com) y Bibliotecario-Ingest (el grafo no recibía cambios de docs).
Clasificación de commits:
| Tipo | Ejemplos | Push |
|---|---|---|
| Código | Bug fixes, features, migrations, security, config | Inmediato, sin [skip ci] |
| Documentación | CLAUDE.md, README, CHANGELOG, RELEASE_NOTES, context/, guides wiki | Inmediato, sin [skip ci] |
| Mixto | Código + docs en el mismo commit | Inmediato, sin [skip ci] |
Reglas:
- Commits locales siguen siendo incrementales — la Regla 3 no cambia, se commitea docs con cada cambio.
- Push tras cada commit —
git pull --rebase origin main+git push. Sin diferir, sin acumular. - Tras push, verificar CI (comprobar TODOS los workflows del commit —
gh run list --json conclusion,name, NO--limit 1, Regla 14). Si rojo, arreglar antes de cerrar tarea. - Si la cuota Actions algún mes se queda corta: optimizar workflows individuales (frecuencia de crons,
concurrency,pathsfilters), NO reintroducir[skip ci]manual. - Excepción única: emergencia explícita autorizada por Edu/Dani con motivo documentado en el commit message. Avisar al equipo de que el deploy también se salta.
Histórico: la política previa “docs-only con [skip ci]” estuvo activa varios meses con GitHub Free (2000 min/mes apretados). Eliminada cuando Edu subió a Pro y se evidenció el coste oculto.
5. Modularización desde el Diseño
Diseña modular desde el punto cero. Todo código nuevo debe nacer ya modularizado:
- Límite por archivo: Máximo 500 líneas de lógica por módulo (excluye datos estáticos, migraciones, vendor files).
- Separación de responsabilidades: Un módulo = una responsabilidad. Si un archivo necesita más de 3 secciones con headers
# ──, probablemente debe ser un package con sub-módulos. - Patrones de modularización:
- Python: Package con
__init__.pyque re-exporta la API pública (vernetwork/services/device_discovery/). - JavaScript: Named exports en sub-módulos, coordinador que importa y delega (ver
static/js/pages/observatory/).
- Python: Package con
- Datos vs lógica: Los datos estáticos voluminosos (OIDs, configuraciones, constantes) van en archivos separados de la lógica que los consume.
- Detección reactiva: Si detectas archivos existentes con más de 1000 líneas de código, informa inmediatamente con un plan de refactorización.
Principio: Modularizar después cuesta 10x más que modularizar desde el inicio. El código nuevo NUNCA debe nacer monolítico.
6. Confirmación de Trabajos
Tras una petición compleja, presenta el plan (Implementation Plan) y no inicies la ejecución sin la aprobación previa del usuario.
7. No Fakes
NUNCA implementar configuraciones falsas, fakes, mocks ocultos ni datos hardcoded que simulen funcionalidad real sin informar explícitamente al usuario. Si un dato no se puede obtener en tiempo real, mostrar “No disponible” o “Sin monitorizar” — nunca inventar un estado ficticio. Los mocks son aceptables solo cuando están claramente marcados como tales (ej: badge “Datos de ejemplo”).
Razón: Un indicador falso en verde puede ocultar un problema real en producción y generar falsa confianza.
No falsear la verificación (gaming del verificador): la misma prohibición aplica al propio sistema de tests. Nunca debilitar, borrar o editar tests — ni relajar asserts o meter skip/xfail — para forzar el verde de CI. Un test que falla legítimamente se arregla en el CÓDIGO o se documenta el fallo con su plan; jamás se toca el verificador para simular éxito. Aplica igual a los subagentes y agentes de commit (Vigía/Estibador) que empujan a CI. Un CI en verde amañado es la forma más peligrosa del indicador falso: da confianza de que “pasa” mientras el defecto sigue vivo. (Origen: cruce del catálogo de 17 modos de fallo de loop-maker contra las Reglas de Oro, s209 · 09-07-2026 — único hueco no cubierto por una regla previa.)
Entorno de Desarrollo
| Aspecto | Valor |
|---|---|
| Directorio | CreaRack_Pro_app_Django/ |
| Arranque | docker compose up -d |
| URL Principal | http://localhost:8000 |
| Admin | http://localhost:8000/admin |
| API Docs | http://localhost:8000/api/docs |
| Reiniciar | docker compose restart web |
| Rebuild | docker compose down && docker compose build --no-cache web && docker compose up -d |
Nota Windows: OneDrive puede interferir con bind mounts. Si los cambios no se reflejan, usar rebuild.
Acceso SSH a Producción (Hetzner)
El agente tiene acceso SSH directo al servidor de producción:
| Comando | Propósito |
|---|---|
ssh root@crearack.com | Conectar al servidor |
ssh root@crearack.com "docker logs crearack-pro-zcmvsl-web-1 --tail 50" | Logs de la app |
ssh root@crearack.com "docker ps --format '{{.Names}} {{.Status}}'" | Estado contenedores |
Contenedores: crearack-pro-zcmvsl-{web,worker,cache,db,victoriametrics}-1
VictoriaMetrics (solo desde dentro del Docker network, via docker exec + Python urllib).
Usar este acceso para: verificar deploys, inspeccionar logs, consultar métricas, diagnosticar problemas en producción.
Configuraciones Fijas (NO MODIFICAR)
Auto-Plan AI
DIRECTRIZ PERMANENTE: modelo primario único, centralizado en
config/settings/base.py(Regla 8). Cambiarlo = 1 env var.
| Parámetro | Valor (fuente: config/settings/base.py) |
|---|---|
| Proveedor | AUTOPLAN_PROVIDER = google_genai (default; ollama solo para self-host dev) |
| Modelo | GEMMA4_GENAI_MODEL = gemma-4-26b-a4b-it (Gemma 4 vía Google AI Studio, Paid Tier) |
| Librería Python | google-genai (SDK unificado de Google) |
| Fallback deliberado | Claude Haiku 4.5 (claude-haiku-4-5-20251001) en la chain ai_fallback · driver openai-compat para Ollama dev |
PROHIBIDO: cambiar el modelo sin autorización explícita del usuario (Regla 8 — modelo primario único, sin OpenRouter/DeepSeek).
Razón: Gemma 4 es el modelo primario único del producto (CNS / Tutor / Explain / Auto-Plan), con el mejor balance validado velocidad/precisión para análisis de planos.
Directrices de Diseño UI
Documento completo:
Documentation/frontend/DESIGN_GUIDELINES.md
Regla Principal: Botones Solo Texto
PROHIBIDO añadir iconos dentro de botones.
<!-- INCORRECTO -->
<button><i class="fas fa-save"></i> Save</button>
<!-- CORRECTO -->
<button>Save</button>
JavaScript Dinámico
// INCORRECTO
btn.innerHTML = '<i class="fas fa-spinner"></i> Loading...';
// CORRECTO
btn.textContent = 'Loading...';
Títulos de Modales
Sin iconos en <h3>, <h4>.
Tooltips Obligatorios
OBLIGATORIO: Todo botón debe incluir title con descripción de su función.
<!-- CORRECTO -->
<button class="btn btn-action" title="Save changes">Save</button>
Clases Semánticas de Botones (OBLIGATORIO)
Fuente de verdad:
static/css/components.css→ secciónSEMANTIC BUTTON ALIASESDocumentación completa:Documentation/frontend/DESIGN_GUIDELINES.md→ Sección 6
PROHIBIDO crear estilos de botón custom en CSS de páginas. Usar SIEMPRE:
| Clase | Color | Uso |
|---|---|---|
btn-action | Azul | Save, Create, Confirm |
btn-danger | Rojo | Delete, Remove |
btn-warning | Naranja | Edit, Reset, Caution |
btn-success | Verde | Login, Connect |
btn-export | Amarillo | Export, Print |
btn-info | Cyan | Info, Status |
btn-neutral | Blanco | Close, Cancel, View |
Tamaños: btn-sm (28px), btn-xs (22px). Patrón: class="btn btn-sm btn-action".
Rendimiento Frontend
Documento completo:
Documentation/frontend/PERFORMANCE_GUIDELINES.md
- Scripts pesados (>50KB): usar
defer - CSS no crítico: cargar async
- Google Fonts: requieren
preconnect - PROHIBIDO:
backdrop-filter: blur()en modales con inputs - Auto-save: usar debounce (mín. 500ms)
Nuevas Dependencias (OBLIGATORIO)
Documento completo:
Documentation/reports/SECURITY_AUDIT.md
Antes de instalar cualquier dependencia:
-
Verificar seguridad:
- ¿Tiene vulnerabilidades conocidas? (Snyk, Safety)
- ¿Última actualización < 1 año?
- ¿Código fuente auditable?
-
Verificar licencia:
Licencia Permitida MIT, BSD, Apache, ISC ✅ Sí LGPL ⚠️ Solo como librería GPL, AGPL ❌ No -
Actualizar documentación:
- Añadir a
Documentation/reports/SECURITY_AUDIT.md(sección 3) - Actualizar
requirements.txtopackage.json - Añadir entrada en
core/licenses.py(página pública/licenses) - Registrar en
CHANGELOG.md
- Añadir a
Ejemplo de registro:
| paquete | versión | Licencia | Uso Comercial |
|---------|---------|----------|---------------|
| nueva-lib | 1.0.0 | MIT | ✅ Permitido |
Sistema de Versiones
Aplicación Principal
Fuente de verdad: config/settings/base.py → APP_VERSION
Mantener sincronizado en:
config/settings/base.py→APP_VERSION = "X.Y.Z"CLAUDE.md(header) yREADME.md
Sistema dinámico:
core/context_processors.pypasaAPP_VERSIONa templates- Templates usan
{{ APP_VERSION }}
Local Agent (CreaRackAgent.exe)
Fuente de verdad: terminal/agent/version.py → AGENT_VERSION
OBLIGATORIO al recompilar el agente:
- Actualizar
AGENT_VERSIONenterminal/agent/version.py - Actualizar versión en
build_agent.bat(comentarios y mensajes) - Documentar cambios en
Documentation/backend/LOCAL_AGENT_GUIDE.md - Registrar en
CHANGELOG.md
Cuándo incrementar versión:
- Nuevas dependencias (ej: icmplib, scrapli)
- Cambios en endpoints API del agente
- Modificaciones en módulos bundled (assets, agent_modules)
- Fixes de seguridad o bugs críticos
Sistemas Centralizados (Frontend Legacy)
| Sistema | Archivo |
|---|---|
| PERSISTENCE | static/js/state_core/PersistenceManager.js |
| MapHistoryAdapter | static/js/blueprints/MapHistoryAdapter.js |
Herramientas de Desarrollo
| Comando | Propósito |
|---|---|
docker compose up -d | Iniciar servicios |
docker compose logs -f web | Ver logs Django |
docker compose restart web | Reiniciar tras cambios |
py tests/scripts/backend_parity_validator.py | Validar backend |
py tests/scripts/frontend_parity_validator.py | Validar frontend |
Última actualización: 09-07-2026
Véase también
- [[ia-tech—metodo—claude-method-guide]] — guía del método Claude
- [[crearack-tech—method—harness-guide]] — guía maestra del Harness (sustituye a
ia-tech--metodo--harness-engineeringarchivada) - [[ia-tech—metodo—glossary]] — glosario del método
- [[crearack-tech—guides—biblioteca-guide]] — guía de uso de la Biblioteca
- [[crearack-tech—backend—biblioteca]] — arquitectura interna de la Biblioteca
- [[concept—biblioteca—supercontexto]] — modelo Supercontexto aplicado a la wiki