# AGENTS.md Repo de práctica: clon de Pac-Man (Vanilla JS + Canvas) usado para aprender Spec Driven Development. No hay build, no hay tests, no hay linter. ## Stack - HTML + CSS + Vanilla JS, sin dependencias ni package.json. - Todo se ejecuta desde `src/index.html`. Se puede abrir directamente en el navegador (`file://`) — no usa módulos ES ni fetch. ## Cómo correrlo - Abrir `src/index.html` en un navegador, o servir la carpeta `src/` con cualquier servidor estático (`python3 -m http.server` desde `src/`). - Controles: flechas del teclado. Botón Start en el overlay. ## Estructura de `src/` - `index.html` — canvas `#game`, overlay `#overlay`, y carga los scripts en este orden estricto (es importante): 1. `js/maze.js` — expone `window.MAZE`, `TUNNEL_ROW`, `PACMAN_START`, `GHOST_STARTS` 2. `js/game.js` — expone `window.createGame`, `window.update`, `window.DIRS` 3. `js/render.js` — expone `window.draw` 4. `js/main.js` — bucle, teclado, overlays (lee los globales de los anteriores) - Los scripts se comunican por `window.*` (no por imports). No convertir a módulos ES sin refactorizar las 4 capas. - `MAZE` (en `maze.js`) es la matriz prístina del laberinto (28×31). `createGame()` la clava con `.map(row => row.slice())` por partida. No mutar `MAZE` directamente. ## Convenciones de código - Los archivos existentes usan comillas simples y espacios dentro de los paréntesis (`function ( x )`, `'left'`). Mantener ese estilo al editar. - Los archivos JS sí llevan comentarios explicativos por sección (a diferencia de la regla global por defecto). No quitarlos al editar a menos que el usuario lo pida. - El render dibuja a `TILE = 20` px sobre el canvas de 560×620. Cambiar `TILE` rompe el layout (CSS `#game-wrap` está dimensionado a 560×620). ## Flujo de trabajo: Spec Driven Development - Este proyecto existe para practicar SDD. Antes de añadir funcionalidad usar el skill `.agents/skills/spec` (`/spec`) y guardar el resultado en `specs/`. Para implementar a partir de un spec ya escrito, usar `.agents/skills/spec-impl` (`/spec-impl`). - `specs/` aún no existe; crearlo al primer spec. - El template vive en `.agents/skills/spec/template.md`. ## Lo que NO hacer - No añadir `package.json`, bundler, framework, ni dependencias. - No convertir los `