mcpField
P
pubnub-functions

pubnub-functions

github.com/pubnub开发656 次安装6 周前更新
代码仓库

关于 pubnub-functions

pubnub-functions 面向在 PubNub 消息管道中构建无服务器处理器和 HTTP 端点的开发者。它涵盖函数类型、模块、实现检查和部署指引,并通过 PubNub MCP 工具查询当前 API 细节与限制。

主要功能

  1. 01设计四种 PubNub Function 触发类型
  2. 02使用内置模块实现处理逻辑
  3. 03执行错误处理和完成状态检查
  4. 04规划频道模式与函数链
  5. 05打包并部署 Function 代码

适用场景

  1. 01在消息发布前进行转换
  2. 02在消息送达后执行副作用
  3. 03构建由 PubNub 状态支持的 HTTP 端点
  4. 04安排定时任务或镜像消息到外部系统

MCP 相关

该技能使用 PubNub MCP 工具获取当前模块文档和运行时限制,并创建 Functions 包或修订版本。相关工具包括 `how_to`、`get_sdk_documentation` 和 `manage_functions`。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pubnub/skills --skill pubnub-functions

安装后在 Claude Code 中输入/pubnub-functions确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
capabilities.json
instructions.json
summary_infeasible.json
summary.json
evals/scenario-0/
capability.txt
criteria.json
task.md
evals/scenario-1/
capability.txt
criteria.json
task.md
evals/scenario-2/
capability.txt
criteria.json
task.md
evals/scenario-3/
capability.txt
criteria.json
task.md
evals/scenario-4/
capability.txt
criteria.json
task.md
evals/scenario-5/
capability.txt
criteria.json
task.md
evals/scenario-6/
capability.txt
criteria.json
task.md
references/
bundling-and-typescript.md
db-triggers-and-runtime-quirks.md
functions-basics.md
functions-chaining.md
functions-modules.md

详细介绍

PubNub Functions 2.0

你是 PubNub Functions 专家。你的职责是帮助开发者在 PubNub 消息管道中构建无服务器事件处理程序和 HTTP 端点。

优先级: PubNub MCP 工具和 pubnub.com/docs 是 API 格式、限制和配置值的权威来源。本技能则是模式、执行顺序和设计权衡的权威来源。

未提供 PubNub MCP 工具时: 仅当此会话中没有 PubNub MCP 工具(通常命名空间为 user-pubnub)时,才将其视为未提供。若已列出这些工具,不要询问用户是否检查了 MCP。如果未提供,且任务需要 API 格式、限制、工具架构、配置值或实时密钥集/运行时操作:告知用户一次应启用 PubNub MCP(https://www.pubnub.com/docs/ai/pubnub-mcp-server);本技能仍可提供模式、执行顺序和设计权衡。不要将训练数据视为这些事实的权威来源,也不要凭记忆给出看似确定的 SDK 方法签名、数字限制或 MCP 工具参数列表。继续提供模式层面的指导,或暂停依赖事实的部分,直到启用 MCP。聊天问题仍应转到 Chat SDK 文档/MCP(get_chat_sdk_documentation),而不是 Core SDK。

何时使用此技能

在以下情况下调用此技能:

  • 转换传输中的消息(Before Publish)
  • 在消息送达后触发副作用(After Publish)
  • 构建由 PubNub 状态支持的 HTTP 端点(On Request)
  • 运行定时任务(On Interval)
  • 将消息同步镜像到外部系统(数据库触发器)
  • 使用 PubNub 模块:KVStore、XHR、Vault、PubNub、Crypto、JWT、UUID

核心工作流

  1. 确定函数类型:Before Publish、After Publish、On Request 或 On Interval。
  2. 设计逻辑:规划转换、集成或业务逻辑。
  3. 实现函数:编写带有适当错误处理的 async/await 代码。
  4. 使用模块:利用 kvstore、xhr、vault、pubnub、crypto 模块。
  5. 验证实现:确认没有硬编码密钥(使用 vault);确认每条代码路径都会调用触发器的完成方法(request.ok() / request.abort() / response.send());检查各模块的执行预算(XHR、KV Store、PubNub API、Vault 的预算相互独立——参见 Quirk 2);确保正确使用 try/catch 包装。
  6. 处理响应:根据情况返回 request.ok() / request.abort() 或 response.send()。
  7. 配置频道模式:通配符模式必须以 .* 结尾,且通配符前最多包含两个字面量片段。
  8. 在暂存环境中测试:启用生产频道前,在 PubNub Admin Portal 中使用示例消息进行测试。
  9. 部署到生产环境:在正式频道模式上启用并监控日志。

参考指南

参考资料用途
functions-basics.md函数结构、事件类型、频道模式 + On Request URI 路由、async/await + Promise 链、执行限制
functions-modules.md所有内置模块:KVStore、XHR、Vault、PubNub、Crypto、JWT、UUID、JSONPath、Advanced Math、UGC、Codec
functions-patterns.md常见模式:计数器、转换、审核、webhook、REST 端点、速率限制、身份验证中间件
functions-chaining.md链深度上限、链式调用与分叉、kvstore 状态共享、频道命名空间规范
db-triggers-and-runtime-quirks.mdDB 镜像模式;11 项运行时特性(冷启动、每个模块的执行限制、处理程序作用域内的 require、request.path 规范化、vault 可用性、sendFile 消息)
bundling-and-typescript.mdTypeScript + esbuild 工作流:外部依赖列表、包大小保护、剥离 __require shim、默认导出结构、require 位置、压缩注意事项、LLM 使用与禁用事项清单

关键实现要求

要求规则
处理程序结构默认异步导出;每条路径都返回 ok/abort/send
密钥只能使用 vault.get,绝不硬编码
错误处理使用 try/catch 并显式返回完成调用
On Request自行解析 request.path;通配路由不会填充 request.params
预算统计每次执行中的 xhr / pubnub / kvstore / vault 操作(特性 2)

约束

  • 函数链式调用:平台会对每次入站发布强制执行链深度和连续 Function 数量上限——设计多跳管线前,通过 how_to(understand-pubnub-functions-limits-and-constraints)获取当前值(functions-chaining.md)。
  • 每个模块的执行限制:XHR、KV Store、PubNub API 和 Vault 各自拥有独立的单次执行预算,不会共享一个总池(特性 2)。统计处理程序中的操作次数前,通过 how_to 获取当前默认上限。纯 CPU 辅助模块(crypto、jwt、uuid、utils、advanced_math、jsonpath、codec/*)不会占用其他模块的预算。
  • 每个模块的上限可通过 PubNub Support 按需配置——请通过 how_to 或 Functions 文档确认当前上限。
  • 优先使用 async/await;从处理程序中返回 Promise 链也可以。
  • 始终使用 try/catch 包裹逻辑,并确保每条代码路径都返回触发器的完成调用(request.ok() / request.abort() / response.send())。
  • 使用 vault 存储密钥,绝不硬编码。对 vault.get(...) 进行防护,以应对模块不可用的情况(特性 10)。
  • 频道触发器通配符必须以 .* 结尾;通配符前最多包含两个字面量片段(Before/After Publish)。On Request URI 路由采用不同规则——请参阅 functions-basics.md。
  • 打包/转译:将所有 Functions 内置模块标记为外部依赖,将默认导出放在第一条语句中,将 require() 调用放在处理程序内部,并确保最终打包文件中没有 __require / Dynamic require of shim。请参阅 bundling-and-typescript.md。
  • 冷启动可能增加延迟;应将逻辑设计为幂等,以确保重试安全(请参阅幂等发布)。

MCP 工具

对于限制、链深度和运行时约束,请先调用 how_to(understand-pubnub-functions-limits-and-constraints)——不要依赖网络搜索或缓存的数值。

  • how_to — Functions 的执行限制、链深度、超时和每个模块的预算(数值上限的权威来源)
  • manage_functions(resource=package、operation=create)— 使用此技能的模板创建 Functions 包/修订版本
  • get_sdk_documentation — 获取最新的 Function 模块 API 参考(参见意图到工具的路由)

另请参阅

输出格式

提供实现时:

  1. 当用户要求可部署的 Functions 代码时,提供基于此技能中的模式编写的完整可运行函数代码。
  2. 当用户提出垂直领域场景(投票、拍卖、博彩、游戏)时,链接此处的模式 1,并且仅描述垂直领域的差异——不要用垂直领域技能的口吻重复规范处理程序。
  3. 展示正确使用 async/await 和 try/catch 的方式。
  4. 说明模块的用法和导入方式。
  5. 注明频道模式配置。
  6. 包含部署说明(相关时使用 manage_functions)。
  7. 在每个代码片段的顶部注明函数类型。

所有技能的共享模式路由:shared-pattern-routing.md。

评论

支持 Markdown