Radar de Repos

28 repositorios evaluados contra la infraestructura y los proyectos reales de Villavo Vende — con veredicto de adopción y qué extraer de cada uno.

1 sep 2026 · sede 1 (experimentos, 12 GB libres) + sede 2 (negocio, 7,4 GB libres) · investigado por 9 agentes en paralelo

01Veredicto de un vistazo

Dos ejes distintos: adoptar (instalarlo y usarlo) y minar (leerlo como fuente de datos o arquitectura, sin instalar nada). Varios que no se instalan sí valen como fuente.

6
Adoptar
10
Minar como fuente
3
Guardar para después
8
Descartar
RepoQué esVeredictoPor qué
hyperframesHTML+CSS → MP4 deterministaADOPTARApache 2.0 sin las tarifas comerciales de Remotion. Ya instalado vía OpenMontage.
OpenMontageProducción de video agénticaADOPTARInstalado y verificado. 13 pipelines listos.
claude-seo25 skills SEO + 18 subagentesADOPTARseo-local cubre GBP y map pack, y detecta el vertical Real Estate. Núcleo gratis.
marketingskills50 skills de marketingPARCIALCero dependencias. Instala 5-8, no 50 — y excluye las 5 que chocan con claude-seo.
LeafletLibrería de mapasSUPERADOEstable sigue en 1.9.4 de 2023; plugins clave abandonados. Ver MapLibre.
maplibre-gl-js CLAUDEMapas vectoriales WebGLADOPTARBSD-3, 4 releases solo en agosto, clustering nativo, estilo = JSON editable.
beszel CLAUDEMétricas de host multi-servidorADOPTAR4,2 MB de RAM medidos. Mata las falsas alarmas de disco.
uptime-kuma CLAUDEMonitor de endpoints y certsADOPTARReemplaza tus scripts de DNS→SSL. Usa :2-slim: el normal pesa 2,48 GB.
backrest CLAUDErestic con UI webADOPTARLa retención es campo obligatorio del formulario, no un flag que se olvida.
odooERP completoMINARNo adoptar. Pero su l10n_co es LGPL: extrae el PUC y las retenciones.
erpnextERP completoDESCARTARDefine para Colombia solo VAT 16% — derogado desde 2017.
twentyCRM open sourceGUARDARVivo y bueno, pero ya tienes CRM26 a tu medida. Mina su modelo de objetos.
monicaPRM personalDESCARTAR0 commits en 12 meses y un PR de XSS sin mergear. Y es para amigos, no propiedades.
LocalAIAPI OpenAI-compatible localGUARDARConsolidaría Ollama+Whisper bajo una API. Útil cuando toque limpiar, no ahora.
SurfSenseResearch + conectoresMINARMonta docker.sock, licencia BSL, v0.0.39. Roba el catálogo de conectores.
last30daysMotor de research de tendenciasMINARCorpus en inglés, X y TikTok piden cookies. Roba su patrón de escribir skills.
CC-Game-Studios49 agentes de gamedevMINAR1 autor, parado desde mayo. Pero es diseño de orquestación → La Oficina.
Anthropic-Cybersec818 skills de seguridadMINARNo es de Anthropic (lo admite). Usa solo el subconjunto defensivo.
godotMotor de videojuegosDESCARTARLegítimo, pero el editor pide escritorio y Claude no puede operarlo. Usa Phaser.js.
system-design-primerGuía de diseño de sistemasMINARNo es software. Material de estudio, cero recursos.
google-map-reactWrapper React de Google MapsDESCARTARZombi: sus últimos 4 commits son Dependabot. Código sin tocar desde mayo 2025.
gmaps-services-pythonCliente HTTP de servidorDESCARTARNo dibuja mapas, y es Python: no encaja en tu stack Next.js.
awesome-sys-tradingLista curada de estrategiasMINARBibliografía. Su meta-dato vale más que cualquier estrategia suelta.
LeanMotor de backtest y ejecuciónDESCARTARSlippage 0 por defecto, no modela swap, no habla MT5. Sería un downgrade.
freqtradeBot de criptoDESCARTARSolo cripto: 4 de tus 6 patas quedan fuera. Backtester inferior al tuyo.
AI-TraderAgentes LLM que operanDESCARTARSesgo de anticipación no resuelto. Ningún agente LLM genera alpha significativo (p > 0,34).
TradingAgents-CNFork chino de TradingAgentsDESCARTARSin backtest. Reportaba PB 0,42x cuando era 3,46x y beneficio con error de 4 órdenes de magnitud.
Vibe-TradingFramework de trading con LLMMINARNunca como validador. Roba su quantlib y el desglose de costes por mercado.

La etiqueta CLAUDE marca lo que no venía en tu lista: son propuestas mías a partir de mirar las dos máquinas.

02Lo que propongo instalar, y lo que cuesta

Todo junto suma menos RAM que 2bots-postgres él solo (216 MB).

QuéDóndeRAMResuelve
Uptime Kuma :2-slimsede 1104 MB"App ausente" ×2, certs SSL, 30 sitios
Beszel hub + agentesede 134 MB"Disco lleno" ×5
Beszel agentesede 24,2 MBVigilar el negocio sin pesarle
Backrest + resticambas~40 MBLos dos fallos de backup ya vividos
Dozzle (opcional)sede 212,5 MBLogs de los 28 contenedores, evento restart
El panel va en sede 1, no en sede 2. Dos razones: sede 2 es la apretada, y el vigilante no debe vivir en la máquina vigilada. Si sede 2 se cae, sede 1 lo ve y avisa.

03Backups — el plan

Dos fallos ya ocurridos lo motivan: el Supabase de la app de inglés se perdió entero sin copia, y los backups del CRM sin retención llenaron el disco al 83%. Donde hubo backup no hubo retención; donde importaba no hubo backup.

Hallazgo que abarata todo. 2bots-postgres pesa 16 GB, pero 14 GB son la tabla ohlcv — velas de Dukascopy, redescargables. Excluyéndola y excluyendo los modelos de Ollama/Whisper, lo verdaderamente irremplazable en sede 1 son ~3 GB, no 20.

Herramienta: backrest (restic con UI)

  • Cierra el fallo del disco: la política de retención es un campo obligatorio del formulario, y programa prune y check desde la UI.
  • Cierra el fallo del borrado silencioso: dead man's switch — si en 26 h no hay señal, te avisa. Un cron de backup muerto es invisible durante meses.
  • Verificación real: restic check --read-data-subset=10% semanal detecta bit rot sin pagar el egreso completo.

Descartados con motivo: Duplicati (reportes de reconstrucción de BD de 11 días en un restore — justo el escenario para el que compras backups) · autorestic (sin releases desde 2024) · borg (no habla S3) · offen (sin dedup ni verificación, y su borrado por edad puede llevarse ficheros ajenos del bucket).

Nunca respaldes el directorio de datos de Postgres en caliente. Siempre pg_dump. Y usa -Fp (texto plano), no -Fc: el formato custom sale comprimido y rompe la deduplicación de restic — cada dump diario se guardaría entero. En plano, 30 dumps ocupan poco más que uno.

Qué respaldar — sede 1 tiene 4 Postgres y sede 2 tiene 3 Postgres + 1 MariaDB. Un dump por motor, más configs, volúmenes de sesiones de WhatsApp, Nginx y certificados.

# Retención — 18 snapshots vivos, techo predecible
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --keep-yearly 1 --prune

# Guardarraíl que sale de tu propia historia: aborta si el disco pasa del 85%
[ "$(df --output=pcent / | tail -1 | tr -dc 0-9)" -lt 85 ] || exit 1

Destino: local + Backblaze B2

~18 GB únicos → ~25-35 GB de repositorio con dedup.

~$0,18/mes. Los primeros 10 GB son gratis y el egreso es gratis hasta 3× lo almacenado.

Cruzado sede1↔sede2: no

Es gratis, pero no protege del fallo que ya viviste dos veces: perder el proveedor o la cuenta. Y sede 2 solo tiene 66 GB libres. Sirve como tercera copia, nunca como la única externa.

Supabase free tier: lo que pasó fue el comportamiento documentado del plan, no una avería. La doc oficial confirma que Free no incluye backups automáticos ni PITR, y Supabase recomienda explícitamente exportar con supabase db dump y guardar copias off-site. El dump diario sirve además de prueba de vida: si falla la conexión, es que el proyecto se pausó y tienes días para reaccionar. Ojo: Storage no entra en db dump.
Un backup nunca restaurado es una hipótesis, no un backup. Ensayo mensual de 15 minutos: restaurar el dump a un Postgres desechable y contar filas con pg_stat_user_tables. Si devuelve tablas con filas, sirve. Anota la fecha del último ensayo superado.

04Monitoreo — matar las 11 falsas alarmas

Hoy el monitoreo lo hace un LLM leyendo salidas de shell. Ha producido 11 falsas alarmas documentadas. Eso no se arregla con mejor prompt.

Medido, no estimado. Los 7 candidatos se levantaron en Docker en sede 1 y se midieron con docker stats. El benchmark se desmontó después y el host quedó verificado limpio.
HerramientaRAM medidaImagenVeredicto
beszel-agent4,2 MB13,5 MB
gatus8,0 MB77 MBalternativa
dozzle12,5 MB93 MBopcional
beszel (hub)30,2 MB43,7 MB
glances86,5 MB179 MBno
uptime-kuma103,7 MB2,48 GBSÍ (slim)
netdata141,7 MB*1,31 GBno

* recién arrancado. Sus propias docs dan 250-350 MB en producción, y su config efectiva reserva 3 GiB de métricas + metadatos ≈ 4 GiB de disco por nodo.

Dos trampas que no salen en ninguna documentación. (1) La imagen de Uptime Kuma pesa 2,48 GB porque instala Chromium, fuentes CJK e incluso un MariaDB para el monitor de navegador real — usa :2-slim (~600 MB, misma RAM). (2) Netdata sostiene 13-20% de CPU durante el arranque y reserva 4 GiB de disco por nodo.
Falsa alarma de HermesQué la reemplaza
"Disco lleno" ×5Beszel lee el % real, con umbral y duración mínima
"Faltan apps de pm2" (PATH de nvm)Uptime Kuma usa pm2 jlist (JSON), no pm2 ls
"App ausente" ×2Monitor HTTP directo contra la URL
"Contenedor Restarting" (columna ↺ mal leída)Beszel da estado real; Dozzle alerta del evento restart
Qué hacer con Hermes: quitarle la medición, no el puesto. Que las alertas las disparen Beszel y Uptime Kuma —deterministas, con umbral y duración— y que Hermes se quede con lo que sí sabe hacer: redactar el informe diario a partir de datos ya validados. Ambas exponen API y webhooks para alimentarlo.
Ojo con el monitor de pm2: corre pm2 jlist dentro del proceso de Uptime Kuma, así que en Docker no vería el PM2 del host. Y el cron que lo alimente debe usar la ruta completa ~/.local/bin/pm2 — es exactamente la trampa que tumbó a Hermes.

05Mapas de propiedades — el diseño correcto

Se midió la cobertura real de Villavicencio en OpenStreetMap vía Overpass API. El resultado decide la arquitectura.

5.241
Vías con nombre
153
Barrios
111
Números de casa en toda la ciudad

Pruebas reales contra Nominatim: Calle 40 #30-25 ignora el "#30-25" y devuelve dos Calle 40 distintas en barrios distintos, a 1,5 km una de otra. Barrio Barzal, Villavicencio — un barrio conocidísimo — no devuelve nada.

Conclusión de arquitectura: no geocodifiques. Que el agente arrastre el pin a mano. Da precisión de metros, cuesta $0, y es exactamente lo que hacen Fincaraíz y Metrocuadrado en Colombia. La nomenclatura Calle X # Y-ZZ codifica un cruce, algo que ningún geocodificador genérico interpreta. Cambiar de proveedor no arregla que los datos no existen.
Dos cosas de Google que te habrían costado dinero.
1. El crédito de $200/mes ya no existe — Google lo eliminó el 1 de marzo de 2025. Ahora son 10.000 cargas gratis/mes y luego $7 por cada 1.000. Exige tarjeta activa y no hay tope duro: un bot o el mapa indexado en villavovende.com genera factura de seis cifras COP sin aviso.
2. Usar geocoding de Google sobre tiles de OSM es violación explícita de sus ToS (cláusula 3.2.3(e), "No Use With Non-Google Maps"). Y peor: no puedes guardar las coordenadas más de 30 días (3.2.3(b)). El modelo "geocodifico con Google y guardo en Supabase" no es legal.

Stack recomendado — $0/mes

  • MapLibre GL JS v6.6 + react-map-gl — BSD-3, clustering nativo, estilo = JSON editable (mapas personalizados de verdad)
  • OpenFreeMap para tiles — sin API key, uso comercial permitido. Plan B: MapTiler Flex $30/mes (su free tier NO permite uso comercial)
  • PostGIS en tu SupabaseST_DWithin para "propiedades a 1 km", ST_Contains para "todo lo del barrio Barzal"
  • Pin manual arrastrable, con Nominatim solo como buscador de calles para centrar el mapa
No uses tile.openstreetmap.org en producción comercial — su política dice que el acceso puede retirarse en cualquier momento.
Ventaja rara que tienes: como agente inmobiliario puedes mapear tú mismo los polígonos de los barrios de Villavicencio una sola vez en PostGIS. Eso se convierte en un activo propio que ningún competidor tiene, precisamente porque OSM no los trae.

06Administración de propiedades — decidido

La contabilidad va en software dedicado y la revisa la contadora. Ese dato cierra la decisión.

Veredicto: app propia en Next.js + Postgres. Odoo y ERPNext quedan fuera. El único argumento fuerte a favor de Odoo era su l10n_co. Si la contabilidad vive fuera, se evapora entero.

Por qué no Odoo investigado, no prejuicio

  • Community es LGPLv3 y sirve en producción comercial gratis, sin candado técnico (verificado en los 633 addons). El problema no es la licencia.
  • El módulo account se llama literalmente 'Invoicing': Community trae facturación, no contabilidad. account_accountant es Enterprise.
  • sale_subscription y sale_renting son Enterprise → Community no tiene facturación recurrente nativa.
  • Los módulos DIAN son Enterprise. Las vías libres son OCA (14 ★, con las ramas 16.0 y 17.0 vacías) y Jorels (8 ★). Demasiado frágil para la facturación legal del negocio.
  • OCA/vertical-realestate y OCA/vertical-rental están muertos (ramas vacías).
  • Migración mayor forzada cada 2-3 años. El crowdfunding de OpenUpgrade para la v19 cerró en 39% de su meta.
El hecho que manda, verificado por código en ambos sistemas: ninguno liquida al propietario. La "comisión" que anuncian esos módulos es de captación o venta, no la comisión de administración descontada del canon. En ERPNext, grep de commission|owner|payout|landlord sobre las 468 rutas de PropMS → 0 archivos. Si hay que programar eso igual, la pregunta honesta es cuánto ERP quieres cargar alrededor.

Qué construir

  • Contratos — vigencia, canon, comisión, y reajuste anual por IPC (art. 20, Ley 820)
  • Cobro del canon al inquilino, con estado de mora
  • Liquidación al propietario — canon − comisión − retención − mantenimientos, con extracto PDF ← el corazón; ahorra la mitad del trabajo de Andrea
  • Mantenimientos — solicitud, proveedor, costo, a quién se carga
  • Facturación electrónica vía API
La DIAN dejó de ser un factor de decisión. ~24 facturas/mes cuestan $173.000-215.000 COP/año (~US$50) con proveedor habilitado — igual en las tres rutas. Factus es la más API-first (OAuth2, sandbox gratis ilimitado, webhooks). Alegra Emprendedor $17.900/mes con certificado incluido. Ojo con Siigo: el envío a la DIAN parece hacerse desde su menú web, no por API — mala opción para flujo automatizado.

Lo que sí vale la pena extraer de Odoo MINAR

Su localización colombiana es LGPL-3, la mantiene Odoo S.A., y son CSV planos:

  • account.account-co.csv379 cuentas del PUC colombiano
  • account.tax-co.csv → retenciones con sus tarifas, incluida "3.5% RteFte Arrendamientos Bienes Inmuebles", las 6 de ReteICA, ReteIVA e IVA

Extraerlo y sembrarlo en el Postgres de la app te da el trabajo fiscal hecho, sin cargar el ERP.

Pendientes con terceros, antes de escribir código. Con la contadora: ¿qué software contable usa (define el formato de entrega mensual; si es Alegra o Siigo hay API)? ¿Responsables de IVA? ¿Persona natural o jurídica? Con la DIAN: ¿el certificado gratuito para pequeña empresa sirve para software propio? Sin verificar: si como persona natural bajo 3.500 UVT podrían no estar obligados a facturación electrónica — pregunta para la contadora, no es un hecho.

07Video — hyperframes cambia el plan

hyperframes ADOPTAR ya instalado

Apache 2.0, de HeyGen. Convierte HTML+CSS con atributos de timing en MP4 determinista (Chrome headless + FFmpeg). Es "Remotion pero con HTML plano", sin las tarifas comerciales de Remotion — esa diferencia de licencia es dinero real.

Ya quedó cacheado por el make setup de OpenMontage (runtime_available=True, v0.8.22). No pide GPU. Determinista: mismo input = mismos frames, o sea que sirve en cron.

Choca con tu plan aprobado de Villavovende Reels (Gemini→Remotion renderizando en el PC Windows vía Tailscale). Hyperframes renderizaría en el VPS, sin depender de que el Windows esté encendido y sin licencia Remotion. Vale la pena revisar ese plan antes de ejecutar la Fase 0.

Aviso: v0.8.x, API todavía en movimiento (~6 meses de vida, pero 70-500 commits por semana).

08Skills — qué instalar y qué no

claude-seo ADOPTAR

25 skills, 18 subagentes, 53 scripts. MIT. Lo relevante: seo-local cubre Google Business Profile, NAP, citations y map pack — el juego exacto de un inmobiliario en Villavicencio — y detecta el vertical Real Estate explícitamente, recomendando schema RealEstateAgent + RealEstateListing. Núcleo gratis con Playwright local. Está al día: descarta HowTo y FAQ como deprecados en mayo 2026.

Avisos: sus estadísticas vienen de blogs de agencias (Whitespark, BrightLocal), plausibles pero no verificables. Y su extensión de Ahrefs pide token de la API de Ahrefs, producto aparte de tu plan web.

marketingskills PARCIAL

50 skills, MIT, cero dependencias (markdown puro). Las sustanciosas: video, ads, ad-creative, ai-seo, content-strategy, marketing-plan.

No instales las 50: 50 descripciones compitiendo por activarse contra tus 8 skills de diseño es ruido garantizado. Y seo-audit, ai-seo, schema, programmatic-seo y site-architecture chocan con claude-seo — exclúyelas.

Calibrado para SaaS B2B en inglés y mercado US. Para inmobiliaria colombiana es material de partida, no receta.

last30days MINAR, no instalar

Técnicamente el mejor hecho de los tres (motor Python de 165 KB con tests reales). Pero es research de tendencias globales en inglés, y X y TikTok —las fuentes que te servirían— exigen cookies de navegador logueado o llaves de pago: el mismo muro headless que te bloqueó con NotebookLM. Su SKILL.md pesa 229 KB y se come contexto cada vez que se activa.

09Trading — el listón ya es alto

Tienes motor propio con Dukascopy desde 2012, 6 patas validadas, protocolo Davey (walk-forward + Monte Carlo) y swap modelado por trade. La pregunta no es si son buenos repos, sino qué añaden.

awesome-systematic-trading MINAR — el único con valor

Dicen haber replicado 4.843 papers. Sus propios resultados son el dato más valioso de todo el bloque:

0,37
Sharpe mediano de replicación
48%
Supera t-stat 1,96
0,21
IR mediano al quitar beta

La mitad del corpus académico publicado no se distingue de cero. Es evidencia dura de que tu protocolo Davey está bien calibrado, y la mejor vacuna contra copiar un paper con Sharpe bonito.

Expectativas bajas: su catálogo es factor investing cross-sectional mensual, casi sin solape con timing direccional sobre 6 CFDs, y sus Sharpe son brutos de costos. Lo que sí ofrece, alineado con tu regla de "no probar más activos sin tesis estructural nueva", es diversificar por tipo de edge en vez de por activo: carry FX, term premium en bonos, momentum de commodities.

Lean DESCARTAR

Apache 2.0 limpia, sin obligaciones por operar en vivo — ese miedo es infundado. El motivo es técnico: slippage cero por defecto, fee genérico en CFD/FX, no modela swap overnight, y sin WFO ni Monte Carlo. Te haría retroceder en rigor. Y no habla MT5.

Solo si algún día entras a equities US point-in-time con delistings, u opciones y futuros con rolls. Ahí sí te ahorra un año.

freqtrade DESCARTAR

Solo cripto: 4 de tus 6 patas fuera por diseño, y no habla MT5. Donde solaparía, su backtester es inferior: no modela slippage ni spread, y su doc admite que fijar funding rates a mano "hará que tus backtests sean inexactos".

Reciclable gratis: sus chequeos lookahead-analysis y recursive-analysis. Si tu motor no verifica que un indicador dé el mismo valor con 500 velas de warm-up que con 5.000, son 30 minutos bien invertidos.

09bTrading con LLM — la evidencia más dura del trabajo

AI-Trader, TradingAgents-CN y Vibe-Trading. Los tres se descartan como herramienta, y uno con una prueba que no admite discusión.

El chequeo de olfato que lo cierra. TradingAgents reporta +26,62% en AAPL, con drawdown máximo de 0,91% y Sharpe 8,21 en el primer trimestre de 2024 — trimestre en el que AAPL cayó −5,23%. Son ~32 puntos de alpha en tres meses, casi sin drawdown y sin costes. No es un hallazgo: es la firma canónica del sesgo de anticipación.

No es sospecha, es confesión

El primer autor del paper respondió en el issue #805 (13-jun-2026) admitiendo que la fuga a nivel de modelo es "una limitación fundamental que un cambio de código no puede eliminar del todo". La afirmación del paper de "eliminating look-ahead bias" no se sostiene, y lo dice la fuente.

Debajo hay seis fugas de datos documentadas — noticias de 2025-2026 dentro de backtests de 2022, Reddit y StockTwits de hoy en análisis históricos, macro del FRED aún no publicada, memoria inyectando lecciones de fechas futuras — todas parcheadas en 2026, más de un año después de publicar los números.

Medición concreta: para una decisión del 31-mar-2023, GDPC1 valía 19.924 entonces y la API devuelve 21.932 hoy.

Y el código de backtesting nunca se publicó. El issue que lo pide lleva más de un año sin una sola respuesta. Los números no son solo débiles: no son auditables.

Lo que dice la literatura seria

  • Edinburgh/Oxford extendió estos agentes a 20 años y 63-91 símbolos: gana Buy & Hold (Sharpe 0,703), y ningún agente LLM genera alpha estadísticamente significativo — todos los p-valores por encima de 0,34. Rematan que puede que los LLM vieran parte de los datos en entrenamiento "y aun así no baten a las estrategias tradicionales".
  • Auditoría de 19 sistemas: 2/19 con splits temporalmente consistentes, 1/19 con costes de transacción, 1/19 con survivorship. Uno pasa de +23,26% a −22,04% solo con una ventana igualmente defendible y costes incluidos.
  • Otro trabajo mide que la propensión al lookahead colapsa a cero justo después del corte de entrenamiento — prueba directa de que el edge es la memoria, no la estrategia.

Aviso de precisión: Glasserman & Lin suele citarse mal. No publican cifra de inflación de Sharpe. Si alguien te lo cita como "el leakage infla un X%", está citando mal el paper.

El fork chino: algo peor que no tener backtest. Un PR revela que reportaba PB de 0,42x cuando el real era 3,46x, y beneficio neto con un error de cuatro órdenes de magnitud. Tuvieron que inyectar restricciones en 9 prompts para "impedir que el LLM falsifique datos financieros y eventos futuros". Para decidir dinero encima, eso descalifica por sí solo.
El cierre que te concierne. Tu pipeline actual —Dukascopy desde 2012, walk-forward por bloques, Monte Carlo con probabilidad de ruina, coste por operación con swap— hace de serie exactamente el test que solo 1 de esos 19 frameworks aplica. No tienes nada que aprender de ellos: tienes la confirmación de que tu método es el correcto.

10Banco de ideas — qué robar y de dónde

Para consultar cuando vayas a construir un módulo nuevo. No es "instalar", es "esto ya está resuelto en algún lado".

Cuando construyas…Mira…Qué te llevas
La app de arriendosOdoo l10n_co379 cuentas del PUC + tabla de retenciones colombianas, LGPL, en CSV plano
La app de arriendosOCA/contractCómo modelar contratos recurrentes y reajuste de precios
Turnos de La OficinaCC-Game-StudiosDirector gates, review full/lean/solo, hooks de auditoría, comandos encadenados
Skills propiaslast30daysConvertir post-mortems en reglas dentro del SKILL.md; guardarraíles anti-alucinación
Skills propiasmarketingskillsEl patrón evals/evals.json: prompts de prueba con assertions verificables
Contexto de marcamarketingskills.agents/product-marketing.md — se escribe una vez y alimenta las 50 skills
Research de competenciaSurfSenseCatálogo de conectores (reseñas de Google Maps, YouTube, TikTok) por MCP, sueltos
Hardening del VPSAnthropic-CybersecLas ~466 skills defensivas: auditoría cloud, análisis de logs, hardening
Reels inmobiliarioshyperframesRender determinista en el VPS, sin depender del PC Windows
Juegos para GabyPhaser.jsMecánicas 2D dentro de tu Next.js, sin editor gráfico ni salir del stack
Costos de backtestLeanArquitectura FeeModel/SlippageModel por broker
Validación de indicadoresfreqtradelookahead-analysis y recursive-analysis como conceptos
Mapa de propiedadesMapLibre + PostGISClustering nativo, estilo JSON, consultas geoespaciales gratis

11Deudas técnicas detectadas

Consolidar esto libera más recursos que todo lo que instalaríamos junto.

1. n8n duplicado

Corre una instancia en cada sede. La de sede 2 (251 MB, con su propio Postgres 16) parece la que de verdad usas; la de sede 1 está en ~/proyectos/n8n. Decide cuál es la buena y apaga la otra.

2. Whisper duplicado el más caro

shared-whisper consume 1,7 GB en sede 2 — el mayor consumidor de la máquina que menos RAM libre tiene (7,4 GB). Y aquí tienes Speaches haciendo lo mismo. Consolidarlo libera casi un cuarto de la holgura de sede 2.

3. Contenedores sin parchear

Varios llevan 6 semanas de uptime, o sea 6 semanas sin parches de imagen. wordpress:php8.3-apache y mariadb:11 expuestos a internet en esa situación es el mismo riesgo que descartó a Monica. Instala diun, no watchtower: quieres enterarte, no que te reinicie el bot del captador a las 3 a.m.

4. Secretos dispersos

Keys en ~/.config/api-keys/, en el .env de cada proyecto, y ahora uno nuevo en OpenMontage. Sin rotación. Candidatos: infisical, vaultwarden, o sops + age para cifrarlos en el propio git.

5. Treinta sitios Nginx a mano

Cada dominio nuevo en sede 2 es trabajo manual y un certificado que vigilar. nginx-proxy-manager daría UI sobre lo que ya tienes; traefik o caddy-docker-proxy autodescubrirían por labels.

Arreglado hoy: el MCP de Telegram. Fallaba por falta de bun; instalado 1.4.0 y enlazado en ~/.local/bin/ para que lo vean los subprocesos — la misma trampa del PATH de nvm que tumbó a Hermes. Bot dedicado @vpsaeljobot, token validado, .env en permisos 600. Queda pendiente el MCP de GitHub (cabecera de autorización mal formada).