ASD

Extension To Functions Codebase

Convierte una Firebase Extension instalada (o su código fuente) en un codebase de Cloud Functions independiente o en un paquete npm publicable, con upgrade de triggers V1 a V2, lifecycle hooks y seguridad declarativa.

Oficial

Reemplaza a: Scripts manuales de gcloud para IAM y APIs, Instrucciones de consola para configurar permisos

Estrellas
406

en todo el repo

Actividad
62

0–100, la ruta de este skill

Actualizado
hace 7 días

último commit aquí

Commits
3

últimos 90 días

Contexto
1.1k tok

59 tok en reposo

Paquete
4 archivos

19 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add firebase/agent-skills --skill extension-to-functions-codebase --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Convierte una Firebase Extension instalada (o su código fuente) en un codebase local de Cloud Functions o en un paquete npm publicable
  • Migra triggers de 1st Gen a 2nd Gen usando el Destructuring Compatibility Shim
  • Sustituye scripts manuales de gcloud por requiresRole() y requiresAPI() declarativos
  • Convierte lifecycleEvents de la extensión (onInstall, onUpdate/onConfigure) en afterFirstDeploy y afterRedeploy
  • Genera package.json, exports map y README.md con instrucciones de reexportación

Úsalo cuando

  • Se quiere sacar una Firebase Extension de su formato y convertirla en un codebase de functions/src/ para integrarla en una app
  • Se quiere convertir una extension en un paquete npm reutilizable que exporte funciones V2
  • Se necesita actualizar triggers 1st Gen (onDocumentWritten, onTaskDispatched, onRequest) a 2nd Gen

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • Convierte esta Firebase Extension en un codebase de Cloud Functions
    • Migra este extension.yaml a funciones V2 y publícalo como paquete npm
    • Actualiza estos triggers V1 de la extensión a V2 con onDocumentWritten

    SKILL.md

    En inglés

    Extension to Functions Codebase & npm Package Migration

    Overview

    Migrates a Firebase Extension into either:

    1. A local Cloud Functions codebase (functions/src/ for app integration).
    2. A publishable npm package (reusable open-source package exporting V2 functions).

    Leverages native Cloud Functions features (declarative IAM, Parameterized Config, SDK Lifecycle Hooks) and modernizes 1st Gen triggers to 2nd Gen using the Destructuring Compatibility Shim.


    Target Migration Workflows

    • Target A: Local Functions Codebase (End-User App Integration)

      • Output: Code under functions/src/. Config in .env.
      • Deployment: firebase deploy --only functions.
    • Target B: Publishable npm Package / Shareable Package

      • Output: Reusable npm package exporting V2 functions.
      • Configuration: package.json specifying exports map, engines: { "node": ">=22" }, and peerDependencies: { "firebase-functions": ">=6.0.0" }.
      • Usage: Consumers install package and re-export functions in index.ts (export * from "<package-name>").

    Core Rules & Constraints

    1. Declarative IAM & APIs (Zero-Local-Overhead)

    Use native SDK declarations instead of manual gcloud scripts or console instructions:

    • Use requiresRole("roles/...") for required GCP IAM permissions.
    • Use requiresAPI("service.googleapis.com", "Description") for Google APIs.

    2. Global Parameter Access Restriction

    • Never call .value() at top-level module load scope.
    • Initialize global SDK instances inside onInit() or lazy getters:
      import { defineString } from "firebase-functions/params";
      import { onInit } from "firebase-functions/v2";
      
      const dataset = defineString("DATASET_ID");
      let client: BigQuery;
      
      onInit(() => {
        client = new BigQuery({ datasetId: dataset.value() });
      });
      

    3. V2 Concurrency & Cost Parity

    V2 enables concurrency (up to 80 requests). To preserve V1 single-concurrency pricing, set cpu: "gcf_gen1".


    Step-by-Step Migration Execution

    Step 1: Inventory Extension Resources

    1. extension.yaml:
      • paramsdefineString, defineInt, defineBoolean, defineSecret.
      • apisrequiresAPI(...).
      • rolesrequiresRole(...).
      • lifecycleEventsafterFirstDeploy & afterRedeploy.
      • resources → Upgrade 1st Gen triggers to 2nd Gen (onDocumentWritten, onTaskDispatched, onRequest).
    2. Files & Scripts: Preserve devDependencies, test framework (jest), and test scripts.

    Step 2: Configure package.json

    • Set name: "<package-name>", engines: { "node": ">=22" }.
    • Set peerDependencies:
      "peerDependencies": {
        "firebase-admin": "^11.0.0 || ^12.0.0",
        "firebase-functions": ">=6.0.0"
      }
      
    • Configure exports map targeting ESM/CommonJS and TypeScript declarations (lib/index.js, lib/index.d.ts).

    Step 3: Upgrade Triggers from V1 to V2

    • Firestore: Use onDocumentWritten from firebase-functions/v2/firestore.
    • Tasks: Use onTaskDispatched from firebase-functions/v2/tasks. Remove EXT_INSTANCE_ID when enqueueing tasks.
    • HTTP: Use onRequest from firebase-functions/v2/https.
    • Apply Destructuring Compatibility Shim ({ change, context }, { snapshot, context }) where legacy 1st Gen handlers expect (change, context).

    Step 4: Convert Lifecycle Events

    Map extension lifecycle events to SDK lifecycle hooks in src/index.ts:

    • onInstallafterFirstDeploy({ task: { function: "initTask" } })
    • onUpdate / onConfigureafterRedeploy({ task: { function: "setupTask" } })

    Step 5: Package README & Export Instructions

    Generate README.md containing:

    1. Installation instructions (npm install).
    2. Re-export snippet (export * from "<package-name>").
    3. Parameterized Configuration .env reference table.
    4. What Changed (Extension vs Package) comparison table.

    Reminder: NEVER execute npm publish.

    Reproducido de firebase/agent-skills bajo licencia Apache-2.0. Leer esta página en markdown.

    Archivos

    4 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere el extension.yaml y el código fuente de la extensión a migrar, además de Node >=22 y firebase-functions >=6.0.0.

    Detalles

    Creador
    firebase
    Licencia
    Apache-2.0
    Recursos incluidos
    referencias
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de firebase/agent-skills

    Este repo incluye 12 skills. Si instalas uno, normalmente ya tienes los demás.

    Skill oficial para integrar Firebase AI Logic (Gemini API) en apps. Cubre configuración, inferencia multimodal, salida estructurada y seguridad.

    Costo de contexto al activarse
    2.3k tok
    Tamaño del paquete
    5 archivos
    Última actualización
    hace 7 días
    Oficialdesarrollo apis

    Guía para configurar y usar Firebase Authentication. Úsala cuando la app necesite inicio de sesión de usuarios, gestión de usuarios o acceso seguro a datos mediante reglas de auth.

    Costo de contexto al activarse
    1k tok
    Tamaño del paquete
    6 archivos
    Última actualización
    hace 7 días
    Oficialseguridad

    Configura, gestiona, consulta y ajusta bases de datos Cloud Firestore (edición Standard/Enterprise): modelado de datos, reglas de seguridad, índices e integraciones SDK (Web, Python, iOS, Android, Flutter).

    Costo de contexto al activarse
    991 tok
    Tamaño del paquete
    17 archivos
    Última actualización
    hace 7 días
    Oficialbases de datos

    Configura la base de Firebase: instala/verifica la CLI, gestiona login (incl. --no-localhost), crea o selecciona proyectos y descarga los archivos de configuración de la app.

    Costo de contexto al activarse
    1.8k tok
    Tamaño del paquete
    20 archivos
    Última actualización
    hace 7 días
    Oficialdevops infraestructura

    Construye y despliega backends de Firebase SQL Connect (antes Data Connect) con PostgreSQL de forma segura, incluyendo esquemas, queries/mutations autorizadas, tiempo real y SDKs type-safe.

    Costo de contexto al activarse
    2.4k tok
    Tamaño del paquete
    17 archivos
    Última actualización
    hace 7 días
    Oficialbases de datos

    Audita reglas de seguridad de Firebase (Firestore, Cloud Storage): vulnerabilidades, escalada de privilegios, bypasses de roles, inconsistencias create/update y falta de comprobaciones hasOnly() de ownership.

    Costo de contexto al activarse
    962 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 7 días
    Oficialseguridad

    Skills relacionados

    Fase 2 del pipeline azure-app-onboard: mapea los componentes de la app a servicios de Azure con estimación de costes y validación de cuota. No es invocable directamente.

    Costo de contexto al activarse
    1.6k tok
    Tamaño del paquete
    13 archivos
    Última actualización
    hace 21 días
    Oficialdevops infraestructura

    Despliega una app web o API existente en un clúster AKS ya en marcha: detecta el framework, genera Dockerfile y manifiestos, valida contra los Deployment Safeguards y despliega con verificación.

    Costo de contexto al activarse
    503 tok
    Tamaño del paquete
    42 archivos
    Última actualización
    hace 4 días
    Oficialdevops infraestructura

    Deploy

    1.4k

    Fase 4 del pipeline azure-app-onboard: ejecuta la IaC validada contra Azure y verifica la salud de los recursos desplegados. No es invocable directamente.

    Costo de contexto al activarse
    1.8k tok
    Tamaño del paquete
    16 archivos
    Última actualización
    hace 21 días
    Oficialdevops infraestructura