Cambios del 1/7/2026 — Skills de Anthropic + Stack LibreOffice¶
Resumen ejecutivo¶
Se instalaron 9 skills nuevas del repositorio oficial de Anthropic (github.com/anthropics/skills, 157k stars, último push 2026-07-01) y se desplegó un stack Docker de LibreOffice para que las skills de Office (pptx, docx) puedan convertir formatos sin instalar ~500MB en el host.
Todo lo instalado es de código abierto, sin telemetría, sin cuentas externas. Cero impacto en servicios existentes (Caddy, AdGuard, Docker stacks previos, cron, .env).
Cambios por fase¶
Fase 0 — Reserva de puerto¶
- Puerto 8529 registrado para
libreoffice-convertervianextport.
Fase 1 — Dependencias Python (pip install --break-system-packages)¶
Instaladas globalmente: - pypdf 6.14.2 - pdfplumber 0.11.10 - reportlab 5.0.0 - pikepdf 10.9.1 - pymupdf 1.28.0 - openpyxl 3.1.5 - xlsxwriter 3.2.9 - markitdown 0.1.6
Total: ~80MB en site-packages. Sin cambios en PATH ni en paquetes del sistema. Verificado con import test OK.
Fase 2 — pandoc (apt install)¶
- pandoc 3.1.3 instalado via
sudo apt install -y pandoc. - Tamaño: ~150MB en /usr/bin/pandoc.
- Necesario para: conversión .doc <-> .docx, lectura de tracked changes, export a markdown.
Fase 3 — Stack Docker LibreOffice (pendiente de levantar)¶
Ubicación: /opt/docker/libreoffice/
Componentes:
- Dockerfile: build sobre lscr.io/linuxserver/libreoffice:latest
(oficial linuxserver, ~1GB). Agrega python3-pip, python3-uno,
libreoffice-script-provider-python, e instala unoserver via pip.
- converter.py: TCP listener en puerto 2002 dentro del container.
Habla con unoserver (puerto 2003) que mantiene un soffice
persistente. Protocolo simple: CONVERT <input> <format> <outdir>,
responde OK <path> o ERROR <msg>.
- docker-compose.yaml: servicio único converter, expone
127.0.0.1:8529 -> 2002 (loopback, no internet). Volume
/tmp/lo-conversions:/conversions. Restart unless-stopped.
- lo_convert.py: cliente CLI en el host, se conecta a
127.0.0.1:8529. Instalado en ~/.local/bin/lo_convert.py (modo 755).
- start.sh: script de bootstrap (build + up + verify) para correr
manualmente con sudo.
Adaptación: en este homelab NO instalamos LibreOffice en el host. La conversión va toda al container. La superficie de cambio en el host es un puerto (8529) y un script de 2KB.
Para levantar: bash /opt/docker/libreoffice/start.sh
Para parar: cd /opt/docker/libreoffice && sudo docker compose down
Fase 4 — Skills instaladas en ~/.hermes/skills/¶
Total: 9 skills nuevas. Todas verificadas con skills_list.
Nivel A (5 skills, autocontenidas, sin deps nuevas):
| Skill | Categoría | Tamaño | Qué hace |
|---|---|---|---|
| frontend-design | creative | 18KB | Guía de diseño visual: anti-AI-slop, tipografía, color, motion |
| theme-factory | creative | 139KB | 10 themes pre-armados con paleta + tipografía + PDF showcase |
| brand-guidelines | creative | 14KB | Aplica look-and-feel oficial de Anthropic a artifacts |
| doc-coauthoring | productivity | 16KB | Workflow estructurado para co-escribir documentos |
| internal-comms | productivity | 13KB | Recursos para escribir comunicaciones internas |
Nivel B (4 skills, con deps):
| Skill | Categoría | Tamaño | Qué hace |
|---|---|---|---|
| productivity | 59KB | Lee/edita/crea PDFs, fill forms, OCR, split/merge | |
| xlsx | productivity | 19KB | Crea/edita Excel con fórmulas, color coding, sin errores |
| docx | productivity | 1.1MB | Crea/edita Word, comentarios, tracked changes, schemas |
| pptx | productivity | 1.1MB | Crea/edita PowerPoint, thumbnails, 10 paletas pre-armadas |
Nota: las skills docx y pptx traen schemas XSD de Microsoft
Office Open XML (varios MB) para validación estricta. Es el grueso
del tamaño.
Adaptación de skills (2 archivos modificados):
-
~/.hermes/skills/productivity/docx/scripts/office/soffice.pyReescrito para usar~/.local/bin/lo_convert.py(cliente TCP) en vez del binariosofficelocal. Mantiene la firmarun_soffice(args)para no romper callers. Removido el shim de LD_PRELOAD/socket (no hace falta, vamos por TCP). -
~/.hermes/skills/productivity/pptx/scripts/office/soffice.pyIdem. Misma firma, misma lógica.
Skills que YA existían y se solapan (dejamos ambas por ahora):
powerpoint(tuya) vspptx(Anthropic): las dos generan .pptx. Anthropic es más completa (trae 10 paletas, anti-AI-slop guidance, scripts de thumbnails). La tuya probablemente es más simple y familiar.nano-pdf(tuya) yocr-and-documents(tuya) vspdf(Anthropic): las tres manipulan PDFs. La Anthropic es la más completa (fill forms, validación, scripts). Las tuyas pueden ser más especializadas.
Decisión: no borrar nada. Cuando uses un caso concreto, el agente elige la más apropiada. Si en algún momento las nuevas no aportan valor sobre las tuyas, se quitan.
Lo que NO cambió¶
- Caddy: intacto. No se agregó ningún virtualhost.
- AdGuard: intacto. No se modificó DNS.
- Docker: solo se AGREGÓ un stack nuevo (
libreoffice-converter). Los 18 stacks existentes siguen igual. - .env files: intactos. Permisos 600:root:root respetados.
- Cron: intacto. No se agregó ningún job.
- Uptime Kuma: el nuevo conversor puede monitorearse en
uptime.matias7235.com.arcuando esté levantado (chequear si el ping al puerto 8529 responde). - 26GB libres en /, suficiente para los ~500MB de imagen Docker.
Verificación¶
Stack LibreOffice — EN EJECUCIÓN¶
- Puerto: 8529 (127.0.0.1, loopback)
- Container:
libreoffice-converter, imagenlibreoffice-converter-converter - Estado: Up (verificado 2026-07-01 23:11 ART)
- Volume:
/home/matias/.local/share/lo-conversions:/conversions - Conversión .md → .docx: exitosa (test-conv.md → 0a620764_test-conv.docx, 5KB)
- Conversión .docx → .pdf: exitosa (0a620764_test-conv.docx → 31196731_0a620764_test-conv.pdf, 12KB)
Cliente CLI¶
- Path:
~/.local/bin/lo_convert.py - Uso:
python3 ~/.local/bin/lo_convert.py <input> <format> [--outdir <dir>] - Formatos: pdf, docx, xlsx, pptx, odt, ods, odp, html, txt, csv, etc.
- Nota: copia el input a la carpeta compartida y traduce paths host<->container automáticamente.
Skills verificadas¶
pdf— cargada. Usa pypdf, pdfplumber, pymupdf (host-side). No necesita container.xlsx— cargada. Usa openpyxl, xlsxwriter (host-side). No necesita container.docx— cargada. Usa pandoc + scripts office (host-side). La conversión a PDF y la lectura de tracked changes requieren el container.pptx— cargada. Usa markitdown + scripts office (host-side). Thumbnails requieren container.frontend-design— cargada. Sin deps.theme-factory— cargada. Sin deps.brand-guidelines— cargada. Sin deps.doc-coauthoring— cargada. Sin deps.internal-comms— cargada. Sin deps.
Uso típico desde el agente¶
Las skills de Office (docx, pptx) incluyen en sus scripts de validación
(scripts/office/soffice.py) una adaptación que llama a
~/.local/bin/lo_convert.py en vez de ejecutar soffice local.
Cuando un usuario pida "convertí este .docx a PDF", el agente llama:
# Internamente la skill hace:
import subprocess
subprocess.run(["python3", "~/.local/bin/lo_convert.py", "report.docx", "pdf"])
Lo que NO cambió¶
- Repo: github.com/anthropics/skills
- Stars: 157.353 (al 2026-07-02)
- Default branch: main
- Último push: 2026-07-01
- Licencia skills: Apache-2.0 (frontend-design, theme-factory, brand-guidelines, doc-coauthoring) y "Proprietary" (pdf, xlsx, docx, pptx, internal-comms). Los LICENSE.txt de cada skill tienen los términos.
Decisiones pendientes¶
- ~~Levantar el stack Docker~~ → RESUELTO (verificado, container UP, conversiones exitosas).
- Monitorear el conversor en Uptime Kuma.
- Documentar la skill
powerpointoriginal para aclarar cuándo usarla vs la nuevapptxde Anthropic.