Files
open-pacman/AGENTS.md
T
2026-09-27 01:59:14 -06:00

54 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 `<script>` a módulos ES sin refactorizar — el orden
de carga y los globales en `window` son 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 install` ni similares — no hay nada que instalar.