Saltar al contenido
WebViewGold Del vibe coding a la App Store
Español
Consigue WebViewGold

Cursor

Reglas de Cursor para apps WebViewGold: una plantilla de .cursor/rules que mantiene cada cambio listo para las tiendas

Cursor aplica las project rules al chat, a Composer y a las ejecuciones del agente. Para una app que publicas con WebViewGold, las reglas deben llevar el contexto WebView, la sintaxis del puente y la lista de comprobación de las tiendas, para que el agente deje de sugerir soluciones que solo funcionan en el navegador. Aquí tienes una plantilla de dos archivos y cómo usarla.

Desde $109 de pago único por plataforma, o deja que nuestro equipo lo haga todo desde $698.

  • Garantía de aprobación – o te devolvemos el dinero en 14 días
  • Sin programar
  • Pago único, actualizaciones gratuitas
  • Soporte humano 24/7
  • Hecho en Alemania desde 2014 · ISO 27001

Cómo funcionan las reglas de Cursor

Las project rules viven en .cursor/rules/ como archivos .mdc: Markdown con un breve front matter que decide cuándo se carga la regla. alwaysApply: true la incluye en todas las conversaciones; globs la adjunta automáticamente cuando hay archivos coincidentes en el contexto; una description por sí sola permite que el agente la incorpore cuando decide que es relevante; y siempre puedes referenciar una regla por su nombre con @. El antiguo archivo único .cursorrules en la raíz del repositorio sigue funcionando, pero los proyectos nuevos deberían usar la carpeta, porque permite una regla siempre activa y varias con un alcance limitado.

Esa división es justo lo que necesita una app WebViewGold: el contexto WebView y las reglas de las tiendas siempre activos, y las reglas de diseño móvil adjuntas solo cuando el agente edita archivos de interfaz, para que no estorben en el trabajo de backend.

Regla 1: webviewgold-app.mdc (siempre activa)

Guárdala como .cursor/rules/webviewgold-app.mdc. Sustituye los valores de ejemplo y quita las filas del puente que no uses. Cada esquema procede de la documentación de WebViewGold para iOS y de la documentación para Android. Puedes dejar la regla en inglés: Cursor la entiende igual de bien.

markdown
---
description: WebView runtime context, WebViewGold bridge and store rules for this app
alwaysApply: true
---

# Runtime
- This web app (production: https://app.example.com) is also published as native iOS and
  Android apps with WebViewGold. The native apps load the production URL in a WebView.
  There is no separate mobile codebase; never propose React Native, Expo or Capacitor.
- The native app sets the user agent marker `MYAPPNATIVE`. Detect it only via
  `isNativeApp()` in `src/lib/platform.ts`.
- Google/Facebook OAuth is handled by the wrapper (Social Login Helper); Sign in with
  Apple is handled automatically. Do not open OAuth in new windows or popups.
- When `isNativeApp()`: no "Download our app" or "Add to home screen" banners, no cookie
  banner unless legally required, no service worker install prompts.

# WebViewGold bridge (native app only, always with a web fallback)
Call a feature by navigating: `window.location.href = "scheme://..."`. Results arrive
asynchronously as global variables or callbacks; poll with a timeout.
- Push permission prompt: `registerpush://`; status: `checkNativePushPermissions://` -> `nativePushEnabled`
- OneSignal subscription ID: `getonesignalplayerid://` -> `onesignalplayerid`
- Local notification: `sendlocalpushmsg://push.send?s=SECONDS=msg!MESSAGE&!#TITLE&!#URL`
- Share sheet: `shareapp://message?=TEXT&url=URL`
- Haptics: `lighthaptic://`, `mediumhaptic://`, `heavyhaptic://`, `successhaptic://`, `warninghaptic://`, `errorhaptic://`
- Biometrics: `bioauth://` -> iOS callbacks `onBioAuthSuccess()`, `onBioAuthFailure(code, msg)`, `onBioAuthUnavailable()`
- QR scanner: `qrcode://` (scanned URL is loaded); barcode: `barcodescanner://` -> `barcodescanresult`
- Purchases (RevenueCat): `revenuecat://purchase?external_id=USER_ID&product=PRODUCT_ID`;
  restore `restoreinapppurchases://`; manage `cancelinapppurchase://`
- App version: `getappversion://` -> `versionNumber`, `bundleNumber`; install ID: `get-uuid://` -> `uuid`
- Full reference: https://www.webviewgold.com/llms-full.txt (read it before using any other scheme)

# Store rules (invariants)
- /privacy and /terms are real routes linked from footer and settings.
- Sign-up exists => Delete account exists (server-side deletion) plus a public /delete-account page.
- Third-party login exists => Sign in with Apple is offered with equal prominence.
- Digital goods, subscriptions and credits in the native app go through `revenuecat://`;
  Stripe only for browser users and for physical goods. No external payment links in the app.
- Every fetch has loading, empty, error and retry states; never a blank screen.
- User-generated or AI-generated content has report and block actions.
- No placeholder text, dead links or mixed content.

# Done means
Works in a desktop browser and at 320px; native code behind `isNativeApp()`;
no new store-rule violations; lint and tests pass; summarize device tests I must run.

Regla 2: mobile-ui.mdc (adjunta automáticamente a los archivos de interfaz)

Guárdala como .cursor/rules/mobile-ui.mdc. Ajusta los globs a la estructura de tus carpetas.

markdown
---
description: Mobile layout rules for screens rendered inside the native WebView apps
globs: src/components/**/*.tsx, src/app/**/*.tsx, src/pages/**/*.tsx, src/**/*.css
alwaysApply: false
---

- Viewport: `width=device-width, initial-scale=1, viewport-fit=cover` must stay in the document head.
- No horizontal overflow between 320px and 1024px; test flex and grid children with `min-width: 0`.
- Tap targets at least 44x44px; spacing between adjacent targets at least 8px.
- Fixed or sticky headers, footers, tab bars and bottom sheets use
  `padding-top: env(safe-area-inset-top)` / `padding-bottom: env(safe-area-inset-bottom)`.
- Inputs and selects use `font-size: 16px` or larger (prevents zoom on iOS).
- No hover-only interactions; every hover state has a tap equivalent.
- Images and embeds have explicit width and height or aspect-ratio to avoid layout shift.
- Long lists are paginated or virtualized; a WebView has less memory than a desktop tab.
- Prefer in-app bottom navigation over a hamburger menu in the native app.
- Dark mode: respect `prefers-color-scheme` or provide a setting; never pure white flashes on navigation.

WebViewGold nos ha permitido el tiempo de mercado más corto y eficiente que jamás sea posible de todas las otras plataformas de aplicaciones que hemos probado durante los últimos 5 años. No sé por qué no lo había descubierto antes, ¡pero estoy muy, muy contento de haberlo hecho. Actualmente cerca de 6000 descargas de aplicaciones tanto en iOS App Store & Google Play Store sin ningún problema!

Antonio Davila · CodeCanyon

Qué hace cada bloque

Bloque de ejecución

Evita los tres desvíos más habituales: proponer una reescritura nativa, romper OAuth con ventanas emergentes y colar en la app banners exclusivos de la web. El marcador de user agent se define en WebViewGold: useragent_iphone / useragent_ipad en Config.swift, USER_AGENT en Config.java.

Bloque del puente

Esquemas exactos y nombres de las variables de resultado. Sin él, Cursor se inventa un objeto window.native o recurre a la Web Share API. La última línea lo remite a la documentación completa para todo lo que no aparece.

Bloque de reglas de las tiendas

Invariantes, para que se apliquen a cada tarea futura y se comprueben al final. La regla de pagos evita el rechazo más caro (Apple 3.1.1); las reglas de eliminación de cuenta y de Sign in with Apple evitan los más comunes (5.1.1, 4.8).

Regla de interfaz móvil

Se adjunta automáticamente solo cuando hay archivos de interfaz en el contexto, lo que mantiene limpias las conversaciones de backend. Es la misma lista de comprobación que aplican los revisores según la Directriz 4.0 y la política de funcionalidad defectuosa de Google.

Cómo usa las reglas el modo agente de Cursor

En el modo agente, Cursor planifica, edita archivos, ejecuta comandos e itera. La regla siempre activa forma parte de cada plan, así que cuando pides "un bloqueo con Face ID en la página del monedero", el plan ya dice: protegerlo con isNativeApp(), navegar a bioauth://, implementar los callbacks de iOS, mantener una alternativa con contraseña en la web y conservar una comprobación en el servidor. La regla móvil entra en el contexto en cuanto el agente abre un archivo de componente.

Dos hábitos lo hacen fiable. Primero, añade la documentación de WebViewGold como fuente de docs en Cursor (la función @Docs acepta una URL; usa https://www.webviewgold.com/llms-full.txt) para que el agente pueda leer la sección de una función en lugar de adivinar. Segundo, termina los prompts de funciones con "comprueba el resultado con la documentación de WebViewGold y con las reglas de las tiendas", lo que hace que el agente vuelva a leer ambas antes de informar. La guía de llms.txt describe en detalle la rutina de verificación.

Un prompt para probar las reglas

Pégalo en el modo agente de Cursor
Añade un bloqueo biométrico delante de la ruta /wallet. Sigue las reglas del proyecto: en la app nativa, navega al esquema biométrico de las reglas y gestiona los callbacks de éxito, fallo y no disponible; en la web, recurre a volver a introducir la contraseña. El estado de desbloqueo se guarda en session storage durante 5 minutos y el servidor debe seguir verificando la sesión en cada petición al monedero. Aplica las reglas de interfaz móvil a la pantalla de bloqueo. Después comprueba tu resultado con https://www.webviewgold.com/llms-full.txt y con las reglas de las tiendas, y enumera lo que verificaste.

Antes de hacer commit de las reglas

  • La URL de producción y el marcador de user agent de la regla coinciden con los valores de Config.swift y Config.java.
  • Los globs de mobile-ui.mdc coinciden con la estructura real de tus carpetas; abre un componente y confirma que la regla se adjunta.
  • Cada fila del puente que conservaste corresponde a una función activada en el proyecto de WebViewGold, o que lo estará.
  • La sección de comandos nombra scripts que existen en package.json, para que el agente pueda ejecutar el lint y las pruebas.

Preguntas frecuentes

¿.cursorrules o .cursor/rules?

Usa la carpeta .cursor/rules en los proyectos nuevos; admite varias reglas con alcance limitado y el front matter que controla cuándo se carga cada una. Un archivo .cursorrules antiguo sigue funcionando si ya lo tienes.

¿Las reglas se aplican a los autocompletados con Tab?

Las reglas son para las conversaciones de chat, Composer y agente. Los autocompletados en línea se guían por el código que los rodea, otra razón para mantener isNativeApp() y las llamadas al puente en un único archivo auxiliar con un nombre claro.

¿Cómo lee Cursor el archivo llms-full.txt?

Añádelo como fuente de docs (@Docs con la URL), referéncialo con @Web en un prompt o sube una copia al repositorio y menciona la ruta en la regla. La copia en el repositorio es lo más determinista.

¿Puedo publicar la app desde Cursor sin un Mac?

La app web, sí. La compilación nativa necesita Xcode para iOS, o el Cloud Builder de WebViewGold, que compila y sube ambas apps desde el navegador.

Tres formas de llevar tu app a las tiendas

El mismo resultado, con distinta cantidad de trabajo por tu parte. Las tres incluyen la garantía de aprobación y soporte humano 24/7.

Hazlo tú mismo

$109 por plataforma, pago único

La licencia de WebViewGold: un proyecto de Xcode o Android Studio listo para usar. Pega tu URL, define nombre e icono, activa funciones, compila y envía. Actualizaciones gratuitas para siempre.

Ver planes en la página principal

Full Service

$698 por plataforma $798

Envíanos tu URL y tu icono. Nuestro equipo configura, compila y entrega tu app en 72 horas, en marca blanca y con los proyectos fuente. Ambas plataformas por $1,158.

Detalles del Full Service Con tecnología de WeSetupYourWebViewApp

Precios de la Oferta de invierno válidos hasta el 31 de diciembre de 2026.

¿Listo para lanzar tu app?

Garantía de aprobación en App Store & Google Play – o te devolvemos el dinero en 14 días

¿Prefieres delegarlo? Full Service: configuramos, compilamos y entregamos en 72 horas, desde $698 por plataforma. ¿Preguntas? Chatea con nosotros 24/7.

Los reembolsos se conceden bajo las condiciones indicadas en nuestras FAQ: un rechazo por motivos ajenos al contenido por parte de Apple y/o Google, reclamado dentro de los 14 días posteriores a la compra.