4.2 KiB
4.2 KiB
AGENTS.md - Directrices para el Agente
Preferencias de Comportamiento
- Idioma: Responder siempre en español.
- Commits: Redactar en inglés, usando
feat:,fix:,docs:,style:,refactor:,test:,chore: - Seguridad: Nunca modificar archivos sin confirmación previa
- Proactividad: Sugerir mejoras durante análisis del código
Stack Tecnológico Habitual (Backend)
- HTML
- CSS
- JS
Flujo de Trabajo Típico
- Ignorar la carptea assets. El contenido es de imagenes e iconos.
- Análisis (leer y entender contexto)
- Planificación (proposición paso a paso si es complejo)
- Implementación (siguiendo PEP 8/ESLint)
- Documentación (actualizar README.md si hay nuevos commandos)
- Control de versiones (commits atómicos, ramas
feature/ofix/)
Instrucciones Específicas para este Repositorio
Arquitectura General
-
Estructura: Sitio web estático con HTML/CSS/JS puro (sin frameworks ni build tools)
-
Componentes Modulares: Header y footer cargados dinámicamente via
fetch()(js/main.js:25-60)- Header: Incluye botón 'HABLEMOS' y toggle de tema (includes/header.html)
- Footer: Información de contacto e identificación fiscal (includes/footer.html)
-
Temas: Dark/light mode con persistencia usando localStorage (js/main.js:143-183)
-
Variables CSS en
css/styles.css:--bg-primary --text-body --ide-primary --ide-dark -
Toggle actualiza atributo
data-themey cambia íconos de logo (js/main.js:150-183)
-
Implementación Clave
Theme Switcher (js/main.js):
// Inicialización (ejecutado al cargar DOM)
function initTheme() {
const savedTheme = localStorage.getItem('ide_theme') || 'light';
document.documentElement.setAttribute('data-theme', savedTheme);
updateThemeIcon(savedTheme);
toggleLogoTheme(savedTheme);
}
// Toggle (event handler)
function toggleTheme() {
const currentTheme = document.documentElement.getAttribute('data-theme') || 'light';
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', newTheme);
localStorage.setItem('ide_theme', newTheme);
updateThemeIcon(newTheme);
toggleLogoTheme(newTheme);
}
Navegación Móvil: sistema de drawer con:
- Botón hamburguesa (abre)
- Overlay (cierra al hacer clic)
- Cierre con ESC
- Enlaces que cierran automáticamente
- Atributos ARIA para accesibilidad (js/main.js:94-133)
Cursos Dinámicos:
- cargados desde
/data/cursos.json - Fallback con datos mock en
getFallbackCourses()(js/main.js:608-625) - Modales dinámicos para detalles de cursos
Estructura de directorios clave
project/
├── includes/
│ ├── header.html # Header modular
│ └── footer.html # Footer modular
├── css/
│ └── styles.css # Estilos principales (variables `--ide-primary`, `--ide-dark`)
├── js/
│ └── main.js # JavaScript principal (890 líneas)
├── images/ # Imágenes y logos
└── data/
└── cursos.json # Datos de cursos
Páginas principales
index.html- Página inicial con hero y Brújula IDEsoluciones.html- Soluciones con filtrado dinámico (js/main.js:630-654)academy.html- Cursos y formacióndesafios.html- Quiz interactivo (JS embedded)contacto.html- Formulario de contacto con AJAX (js/main.js:798-841)
Funcionalidades destacadas
- Sistema de modales: Pop-ups con cierre por clic externo y tecla ESC (js/main.js:188-243)
- Formularios AJAX: envío a
/php/send-mail.phpcon mensajería de suceso/falla (js/main.js:798-890) - Feed Insights: WordPress REST API + fallback de artículos (js/main.js:659-754)
Notes importantes para el desarrollo
- Path corregido: Usar & y Desarrollo (no Development) en todos los paths
- Sin frameworks: No hay React, Vue, ni herramientas de build - todo es Vanilla JS
- Fallbacks implementados: Siempre verificar fallbacks para API y datos remotos
- Persistencia: El tema se guarda en localStorage (
ide_theme) - Testing visual: Revisar temas dark/light en navegadores moderno