Files
2026-09-27 01:59:14 -06:00

2.6 KiB
Raw Permalink Blame History

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.