Skip to main content

audit-html-project

Procedimiento sistemático para auditar proyectos HTML masivos: detectar errores de navegación rota, atribuciones incorrectas, páginas huérfanas, inconsistencias de diseño y consistencia de contenido. Incluye formato de salida estructurado con severidades.

Ir para a instalação

Informações da origem

Repositório
Ntizar/NtizarBrainMasterMind
Última atividade na origem
1 de julho de 2026 às 06:55
Idioma detectado do SKILL.md
espanhol
Estrelas
2
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
21 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
audit-html-project
description
Procedimiento sistemático para auditar proyectos HTML masivos: detectar errores de navegación rota, atribuciones incorrectas, páginas huérfanas, inconsistencias de diseño y consistencia de contenido. Incluye formato de salida estructurado con severidades.
version
2.2.0
author
Hermes Agent
tags
["html","audit","quality","static-site","education"]
# Audit HTML Project — Auditoría Sistemática de Proyectos HTML Procedimiento para auditar proyectos HTML grandes (10+ archivos) de forma sistemática y eficiente. ## Cuándo usar - Proyecto HTML con 10+ archivos y el usuario reporta errores - Antes de hacer commit/push a un repositorio de contenido educativo - Cuando se genera contenido HTML masivamente y se necesita QA - Cuando un sitio estático muestra errores de navegación - **SPA con backend (Express + Chart.js + Three.js)** — auditoría de endpoints, sync de datos, responsive de componentes JS, estado de DB ## Pasos ### 1. Inventario del proyecto ```python import os base = "/path/to/project" html_files = [f for f in os.listdir(base) if f.endswith('.html')] # Clasificar por tipo: páginas de contenido, páginas índice, archivos de navegación ``` ### 2. Detección de errores sistemáticos Escanear cada archivo por estos problemas: **Críticos (❌):** - Sin atribución correcta (`David Antizar` + `❤️`) - Navegación rota: `href="#">` con texto "Anterior" o "Siguiente" - Enlaces rotos internos: referencias a archivos que no existen **Advertencias (⚠️):** - Sin ejercicios interactivos (en contenido educativo) - Sin resumen final - Sin sección de teoría - Sin ejemplos - Sin caja de error frecuente o idea clave - Sin barra de progreso - Contenido inexistente (páginas de volumen vacías) ### 3. Clasificar por severidad 1. **Bloqueantes** — navegación rota, enlaces rotos, contenido inexistente 2. **Importantes** — atribuciones incorrectas, sin resumen 3. **Mejora** — sin ejercicios, sin ejemplos ### 4. Estrategia de escaneo para proyectos grandes (30+ archivos) Para proyectos con 30+ archivos HTML, **NO usar `read_file` por cada archivo** — es lento y consume el límite de tool calls. Usar `grep` vía terminal para el escaneo inicial: ```bash # Escaneo masivo de atribución grep -c 'David Antizar' *.html | grep ':0$' # Escaneo de KaTeX grep -c 'katex' *.html | grep ':0$' # Enlaces a archivos que no existen for f in *.html; do grep -oP 'href="[^"]*\.html"' "$f" | while read -r href; do target=$(echo "$href" | sed 's/href="//;s/"//') [ ! -f "$target" ] && echo "ROTO: $f → $target" done done ``` Luego, para las fases de corrección y verificación profunda, usar `execute_code` con Python y un solo script que procese todos los archivos. ### 5. Corrección en lotes Usar `execute_code` con Python para batch-fix: ```python from hermes_tools import read_file, write_file, patch import os base = "/path/to/project" html_files = sorted([f for f in os.listdir(base) if f.endswith('.html')]) all_set = set(html_files) # Ejemplo: corregir todas las atribuciones files = ['s09-3-bachiller.html', 's10-1-carrera.html', ...] for f in files: content = read_file(path=os.path.join(base, f)).get('content', '') content = content.replace("corazón", "❤️") write_file(path=os.path.join(base, f), content=content) ``` #### 5.1 Añadir CDN faltante (KaTeX, Plotly.js, etc.) Para proyectos educativos con contenido matemático, verificar si KaTeX está presente y añadirlo si falta: ```python katex_cdn = '''<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css"> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body,{delimiters:[{left:'\\\\[',right:'\\\\]',display:true},{left:'\\\\\\(',right:'\\\\)',display:false}]})"></script>''' for fname in archivos_sin_katex: content = read_file(path=join(base, fname)).get('content', '') new_content = content.replace('</title>', f'</title>\n{katex_cdn}', 1) write_file(path=join(base, fname), content=new_content) ``` **Regla:** KaTeX SOLO para niveles donde haya fórmulas (ESO, Bachiller, Universidad). Primaria usa emojis y texto plano — no necesita KaTeX. #### 5.2 Crear índices de nivel faltantes Cuando un nivel (ej: 1º Primaria) carece de índice, y otros niveles (4º+) sí tienen, crear el índice replicando el diseño visual y estructural de los existentes: ```python # 1. Identificar un índice de referencia (ej: s04-4primaria.html) # 2. Extraer su estructura: header, grid de tarjetas, colores, footer # 3. Mapear las sesiones reales del nivel # 4. Generar el nuevo índice con ese mismo diseño ``` El nuevo índice debe incluir: - Header con título y descripción del nivel - Grid de tarjetas, UNA por sesión, con: título, descripción corta, tag/tema - Cada tarjeta enlaza a su sesión correspondiente - Footer con atribución y enlace "Volver al índice general" - Misma paleta de colores y glassmorphism que los índices existentes **Regla:** NO reutilizar nombres de archivo existentes. Si `s01-1primaria.html` ya existe y es una sesión, crear `s01-1primaria-index.html` como índice. ### 6. Verificación post-corrección Re-ejecutar el escáner para confirmar que todos los errores se resolvieron. Usar un script de verificación único que cubra **8 checks**: ```python print('1. ENLACES ROTOS:') # 0 = perfecto print('2. ATRIBUCION:') # 0 = perfecto print('3. KATEX:') # 0 en niveles que lo necesitan print('4. NUEVOS INDICES:') # existen los que creamos print('5. INDEX.HTML ENLACES:') # apuntan a los nuevos índices print('6. ENLACES CORREGIDOS:') # los targets rotos ya no aparecen print('7. CONEXION CADENAS:') # cadenas paralelas conectadas print('8. INDEX.HTML ATRIBUCION:') # tiene footer ``` ## Formato de salida (preferido por el usuario) El usuario pide auditorías "estrictas y críticas" que "expliquen todo bien". Usar este formato: ```markdown # 🔍 AUDITORÍA COMPLETA — [Nombre del Proyecto] **Proyecto:** [Descripción] **Archivos HTML:** [N] --- ## 📊 RESUMEN EJECUTIVO | Severidad | Encontrados | Estado | |-----------|------------|--------| | ❌ **Críticos** | N | [resumen] | | ⚠️ **Importantes** | N | [resumen] | | 💡 **Mejoras** | N | [resumen] | --- ## ❌ ERRORES CRÍTICOS ### 1. [Descripción del error] [Tabla con archivos afectados y detalle del error] **Impacto:** [Qué le pasa al usuario/alumno] --- ## ⚠️ PROBLEMAS IMPORTANTES [Similar formato] --- ## 💡 MEJORAS SUGERIDAS [Similar formato] --- ## ✅ LO QUE FUNCIONA BIEN [Bullet points positivos] --- ## 📋 PLAN DE CORRECCIÓN Si quieres que arregle todo, el orden sería: 1. **Fase 1 (Crítico):** [Acción] 2. **Fase 2 (Crítico):** [Acción] ... ``` **Regla:** SIEMPRE terminar con "¿Quieres que empiece a corregir?" — el usuario quiere acción, no solo diagnóstico. ## Reglas - **NUNCA modificar la estructura de navegación** de sesiones individuales (eso es responsabilidad del generador) - **Las páginas de volumen** (nivel educativo completo) deben ser índices funcionales con: título, descripción, lista de sesiones con enlaces, objetivos de aprendizaje y resumen - **El INDEX.html** debe reflejar correctamente el contenido real (niveles, etiquetas, descripciones) - **Siempre verificar** que los archivos referenciados existen antes de corregir enlaces - **Commit y push** tras las correcciones - **RITMO: no parar entre pasos** — El usuario frustración = "¿por qué has parado?". Flujo: terminar un fix → siguiente inmediatamente. Mostrar progreso en vivo, no esperar a tener todo perfecto para comunicar. Si hay 3+ fixes, hacerlos secuencialmente sin preguntar entre cada uno. ## Flujo post-auditoría: fix → generate → deploy Cuando el usuario pide "arreglar y completar" tras una auditoría, el flujo natural es: 1. **Fix crítico** → corregir enlaces rotos, atribuciones, navegación (usar `execute_code` + `patch` para fixes simples, `write_file` para HTML completo) 2. **Fix importante** → actualizar trackers (progress.json, README, etc.) — **⚠️ NO usar `read_file` para JSON** (prependea números de línea), usar `terminal("cat ...")` + `json.loads()` 3. **Generar contenido faltante** → cargar skill del dominio, generar HTML con template, verificar calidad (>12KB, SVG, ejercicios) 4. **Actualizar índice** → INDEX.html con todos los temas 5. **Deploy** → git push (Pages se activa automático si repo es público) ### Cada fase → commit separado - `🔧 Fix: <descripción>` para correcciones - `📝 <bloque>: <temas generados>` para contenido nuevo - `INDEX: actualizado con N temas` para actualización del índice ## Pitfalls - **🔴 CSS CON DOBLES LLAVES `{{}}` DE TEMPLATE ENGINE** — Algunos archivos HTML generados por scripts Python/Jinja pueden contener `{{` y `}}` en lugar de `{` y `}` en bloques `<style>`. Esto rompe TODOS los estilos CSS del archivo. **Detección:** `grep -n '{{' *.html` dentro de bloques `<style>`. **Corrección:** reemplazar `{{` → `{` y `}}` → `}` SOLO dentro de `<style>` tags (nunca en HTML content). **Prioridad:** ❌ Crítico — el archivo se ve sin estilos. Ver `references/css-double-braces-fix.md` para patrón de corrección batch. - **🔴 PREFIJOS DE LÍNEA `N|` EN HTML** — Archivos HTML contienen prefijos tipo `1|`, ` 2|` al inicio de cada línea. Causa CSS destruido + texto basura visible. Origen: output de tools de visualización de código guardado como archivo real. **Detección:** `grep -rlP '^\s*\d+\|' *.html`. **Corrección:** `re.sub(r'^\s*\d+\|', '', content, flags=re.MULTILINE)`. **Trampa:** `read_file` de Hermes SIEMPRE prependea `N|` — no confundir con corrupción real. Usar `terminal("head -5 file")` para verificar contenido real. Ver `references/line-number-prefix-corruption.md`. - **🔴 NÚMEROS DE LÍNEA INCORPORADOS EN HTML (`N|` PREFIX)** — Archivos HTML pueden contener prefijos tipo `52|` o ` 3|` al inicio de cada línea. Causa: una herramienta escribe el output de `read_file()` (que prependea números de línea) de vuelta al archivo. **Síntomas:** números como texto visible en la página, CSS roto (números dentro de `<style>`), contenido renderizado con basura. **Detección:** `grep -cP '^\s*\d+\|' *.html | grep -:0$` — si algún archivo tiene matches, está corrompido. **Corrección:** `re.sub(r'^\s*\d+\|', '', content, flags=re.MULTILINE)` para eliminar todos los prefijos. **Prioridad:** ❌ Crítico — el archivo se ve completamente roto. Ver `references/line-number-corruption-fix.md` para patrón de detección y corrección. - **🔴 `write_file` DOBLE-ESCAPA BACKSLASHES EN REGEX** — Cuando `write_file` escribe código que contiene patrones regex como `new RegExp('[\\s\\S]*?')` o `/\\d+/g`, el tool puede duplicar los backslashes (escritura: `[\\s\\S]` → archivo: `[\\\\s\\\\S]`). El regex queda roto silenciosamente — el código pasa `node --check` pero no funciona en runtime. **Detección:** `grep -n '\\\\\\\\' file.js` — si hay resultados sospechosos, hay doble-escape. **Prevención:** Usar `indexOf`/`substring` en vez de regex para patrones simples (limpiar tags, extraer JSON). Si se necesita regex, verificar el contenido real con `cat -n file | grep 'pattern'` tras escribir. **Trampa:** `read_file` de Hermes también puede mostrar doble-escape — usar `terminal("cat -n file")` para verificar el contenido real del archivo. Ver `pdf-to-landing/references/server-2-endpoint-pattern.md` para ejemplo completo. - **🔴 `write_file` CORROMPE CONTENIDO COMPLEJO (NO solo prefijos de línea)** — Cuando se usa `read_file` dentro de `execute_code` para leer HTML/JS y luego `write_file` para escribir de vuelta (incluso después de procesar), el contenido puede corromperse: strings truncados, secuencias de escape rotas, caracteres UTF-8 mangled. Esto ES DIFERENTE al pitfall de prefijos `N|` — aquí el problema es que `write_file` dentro de `execute_code` puede truncar o corromper datos dentro de strings JavaScript complejos (arrays de objetos, datos con caracteres especiales). **Síntomas:** `SyntaxError: Invalid or unexpected token` en Node.js, navegador no ejecuta inline scripts, datos de referencia (como `_contractTypes`) truncados. **Detección:** `node --check` falla. **Corrección:** Restaurar desde el último commit funcional (`git show COMMIT:index.html`). **Prevención:** NUNCA usar `write_file` para reescribir archivos completos con contenido JS/CSS complejo extraído de `read_file` dentro de `execute_code`. Usar `patch` con `old_string`/`new_string` para ediciones específicas. Ver `references/write-file-corruption-pattern.md` para el caso completo. - **🔴 BATCH FIX SOBRESCRIBE CORRECCIONES ANTERIORES** — Si haces múltiples fases de corrección (ej: Fase 2 añade transiciones, Fase 5 reconstruye navegación), la Fase 5 puede sobrescribir lo que hiciste en Fase 2. **SOLUCIÓN:** Al hacer batch-fix de navegación, PRESERVAR los enlaces de transición entre niveles que ya existían. Marcarlos antes del batch y re-insertarlos después. Verificar con test específico post-fix. - **🔴 FÓRMULAS KATEX COMO TEXTO PLANO** — Las fórmulas pueden estar escritas como texto (`R²`, `{(1,0), (0,1)}`) en lugar de KaTeX (`$R^2$`, `$\\{(1,0), (0,1)\\}$`). El CDN de KaTeX puede estar cargado pero las fórmulas no se renderizan porque no tienen delimitadores `$`. **SIEMPRE** verificar: (1) KaTeX CDN presente, (2) script auto-render con delimiters, (3) fórmulas envueltas en `$...$` o `$$...$$`. Detectar con: `re.findall(r'(?<!\\$)R[²³](?!\\$)', content)`.
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub