Programando con AI: llevando el prompt al extremo para que haga bien las cosas

Imagen de Programando con AI: llevando el prompt al extremo para que haga bien las cosas

Les cuento, la semana pasada estuve reprogramando todo el sistema de la Ruleta Rusa, la idea es que prácticamente ustedes ni se den cuenta de todo lo que hice, que sea "smooth" el cambio, y lo hice.

Pero para hacerlo estaba intentando con mi fabuloso systemprompt como base y algo andaba mal, yo me ayudo en Copilot en Visual Studio Code y no daba pie con bola, siempre se deliraba (Claude 4 Sonnet), así que estuve toda una semana experimentando con mi mega pedido y no pude lograr un sistema funcional.

Hasta que me cansé y le pedí a... Claude! justamente que me indicara cómo era mejor pedirle lo que yo necesitaba...

Le pasé mi mega-prompt que definía todas las funciones y funcionalidades diversas que necesitaba para el administrador de la ruleta.

Se que para la mayoría de ustedes no son más que links a imágenes, y eso es lo que se ve, pero por detrás hay toda una lógica y un laburo gigante que implica muchas cosas a tener en cuenta.

Primero lo más importante: Bajar y organizar imágenes.

Puede parecer trivial, pero hoy en día obtener contenido de otro sitio, clasificarlo y reproducirlo luego es un temita, además de la cantidad enorme de bytes que ocupan, la ruleta pesa alrededor de 12GB, y eso que apenas contempla una porción de lo que fue desde toda la vida, pero si tomamos desde 2013 que es cuando lo metí en un sistema, es bastante grande y muchos años de contenido.

Son más de 12.000 "balas" que están organizadas en "ruletas" que las contienen, pero los archivos estaban todos en una misma carpeta, había que organizarlas en carpetas /[año]/[mes]/ para que fuese manejable.

Por otra parte, muchas de las imágenes estaban en Imgur.com y no las tenía yo por el peso, todos los videos y gifes animados, a descargar de nuevo! Bueno, no todos, pero una gran cantidad no los tenía descargados.

Por otro lado me faltaban thumbnails de casi todo, tuve que regenerarlos. Todavía me queda por descargar todo el contenido animado de 2017 a 2013, el 2018 ya lo descargué y lo subiré en breve, el resto está todo online.

Como verán, esa boludez que son 20 imagenes por semana es mucho más que 20 boludeces, el sistema tiene que permitirle a ustedes navegar entre ellos, ver las fotos o los videos, que se ajuste a pantalla, que luego puedas ver más, que puedas volver al índice, que estén en orden, organizadas, que funcione.

Aquí les cuento cómo lo logré programando apenas un 10% de lo que hubiese necesitado si lo hacía solo.

El buen prompt

Primera regla: un modelo LLM de "Inteligencia Artificial" es como tener a los monitos del Señor Burns tipeando, podrán tarde o temprano escribir lo que necesitás, pero mejor si lo ordenás vos.

Así que me puse en modalidad "Project Manager" y bajé a texto lo que necesitaba, Claude me dijo que lo mejor era no sólo bajarlo a texto sino armar una serie de archivos de texto por fases para que la AI pudiera seguir las tareas sin dedicarse a otras que no quería. Ponerle un orden y un freno para que no delirara.

Primero un archivo inicial en /docs/main_instructions.md que sería la base que alimentaría al modelo:

Así como lo ven es bastante tonto todo, pero les aseguro que funciona! Luego de crear esta especie de índice seguí con las fases:

Esta era fácil porque sólo forzaba la creación de archivos y estructuras, la condición de no continuar con nada hasta que estuviese completada la fase fue clave.

Podía quedarme iterando en pequeñas correcciones de la Fase 1 hasta que yo le indicara que continuara con la Fase 2.

Esto es crucial porque Claude es un modelo que tiene a irse por las ramas solo y hacer lo que se le cante si no se le definen las restricciones correctamente.

Hacer de jefe de un Junior

Aun así en esta fase se mandó funciones como esta que les voy a mostrar, la invoca así:

// Verificar permisos de administrador if (!verificar_permisos_admin()) { header("Location: ../login.php"); exit; }

Hasta aquí perfecto, va a validar que el usuario sea administrador antes de dejarlo pasar al dashboard, peeero... a la hora de implementar la función...

/** * Verificar si el usuario tiene permisos de administrador * (Función básica para Fase 1) */ function verificar_permisos_admin() { // Por ahora retornamos true // En fases posteriores se implementará la verificación real return true; }

El hijo de puta devuelve True siempre! Me reí mucho con esto porque hasta me lo esperaba, en la Fase 2 y las siguientes no aclaré que debía completar esto porque ni siquiera me di cuenta que lo había hecho. 

Hay que supervisar TODO lo que hace, que lo documente, que lo aclare. Por suerte era fácil de resolver (yo ya le proveo un sistema seguro así que esa validación ya existía).

Fue clave, para acelerar el proceso, proveer de un framework propio de login, sesión y abstracción de base de datos, así no hace estupideces cuando crea todo eso (es DEMASIADO común).

Luego seguí iterando con fase2_instructions.md hasta la 10, inclusive le creé un pedido para que de todo esto armara una API completa por si algún día quiero integrar alguna app por fuera:

Ni siquiera es algo que necesitara, pero la creó de forma espectacular, con el admin para crear api keys y contabilizar consumos, etc.

Separando de a fases e indicándole tareas más cortas y sencillas pude lograr el resultado esperado en un día, luego las otras fases me permitieron llegar a un sistema usable en otros dos días y al cuarto le pedí que me armara la interfaz de usuario.

Esto incluyó importadores y scripts de batch para mover lo viejo a lo nuevo, la base de datos sigue siendo la anterior con mejoras, y lo importante: dejar de depender de sitios de terceros para alojar el contenido y consumirlo.

De esta forma cada vez que entren al nuevo ruleta.linksdv.com van a estar entrando a un sitio donde el contenido es 100% local y no hay riesgo de que desaparezca como me sucedió con gfycat hace un par de años.

Si están pensando en "Vibe Coding" olvídense, sin mi intervención en cada fase era imposible que Claude 4, uno de los mejores modelos para programar, lograra algo funcional de una, es una máquina de cometer errores aun cuando tenés todo documentado.

Me aceleró meses de trabajo en pocas horas libres a la noche, y eso es impagable, nunca me hubiese animado a esto, un sistema creado de cero, y hubiese seguido poniéndole parches de mierda a lo que tenía hecho con los codos, ahora tengo un sistema maravilloso que funciona de pelos.

Quedan bugs todavía, pero poco a poco los voy resolviendo, el sitio es simple para los usuarios, el 90% de lo que hice es para el "administrador", pero es justamente lo que más trabajo me daba cada semana para coleccionar imágenes y brindárselas como hace más de quince años.  Pueden ingresar al nuevo sitio de la Ruleta Rusa aquí.



copyright©2026 Fabio Baccaglioni - Fabio.com.ar - Versión simplificada Old School