Herramientas y scripts de IA
Revisión de funciones de Convex
Revisa las funciones de Convex antes de desplegar: claves en el código, mutaciones públicas que borran por ID sin comprobar la autenticación, CORS que comparte cookies con cualquier sitio, validadores ausentes, api.* en crons y consultas que leen tablas enteras.
Qué recibes: 1 archivo · 43.88 KB · ZIP
Ver opciones de compraDescripción del producto
Una mutación como remove = mutation({ args: { id: v.id("tasks") }, handler: async (ctx, args) => { await ctx.db.delete(args.id) } }) funciona bien en desarrollo, y en producción permite que cualquiera que copie la URL de tu despliegue desde el navegador borre cualquier tarea: cada query, mutation y action exportada es pública. Lo mismo ocurre con corsRouter con allowCredentials: true y los orígenes predeterminados, que devuelve el Origin de cualquier sitio, y con un cron job que llama a api.messages.send con un autor "System" que cualquier cliente también puede enviar. Este skill detecta esos errores y los demás errores de Convex que se indican abajo antes de que despliegues, y te explica cómo corregir cada uno.
Tu agente ejecuta un escáner sobre los archivos TypeScript y JavaScript de tu carpeta convex/ (funciones, http.ts, crons.ts, schema.ts). Sabe qué constructores son públicos y cuáles internos, lee los parámetros de los handlers en forma de función flecha, función y método (y los handlers con nombre declarados en el mismo archivo), sigue los alias de importación y considera comprobaciones de acceso ctx.auth, getAuthUserId, los helpers de autenticación que reciben ctx, los wrappers de funciones personalizados y los argumentos secret, key o code, de modo que las configuraciones de Convex Auth y Clerk de la documentación salen limpias. Las llamadas a otras funciones mediante ctx.runMutation y las llamadas a componentes, como un limitador de frecuencia, no se confunden con comprobaciones de autenticación, y las rutas de webhook necesitan una llamada de verificación real, no solo un nombre que diga webhook. Nunca ejecuta tu código ni se conecta a un despliegue. Devuelve BLOCK, REVIEW o NOT FLAGGED, con el archivo, la línea, el motivo y un enfoque más seguro, y la guía de reglas enlaza la página oficial en la que se basa cada regla. Los secretos nunca se muestran.
Qué comprueba
BLOCK (corrígelo antes de publicar)
- C01: claves de API, tokens y contraseñas escritos en el código de Convex: constantes y propiedades con nombres de secretos, cabeceras Authorization, valores literales de respaldo después de process.env, formatos de clave conocidos (claves secretas de Stripe y Clerk, secretos de webhook, claves de OpenAI, Anthropic, GitHub, Slack, Google y AWS, claves de despliegue de Convex, incluidas las claves de preview, claves de administrador self-hosted, claves privadas) y contraseñas en URL de bases de datos
- C02: una mutación pública que modifica, reemplaza o borra un documento mediante un ID tomado de sus argumentos sin comprobar quién la llama
- C03: credenciales permitidas para cualquier origen: corsRouter con allowCredentials y orígenes predeterminados, "*" o comodines de hosts compartidos como "*.vercel.app", o una cabecera Origin devuelta con Access-Control-Allow-Credentials sin comprobación (o solo con una comprobación startsWith)
REVIEW (revísalo antes del lanzamiento)
- C11: una mutación o action pública que nunca comprueba quién la llama (guardar mediante ctx.runMutation o llamar a un componente no cuenta como comprobación)
- C12: una función pública que lee sus argumentos sin un validador args
- C13: funciones api.* programadas, ejecutadas con ctx.runQuery / runMutation / runAction o llamadas por cron jobs en lugar de internal.*
- C14: .filter en una consulta a la base de datos en lugar de un índice (salvo consultas paginadas)
- C15: .collect() en una consulta sin rango de índice
- C16: Date.now() o new Date() dentro de una query
- C17: una action HTTP que escribe datos, programa tareas o almacena archivos sin ctx.auth, sin comprobar una cabecera Authorization o de firma y sin una llamada de verificación (svix, jwt, stripe constructEvent, HMAC)
- C18: escrituras con ctx.db, llamadas al planificador o ctx.runMutation / runAction sin await
- C19: un Origin devuelto con credenciales cuya única comprobación es laxa o poco clara (endsWith sin punto inicial, includes, una expresión regular sin anclar)
Qué incluye
- El escáner (Python 3.9+, solo biblioteca estándar)
- Una guía de reglas con el motivo, el enfoque más seguro y la fuente oficial de cada regla
- Un ejemplo de backend de Convex arriesgado y otro seguro (tareas, una action de IA, crons y rutas HTTP), y el informe real que genera el escáner sobre el arriesgado
Limitaciones
Lee cada archivo por separado. Los handlers indicados por nombre solo se siguen cuando están declarados en el mismo archivo. Se confía en que los helpers y los wrappers de funciones personalizados definidos en otros archivos realicen las comprobaciones que sugieren sus nombres, por lo que las funciones creadas con customMutation, authedMutation o Ents, y los handlers importados de otros archivos, no se revisan en busca de falta de autenticación o de validadores. No se siguen las consultas construidas a lo largo de varias sentencias, las reglas de row-level security ni las listas de permitidos o ajustes de CORS guardados en otros archivos, y no se leen el código del cliente, los archivos .env ni los ajustes del panel. NOT FLAGGED no es una garantía.
Contenido
Un archivo ZIP con 19 archivos: SKILL.md, el escáner en scripts/ (6 archivos de Python), references/rules.md (cada regla con su motivo y un enfoque más seguro) y examples/ (10 archivos de ejemplo más report.md, la salida real del escáner sobre el ejemplo arriesgado).
Cómo usarlo: es un skill para agentes: una carpeta con un archivo SKILL.md y scripts de Python que un agente de programación con IA como Claude Code, Cursor o Codex CLI puede ejecutar. Descomprímelo en la carpeta de skills de tu agente (para Claude Code: ~/.claude/skills/) y luego pide a tu agente que revise tu proyecto. Los scripts también funcionan por sí solos con Python 3.9 o posterior, sin instalar nada. Solo leen tus archivos: sin acceso a la red, y no se envía nada a ningún sitio.
Qué recibes
1 archivo · 43.88 KB
- convex-functions-check-1.0.0.zipZIP · 43.88 KB
Herramientas y scripts de IA
Revisión de funciones de Convex
Revisa las funciones de Convex antes de desplegar: claves en el código, mutaciones públicas que borran por ID sin comprobar la autenticación, CORS que comparte cookies con cualquier sitio, validadores ausentes, api.* en crons y consultas que leen tablas enteras.
Getly abrió los archivos subidos y no encontró nada que impida abrirlos. No es un análisis antivirus ni una valoración de calidad.
Etiquetas
Preguntas frecuentes
¿Tengo acceso al instante?
Sí. Es un producto digital: puedes descargarlo justo después del pago, directamente desde tu biblioteca.
¿Puedo usarlo en proyectos comerciales?
Sí. Se permite el uso comercial: úsalo en tu propio negocio y en cosas que vendas. No puedes revender ni redistribuir el archivo en sí.
¿Cuál es vuestra política de reembolso?
Puedes pedir un reembolso dentro de 30 días. Si algo no va bien, solicítalo desde tu pedido y el equipo de Getly lo revisa.
¿Qué formatos y tamaños de archivo recibiré?
Descargarás 1 archivo - ZIP - 43.88 KB en total.
¿Recibo actualizaciones gratis?
Sí: cuando el vendedor publica una versión nueva, puedes volver a descargar los archivos más recientes desde tu biblioteca sin coste extra. Mira el registro de cambios para ver las últimas actualizaciones.
Precio
$5.00



