Todos los demos de "IA escribiendo código" hacen trampa. Usan los stacks que el modelo se sabe de memoria: React, Python, Node. Quise probar el caso difícil.
Construyo con Flutter desde las primeras alphas — es mi pan de cada día. Así que cuando quise medir hasta dónde aguanta de verdad la ingeniería asistida por IA, elegí a propósito un terreno donde ni yo ni el modelo tenemos ventaja de localía: Kotlin Multiplatform.
Menos ecosistema. Menos data de entrenamiento para el LLM. Menos "esto ya me lo sé". El tipo de entorno donde realmente descubrís si tu método aguanta.
Vibe coding << ingeniería con SDD
La diferencia entre tirar prompts y trabajar con Spec-Driven Development tiene nombre: deuda cognitiva, context decay, pérdida de intent fidelity. Y solo se ve cuando salís del happy path.
KMP tiene poca presencia en los datos de entrenamiento de los LLMs. No es un playground donde Claude tenga conocimiento profundo. Se pierde: alucina APIs, mezcla versiones, ignora patrones nativos. Cada decisión cuesta más ciclos, más tokens, más tiempo.
El resultado
3-4 días. 9 iteraciones. Claude Code Opus 4.7 dirigido con Spec-Driven Development y apoyado en un skill específico de Compose Multiplatform. El proceso quedó documentado tarea por tarea en el repo.
La app:
- Visualizador de voz: ondas que reaccionan al audio en un ring LED simulado.
- Física y filtros de audio específicos.
- Sin dependencias nativas: Android, iOS, Web y Desktop con el mismo código.
- 60 FPS sostenidos.
Dos piezas del proceso fueron clave: el método (SDD — Paul Everitt tiene un curso excelente sobre esto en DeepLearning.AI) y el skill de Compose Multiplatform de Adit Lal, sin el cual navegar las APIs de KMP hubiera sido el verdadero cuello de botella.
Lo que importa
Lo interesante no es "la IA lo hizo". Lo interesante es esto: sin specs claras, en un stack que el modelo no domina, Claude Code colapsa. Con specs bien escritas, el skill correcto y un proceso adecuado, el resultado es otra cosa.
El método y saber operar la herramienta es lo que mueve la aguja — por sobre el modelo. Eso no se regenera pidiéndole a un chatbot que "escriba una app".
Código abierto: github.com/jvagliat/sdd_kmp_voice_visualizer_ring — incluye las specs y el desglose tarea por tarea del proceso.


