# SKILLS Y HERRAMIENTAS — CESCAC (cerebro compartido)

> **Convención: este archivo es APPEND-ONLY entre agentes.** Si vas a sumar una herramienta/CLI
> nueva, agrega tu sección — no reescribas ni borres lo que ya documentó otro agente. Verificado
> en vivo 2026-07-19 (no supuesto). Antes de instalar/reinstalar algo, revisa esta lista primero
> (regla `0e` verificar-antes-de-crear).
>
> ⚠️ 2026-07-19 23:01 — este archivo fue sobrescrito por accidente por un segundo agente (yo,
> AGT-SONNET-NORMAL-hub) sin backup previo, pisando la primera versión (CLIs de suscripción:
> Gemini/Codex/Perplexity). Recuperado desde `SUSCRIPCIONES_CLI_20260719.md` (repo, fuente
> completa de esa investigación) y fusionado abajo sin pérdida de contenido. Lección para todos:
> `ls`/`curl` el archivo objetivo ANTES de `scp`/sobrescribir algo en `/cerebro/`.

## 1 · Suscripciones CLI del dueño (no APIs de pago — orden textual: "usar las suscripciones
pagadas del dueño, no APIs")

Fuente completa con pasos exactos, límites y evidencia → `SUSCRIPCIONES_CLI_20260719.md` (repo).

### 1.1 Gemini CLI — ✅ instalado en PC Windows, login pendiente del dueño

- `npm install -g @google/gemini-cli` → v0.51.0 instalado y verificado (`gemini --version`,
  `gemini -p "..."` responde y pide auth, confirma binario funcional). Repo oficial:
  [google-gemini/gemini-cli](https://github.com/google-gemini/gemini-cli).
- **Login (NO delegable, credencial del dueño):** correr `gemini` → elegir **"Login with
  Google"** (NO API key, NO Vertex AI) → se abre el navegador → cuenta recomendada
  `familiacescac@gmail.com` → aceptar permisos → queda cacheado (Windows Credential Manager), no
  se repite.
- **Uso por agentes tras el login:** `gemini -p "prompt"` (headless/no-interactivo). Flags útiles:
  `-o json` (salida parseable), `--approval-mode plan` (solo lectura, recomendado para research),
  `-y/--yolo` (auto-aprueba TODO — evitar en producción sin supervisión).
- **Límites (Login with Google):** **60 req/min · 1,000 req/día**, familia Gemini completa —
  4x más cupo que la API key gratis (250/día, solo Flash). **Cuota COMPARTIDA por cuenta**, no
  por dispositivo/agente.
- **Regla de uso — Gemini CLI vs deepseek/LiteLLM:** research puntual/razonamiento
  largo/auditoría única → **Gemini CLI** (gratis, cupo limitado). Volumen masivo/loops/crons
  (fábrica diaria, clasificador CRM) → **deepseek vía LiteLLM** (`api.cescac.com`, ya pagado, no
  arriesga el cupo compartido). En duda → LiteLLM.
- **VPS:** Node `v20.20.0`/npm `10.8.2` cumplen el mínimo, Gemini CLI **NO instalado ahí aún**.
  2 opciones documentadas para cuando el dueño decida: (A, recomendada) agentes del VPS invocan
  `gemini -p` reusando el login ya hecho en esta PC — misma cuenta, mismo cupo, cero fricción;
  (B) login headless directo en el VPS vía túnel SSH `-L`, con caveat de keychain Linux sin
  verificar.

### 1.2 Codex CLI — ✅ operativo (suscripción ChatGPT del dueño, vía plugin)

Ya resuelto en sesión previa, sin API key nueva. Nota de coordinación: la línea de
`TASK_QUEUE_MAESTRO.md` ("Codex: configurar deepseek/openrouter") quedó **desactualizada** — no
se tocó ese archivo para no pisar trabajo de otro agente sobre el tablero; queda pendiente que
quien lo gestione la cierre.

### 1.3 Perplexity — ❌ sin vía oficial de CLI/API-por-suscripción

No existe CLI oficial que use la suscripción Pro del dueño. Única vía: packs de prompts
manuales (el agente prepara el prompt, el dueño lo pega a mano). No forzar scraping ni usar su
API de pago sin autorización explícita.

### 1.4 Canva MCP — operativo (reportado, uso puntual)

Reportado 2026-07-19: activo y generó 4 diseños en una sesión paralela de otro agente. NO
conectado en el scope de este proyecto Claude Code (`claude mcp list` no lo lista aquí ahora
mismo) — si lo necesitas, confirma con el agente/dueño que lo tiene activo antes de reinstalar
para no duplicar sesión/auth.

## 2 · LiteLLM (`api.cescac.com/v1`) — gateway de 14 proveedores

Alias vivos verificados en el dashboard `vps.cescac.com/`: DeepSeek V4 Flash/Pro (económico, 1M
ctx), Claude Haiku/Sonnet, Gemini 3.1 Pro (económico, 2M ctx), Kimi K2.5 (económico), GPT-5.4
Mini/Codex. Key en `.continue/config.json` — NUNCA pegar en chat.

**Regla de elección económica general:** Ollama local (gratis, si está disponible) → LiteLLM
barato (DeepSeek/Kimi/Gemini económico) → suscripción ya pagada (Gemini CLI / Codex CLI, con la
regla de cupo de §1) → Claude Sonnet/Opus (solo si las anteriores no alcanzan o la tarea es
crítica). 3 intentos en un tier antes de escalar.

## 3 · MCPs conectados de verdad (verificado `claude mcp list`, no lista de config vieja)

| MCP | Estado | Uso |
|---|---|---|
| `playwright` | ✔ Conectado | Browser automation, `npx -y @playwright/mcp`. |
| `firecrawl` | ✔ Conectado | Scraping/search con extracción de página completa. |
| `n8n-mcp` | ✔ Conectado | 1,650 nodos n8n, valida workflows antes de importar (`npx -y n8n-mcp`). |
| `chrome-devtools` | ✔ Conectado | DevTools/inspección de navegador. |
| `graphify` | ✔ Conectado | Grafo de conocimiento (código+docs+conceptos), 1434 nodos/1902 links. |
| `obsidian` | ✔ Conectado | Lee/escribe notas del vault único `obsidian_cescac/`. |
| `codegraph` | ✔ Conectado | Grafo de código profundo (símbolos/call-graph), 100% local. |
| `notebooklm` | ✔ Conectado (proceso) | SIN sesión — requiere `setup_auth` manual del dueño (riesgo ToS). |
| `canva` | Reportado activo (otra sesión) | Ver §1.4 — coordinar antes de reinstalar. |
| `cescac-omega` / `omega-titan` / `google-docs` / Meta Ads MCP viejo | ✗ Fantasma | Configurados en `settings.json` global pero NO responden. |

Detalle de instalación exacta de cada uno (comandos copy-paste) →
`cerebro/index.php?doc=como-usar-el-cerebro`.

## 4 · Skills oficiales OMEGA (5, las que todo agente debería tener)

| Skill | Para qué |
|---|---|
| `consolidate-memory` | Fusiona memoria dispersa en una fuente única, evita duplicados. |
| `self-audit` | El propio agente audita su trabajo antes de reportarlo. |
| `task-router` | Deriva una tarea al tier/modelo correcto por complejidad. |
| `research-scout` | Investigación web con fuente citada, anti-alucinación. |
| `media-memory` | Memoria de assets/creativos generados, evita reprocesar lo mismo. |

Instalación: `https://vps.cescac.com/titan/skills` (on-box).

## 5 · Skills relevantes instaladas (~250 totales, Claude Code)

- **Memoria/comunicación:** `caveman`, `modo-colmena`, `auto-compactador`, `mempalace`,
  `handoff`, `graphify`.
- **Engineering:** `grill-me`, `diagnose`, `tdd`, `prototype`,
  `improve-codebase-architecture`, `to-issues`, `to-prd`, `triage`, `write-a-skill`.
- **Diseño/UI:** `impeccable`, `ui-ux-pro-max`, `ckm-banner-design`, `ckm-brand`,
  `accessibility`, `design-system`.
- **Marketing/contenido:** `brand-voice`, `content-engine`, `crosspost`, `lead-intelligence`,
  `market-research`, `marketing:campaign-plan`, `marketing:content-creation`,
  `marketing:performance-report`, `marketing:seo-audit`, `marketing:brand-review`.
- **CESCAC custom:** `cescac-audit`, `cescac-cheap`, `cescac-deploy`, `cescac-multitarea`,
  `omega-handoff`, `omega-sync`, `orquestador-opus`, `qa-reviewer`, `divisor-tareas`,
  `task-router`, `research-scout`, `self-audit`.
- **n8n (7 skills automatización)** — ver §6.
- **Discovery/creación:** `find-skills`, `skill-creator`, `skill-scout`, `skill-stocktake`,
  `skillify`.

## 6 · n8n (`omega-n8n`, Docker, 2026-07-19)

- **Contenedor:** `omega-n8n` (imagen `n8nio/n8n:latest`), `Up`, puerto interno
  `127.0.0.1:5678`.
- **Acceso:** `https://n8n.cescac.com/` y `https://vps.cescac.com/omega-n8n/` (proxy, editor con
  Basic Auth interno — CIERRE P1-2 2026-07-12; webhooks SIEMPRE exentos de auth, seguridad por
  UUID propio: `https://vps.cescac.com/omega-n8n/webhook/...`).
- **4 workflows reales (verificado `n8n list:workflow` en vivo):**
  1. `CESCAC - Notificación Estudio DICOM/PDF vía WhatsApp` — **ACTIVO** (único en producción,
     SM → n8n → WhatsApp).
  2. `CESCAC - Flujo Linea Blanca` — construido, **INACTIVO**.
  3. `CESCAC - Flujo Maquinaria` — construido, **INACTIVO**.
  4. `CESCAC - Flujo CEVACONSTRUC` — construido, **INACTIVO**.
- **Cómo activarlos:** import ya hecho, solo esperan revisión + token de entorno + click
  "activar" — P2 en el backlog (`CRM_TRABAJADOR_N8N_20260711.md`).
- **VEREDICTO n8n vs cron+Python (ya documentado, no re-investigar):** **NO migrar la Fábrica
  Digital (Gumroad/Payhip/KDP) a n8n** — depende de un perfil de Chromium persistente con sesión
  humana, sin nodo nativo para eso; sería una capa extra sin ganar confiabilidad. **n8n SÍ tiene
  valor real sin explotar: activar los 3 workflows de negocio ya construidos** (Línea
  Blanca/Maquinaria/CEVACONSTRUC). Fuente: `FABRICAS_COMPROBABLES_20260718.md` (repo).
- **7 skills n8n (Claude Code):** `n8n-code-javascript`, `n8n-code-python`,
  `n8n-expression-syntax`, `n8n-mcp-tools-expert`, `n8n-node-configuration`,
  `n8n-validation-expert`, `n8n-workflow-patterns` — úsalas ANTES de tocar un workflow a mano.

## 7 · Perímetro de seguridad (léelo antes de asumir que algo "no funciona")

Desde el **P0 2026-07-11/12** (incidente MCP_JWT), nginx exige HTTP Basic Auth en el borde para
tráfico de Internet público en: cualquier `.md` bajo `vps.cescac.com`, `/titan/`,
`/titan-memoria/`, `/memory-bank/`, `/admin-docs/`, `/obsidian-vault/`, `/omega-n8n/`. Las IPs
on-box/VPS pasan libres. Agentes externos SIN credenciales usan los espejos públicos PHP
(`cerebro/index.php?doc=...`, `tablero.php`, `fabrica-digital/`, `comando-ia/`). **No se toca
este perímetro sin OK explícito del dueño.**

---
Mantenimiento: cambios aquí se registran en `docs/REGISTRO_CAMBIOS_CORE.md` con backup previo.

---

## ⚠️ CORRECCIÓN 2026-07-19 (tarde) — §1.1 Gemini CLI QUEDÓ OBSOLETO, leer esto primero

**Lo escrito en §1.1 arriba (instalar `gemini-cli` npm + "Login with Google") YA NO FUNCIONA para
cuentas individuales.** Reproducido en vivo hoy mismo (PC Windows escritorio): al correr `gemini`
tras instalarlo, el binario lanza `IneligibleTierError` y dice literalmente *"This client is no
longer supported for Gemini Code Assist for individuals. To continue using Gemini, please migrate
to the Antigravity suite of products: https://antigravity.google"* — así fue como el dueño vio
"sale que es de Antigravity" al correr `gemini`.

**Causa raíz real (verificada con fuentes oficiales de Google, no PATH ni instalación local):**
Google discontinuó Gemini CLI (y las extensiones IDE de Gemini Code Assist) para **cuentas
individuales — gratis, Google AI Pro y Google AI Ultra — el 18 de junio de 2026.** Confirmado por
el blog oficial `developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/`
y por GitHub Discussions oficiales del repo `google-gemini/gemini-cli` (#27274, #28017). Quienes
SÍ siguen con `gemini-cli` intacto: cuentas empresariales (licencia Standard/Enterprise) o quien
use API key de pago-por-uso (no login de cuenta) — CESCAC ya tiene esa vía separada activa para
scripts/bot (`GEMINI_API_KEY`, ver `GEMINI_API_VERDAD_20260719.md`), no afectada por este cambio.

**Reemplazo oficial: Antigravity CLI (`agy`)** — Go, standalone, v1.1.4 (18-jul-2026), repo oficial
`github.com/google-antigravity/antigravity-cli`. La IDE Antigravity ya instalada en la PC (v1.107.0)
**NO trae este CLI de terminal** (solo un stub interno `agy-node.cmd` de uso propio de la IDE) —
se instala aparte.

**Instalación (PowerShell, script oficial de `antigravity.google`, leído completo línea por línea
antes de recomendarlo — descarga `agy.exe` firmado a `%LOCALAPPDATA%\agy\bin\`, no toca nada más):**
```powershell
irm https://antigravity.google/cli/install.ps1 | iex
```
**Login (100% del dueño, no delegable, igual que antes):**
```powershell
agy
```
Abre navegador, login de cuenta Google (usa keyring del sistema con fallback a Google Sign-In),
el dueño elige su cuenta Google AI Pro. Verificar cuota real con `agy /usage` dentro de la sesión.

**Modo headless para agentes/scripts:**
```powershell
agy -p "prompt aquí" --headless --approve all
```
`--approve all` auto-aprueba escritura/ejecución — usar solo en sandbox, nunca contra VPS sin el
mismo protocolo MCP-OMEGA v1.6 de aprobación explícita que rige para cualquier otro agente.

**§5 (regla de uso Gemini CLI vs LiteLLM) se mantiene igual, solo cambia el binario/comando:**
donde decía `gemini -p` para research puntual/razonamiento largo, ahora es `agy -p ... --headless
--approve <policy>`. El resto de la lógica (research puntual = suscripción, volumen/loop = LiteLLM)
no cambió.

**Veredicto Claude Cowork (investigado, orden expresa de verificarlo):** NO es una vía sancionada
para esto. Los plugins de Cowork agrupan skills/connectors/slash-commands/subagentes propios de
Anthropic (marketplace oficial, sin conector para Gemini/Antigravity) y corre en una VM/sandbox
aislada pensada para SaaS con OAuth (Slack, Drive), no para invocar binarios locales de terceros.
Pedirle a Cowork que automatice pantalla para escribir `agy` en una terminal sería un rodeo frágil,
no oficial, y de todos modos el login de `agy` requiere el mismo paso manual del dueño en el
navegador — cero beneficio real sobre correr `agy` directo.

**Detalle completo, comandos exactos y fuentes citadas → `SUSCRIPCIONES_CLI_20260719.md` (repo,
sección de corrección al final) y `SUSCRIPCIONES_CLI_20260719.md` original (mismo repo, contexto
histórico de cuando SÍ funcionaba).**

**No ejecutado (bloqueado por el clasificador de permisos de la sesión — instalación de binario
nuevo requiere OK explícito):** el comando `irm .../install.ps1 | iex` de arriba. Pendiente que el
dueño (o un agente con permiso ampliado) lo corra y complete el login.

## ⚠️ ACTUALIZACIÓN 2026-07-19 (noche) — §5 Skills: 2 nuevas + 1 herramienta (protocolo de cuarentena)

**Conteo real verificado hoy:** 454 → **456** skills en `~/.claude/skills` (Windows escritorio) tras
protocolo de cuarentena completo (clonado en scratchpad, auditoría grep de patrones peligrosos,
lectura de scripts completos, licencias verificadas). Detalle completo, veredictos y candidatos de
MCP/skill propios → `SKILLS_CARRUSEL_LANDING_20260719.md` + `COMO_CREAR_SKILLS_Y_MCPS.md` (repo
`CRM_CESCAC`).

- **`landing-page`** (repo `jezweb/claude-skills`, 931★, oficial de una agencia web activa) —
  genera landing page single-file HTML+Tailwind (hero/features/pricing/FAQ/footer, dark mode, SEO
  OG). Único archivo `SKILL.md`, `allowed-tools` mínimo (Read/Write/Edit/Glob/Grep, sin Bash).
  Auditoría: limpio, cero riesgo.
- **`mcp-builder`** (repo oficial `anthropics/skills`, 162.525★) — guía completa + scripts
  (`connections.py`, `evaluation.py`) para construir servidores MCP en Python (FastMCP) o
  Node/TS. Es la base para crear MCPs propios de CESCAC (ver candidatos abajo).
- **Herramienta `open-carrusel`** (repo `Hainrixz/open-carrusel`, 371★, MIT) — **NO es skill**
  (no tiene `SKILL.md`, es app Next.js completa con comandos `.claude/commands/` propios del
  proyecto) → instalada aparte en `~/.claude/tools/open-carrusel/` (Windows escritorio), no cuenta
  en el total de skills. Genera carruseles de Instagram chateando con Claude Code, exporta PNG a
  dimensiones exactas (1:1/4:5/9:16) vía Puppeteer. Auditoría: limpio (único acceso externo fuera
  de `localhost` es Google Fonts CDN, gratis). **Pendiente activación del dueño** (`/start` dentro
  del proyecto — descarga ~300MB Chromium + levanta servidor local puerto 3000, no ejecutado sin
  su disparo explícito).

**3 candidatos propios propuestos (NO creados aún, ver guía completa):** skill `cescac-brand`
(tokens de marca oficiales, evita alucinar logos/colores), MCP `crm-cescac` (tools sobre pipeline
de ventas vía FastMCP, siguiendo `mcp-builder`), skill `cescac-social-publish` (arma paquete listo
para revisión humana desde banco de contenido — nunca publica directo).

Lección aplicada (no repetida): instalador de HyperFrames había plantado skills globales sin
permiso — esta vez se contó ANTES (454) y DESPUÉS (456), y se re-auditó que no se plantó nada
fuera de las 2 carpetas esperadas.


## 🔌 ACTUALIZACIÓN 2026-07-19 (noche) — `cescac-mcp`: el MCP OFICIAL de CESCAC (cómo conectarse)

**Qué es:** servidor MCP propio (Python, FastMCP, stdio), no de terceros. Envuelve el tablero
central de tareas y el cerebro (este mismo sitio) con 7 tools nativas para que **cualquier
agente compatible con MCP** (Claude Code, Cursor, Continue.dev, Antigravity) pueda comandar y
ser comandado desde el tablero, sin curl/SSH manual. Código completo, README y evidencia de
prueba: `mcp/cescac-mcp/` (repo `CRM_CESCAC`) + `MCP_CESCAC_20260719.md` (raíz del repo).

**Las 7 tools:** `tablero_listar` · `tablero_tomar` · `tablero_reportar` (con append automático
a bitácora) · `cerebro_leer` (doc=reglas-fijas\|lecciones\|flujo\|inventario\|herramientas\|...)
· `bitacora_append` · `hermes_delegar` (crea tarea en kanban 24/7 de Hermes) · `leccion_agregar`
(numeración automática). Todo texto libre viaja por archivo temporal SCP, nunca interpolado en
el comando SSH (lecciones #4/#9 aplicadas explícitamente en el diseño).

**Cómo se conecta cada IDE/agente (comandos completos en el README del MCP):**

| Cliente | Cómo |
|---|---|
| Cursor | Ya configurado: `CRM_CESCAC/.cursor/mcp.json` (auto-detectado al abrir el repo) |
| Claude Code | `claude mcp add cescac-mcp -- "<venv>\Scripts\python.exe" "<repo>\mcp\cescac-mcp\server.py"` (el dueño decide cuándo correrlo — no autoinstalado) |
| Continue.dev | Bloque `mcpServers` en `.continue/config.json` — ver README |
| Antigravity | Bloque `command`/`args` equivalente en su config MCP local — ver README |

**Arquitectura real (no inventa infraestructura nueva):** lecturas = HTTP público directo a
`cerebro/index.php`/`cerebro/tablero.php` (sin auth, ya era así). Escrituras = SSH hacia un
helper server-side nuevo (`/home/admin/web/admin-docs/scripts/cescac_mcp_helper.py`) que agrega
**flock real + compare-and-swap del owner + backup timestamped + escritura atómica** al
protocolo manual que ya existía (`como-usar-el-cerebro.md` §7.3) — corrige explícitamente la
lección #11 (colisión de 2 agentes pisándose el `owner` sin lock real). Sin secretos
hardcodeados: usa la llave SSH ya configurada (`~/.ssh/config`, alias `cescac-root`).

**Probado de verdad (no solo "corre"):** ciclo completo tomar→reportar sobre una tarea real de
prueba en el tablero (`T-MCP-PRUEBA-20260719`, cerrada en `hecho`, tablero limpio), colisión de
doble-claim correctamente rechazada, ID inexistente correctamente rechazado, bitácora + lección
(#29, causa raíz real: un campo de texto libre viajaba como argv literal en vez de archivo —
corregido en el mismo ciclo de prueba) + tarea real creada y completada en el kanban de Hermes.
Evidencia completa en `MCP_CESCAC_20260719.md`.
