josemoreupeso.es
02-contemplar-reino.md — TLOTP
# 🔍 Contemplar el Reino — Análisis de Configuración

## Flujo de ejecución

Este módulo ejecuta los siguientes pasos en orden:

---

## PASO 1: Leer y mapear toda la configuración

**Nota sobre WebFetch**: Antes de ejecutar los módulos, comprobar si la documentación
oficial de las 6 URLs ya está cargada en el contexto de esta sesión (por haber ejecutado
previamente "Susurrar planes" u otro módulo que los haya obtenido). Si ya están en contexto,
indicárselo al módulo de jerarquía para que no re-fetchee.

Ejecutar los dos módulos de lectura existentes:

1. @prompts/palantir/sections/03-jerarquia-oficial.md — leer jerarquía oficial (CLAUDE.md, rules/, auto memory) y obtener los 6 WebFetch de documentación oficial (solo si no están ya en contexto)
2. @prompts/palantir/sections/04-exploracion-custom.md — explorar settings.json, skills/, hooks/ y otros ficheros adicionales

---

## PASO 2: Análisis inteligente

Con toda la información leída y la documentación oficial cargada, realizar el análisis cruzando ambas fuentes.

### 2.1 — Detectar conflictos y redundancias

Buscar:
- Reglas en CLAUDE.md global que contradigan reglas en CLAUDE.md de proyecto
- Rules en `rules/` que solapen o contradigan instrucciones en CLAUDE.md
- Hooks configurados que dupliquen comportamientos ya cubiertos por permisos o rules
- Instrucciones en CLAUDE.md que deberían ser skills (contenido muy largo o específico de un stack)
- Contenido en CLAUDE.md que pertenece a settings.json (configuración técnica, modelos, permisos)

### 2.2 — Verificar buenas prácticas

Verificar contra la documentación oficial:
- CLAUDE.md global: ¿supera 200 líneas? ¿es específico o demasiado genérico?
- Rules: ¿tienen frontmatter `paths:` correcto? ¿están activas para los paths adecuados?
- MEMORY.md: ¿supera 200 líneas? (solo se cargan las primeras 200)
- settings.json: ¿permisos demasiado permisivos o demasiado restrictivos?
- Hooks: ¿matchers correctos? ¿eventos apropiados para lo que hacen?
- ¿Hay features recomendadas por el stack que no están configuradas?

### 2.3 — Scoring 0-100

Calcular una puntuación basada en los criterios de la documentación oficial.
La puntuación NO es determinista (puede variar entre análisis) pero SIEMPRE se basa en:
- Cumplimiento de buenas prácticas oficiales
- Ausencia de conflictos
- Uso correcto de cada feature en su scope
- Organización y estructura de los ficheros

**Mostrar**:
```
📊 PUNTUACIÓN DE CONFIGURACIÓN: [X]/100

  ✅ Fortalezas detectadas: [lista breve]
  ⚠️  Áreas de mejora:      [lista breve]
```

---

## PASO 3: Mostrar sugerencias priorizadas

Si hay sugerencias, mostrarlas ordenadas por urgencia antes del menú de revisión.

**Formato**:
```
🔍 ANÁLISIS COMPLETADO — [X] sugerencias encontradas
══════════════════════════════════════════════════════

🔴 ALTA PRIORIDAD ([X])
  1. [descripción del problema]
  2. [descripción del problema]

🟡 MEDIA PRIORIDAD ([X])
  3. [descripción del problema]

🟢 BAJA PRIORIDAD ([X])
  4. [descripción del problema]

══════════════════════════════════════════════════════
```

Si no hay sugerencias:
```
✅ CONFIGURACIÓN IMPECABLE
   No se han encontrado mejoras aplicables. Puntuación: [X]/100
```

---

## PASO 4: Menú post-análisis

Tras mostrar el scoring y las sugerencias priorizadas, **usar AskUserQuestion**:

```json
{
  "questions": [{
    "header": "¿Qué hacemos?",
    "question": "El análisis ha concluido. ¿Cómo deseas continuar?",
    "multiSelect": false,
    "options": [
      {
        "label": "⚔️ Aplicar mejoras",
        "description": "Revisaremos cada mejora una a una — confirmarás antes de aplicar cualquier cambio"
      },
      {
        "label": "🔙 Volver al menú de Palantír",
        "description": "Volver sin aplicar cambios"
      },
      {
        "label": "🚪 Salir",
        "description": "Cerrar Palantír y TLOTP"
      }
    ]
  }]
}
```

---

## PASO 5: Revisor uno a uno (si elige "Aplicar mejoras")

Iterar por cada sugerencia **en orden de prioridad** (🔴 primero, luego 🟡, luego 🟢).

**Mostrar para cada sugerencia** (contador visible):

```
🔮 Palantír muestra la mejora #[X]...

⚔️ MEJORA [X/N] — [🔴/🟡/🟢] [PRIORIDAD]
══════════════════════════════════════════════════════

📍 Fichero afectado: [ruta completa]
🌍 Scope sugerido:   [Global (~/.claude/) / Proyecto (.claude/)]
   Motivo: [justificación clara de por qué global o proyecto]

❌ Problema:
   [descripción clara del problema detectado]

✅ Solución propuesta:
   [descripción exacta de qué se aplicaría]

🎯 Resultado esperado:
   [qué mejorará o se corregirá tras aplicar]

══════════════════════════════════════════════════════
```

**AskUserQuestion por cada sugerencia**:

```json
{
  "questions": [{
    "header": "Mejora [X/N]",
    "question": "¿Qué hacemos con esta mejora?",
    "multiSelect": false,
    "options": [
      {
        "label": "✅ Aplicar",
        "description": "Aplicar la solución propuesta en el scope sugerido"
      },
      {
        "label": "✏️ Modificar propuesta",
        "description": "Ajustar la solución o cambiar el scope antes de aplicar"
      },
      {
        "label": "🔎 Buscar alternativa en docs",
        "description": "Razonar sobre la documentación ya cargada para proponer otra solución"
      },
      {
        "label": "⏭️ Saltar",
        "description": "Dejar esta mejora sin cambios y pasar a la siguiente"
      }
    ]
  }]
}
```

**Comportamiento por opción**:

- **Aplicar**: Ejecutar el cambio, confirmar éxito y mostrar una frase de lore variada, por ejemplo:
  - *"Desde el Palantír, el reino se ve más seguro."*
  - *"El reino gana poder. Palantír lo confirma."*
  - *"Saruman aprobaría esta mejora."*
  - *(Variar la frase según la mejora aplicada — que sea breve y épica)*
  - Luego pasar a la siguiente.
- **Modificar propuesta**: Preguntar qué cambiar (scope, contenido, formato). Mostrar propuesta actualizada y confirmar antes de aplicar.
- **Buscar alternativa en docs**: **NO re-fetchear** — releer y razonar explícitamente sobre la documentación oficial ya cargada en contexto (WebFetch 1-6 del PASO 1). Proponer una solución alternativa al mismo problema y volver a preguntar.
- **Saltar**: Mostrar `🔮 Palantír ignoró esto por el momento.` y pasar a la siguiente sugerencia.

**IMPORTANTE**: Antes de aplicar cualquier cambio, indicar siempre:
- Si afecta configuración **global** (`~/.claude/`) o **de proyecto** (`.claude/`)
- La ruta exacta del fichero que se modificará
- Si el cambio crea un fichero nuevo o modifica uno existente

---

## PASO 6: Resumen final

Al terminar el revisor (o si no hay sugerencias), mostrar:

```
📋 RESUMEN DE CAMBIOS
══════════════════════════════════════════════════════
  ✅ Aplicadas:   [X]
  ✏️  Modificadas: [X]
  ⏭️  Saltadas:    [X]
══════════════════════════════════════════════════════
```

**AskUserQuestion**:

```json
{
  "questions": [{
    "header": "Finalizar",
    "question": "Análisis completado. ¿Qué deseas hacer?",
    "multiSelect": false,
    "options": [
      {
        "label": "🔙 Volver al menú de Palantír",
        "description": "Continuar con otras opciones de Palantír"
      },
      {
        "label": "🏠 Volver al menú de TLOTP",
        "description": "Volver al menú principal de TLOTP"
      },
      {
        "label": "🚪 Salir",
        "description": "Cerrar Palantír y TLOTP"
      }
    ]
  }]
}
```