2.6 KiB
2.6 KiB
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.htmlen un navegador, o servir la carpetasrc/con cualquier servidor estático (python3 -m http.serverdesdesrc/). - 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):js/maze.js— exponewindow.MAZE,TUNNEL_ROW,PACMAN_START,GHOST_STARTSjs/game.js— exponewindow.createGame,window.update,window.DIRSjs/render.js— exponewindow.drawjs/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(enmaze.js) es la matriz prístina del laberinto (28×31).createGame()la clava con.map(row => row.slice())por partida. No mutarMAZEdirectamente.
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 = 20px sobre el canvas de 560×620. CambiarTILErompe el layout (CSS#game-wrapestá 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 enspecs/. 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
<script>a módulos ES sin refactorizar — el orden de carga y los globales enwindowson parte del diseño actual. - No introducir tests automatizados, linter ni CI sin que el usuario lo pida: el repo está deliberadamente vacío de tooling.
- No correr
npm installni similares — no hay nada que instalar.