Atrás

Prompt teardown: GPS, memoria y Maps a partir de una sola frase

el 

Ya nadie duda de que una IA pueda generar código capaz. La pregunta interesante es qué hace realmente una sección generada dentro de tu app — así que tomamos un prompt y lo desmontamos, línea por línea.

Siete palabras

Ya nadie duda de que una IA pueda generar código capaz — incluso «vibe-coded», funciona, a veces muy bien. Esa no es la pregunta interesante. La pregunta interesante es: una vez generada, ¿qué hace realmente esa sección dentro de tu app? ¿Se queda como un bloque aislado en un rincón, o aprovecha lo que el dispositivo y la app ya saben hacer? La forma más honesta de responder es tomar un prompt y desmontarlo, línea por línea.

Para eso está esta nueva serie. En cada episodio tomaremos un prompt de la biblioteca del AI Extension Builder y lo desmontaremos: dónde confía en la plataforma, dónde la fuerza, y qué sabe hacer de verdad la sección resultante. Empezamos con uno de los prompts de ejemplo de la biblioteca: «dónde aparqué».

Este es el prompt más corto que podrías escribir para esto:

Build a "remember where I parked" helper.

Eso es todo. Una frase, no unas especificaciones. Y esto es lo que sale:

Un botón para guardar tu ubicación. Una sección que vuelve a encontrar ese punto al reabrir la app. Un botón para volver al coche. Un enlace discreto para borrarlo. Y, si rechazas la localización, una pantalla que lo explica en lugar de fallar.

La sorpresa no es que siete palabras dibujen una pantalla. Es que esta sección, nacida de una frase, ya aprovecha las capacidades del dispositivo: lee el GPS, guarda una memoria, abre Maps. No pedimos ninguna de esas tres cosas.

No tocó el teléfono directamente — pasó por la app

Aquí está lo que importa, y es fácil pasarlo por alto. Para obtener la ubicación GPS, la sección no se dirige directamente al teléfono. Pasa por la app que la aloja.

Es la app la que tiene el acceso al GPS, y la sección lo toma prestado. La consecuencia es simple y tranquilizadora: la sección no tiene un permiso propio. Lo que la app tiene permitido hacer, ella lo hereda; lo que la app no tiene permitido, la sección no puede forzarlo. Y qué permisos pide la app, de entrada, lo decides tú como creador de la app: los declaras en el Privacy Center de la app. Una sección generada se mantiene estrictamente dentro de ese marco; no abre ninguna puerta trasera al lado.

Es exactamente nuestra filosofía de guardrails: una sección generada no puede hacer nada que la propia app no permita. No te dejamos cruzar, mediante un prompt, un límite que no decidiste abrir. La misma lógica gobierna las otras dos capacidades.

La memoria. La sección vuelve a encontrar la ubicación guardada después de que hayas cerrado y reabierto la app. Y esa persistencia no la pedimos: la plataforma la pone en marcha por sí sola en cuanto una sección maneja datos del usuario. Es más, sabe distinguir — la ubicación de un aparcamiento es un dato simple, personal, ligado al dispositivo: no hace falta una base de datos como Supabase para esto, basta con un almacenamiento en el dispositivo, y es lo que elige. Ahí está toda la sutileza: saber cuándo hace falta un backend de verdad y cuándo basta con el dispositivo. Guardar lo que se debe guardar, en el sitio adecuado, es el comportamiento por defecto — no una casilla que marcar.

Maps. El botón «volver al coche» no dibuja un mapa dentro de la sección: abre la app de Maps del teléfono, directamente en las coordenadas correctas. Una sección generada no es prisionera de su propia pantalla; sabe delegar en lo que el teléfono ya hace bien.

Tres capacidades — GPS, memoria, Maps — y cada vez el mismo principio: la sección no va por libre, se apoya en la app que la rodea. Desde fuera, para el usuario y para ti, es un único objeto coherente. Ese es el verdadero tema de este episodio — no el aparcamiento.

El comportamiento por defecto ya es el correcto

Lo que hace interesante este primer ejemplo es que no pedimos nada de eso. No escribimos «usa el GPS nativo», ni «guarda los datos», ni «abre Maps». La sección tomó esos caminos por su cuenta, porque son los de la plataforma.

Dicho de otro modo: el buen comportamiento no se gana a base de precisión en el prompt. Es el punto de partida. Así que la pregunta interesante se invierte: ¿puede una formulación sacarte de ese buen camino?

Puede. Y ahí es donde el prompt largo de la biblioteca resulta instructivo.

El único sitio donde el prompt se sale del carril

El prompt real de «dónde aparqué», en la biblioteca, es más detallado. La mayoría de sus frases no hacen más que enriquecer lo que ya hemos visto: una etiqueta precisa, una marca de tiempo «aparcado hace 23 min», un paso de confirmación antes de borrar. Nada que cambie la naturaleza de la sección.

Salvo una línea. El prompt pide una ruta de Google Maps, calculada desde la posición actual hasta el coche. Y ahí, la sección se sale del camino integrado.

La razón no tiene nada de técnico: nombramos un servicio concreto. Pedir «Google Maps» es pedir Google Maps — el servicio en línea, con su dirección web — y no «un mapa», que habría dejado a la plataforma abrir el del teléfono. Así que la sección fue a buscar ese servicio fuera de la app. Y como toda sección que recurre a un servicio externo, tuvo que pedir permiso: la plataforma mostró el dominio google.com y esperó tu visto bueno antes de dejarla salir. (De nuevo, los guardrails: nada abandona el marco de la app sin tu consentimiento explícito.)

Obtuvimos exactamente lo que pedimos. También salimos de la app hacia la web y añadimos un dominio que aprobar. No es un error ni una buena o mala noticia: es un intercambio, y conviene hacerlo con los ojos abiertos.

De ahí la única regla que quedarse de este episodio: describe el resultado que quieres, no cómo obtenerlo. La versión corta, que solo decía «volver al coche», dejó elegir a la plataforma — y abrió el Maps del teléfono, sin buscar nada fuera. Solo se nombra un servicio o una tecnología concreta cuando se tiene una razón que la plataforma no puede conocer.

El prompt completo

Si prefieres partir de la versión completa y modificarla, aquí la tienes — es la de la biblioteca, a un clic en el AI Extension Builder:

Build a "remember where I parked" helper. Show a big primary button labeled "Save my parking spot" that captures the device's current GPS coordinates and stores them persistently on the device. Once a location is saved, swap the UI to show the saved coordinates, a timestamp ("Parked 23 min ago"), and a second button "Find my car" that opens Google Maps directions from the user's current location to the saved spot. Include a discreet "Clear" link to forget the saved location. Handle the no-permission case gracefully with an explanation.

Remember where I parked

Te toca

Lo más instructivo no es copiar este prompt, es retorcerlo. Cambia el coche por una bici, una parcela de camping, un puesto de mercado. Quita la línea de Google Maps y mira cómo la sección vuelve por su cuenta al Maps del teléfono. Cambia «aparcado hace 23 min» por otra cosa y observa cómo el formato la sigue.

La biblioteca guarda más para desmontar de la misma manera: un quiz de películas para compartir, un clon jugable de Flappy Bird con clasificación, o una sección que usa tus propios archivos.

El AI Extension Builder está en beta, abierto a todo el mundo.

FAQ

¿Puede una sección generada por IA usar el GPS del teléfono?

Sí. No directamente: pasa por la app que la aloja y hereda el permiso de localización de esa app.

¿La sección pide su propio permiso de localización?

No. Se apoya en el de la app. Si la app tiene acceso, la sección lo toma prestado; si la app no lo tiene, la sección no puede forzarlo.

¿Puede una sección generada conservar datos después de cerrar la app?

Sí. La plataforma pone en marcha esa persistencia en cuanto una sección maneja datos del usuario, y elige el nivel adecuado: almacenamiento en el dispositivo para un dato simple, un backend de verdad cuando hace falta.

¿Puede una sección generada abrir Maps?

Sí. Abre la app de Maps del teléfono, directamente en las coordenadas que quieras.

¿Cómo se escribe un buen prompt para una sección de app?

Describe el resultado que quieres, no cómo obtenerlo. La plataforma elige entonces el camino más integrado. Nombra un servicio o una tecnología concreta solo si tienes una razón particular para hacerlo.