Agent-almanac shift-camouflage
git clone https://github.com/pjt222/agent-almanac
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/es/skills/shift-camouflage" ~/.claude/skills/pjt222-agent-almanac-shift-camouflage-af8abf && rm -rf "$T"
i18n/es/skills/shift-camouflage/SKILL.mdShift Camouflage
Implementar transformación adaptativa de superficie — interfaces polimórficas, comportamiento sensible al contexto y presentación dinámica — inspirada en los cromatóforos de la sepia. La superficie del sistema se adapta a su entorno mientras su núcleo permanece estable, reduciendo la superficie de ataque y optimizando la interacción con observadores diversos.
Cuándo Usar
- Un sistema debe presentar diferentes interfaces a diferentes consumidores (versionado de API, multi-tenant, basado en roles)
- Reducir la superficie de ataque exponiendo solo lo que cada observador necesita ver
- Implementar feature flags, despliegues progresivos o pruebas A/B a nivel de interfaz
- Un sistema necesita adaptar su comportamiento al contexto ambiental sin cambios en el núcleo
- Proteger la arquitectura interna del acoplamiento externo (los observadores se acoplan a la superficie, no a la estructura)
- Complementar
cuando el cambio de superficie es suficiente y la transformación profunda es innecesariaadapt-architecture
Entradas
- Requerido: El sistema cuya superficie necesita adaptación
- Requerido: Los observadores/consumidores y sus diferentes necesidades de interfaz
- Opcional: Diseño de interfaz actual y sus limitaciones
- Opcional: Modelo de amenazas (qué debe ocultarse de qué observadores)
- Opcional: Sistema de feature flags o infraestructura de despliegue progresivo
- Opcional: Restricciones de rendimiento (la generación dinámica de superficie tiene sobrecarga)
Procedimiento
Paso 1: Mapear el Paisaje de Observadores
Identificar quién interactúa con el sistema y qué necesita ver cada observador.
- Catalogar todos los observadores:
- Usuarios externos (usuarios finales, consumidores de API, socios)
- Servicios internos (microservicios, trabajos en segundo plano, herramientas de administración)
- Adversarios (atacantes, scrapers, competidores)
- Reguladores (auditores, verificaciones de cumplimiento)
- Para cada observador, definir:
- Lo que necesitan ver (superficie de interfaz requerida)
- Lo que no deberían ver (superficie oculta)
- Lo que esperan ver (superficie de compatibilidad — puede diferir de lo que necesitan)
- Cómo interactúan (protocolo, frecuencia, sensibilidad)
- Crear la matriz observador-superficie:
Observer-Surface Matrix: ┌──────────────┬────────────────────────┬─────────────────┬──────────────┐ │ Observer │ Required Surface │ Hidden Surface │ Threat Level │ ├──────────────┼────────────────────────┼─────────────────┼──────────────┤ │ End users │ Public API v2, UI │ Internal APIs, │ Low │ │ │ │ admin endpoints │ │ ├──────────────┼────────────────────────┼─────────────────┼──────────────┤ │ Partner API │ Partner API, webhooks │ Internal logic, │ Medium │ │ │ │ user data │ │ ├──────────────┼────────────────────────┼─────────────────┼──────────────┤ │ Admin tools │ Full API, debug │ Raw data store │ Low │ │ │ endpoints │ access │ │ ├──────────────┼────────────────────────┼─────────────────┼──────────────┤ │ Adversaries │ Nothing (minimal) │ Everything │ High │ │ │ │ possible │ │ └──────────────┴────────────────────────┴─────────────────┴──────────────┘
Esperado: Un paisaje completo de observadores con requisitos de superficie por observador. Esto impulsa todo el diseño de camuflaje posterior.
En caso de fallo: Si la identificación de observadores es incompleta, comenzar con los dos extremos: el observador más privilegiado (admin) y el más restringido (adversario). Diseñar superficies para estos dos, luego interpolar para los observadores entre ellos.
Paso 2: Diseñar el Mapeo de Cromatóforos
Crear el mapeo entre el contexto del observador y la presentación de superficie — la capa de "cromatóforos".
- Definir señales de contexto:
- Identidad de autenticación -> determina nivel de privilegio
- Origen de la solicitud -> contexto geográfico, de red o de aplicación
- Feature flags -> habilita/deshabilita elementos específicos de superficie
- Tiempo/fase -> etapa de despliegue, horario laboral, ventanas de mantenimiento
- Carga/salud -> el modo degradado puede presentar superficie reducida
- Diseñar las reglas de generación de superficie:
- Para cada combinación de señales de contexto, definir qué elementos de superficie son:
- Visibles: incluidos en la respuesta/interfaz
- Ocultos: excluidos completamente (ni siquiera los mensajes de error revelan su existencia)
- Transformados: presentes pero modificados para este observador (esquema diferente, datos simplificados)
- Señuelo: elementos de superficie deliberadamente engañosos para contextos adversariales
- Para cada combinación de señales de contexto, definir qué elementos de superficie son:
- Implementar la capa de cromatóforos:
- Un middleware/proxy delgado que se sitúa entre el sistema central y los observadores
- Evalúa señales de contexto en cada solicitud
- Aplica la configuración de superficie apropiada
- Nunca modifica el comportamiento central — solo filtra y transforma la superficie
Chromatophore Architecture: ┌──────────────────────────────────────────────────────┐ │ Observer Request │ │ │ │ │ ↓ │ │ ┌─────────────────┐ │ │ │ Context Extract │ ← Auth, origin, flags, time │ │ └────────┬────────┘ │ │ ↓ │ │ ┌─────────────────┐ │ │ │ Surface Select │ ← Observer-surface matrix lookup │ │ └────────┬────────┘ │ │ ↓ │ │ ┌─────────────────┐ │ │ │ Core System │ ← Processes request normally │ │ └────────┬────────┘ │ │ ↓ │ │ ┌─────────────────┐ │ │ │ Surface Filter │ ← Remove/transform/add elements │ │ └────────┬────────┘ │ │ ↓ │ │ Observer Response (adapted surface) │ └──────────────────────────────────────────────────────┘
Esperado: Un mapeo de cromatóforos que traduce el contexto del observador en configuración de superficie. El mapeo es explícito, auditable y separado de la lógica central.
En caso de fallo: Si el mapeo se vuelve demasiado complejo (demasiadas combinaciones de contexto), simplificar a superficies basadas en roles: definir 3-5 perfiles de superficie (público, socio, admin, interno, mínimo) y mapear cada observador a un perfil.
Paso 3: Implementar Polimorfismo Conductual
Hacer que el comportamiento del sistema se adapte al contexto, no solo su apariencia superficial.
- Identificar comportamientos dependientes del contexto:
- Nivel de detalle de respuesta (verbose para admin, mínimo para público)
- Limitación de tasa (generosa para socios, estricta para llamantes desconocidos)
- Mensajes de error (detallados para internos, genéricos para externos)
- Frescura de datos (tiempo real para premium, en caché para estándar)
- Disponibilidad de funciones (completa para beta testers, solo estable para general)
- Implementar variantes conductuales:
- Cada variante es una ruta de comportamiento completa y probada
- El contexto determina qué variante se ejecuta
- Las variantes comparten lógica central pero difieren en presentación y política
- Integración de feature flags:
- Los feature flags controlan qué variantes conductuales están activas
- Despliegue progresivo: exponer nuevo comportamiento a un porcentaje de observadores, incrementando con el tiempo
- Circuit breakers: revertir automáticamente al comportamiento seguro si la nueva variante causa errores
Esperado: El comportamiento del sistema se adapta al contexto del observador — la misma lógica central produce respuestas apropiadas para diferentes audiencias. Los feature flags permiten el despliegue progresivo de nuevos comportamientos.
En caso de fallo: Si el polimorfismo conductual crea demasiadas rutas de código, consolidar a un modelo de pipeline: lógica central -> capa de política -> capa de presentación. El polimorfismo vive solo en las capas de política y presentación, manteniendo la lógica central singular.
Paso 4: Reducir la Superficie de Ataque
Minimizar lo que los adversarios pueden observar e interactuar.
- Aplicar el principio de superficie mínima:
- Cada observador ve solo lo que necesita — nada más
- Los observadores no autenticados ven la superficie mínima posible
- Los mensajes de error nunca revelan estructura interna (sin trazas de pila, sin rutas internas, sin números de versión)
- Implementar reducción activa de superficie:
- Eliminar páginas por defecto, encabezados y endpoints que revelan la pila tecnológica
- Aleatorizar características de respuesta no esenciales (jitter de temporización, orden de encabezados)
- Deshabilitar endpoints de API no utilizados completamente (no solo ocultos — realmente desactivados)
- Desplegar disrupción de patrones:
- Variar características de respuesta para derrotar el fingerprinting
- Introducir imprevisibilidad controlada en aspectos no funcionales
- Asegurar que el comportamiento funcional permanezca determinístico mientras las características de superficie varían
- Monitorear el reconocimiento:
- Detectar patrones de solicitudes que sondean superficie oculta (ataques de enumeración)
- Alertar sobre accesos repetidos a endpoints inexistentes (fuzzing de rutas)
- Rastrear y correlacionar patrones de reconocimiento entre sesiones (ver
)defend-colony
Esperado: Una superficie de ataque mínima donde los adversarios no pueden determinar fácilmente la pila tecnológica del sistema, su estructura interna o sus capacidades ocultas. Los intentos de reconocimiento son detectados y rastreados.
En caso de fallo: Si la reducción de superficie rompe consumidores legítimos, la matriz observador-superficie es incompleta — necesidades legítimas están siendo ocultadas. Revisar el Paso 1 y actualizar la matriz. Si la aleatorización causa problemas, reducir la aleatorización a aspectos solo no funcionales (temporización, encabezados) y mantener las respuestas funcionales determinísticas.
Paso 5: Mantener la Coherencia de Superficie
Asegurar que la superficie dinámica permanezca consistente, depurable y mantenible.
- Pruebas de superficie:
- Probar cada perfil de observador explícitamente (¿admin ve la superficie admin? ¿público ve la superficie pública?)
- Probar transiciones de superficie (¿qué pasa cuando el contexto de un observador cambia a mitad de sesión?)
- Probar modos de falla de superficie (¿qué superficie aparece si la capa de cromatóforos falla?)
- Documentación de superficie:
- Documentar cada perfil de observador y su configuración de superficie
- Documentar las señales de contexto y sus efectos en la selección de superficie
- Mantener la documentación sincronizada con el comportamiento real (probar la documentación contra la realidad)
- Soporte de depuración:
- El modo admin/depuración revela qué perfil de superficie está activo y por qué
- El logging captura qué configuración de superficie fue aplicada a cada solicitud
- Capacidad de reproducir una solicitud a través de un perfil de superficie específico para depuración
- Evolución de superficie:
- Agregar nuevos elementos de superficie: agregar a los perfiles apropiados, probar, desplegar
- Eliminar elementos de superficie: período de aviso de deprecación, luego eliminación
- Cambiar comportamiento de superficie: controlado por feature flags, despliegue progresivo
Esperado: Un sistema de adaptación de superficie mantenible, testeable y bien documentado. La naturaleza dinámica no compromete la capacidad de depurar, documentar o evolucionar las interfaces.
En caso de fallo: Si la capa de cromatóforos se convierte en una pesadilla de depuración, agregar transparencia: cada respuesta incluye un encabezado de traza (visible solo para el perfil admin/depuración) indicando qué perfil de superficie fue aplicado y qué señales de contexto lo determinaron.
Validación
- El paisaje de observadores está mapeado con requisitos de superficie por observador
- El mapeo de cromatóforos traduce contexto a configuración de superficie
- El polimorfismo conductual adapta respuestas al contexto del observador
- La superficie de ataque está minimizada para observadores adversariales
- Cada perfil de observador está explícitamente probado
- El modo de falla de superficie presenta un valor por defecto seguro (superficie mínima)
- El modo depuración/admin puede inspeccionar la configuración de superficie activa
- La documentación de superficie coincide con el comportamiento real
Errores Comunes
- Explosión de complejidad de superficie: Demasiados perfiles de observador con demasiadas variaciones. Consolidar a un máximo de 3-5 perfiles. La mayoría de observadores encajan en categorías amplias
- Contaminación del núcleo: Dejar que la lógica de adaptación de superficie se filtre en la lógica de negocio central. La capa de cromatóforos debe ser separada — si estás agregando sentencias if sobre tipo de observador en código central, la arquitectura está mal
- Seguridad solo por oscuridad: La reducción de superficie es una capa de defensa en profundidad, no un reemplazo para controles de seguridad apropiados. Un endpoint oculto aún necesita autenticación y autorización
- Superficies inconsistentes: El observador A ve la versión 1 de una respuesta y el observador B ve la versión 2 — pero se supone que deben ver lo mismo. Probar superficies explícitamente y mantener la matriz observador-superficie como autoritativa
- Olvidar la superficie de fallo: Cuando la capa de cromatóforos misma falla, ¿qué superficie ve el observador? El valor por defecto debe ser seguro (superficie mínima) no abierto (superficie completa)
Habilidades Relacionadas
— la adaptación de superficie puede resolver presión identificada en la evaluación de forma sin requerir transformación profundaassess-form
— cambio estructural profundo para cuando la adaptación de superficie es insuficienteadapt-architecture
— la adaptación de superficie puede enmascarar daño durante la reparación (con precaución — no ocultar problemas reales)repair-damage
— la reducción de superficie de ataque es una capa de defensa; la detección de reconocimiento alimenta la defensadefend-colony
— el comportamiento sensible al contexto en sistemas distribuidos requiere adaptación de superficie coordinadacoordinate-swarm
— los API gateways implementan muchas funciones de la capa de cromatóforos en la prácticaconfigure-api-gateway
— los servicios e ingress de Kubernetes permiten control de superficie a nivel de reddeploy-to-kubernetes