leostera/riot

Úsalo al modificar, revisar, depurar, probar, desplegar o documentar servicios del repositorio Riot bajo `sites/`, incluyendo Workers de Cloudflare, configuraciones de Wrangler, sitios Astro/Starlight, flujos de registro/CDN/docs/play de pkgs.ml, enlaces de Cloudflare D1/R2/Queues/Durable Objects/Workflows, lockfiles de Bun para servicios y pruebas TypeScript locales de cada servicio.

¿Qué es riot?

Esta skill está diseñada para desarrolladores que trabajan en el repositorio Riot, el cual alberga múltiples servicios desplegados en Cloudflare. Te guía a través del flujo de trabajo correcto: usar `riot-contributor` para gestionar el árbol de trabajo sucio y las expectativas de validación, trabajar siempre desde el directorio específico de cada servicio, y usar `bun run <script>` en lugar de invocar herramientas directamente cuando exista un script. La skill mapea los servicios principales: `api.pkgs.ml` (Worker de plano de control del registro), `cdn.pkgs.ml` (Worker de CDN para artefactos), `docs.pkgs.ml` (servicio de documentación generada), `pkgs.ml` (aplicación web Astro + React + Tailwind), `riot.ml` (sitio estático) y `get.riot.ml` (proxy de redirección de script de instalación). También detalla cómo usar Wrangler y el CLI `cf` de manera segura, mantener sincronizadas configuraciones y enlaces (`wrangler.toml`, interfaces `Env`), manejar migraciones de D1, claves de objetos R2 y eventos del registro. En cuanto a pruebas, la skill promueve el uso de fakes locales (`FakeR2Bucket`, `FakeD1Database`, etc.) sobre pruebas en vivo, y ejecutar `bun run check` antes de finalizar. Las operaciones de producción (despliegues, migraciones remotas, cambios de DNS/tokens, datos de producción) requieren aprobación explícita del usuario. Compatible con entornos locales y remotos de Cloudflare, y se integra con el flujo de trabajo de `riot-contributor`.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/leostera/riot/tree/HEAD/.agents/skills/riot-services

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Servicios Riot

Ciclo de Servicio

  1. Usa riot-contributor primero para el flujo de trabajo del repositorio, manejo del árbol de trabajo sucio y expectativas de validación.
  2. Trabaja desde el directorio específico del sitio/servicio; cada servicio posee su propio package.json, bun.lock, tsconfig.json y generalmente wrangler.toml.
  3. Usa bun run <script> en lugar de invocar herramientas directamente cuando exista un script.
  4. Conserva los lockfiles por servicio. No agregues un espacio de trabajo JS en la raíz del repositorio a menos que se pida explícitamente.
  5. Trata los despliegues, migraciones remotas, pruebas e2e en vivo, cambios de tokens, cambios de DNS y cambios de datos de producción como operaciones que requieren aprobación explícita del usuario.
  6. Prefiere verificaciones locales y simulacros primero; las pruebas en vivo son optativas a través de variables de entorno específicas del servicio.

Mapa de Servicios

  • sites/api.pkgs.ml: Worker del plano de control del registro de paquetes. Posee flujos de publicación/autenticación/búsqueda/vistas/eventos, migraciones D1, esquema Drizzle, claves de almacenamiento R2, colas, coordinación de publicación con Durable Objects y flujo de trabajo de respaldo D1.
  • sites/cdn.pkgs.ml: Worker CDN para artefactos de paquetes, documentos de índice disperso, metadatos binarios de Riot/OCaml y análisis de acceso. Reutiliza tipos del registro y ayudantes de almacenamiento de ../api.pkgs.ml/src.
  • sites/docs.pkgs.ml: Servicio de documentación generada de paquetes. Sirve documentos desde R2, consume colas de paquetes publicados/procesados, registra ejecuciones de pipelines/eventos en el D1 del registro y usa contenedores Sandbox de Cloudflare para verificación de compilación de documentación.
  • sites/pkgs.ml: Aplicación web pública del registro de paquetes, Astro + adaptador Cloudflare + islas React. Lee APIs de vistas del registro y documentos de índice disperso.
  • sites/riot.ml: Sitio web estático principal de Riot, Astro + Tailwind, despliegue estilo Pages.
  • sites/get.riot.ml: Worker proxy/redirección del script de instalación.

Herramientas Cloudflare

  • Usa Wrangler para el ciclo de vida del Worker/servicio Astro: wrangler dev, wrangler deploy, wrangler d1 migrations apply, wrangler pages deploy, wrangler types y desarrollo local basado en configuración.
  • Mantén la dependencia local de wrangler actualizada y fijada por el lockfile, en lugar de depender de una instalación global.
  • Usa el CLI unificado cf solo para inspección de API/recursos u operaciones que actualmente expone, especialmente cuenta, zona, DNS, API D1, API R2, API de colas, metadatos de API de Workers y descubrimiento de esquemas.
  • Antes de usar cf para mutaciones reales en Cloudflare, ejecuta npx cf auth whoami e inspecciona la forma del comando con npx cf agent-context <product> o npx cf schema <comando...>.
  • No reemplaces los scripts de despliegue/desarrollo/migración de Wrangler con cf a menos que el comando específico del servicio se haya verificado localmente y soporte el mismo comportamiento basado en configuración.

Configuración y Enlaces

  • Mantén sincronizados wrangler.toml, las interfaces TypeScript Env exportadas y los entornos falsos de prueba.
  • Prefiere interfaces Env explícitas en los puntos de entrada de Workers y módulos compartidos.
  • Coloca valores predeterminados no secretos en [vars]; mantén los secretos en .env, secretos de Wrangler o secretos gestionados por Cloudflare.
  • Para cambios de esquema D1 en api.pkgs.ml, agrega migraciones SQL bajo sites/api.pkgs.ml/migrations/ y actualiza src/schema.ts/ayudantes de DB juntos.
  • El acceso en tiempo de ejecución a D1 se realiza a través de ayudantes Drizzle en api.pkgs.ml/src/db.ts, metadata-db.ts, pipeline-db.ts, access-db.ts o un archivo hermano con nombre específico.
  • Los contratos de clave de objetos R2 viven en api.pkgs.ml/src/storage.ts; actualiza los consumidores de CDN/API/web y las pruebas juntos al cambiar las claves.
  • La forma de los eventos del registro es historial de servicio orientado al usuario. Agrega nuevos tipos de eventos a api.pkgs.ml/src/types.ts, serialización en DB, vistas y pruebas.

Pruebas

  • Ejecuta bun run check del servicio modificado antes de finalizar.
  • Ejecuta bun run test cuando el servicio defina pruebas locales.
  • No ejecutes bun run deploy, bun run migrate:remote ni pruebas en vivo test:e2e a menos que se solicite explícitamente.
  • Para api.pkgs.ml, las pruebas locales usan FakeR2Bucket, FakeD1Database, FakeQueue y FakeExecutionContext de tests/helpers.ts.
  • Para cdn.pkgs.ml, reutiliza las simulaciones falsas del registro en lugar de inventar mocks del SDK de Cloudflare.
  • Para docs.pkgs.ml, prefiere ejecutores de pipeline falsos y ayudantes de drenaje de cola; afirma el orden durable mediante la secuencia de la base de datos al probar flujos de eventos.
  • Para servicios Astro, ejecuta bun run check; espera que Astro regenere los archivos de tipo .astro como parte de la verificación.

Trabajo Web

  • Respeta la pila de UI existente de cada servicio. pkgs.ml usa salida de servidor Astro, islas React, Tailwind y adaptador Cloudflare; docs*.ml usan Starlight cuando corresponde; riot.ml es un sitio estático de Astro.
  • Mantén las primeras pantallas como superficies reales de producto/servicio, no como marcadores de marketing.
  • Usa componentes, diseños, tokens CSS, fuentes y convenciones de ruta existentes antes de agregar abstracciones.
  • Para cambios web del registro, prefiere las APIs de vista del registro en sites/pkgs.ml/src/lib/web-views.ts y los ayudantes de índice disperso en package-index.ts.

Seguridad Operativa

  • Trata los endpoints de producción como reales: api.pkgs.ml, registry.pkgs.ml, cdn.pkgs.ml, pkgs.ml, docs.pkgs.ml, docs.riot.ml, play.riot.ml, riot.ml y get.riot.ml.
  • Nunca ejecutes restauración/exportación/importación remota de D1, escrituras DNS, escrituras de ruta/dominio, despliegues u operaciones de token sin dirección explícita del usuario.
  • Si se solicita una prueba de humo en vivo, lee primero el README/puertas de entorno de ese servicio y declara qué variables de entorno hacen que la prueba sea destructiva o autenticada.

Skills relacionados