Skip to content

feat(gauntlet): la landing del Gauntlet Challenge de agosto - #19

Merged
Saul-Gomez-J merged 4 commits into
mainfrom
feat/gauntlet-challenge-landing
Aug 11, 2026
Merged

Saul-Gomez-J merged 4 commits into
mainfrom
feat/gauntlet-challenge-landing

Conversation

@Saul-Gomez-J

Copy link
Copy Markdown
Contributor

/gauntlet y /es/gauntlet: la página del challenge de agosto.

Qué es y qué no es

Es un anuncio. No guarda nada. Esta web no tiene acceso a cloud-api, así que cualquier cosa con pinta de formulario sería prometer una persistencia que no existe: el alta se hace en el Google Form, y la entrega y la votación se cuentan pero no se construyen aquí. Hay un test que lo vigila (gauntletPage.test.ts): sin client:*, sin <form>, sin <input>, sin fetch(, sin /api/.

Lo que entra

La páginasrc/pages/_gauntlet.astro sobre el patrón _-prefijado, con los dos wrappers de ruta. Nueve secciones: la idea, el prompt, cómo se diseña un loop, el calendario, cómo participar, la entrega, y qué pasa después del cierre.

El calendario de agosto — marcado día a día, con la etiqueta de qué pasa dentro de cada casilla. Dimensionado en vh para que el mes entero quepa en una pantalla; por debajo de 520px las etiquetas repetidas de "construir" se caen —no caben en una columna de 45px— y el tramo lo sigue contando el color. Es la única rejilla que no se reordena en móvil: una semana partida deja de ser un calendario.

La sección del prompt — el prompt original anotado al margen, como la captura de la que salió, con un botón que lo copia. Es el único JavaScript propio de la página: escribe en el portapapeles y ya. En móvil, sin márgenes donde colgar una nota, cada anotación baja debajo del párrafo que anota.

Una sola fuente para el prompt — vive en src/data/gauntletPrompt.ts, fuera de i18n, porque no se traduce y porque tener el texto en dos sitios es exactamente cómo lo que se lee y lo que se copia acaban divergiendo. La página pinta los trozos marcados, el botón copia promptText(), y gauntletPrompt.test.ts compara el resultado con el original palabra por palabra.

Las fechas — workshop, construcción, cierre el 28, votación: salen de eventos.json y las lee src/lib/gauntlet.ts, con el reloj como parámetro para que el estado de la página (antes / durante / votando / cerrado) sea testeable. El día de presentaciones sigue sin fecha, y la página lo dice así.

Enganches — la fila del Gauntlet en /events ahora enlaza a la landing (href es opcional en la agenda: el resto de entradas siguen siendo texto, para no prometer páginas que no existen), la ruta entra en el sitemap en los dos idiomas, y StructuredData publica un Event con lo que la página afirma y nada más: ni presentaciones sin fecha ni premios sin definir.

Verificación

  • npx vitest run — 570 tests en 39 ficheros, todos verdes
  • npx astro check — 107 ficheros, 0 errores / 0 avisos / 0 hints
  • Revisión visual en el navegador de las dos rutas, incluido el botón de copiar (etiqueta a "Copiado" y vuelta) y el reflow del prompt anotado

🤖 Generated with Claude Code

Saul-Gomez-J and others added 4 commits August 7, 2026 19:01
Una página que anuncia el challenge y no guarda nada: sin acceso a
cloud-api, cualquier cosa que pareciera un formulario sería mentir. El
alta va al Google Form, y la entrega y la votación se cuentan, no se
construyen aquí.

Qué entra:
- /gauntlet y /es/gauntlet sobre el patrón `_`-prefijado, con el
  calendario de agosto marcado día a día y cada casilla diciendo qué
  pasa ese día. Cabe entero en una pantalla.
- La sección del prompt original, anotada al margen como la captura de
  la que salió, con un botón que lo copia al portapapeles. Es el único
  JavaScript propio de la página y no manda nada a ninguna parte.
- El prompt vive en src/data/gauntletPrompt.ts, fuera de i18n: no se
  traduce, y tenerlo en un sitio evita que lo que se lee y lo que se
  copia acaben diciendo cosas distintas. Un test lo compara con el
  original palabra por palabra.
- Las fechas (workshop, construcción, cierre el 28, votación) salen de
  eventos.json y las lee src/lib/gauntlet.ts con el reloj como
  parámetro, así que el estado de la página es testeable.
- La fila del Gauntlet en /events enlaza a la landing; el resto de la
  agenda sigue siendo texto. Sitemap y Event de schema.org al día.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
La página pasaba del hero a "Un prompt no hace el trabajo", que es una
lección sobre bucles servida a alguien que todavía no sabe qué se le
está proponiendo. Y daba por sabido lo que nunca explicaba: qué es NaN
—citado tres veces, incluido como requisito para participar—, de dónde
sale el nombre, y que el tema es libre, que vivía en el pie de la
sección del prompt detrás de 850 caracteres sobre Call of Duty.

La nueva 01 va en dos velocidades: la historia del experimento como
titular, para quien lee, y tres respuestas en rejilla —qué construyo,
quién lo organiza, qué me llevo— para quien escanea. Todo lo demás baja
un número.

Dos cosas que la sección NO dice, a propósito: que ser miembro sea
gratis (no lo es: el premio de un hackatón es "1 mes gratis de NaN") y
que haya premio, porque no hay ninguno definido. La descripción de NaN
es literalmente la de /community, para que la comunidad se cuente igual
en toda la web.

Va también un test que comprueba que los números de sección van
seguidos: están escritos a mano y un 02 repetido no rompe nada, así que
no se ve hasta producción.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…lido

La landing explicaba el Gauntlet Loop antes de enseñar nada. Quien llega no
sabe lo que es un bucle de agentes, pero sí sabe reconocer un juego que
funciona, así que la primera sección pasa a ser cinco proyectos publicados en
las últimas semanas y la explicación viene detrás.

Son obra de terceros, y eso manda en cómo se muestran:

- Cada tarjeta enlaza a la publicación original y lleva el handle a la vista.
- La miniatura es el fotograma de portada, servido desde /public. La página no
  tiene JavaScript de terceros y no iba a estrenarlo ahora: mirar esta sección
  no manda una sola petición a X hasta que alguien hace clic.
- Solo lleva la etiqueta "cita el Gauntlet Loop" el único autor que lo nombra.
  El título de la sección habla de lo que está saliendo, no de la técnica,
  porque decir que los cinco salen del bucle sería firmar por los otros cuatro.

Lo que no se traduce (enlace, imagen, autor, fecha) vive en data/, y el título
y la descripción en i18n, emparejados por id.

De paso, el prompt sube por delante de la idea, y el último guión largo visible
de la landing pasa a ser dos puntos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
La pregunta "¿y yo qué tengo que hacer?" se contestaba en la 07 y la 08,
detrás de cuatro secciones de explicación, y para cuando llegabas ya no
lo tenías claro. Ahora es la 02, justo después de los ejemplos: qué se
pide, el requisito y qué se entrega, todo en el mismo sitio.

El título deja de ser un juego de palabras y dice lo que es: "El reto
consiste en:". Desaparecen la lista de cinco pasos —que describía el
proceso, no el encargo— y la sección de diseño entera, que no aportaba
nada que no estuviera ya en el prompt.

Con la 05 fuera y la 07 y la 08 fundidas, la página pasa de nueve
secciones a siete. Se van también el CSS de .split y .steps, que ya no
los pinta nadie.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Saul-Gomez-J
Saul-Gomez-J merged commit bf12e24 into main Aug 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants