Install
openclaw skills install @formula100k/conecta-tu-app-f100kGuía paso a paso para conectar una app a lo que la vuelve un negocio: base de datos (Supabase), login (Google o enlace por correo), el PORTERO (solo entran los correos de quienes pagaron, validado contra Skool, Hotmart, Kajabi, Stripe, Mercado Pago o pagos a mano, sin que estén conectadas entre sí), cobros según el país, centro de control /admin con refresco de la lista, y publicación en Vercel. Claude hace lo técnico y pide solo lo que no puede hacer (crear cuentas, copiar llaves, clics en paneles). Trae plantillas probadas y prompts para copiar y pegar. Usar cuando digan "cómo conecto el login", "conecta Supabase", "base de datos para mi app", "que solo entren mis alumnos", "cómo valido que pagó", "que solo entre quien compró mi curso", "pasarela de pagos", "cómo cobro desde Colombia", "Stripe no está en mi país", "centro de control", "panel admin", "webhook de pagos" o "conecta mi app". NO construye la app desde cero (constructor-miniapps-f100k, crea-tu-app-f100k) ni landings de venta.
openclaw skills install @formula100k/conecta-tu-app-f100kEsta versión corre en un agente OpenClaw (servidor + Telegram), no en Claude Code. Antes de seguir, lee la skill
f100k-puente: traduce herramientas y rutas. Lo específico de esta skill:
- La app tiene que estar en el workspace (
entregables/apps/<app>/): pídele el.zippor Telegram o el link de su repo si conectó SU GitHub. Si no hay app todavía, deriva acrea-tu-app-f100k.- Aquí nadie mueve su cursor ni entra a sus paneles: la sección de «Claude in Chrome / uso de la computadora» no aplica. Los clics en Supabase, Google Cloud, Vercel, Stripe, Zapier o Skool los hace ella con la ruta exacta que le das; si dudas de que el panel siga igual, pídele una captura por Telegram.
- El SQL (
plantillas/sql/01-portero.sql) mándalo como archivo.sqlpara que lo pegue en Supabase → SQL Editor → Run. El MCP de Supabase yclaude mcp addno existen aquí; usa la API de Supabase solo si ella conectó un token de SU cuenta y te da ✅.- Las llaves secretas (
sb_secret_,service_role,sk_live_,whsec_) no se piden por Telegram: le das el nombre exacto de cada variable y ella las pega directo en Vercel → Settings → Environment Variables. Si alguna hace falta para probar en el servidor, avísale que queda en el historial del chat, guárdala solo en el.env.localdel proyecto y pídele que borre el mensaje.npx tsc --noEmitynpm run buildsí corren en el servidor (una app a la vez). Supabase local con Docker,stripe listenyvercel crons runno: las pruebas vivas se hacen en SU despliegue de prueba.- Las apps siempre se despliegan directo en Vercel con la cuenta de la usuaria (
VERCEL_TOKENen el entorno):vercel --prod --yes --token "$VERCEL_TOKEN", y le mandas la URL por Telegram. No hace falta pedir ✅ para desplegar. Nuncavercel logindesde el servidor ni una cuenta que no sea suya. Si faltaVERCEL_TOKEN, pídele que lo cree en vercel.com → Account Settings → Tokens y lo agregue al entorno del agente; el.zipes solo el último recurso.vercel env addcon los nombres de variables; los valores secretos los pega ella.CONEXIONES.mdva en la raíz del proyecto y también se lo mandas por Telegram como documento, sin ningún valor secreto.- Para comprobar que el dominio final no redirige (trampa 1 de publicar) usa
curl -sIo el navegador del agente sobre su URL pública: es una web propia, no una red social.
Lleva a la persona desde "tengo una app" hasta "la gente paga, entra sola, y si cancela sale sola". Va una conexión a la vez, y cada una se prueba antes de pasar a la siguiente.
vercel env add, deploy. A la persona le pides solo: crear cuentas, iniciar sesión, copiar una llave, hacer clic en un panel, pagar un plan.Supabase → Project Settings → API Keys → botón "Reveal" junto a secret. Si no tienes certeza de que la ruta siga así (los paneles cambian), díselo y pídele una captura.Pregunta frecuente. Respuesta honesta (verificada el 15-sep-2026 en support.claude.com):
Si tiene Claude in Chrome conectado, ofrécelo para los paneles ("¿quieres que lo haga yo en tu Chrome mientras miras?"). Aunque lo tenga, la persona escribe sus contraseñas, datos de tarjeta y datos bancarios, y la persona acepta los permisos de Google.
package.json → versión de Next. Si es un solo archivo HTML, explica en 3 líneas que login y base de datos necesitan servidor, y ofrece pasarla a Next.js conservando el diseño (con constructor-miniapps-f100k). Si no hay app todavía, deriva a crea-tu-app-f100k.Con eso arma el mapa y muéstraselo antes de tocar nada:
Tu app: [nombre] Conectamos, en este orden:
✅ 1. Base de datos Supabase (región: São Paulo)
✅ 2. Login Google
✅ 3. Portero lista desde Skool: altas por Zapier + CSV para bajas
⬜ 4. Cobros (ya cobras en Skool, no hace falta)
✅ 5. Centro de control /admin
✅ 6. Publicar Vercel + prueba en producción
Tiempo estimado: [X] · Cuentas que vas a necesitar: [lista] · Costos: [lista, "gratis" donde aplique]
Checkpoint: "¿Arrancamos por la 1?"
Si el argumento trae un módulo (/conecta-tu-app-f100k portero), haz solo las preguntas del diagnóstico que ese módulo necesita, verifica que existan las piezas previas (el portero necesita base y login) y ve directo al módulo.
Lee la referencia del módulo antes de empezarlo. Cada una trae quién hace qué, los clics exactos, las trampas conocidas y la verificación.
| # | Módulo | Referencia | Plantillas |
|---|---|---|---|
| 1 | Base de datos | references/01-base-de-datos.md | plantillas/sql/01-portero.sql (si va portero) |
| 2 | Login | references/02-login.md | plantillas/app/login, app/auth/callback, app/auth/salir, lib/sesion.ts |
| 3 | Portero | references/03-portero.md | proxy.ts, lib/portero.ts, lib/leer-csv.ts, app/acceso-cerrado, app/api/webhooks/{alta,baja,stripe} |
| 4 | Cobros por país | references/04-cobros-por-pais.md | app/api/webhooks/stripe, app/api/cron/refresco |
| 5 | Centro de control | references/05-centro-de-control.md | app/admin/{page,panel}.tsx, app/api/admin/miembros |
| 6 | Publicar | references/06-publicar.md | — |
| — | Prompts armados por plataforma | references/prompts-por-plataforma.md | (para quien sigue sin la skill) |
| + | Varias apps, un portero | references/07-varias-apps-un-portero.md | (avanzado, solo si lo pide) |
Las plantillas están compiladas y probadas de punta a punta (15-sep-2026: Next 16.1.7 + Supabase local real con 3 usuarios: el que no está en la lista rebota y queda registrado; el admin pasa; CSV con vista previa que no toca nada; alta por webhook; alta manual que sobrevive a otro CSV; quitado de la lista que pierde el acceso en el siguiente clic sin cerrar sesión; freno del 30%; CSV sin correos rechazado; webhook de Stripe con firma real). Úsalas como base, no reescribas desde cero:
plantillas/lib/portero.ts → lib/portero.ts). Si el proyecto no usa el alias @/, ajusta los imports.proxy.ts → middleware.ts y export async function proxy → export async function middleware.proxy.ts/middleware.ts, fusiona. No lo pises. Conserva sus rutas públicas y agrégales /api/webhooks, /api/cron y /acceso-cerrado.PUBLICAS, textos TODO de /acceso-cerrado, estilo del /admin con su marca si tiene PERFIL-MARCA.md o DESIGN.md.npx tsc --noEmit y npm run build antes de decir que está.Al cerrar cada módulo:
Nunca dejes un módulo a medias. Si hay que parar, deja todo funcionando y anota en CONEXIONES.md en qué paso quedó.
NEXT_PUBLIC_, nunca en 'use client'. .env* en .gitignore antes del primer commit (compruébalo con git check-ignore .env.local). Antes de cada commit: git diff --cached | grep -nE "sb_secret_|eyJhbGciOi|sk_live_|sk_test_|whsec_" tiene que salir vacío.04-cobros-por-pais.md. Si su fecha tiene más de 3 meses o el país no está, verifica en la fuente oficial antes de recomendar. Nunca de memoria.superpowers:systematic-debugging por dentro y a la persona háblale en simple.CONEXIONES.md en la raíz del proyecto (sin valores secretos):
references/prompts-para-copiar.md tiene los mismos pasos como prompts sueltos, y references/prompts-por-plataforma.md trae el portero y el centro de control ya armados para su plataforma (dale el de la suya, no el genérico).