Communitygithub.com

bmob/agent-skills

Habilidades de agente de estándar abierto para la nube backend de Bmob, utilizables en Cursor, Claude Code, OpenAI Codex, Gemini CLI, GitHub Copilot y cualquier herramienta de IA compatible con agentskills.io.

¿Qué es agent-skills?

Este conjunto de habilidades (skill) proporciona un punto de entrada centralizado para que los agentes de IA interactúen con la plataforma Backend as a Service (BaaS) de Bmob, que ofrece capacidades como bases de datos NoSQL, sistemas de usuario, almacenamiento de archivos, funciones en la nube, notificaciones push, SMS y pagos. El skill utiliza un árbol de decisiones de entrada y una tabla de enrutamiento para dirigir al agente al sub-skill correcto según la plataforma del usuario (JavaScript, Android, Swift, Flutter, REST, etc.) y la tarea específica. Principios clave incluyen confirmar siempre la plataforma antes de escribir código, no filtrar la Master Key en el frontend, consultar los registros de cambios del SDK y manejar errores de manera eficiente usando códigos de error de Bmob. Los agentes deben priorizar el uso del servidor MCP de Bmob para tareas como inspeccionar esquemas de tablas, generar código, implementar sitios web estáticos o funciones en la nube. El skill también proporciona rutas temporales para sub-skills aún no publicados, una lista de verificación de seguridad, preguntas frecuentes, antipatrones y recetas de escenarios de aplicación para guiar la implementación de extremo a extremo.

Compatible con✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI
npx skills add bmob/agent-skills

Preguntar en tu IA favorita

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

Documentación

Bmob 后端云 — Punto de Entrada Global

Bmob es una plataforma BaaS (Backend as a Service) que proporciona capacidades de backend listas para usar, como bases de datos NoSQL, sistema de usuarios, almacenamiento de archivos, funciones en la nube, notificaciones push, SMS, pagos, IM e IA. La cobertura de clientes incluye JavaScript / Android / iOS / Swift / Flutter / HarmonyOS / Mini programas / Python / Go / PHP / C#, además de la REST API independiente del lenguaje y el MCP Server.

Orden de enrutamiento: Primero sigue el Árbol de Decisión de Entrada a continuación → luego consulta la Tabla de Decisión de Enrutamiento (selecciona el sub-skill) → las operaciones específicas se encuentran en shared/operation-routing.md (tabla de tres canales: MCP / curl / SDK·REST).

Principios Fundamentales

1. Siempre confirma la plataforma antes de escribir código. Las API del SDK de Bmob varían mucho entre plataformas (JS es Bmob.Query, Android es extends BmobObject, iOS antiguo es BmobObject objectWithClassName, Swift puro es try await BmobObject.save(), REST es HTTP /1/classes/<name>). No insertes código de JS en una respuesta del skill de Android. Primero verifica qué plataforma/framework usa el usuario, luego lee el sub-skill correspondiente.

2. No filtres la Master Key en el frontend. La consola de Bmob → Claves de aplicación tiene cuatro valores:

ClaveNivel de SeguridadEscenario de Uso
Application IDPúblicoTodos los extremos
REST API KeySemipúblicoNavegador / Mini programas / Móvil / Servidor
Secret KeyMedioCliente en escenarios de autorización cifrada, junto con SecurityCode
Master KeyMáximoSolo servidor / scripts de backend, nunca aparece en el bundle del frontend

3. Revisa el changelog antes de escribir. El SDK evoluciona y las firmas de los métodos pueden cambiar. Antes de comenzar una tarea, usa la URL raw para obtener el update_log.md de la plataforma correspondiente (la ruta está en metadata.docs_raw del sub-skill) para confirmar que no haya cambios disruptivos.

4. No reintentes errores en bucle. Después de 2-3 intentos fallidos, detente y reevalúa:

  • HTTP 4xx: primero verifica el code en el cuerpo de la respuesta en bmob-error-codes.
  • Errores de permisos/ACL (9015, 9016, etc.): consulta la Ruta Temporal P1 a continuación o el futuro bmob-acl-and-roles.
  • "Método no encontrado": puede ser que la versión del SDK sea demasiado antigua o que la documentación no coincida con tu versión; compara en la página de releases del repositorio.

Árbol de Decisión de Entrada (Empieza aquí)

flowchart TD
    Start([Usuario menciona Bmob]) --> Err{¿La respuesta contiene un código de error?}
    Err -->|Sí| EC[bmob-error-codes]
    Err -->|No| Ship{¿El código se va a incluir en la versión de lanzamiento de la aplicación?}
    Ship -->|No| McpCfg{¿El IDE ya tiene configurado MCP de Bmob?}
    McpCfg -->|Sí| MCP[bmob-mcp<br/>9 herramientas invocables]
    McpCfg -->|No| RestOnly[bmob-database-restful<br/>o generate_code necesita MCP]
    Ship -->|Sí| Plat{¿Plataforma / Lenguaje?}
    Plat -->|JS Web Node Mini Programa Cocos JS etc| JS[bmob-database-javascript]
    Plat -->|Android Kotlin Java| AND[bmob-database-android]
    Plat -->|Pure Swift BmobSwiftSDK async/await| SWIFT[bmob-database-swift]
    Plat -->|Legacy iOS ObjC Swift Bridging Header| IOS[bmob-database-ios]
    Plat -->|Flutter Dart| FLUT[bmob-database-flutter]
    Plat -->|curl Python Go PHP Backend etc| REST[bmob-database-restful]
    Plat -->|RN Uni-app JS Bridge| JS
    JS --> Schema{¿Necesita los nombres reales de los campos de la tabla?}
    AND --> Schema
    SWIFT --> Schema
    IOS --> Schema
    FLUT --> Schema
    REST --> Schema
    Schema -->|Sí y MCP configurado| MCP
    Schema -->|No| Done([Lee el sub-skill correspondiente y escribe el código])
    MCP --> OpTable[[shared/operation-routing.md<br/>Tabla de tres canales a nivel de operación]]

Tabla de Decisión de Enrutamiento (Ve a leer el sub-skill correspondiente inmediatamente)

Intención del UsuarioPista de PlataformaEnrutar a
Crear/ver estructura de tabla, añadir datos de prueba, generar plantillas curl, operar la base de datos—bmob-mcp (Requisito: el usuario ya ha configurado MCP)
Despliegue de sitio web estático / alojamiento estático (HTML o dist en CDN) con un solo clic—bmob-mcp → deploy_static_site (o generate_code solo para generar curl)
CRUD NoSQL, consultas condicionalesJS / TS / Web / Node / Mini programas de WeChat/Alipay/ByteDance/QQ/Baidu / Quick Apps / Cocos Creator JS / Electron / Tauri / Apps híbridasbmob-database-javascript
CRUD NoSQLAndroid / Kotlin / Javabmob-database-android
CRUD NoSQLSDK Swift puro / BmobSwiftSDK / SPM / import BmobSDK / async/awaitbmob-database-swift
CRUD NoSQLSDK iOS antiguo / Objective-C / Swift Bridging Header / BmobSDK.xcframework / saveInBackgroundbmob-database-ios
CRUD NoSQLFlutter / Dart (bmob_plugin)bmob-database-flutter
CRUD NoSQL / cualquier lenguaje sin SDKcurl / Python / Go / PHP / C# / Rust / Ruby / Java backendbmob-database-restful
React Native / Uni-app (capa JS que se conecta a Bmob)—bmob-database-javascript o REST
HarmonyOS ArkTS—bmob-database-restful + BmobDocs
Registro de usuario / Inicio de sesión / Verificación SMS / Inicio de sesión de terceros / Verificación por correoVarios extremosbmob-auth-{platform} (P1, ver tabla abajo)
Carga/Descarga de archivos / CDNVarios extremosbmob-storage-{platform} (P1, ver tabla abajo)
Llamar a una función en la nubeVarios extremosbmob-cloud-function-{platform} (P1, ver tabla abajo)
Escribir código de función en la nube que se ejecuta en el servidor de Bmob—bmob-cloud-function-development
ACL / Roles / Permisos / Seguridad a nivel de fila—bmob-acl-and-roles (P1, ver tabla abajo)
Consultas BQL (sintaxis similar a SQL)Cualquierabmob-bql (P1, ver tabla abajo)
Solucionar errores con código 9015 / 101 / 105 etc.—bmob-error-codes
Notificaciones push / SMS / PagosVarios extremosbmob-push-* / bmob-sms-* / bmob-pay-* (P2)

Para operaciones específicas (CRUD, inicio de sesión, carga, despliegue), consulta qué canal usar en shared/operation-routing.md.

Rutas Temporales cuando P1 / P2 aún no se han publicado

Cuando el sub-skill especializado no está instalado, no esperes sin hacer nada, degrada según esta tabla:

Intención del UsuarioSkill objetivo (no publicado)Alternativa actual disponible
Registro / Inicio de sesión / Código de verificación SMSbmob-auth-*REST: bmob-database-restful/references/users.md; MCP configurado: generate_code (registro / inicio de sesión con usuario y contraseña / inicio de sesión con código de verificación móvil etc.)
Carga de archivos / URL CDNbmob-storage-*REST: references/files.md; MCP: generate_code → cargar archivo
Llamar a una función en la nube existentebmob-mcp → invoke_cloud_function (ejecución); generate_code → llamar a la función en la nube (curl)REST /1/functions/<name>; SDK de cada extremo
Escribir y desplegar código fuente de función en la nubebmob-cloud-function-developmentMCP configurado: deploy_cloud_function → invoke_cloud_function; MCP no configurado: BmobDocs + consola
ACL / Permisos a nivel de fila / 9015·9016bmob-acl-and-rolesREST crear/actualizar cuerpo con "ACL":{...}; bmob-error-codes
BQL / Agregación entre tablasbmob-bqlREST GET /1/cloudQuery; bmob-database-restful
Notificaciones push / SMS / PagosSkills P2Módulos REST correspondientes + árbol de directorios mds de BmobDocs

Lista de Verificación de Seguridad General (Incluida por todos los sub-skills)

  • La tabla de destino de las operaciones de escritura debe tener ACL configuradas; de lo contrario, cualquier usuario puede modificar cualquier fila (consulta la fila de ACL en las Rutas Temporales P1).
  • Navegador / Mini programas / Móvil pueden usar REST API Key (autorización simple / SDK modo B) o Secret Key + SecurityCode (autorización cifrada / SDK modo A); nunca uses la Master Key.
  • En escenarios de autorización cifrada, SecurityCode no se transmite a través de la red; no lo codifiques en el bundle del frontend, usa variables de entorno o inyéctalo en un BFF.
  • Para operaciones batch / escaneo de tabla completa / consultas entre tablas → prioriza BQL en lugar de llamadas en bucle al SDK.
  • Cuando ocurra un error, primero verifica el campo code en el cuerpo de la respuesta consultando bmob-error-codes, no adivines.
  • El campo de contraseña de usuario (password) solo puede ser escrito por Bmob, no se puede actualizar; para cambiar la contraseña, usa /1/updateUserPassword/<objectId>.

FAQ y Antipatrones

  • Preguntas frecuentes entre plataformas (enrutamiento, claves, MCP, formato de datos): shared/faq.md
  • Antipatrones típicos (ACL, Master Key, mal uso de 9015, etc.): shared/anti-patterns.md
  • Buscar código numérico por mensaje de error en inglés: Tabla "Buscar por Fenómeno" en la parte superior de bmob-error-codes

Recetas de Escenarios de Aplicación

Escenarios de extremo a extremo (diseño de tabla + ACL + flujo), luego entra en el skill de la plataforma para escribir código:

EscenarioReceta
Blog / CMS (Article + Author)shared/recipes/blog-cms.md
Todo del usuario (ACL a nivel de fila)shared/recipes/user-owned-todos.md
Inicio de sesión en Mini Programa WeChatshared/recipes/mini-program-login.md
Carga de avatarshared/recipes/avatar-upload.md
Migración por lotes del servidorshared/recipes/server-migration.md
Despliegue de sitio estático con MCPshared/recipes/static-site-deploy.md

Método de Búsqueda de Documentación

Los references/snippets/ de cada sub-skill (sincronizados desde BmobDocs) y los references/*.md escritos a mano cubren la mayoría de las API. Si aún no es suficiente, busca la documentación upstream:

  1. Localización por nombre de archivo: El árbol de documentos upstream está en github.com/bmob/BmobDocs/tree/master/mds, organizado por <feature>/<platform>/.

  2. Fetch directo del agente (sin pasar por la capa de renderizado de GitHub):

    https://raw.githubusercontent.com/bmob/BmobDocs/master/mds/<feature>/<platform>/<filename>.md
    

    Se ha verificado que la herramienta WebFetch puede obtenerlo directamente como markdown plano.

  3. Listar directorio (cuando no se sabe el nombre del archivo):

    https://api.github.com/repos/bmob/BmobDocs/contents/mds/<feature>/<platform>
    
  4. Si aún no se encuentra: Ve a https://www.bmobapp.com/docs/.

Colaboración con MCP (Clave)

Si el usuario ha configurado el servidor MCP de Bmob en el IDE (consulta shared/mcp-install-snippets.md), cualquier tarea que implique "leer la estructura real de la tabla / escribir datos de prueba / diseñar esquema / generar plantilla curl / desplegar sitio web con un solo clic" debe priorizar MCP, no adivines los nombres de los campos.

  • tools/list tiene 10 herramientas; el agente solo llama a 9 de ellas (get_project_tables, create_table, add_single_data, update_single_data, delete_single_data, generate_code, deploy_cloud_function, invoke_cloud_function, deploy_static_site).
  • mcp_endpoint_mcp_post es un bucle interno del servidor, no lo llames.
  • Parámetros de las herramientas y frases de referencia: bmob-mcp; Tabla de tres canales a nivel de operación: shared/operation-routing.md.
flowchart LR
    User[Prompt del usuario mencionando Bmob] --> Root[bmob root SKILL.md]
    Root --> OpRoute[shared/operation-routing.md]
    Root -->|"schema / CRUD en vivo / deploy"| McpSkill[bmob-mcp]
    Root -->|JS / Web / Mini Programa| JsDb[bmob-database-javascript]
    Root -->|Android / Kotlin| AndDb[bmob-database-android]
    Root -->|SDK Swift puro| SwiftDb[bmob-database-swift]
    Root -->|Legacy iOS / ObjC| IosDb[bmob-database-ios]
    Root -->|Flutter / Dart| FlutDb[bmob-database-flutter]
    Root -->|curl / Python / Go| RestDb[bmob-database-restful]
    Root -->|código de error| Err[bmob-error-codes]
    McpSkill -.get_project_tables.-> JsDb
    McpSkill -.get_project_tables.-> AndDb
    McpSkill -.get_project_tables.-> SwiftDb
    McpSkill -.get_project_tables.-> IosDb
    McpSkill -.get_project_tables.-> FlutDb
    McpSkill -.get_project_tables.-> RestDb

Resumen en una Frase

El usuario menciona Bmob → Lee el Árbol de Decisión de Entrada de este skill → Tabla de Decisión de Enrutamiento para seleccionar el sub-skill → shared/operation-routing.md para elegir MCP / curl / SDK·REST; el código específico de la plataforma está en references/ y SKILL.md del sub-skill.

Skills relacionados