renpayero

doc-to-app

0
0
# Install this skill:
npx skills add renpayero/.agent --skill "doc-to-app"

Install specific skill from multi-skill repository

# Description

Convierte un documento (PDF/texto) en una mini-app web interactiva lista para abrir en preview. Úsalo cuando quieras pasar de "contenido" a "producto usable".

# SKILL.md


name: doc-to-app
description: Convierte un documento (PDF/texto) en una mini-app web interactiva lista para abrir en preview. Úsalo cuando quieras pasar de "contenido" a "producto usable".


Doc-to-App (Documento a Mini-App)

Skill especializado en transformar documentos (PDF, texto, notas) en mini-aplicaciones web interactivas con buscador, filtros y navegación por secciones. Genera archivos listos para preview sin dependencias externas.

Cuándo usar este skill

  • Cuando tengas información en un PDF, texto o notas y quieras transformarla en una mini web navegable
  • Cuando necesites crear una guía, catálogo, checklist o itinerario interactivo
  • Cuando el usuario diga "convertí este documento en algo usable"
  • Cuando quieras pasar de "contenido estático" a "producto compartible"
  • Antes de compartir información compleja de forma más accesible

Inputs necesarios

Regla: Si falta alguno de estos inputs, PREGUNTAR antes de generar.

Input Descripción Obligatorio
Fuente PDF o texto pegado con el contenido ✅ Sí
Tipo de app Guía, catálogo, checklist, itinerario, FAQ, etc. ✅ Sí
Prioridad "Más visual" o "más práctica" ✅ Sí
Idioma y estilo Ej: español, claro, sin jerga Opcional

Tipos de app soportados

Tipo Estructura esperada Funcionalidades clave
Guía Secciones + pasos Navegación, expandir/contraer
Catálogo Items con categorías Filtros, búsqueda, cards
Checklist Lista de tareas Marcar como hecho, progreso
Itinerario Eventos por tiempo Timeline, filtros por día
FAQ Preguntas y respuestas Búsqueda, acordeón
Referencia Datos estructurados Búsqueda, filtros, copiar

Reglas obligatorias

Regla Razón
No devolver solo texto El output es una app funcional
No sobrescribir nada Cada ejecución crea carpeta nueva
Mobile first Debe funcionar bien en móvil
Sin frameworks externos Solo HTML, CSS, JS vanilla
Datos en JSON separado Facilita edición y mantenimiento

Estructura de salida (crear siempre)

miniapp_<tema>_<YYYYMMDD_HHMM>/
├── index.html      # La app completa (HTML + CSS + JS inline)
├── data.json       # Datos estructurados del documento
└── README.txt      # Instrucciones de uso

Convención de nombres

  • Tema: slug del contenido (ej: guia_viaje_paris, catalogo_productos)
  • Fecha: formato YYYYMMDD_HHMM (ej: 20260129_1626)
  • Ejemplo completo: miniapp_guia_viaje_paris_20260129_1626/

Funcionalidades mínimas de la app

# Funcionalidad Obligatoria Notas
1 Buscador ✅ Sí Filtrar por texto en tiempo real
2 Filtros ⚠️ Si aplica Por categorías, etiquetas o tipo
3 Navegación ✅ Sí Índice arriba o sidebar
4 Responsive ✅ Sí Mobile first, legible en cualquier pantalla
5 Botón copiar ⚠️ Si aplica Para items que se copian frecuentemente
6 Marcar hecho ⚠️ Si aplica Para checklists, con localStorage
7 Expandir/contraer ⚠️ Si aplica Para contenido largo o FAQs

Workflow (orden fijo)

Paso 1: Analizar documento

  1. Leer el documento completo
  2. Identificar estructura: secciones, listas, tablas, puntos clave
  3. Determinar tipo de app más adecuado
  4. Definir categorías/etiquetas si aplica

Paso 2: Estructurar datos

  1. Convertir contenido a data.json con formato estandarizado
  2. Validar que no hay información perdida
  3. Agregar metadatos (título, descripción, fecha)

Paso 3: Generar app

  1. Crear carpeta con nombre según convención
  2. Generar index.html con:
  3. CSS inline (diseño limpio, responsive)
  4. JS inline (buscador, filtros, interacciones)
  5. Carga de datos desde data.json o embebido
  6. Crear README.txt con instrucciones

Paso 4: Validar

  1. Verificar que se ve bien en preview
  2. Probar buscador y filtros
  3. Verificar responsive (simular móvil)
  4. Confirmar que no hay contenido roto

Paso 5: Entregar

  1. Informar carpeta creada
  2. Indicar archivo a abrir
  3. Dar resumen de contenido y funcionalidades

Instrucciones técnicas

Estructura de data.json

{
  "meta": {
    "title": "Título de la app",
    "description": "Descripción breve",
    "type": "guia|catalogo|checklist|itinerario|faq|referencia",
    "generated": "2026-01-29T16:26:00-03:00",
    "source": "Nombre del documento original"
  },
  "categories": [{ "id": "cat1", "name": "Categoría 1", "color": "#hexcolor" }],
  "items": [
    {
      "id": "item_001",
      "title": "Título del item",
      "content": "Contenido o descripción",
      "category": "cat1",
      "tags": ["tag1", "tag2"],
      "metadata": {}
    }
  ]
}

Template base de index.html

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>[Título]</title>
    <style>
      /* Reset + variables + diseño mobile first */
      * {
        box-sizing: border-box;
        margin: 0;
        padding: 0;
      }
      :root {
        --primary: #3b82f6;
        --bg: #0f172a;
        --surface: #1e293b;
        --text: #f1f5f9;
        --text-muted: #94a3b8;
      }
      body {
        font-family: "Inter", system-ui, sans-serif;
        background: var(--bg);
        color: var(--text);
      }
      /* ... más estilos según tipo de app ... */
    </style>
  </head>
  <body>
    <header><!-- Título + buscador --></header>
    <nav><!-- Navegación/filtros --></nav>
    <main><!-- Contenido dinámico --></main>
    <script>
      // Cargar datos y renderizar
      // Implementar búsqueda y filtros
      // Guardar estado en localStorage si aplica
    </script>
  </body>
</html>

Requisitos de diseño

Aspecto Especificación
Fuente Inter o system-ui como fallback
Tema Dark mode por defecto (moderno, legible)
Contraste Mínimo 4.5:1 en textos
Espaciado Consistente, mínimo 16px en mobile
Animaciones Sutiles (transiciones de 200ms)
Touch targets Mínimo 44x44px en botones/links

Manejo de errores

  • Si el documento es muy largo (>50 secciones) → dividir en páginas o usar lazy loading
  • Si no hay estructura clara → preguntar al usuario cómo organizarlo
  • Si hay imágenes referenciadas → avisar que no se incluyen, sugerir URLs

Output (formato exacto)

## ✅ Mini-App Creada

### 📁 Carpeta

`miniapp_<tema>_<YYYYMMDD_HHMM>/`

### 🚀 Cómo abrir

Abrí el archivo: `miniapp_<tema>_<YYYYMMDD_HHMM>/index.html`

### 📊 Contenido incluido

| Métrica           | Valor                          |
| ----------------- | ------------------------------ |
| **Tipo de app**   | [guía/catálogo/checklist/etc.] |
| **Secciones**     | X                              |
| **Items totales** | X                              |
| **Categorías**    | X                              |

### ⚡ Funcionalidades

- ✅ Buscador por texto
- ✅ Filtros por [categorías/tags]
- ✅ Navegación por secciones
- ✅ Diseño responsive
- ✅ [Otras funcionalidades específicas]

### 📝 Archivos creados

| Archivo      | Descripción                      |
| ------------ | -------------------------------- |
| `index.html` | App completa, abrir en navegador |
| `data.json`  | Datos estructurados (editable)   |
| `README.txt` | Instrucciones de uso             |

### 💡 Notas

[Observaciones sobre el contenido, limitaciones o sugerencias de mejora]

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.