VP LAB · AI SYSTEMS
El código
después del diseño.
Agentes de IA, automatizaciones y sistemas inteligentes — construidos sobre años aplicando Design Thinking.
ARC
Adaptive Rule Context
Un sistema de reglas contextuales para Claude Code. Solo carga el dominio activo — el contexto libre cambia la calidad del output.
GitHubBrief
Los agentes de Claude Code reciben un sistema de reglas en cada mensaje. Sin un sistema de gestión, todas las reglas se inyectan siempre — independientemente de la tarea en curso.
En proyectos con múltiples áreas de trabajo (infraestructura, n8n, portfolio, servidor), este overhead acumulado consume entre el 40% y el 60% del contexto disponible con reglas que no aplican a la tarea concreta.
ARC organiza las reglas en dominios contextuales. Solo GLOBAL (siempre) y el dominio que coincide con la tarea actual se cargan. El resto permanece en SHORT — una línea por dominio, presente siempre, sin peso real.
El Problema
¿Cuántos mensajes dura tu sesión si tienes 50 reglas activas? Pulsa Iniciar.
↑ ~2,100 tokens de reglas por mensaje — todas, siempre
↑ ~435 tokens de reglas por mensaje — solo el dominio activo
Inspiración
Anthropic ya había resuelto esto.
El sistema de Skills de Claude Code resuelve exactamente este problema para herramientas externas: cada skill expone una descripción corta → Claude decide si aplica → solo carga el cuerpo completo si coincide. El mismo agente que saturaba el contexto con reglas ya usaba arquitectura lazy-loading para sus propias herramientas.
ARC adapta ese patrón a las reglas personales de proyecto. La arquitectura es idéntica.
---
name: commit
description: Create a git commit for the current project. Use when the user wants to save a checkpoint of work done. Automatically detects the active project, stages relevant files, and creates a descriptive commit message.
user-invocable: true
allowed-tools: Bash, Read, TaskUpdate, TaskList
---
# Commit Skill
When invoked, create a git commit for the active project following this exact process:
## Step 1 — Detect project
Identify which project we're working on based on conversation context. Default to /root/projects/vasylpavlyuchok if unclear. If $ARGUMENTS is provided, use it as the project path.
## Step 2 — Inspect changes
Run these in parallel:
- git -C <project_path> status --short
- git -C <project_path> diff HEAD --stat
- git -C <project_path> log --oneline -3
## Step 3 — Stage files
Stage all modified and untracked files EXCEPT:
- .env* files
- Files containing secrets or API keys
- node_modules/ · .next/
- Large binary files not related to the project (>5MB)
## Step 4 — Write commit message
Follow this format strictly:
<type>: <short description in English, max 72 chars>
- Bullet point of what was done
- Another bullet point
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Types: feat · fix · style · refactor · config · seo
## Step 5 — Commit
Execute the commit. Show the result to the user.
## Step 6 — Update tasks
After committing successfully, check TaskList for any pending commit-related tasks and mark them as completed.
## Rules
- Never use --no-verify
- Never commit .env files or secrets
- If nothing to commit, say clearly: "Nothing to commit — working tree clean"
- The commit message must be in English
- Always show what was committed after success
DOCKER_STATE=active
DOCKER_ALWAYS_ON=false
DOCKER_RECALL=docker, contenedor, compose, traefik,
build, deploy, imagen, puerto, port
# ARC Domain: DOCKER
# Infraestructura y contenedores
DOCKER_RULE_0_SHORT=Red proxy como único punto de entrada. Nunca exponer puertos directamente.
DOCKER_RULE_0=Todo servicio nuevo debe conectarse a la red externa del proxy inverso. Nunca mapear puertos 80/443 directamente — todo el tráfico HTTP/HTTPS entra por el proxy. Verificar con 'docker network inspect' que el contenedor aparece en la red antes de hacer pruebas. Si el contenedor no aparece en la red, el proxy no lo detecta y el dominio queda sin respuesta.
DOCKER_RULE_1_SHORT=Rebuild obligatorio tras cambios en código. Hot-reload solo en entorno dev.
DOCKER_RULE_1=Después de modificar código fuente, ejecutar 'docker compose build' antes de 'up -d'. El hot-reload funciona únicamente en el contenedor de desarrollo (docker-compose.dev.yml) — en producción cada cambio requiere rebuild completo. Evitar 'up --force-recreate' sin build previo: el contenedor se recrea pero ejecuta la imagen anterior sin los cambios.
DOCKER_RULE_2_SHORT=Stop no down. Down destruye el contenedor y lo elimina del panel de administración.
DOCKER_RULE_2=Para pausar un servicio usar 'docker compose stop' o 'docker stop nombre'. NUNCA 'docker compose down' — este comando destruye el contenedor y lo hace invisible desde el panel de administración. Si se ejecuta accidentalmente, recuperar con 'docker compose up -d' sin build (si no hubo cambios de código el contenedor vuelve al estado anterior).
DOCKER_RULE_3_SHORT=SSL: usar certresolver=myresolver. El nombre letsencrypt no existe en este servidor.
DOCKER_RULE_3=En las labels de Traefik usar siempre 'certresolver=myresolver'. El nombre 'letsencrypt' no existe en la configuración de Traefik de este servidor y produce error silencioso: el contenedor arranca, el dominio responde en HTTP, pero el SSL nunca se provisiona. Verificar en los logs de Traefik que aparece 'Obtained certificate' tras el primer deploy en un dominio nuevo.
description: / N8N_RECALL=TRIGGERLo único que Claude lee siempre. ~20 tokens. Decide si el skill o dominio aplica.
body / N8N_RULE_X=LAZYEl contenido completo. Solo se carga cuando el skill es invocado o el dominio coincide.
Star Commands
Prefija tu prompt con *nombre para forzar un set de reglas específico, independientemente del keyword matching.
Carga reglas de desarrollo — code quality, estructura, testing.
*dev arregla el bug en el formulario de login
Carga checklist de code review — seguridad, lógica, edge cases.
*review arregla el bug en el formulario de login
Estructura
Cada dominio es un archivo de texto plano en ~/.arc/. El formato es intencionado: Claude Code puede leer cualquier archivo del sistema de forma nativa, sin parsers ni middleware. Un manifest central controla qué dominios están activos y qué keywords los activan — una sola lectura para ver el estado completo del sistema. Si algo falla o quieres modificar una regla, abres el archivo y lo cambias directamente.
# Versión SHORT — siempre presente, ≤15 palabras
N8N_RULE_1_SHORT=n8n producción → usar MCP n8n-agent
# Versión FULL — cargada solo al activar el dominio
N8N_RULE_1=Usar MCP n8n-agent para n8n producción (agentbooster.ai). Siempre validar antes de activar: n8n_validate_workflow. Max 1 test call por API externa.
# manifest — controla qué activa este dominio
N8N_RECALL=n8n,workflow,automatización,webhook,nodo
Debuggable por diseño
ARC no es una caja negra. El matching es determinista — antes de empezar una sesión puedes ver exactamente qué dominios cargarían para cualquier prompt. Nada oculto.
# el matching es determinista — los resultados son reproducibles
Demostración
ARC no es magia — el matching es determinista y transparente. Selecciona un escenario para ver exactamente qué dominios se escanean, cuál coincide y qué texto recibe Claude antes de responder. Lo que ves aquí es lo que se inyecta.
Demostración en vivo
Selecciona una tarea para ver cómo ARC decide qué reglas cargar.
← Selecciona una tarea para comenzar
Context Brackets
Claude no sabe cuánto contexto le queda disponible. Sin esa información, trabaja igual al principio que al final — y al final lo hace peor sin saberlo. ARC resuelve esto inyectando un bracket al inicio de cada mensaje: una línea que indica el estado real del contexto. Claude lee ese bracket y ajusta: en [FRESH] opera lean, en [MODERATE] refuerza decisiones clave, en [DEPLETED] hace checkpoint, y en [CRITICAL] avisa de abrir sesión nueva.
Sesión nueva. Solo GLOBAL cargado. El agente trabaja con mínimo overhead.
→ Lean. Sin historial. Máxima atención al task.
Sesión activa. Claude refuerza decisiones clave antes de tareas grandes.
→ Resumir estado antes de empezar tarea nueva.
Contexto bajo. Claude hace checkpoint y prepara handoff antes de continuar.
→ Checkpoint todo. Preparar notas de continuidad.
Contexto crítico. Claude advierte al usuario y recomienda abrir sesión nueva.
→ Avisar. Nueva sesión antes de continuar.
Se mejora solo
ARC incluye un analizador semanal. Cada lunes revisa las últimas sesiones y detecta patrones: comandos que se repiten, correcciones que haces con frecuencia, áreas donde el agente pide contexto que ya debería tener. El resultado es una propuesta concreta de reglas nuevas o automatizaciones que no sabías que necesitabas.
El analizador lee los últimos 7 días de actividad.
Identifica comportamientos repetidos, gaps de contexto y oportunidades de automatización.
Sugiere reglas nuevas o modificaciones. Tú decides qué entra en ARC.
Cron: Lunes 9:00 AM · Modo automatización: quincenal
Resultado
~85%
menos overhead en reglas
Las sesiones duran más sin forzar auto-compactación. Pero el número no es lo importante — lo importante es qué hace Claude con ese contexto libre: respuestas más precisas, menos desviaciones, menos veces "se olvidó" de algo que ya sabía. La diferencia entre trabajar con contexto saturado y contexto limpio no se mide en tokens: se nota en la calidad del output.
$ arc stats --week
Período: últimos 7 días
Activaciones: 47
Líneas recortadas: 1,823 → 312 (83% reducción)
Tokens ahorrados: ~3,800
Top comandos: git diff (18) · docker logs (12) · npm install (9)
Crea tu dominio
Dos pasos. Un archivo de texto plano y una entrada en el manifest. No hay más.
# SHORT — siempre visible, ≤15 palabras
MYPROJECT_RULE_1_SHORT=Leer CLAUDE.md antes de modificar nada.
# FULL — cargado solo al activar el dominio
MYPROJECT_RULE_1=Leer siempre el CLAUDE.md del proyecto antes de cambios. Contiene decisiones de arquitectura no obvias en el código.
MYPROJECT_STATE=active
MYPROJECT_ALWAYS_ON=false
MYPROJECT_RECALL=myproject, feature-x, deploy staging
# opcional — activa automáticamente por path de archivo
MYPROJECT_PATH=/absolute/path/to/myproject
Instálalo en tu proyecto
Pásale el link de GitHub a tu Claude Code. Él te guía paso a paso.
Ver en GitHub →