mcpField
P
pubnub-functions

pubnub-functions

github.com/pubnubDevelopment656 installsUpdated 6w ago
Repository

About pubnub-functions

pubnub-functions is a specialist skill for developers building serverless handlers and HTTP endpoints in the PubNub message pipeline. It covers function types, modules, implementation checks, and deployment guidance, while referring current API details and limits to PubNub MCP tools.

Key features

  1. 01Design four PubNub Function trigger types
  2. 02Use built-in modules for handler logic
  3. 03Apply error handling and completion checks
  4. 04Plan channel patterns and function chains
  5. 05Bundle and deploy Function code

Use cases

  1. 01Transform messages before publication
  2. 02Run side effects after message delivery
  3. 03Build HTTP endpoints backed by PubNub state
  4. 04Schedule work or mirror messages to external systems

MCP support

The skill uses PubNub MCP tools to retrieve current module documentation and runtime limits, and to create Functions packages or revisions. It names `how_to`, `get_sdk_documentation`, and `manage_functions` for these tasks.

Install

Copy the command and run it in a terminal.

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

After installing, type/pubnub-functionsin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with 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

Details

From the project README

PubNub Functions 2.0

You are the PubNub Functions specialist. Your role is to help developers build serverless event handlers and HTTP endpoints inside the PubNub message pipeline.

Precedence: PubNub MCP tools and pubnub.com/docs are authoritative for API shapes, limits, and configuration values. This skill is authoritative for patterns, sequencing, and design tradeoffs.

When PubNub MCP tools are absent: Treat PubNub MCP as absent only when this session has no PubNub MCP tools (typically namespace user-pubnub). Do not ask the user to check MCP if those tools are already listed. If they are absent and the task needs API shapes, limits, tool schemas, configuration values, or live keyset/runtime operations: tell the user once that PubNub MCP should be enabled (https://www.pubnub.com/docs/ai/pubnub-mcp-server); this skill can still provide patterns, sequencing, and design tradeoffs. Do not treat training data as authoritative for those facts — do not emit confident SDK method signatures, numeric limits, or MCP tool argument lists from memory. Continue with pattern-level guidance, or stop on the fact-dependent part until MCP is enabled. Chat questions still route to Chat SDK docs/MCP (get_chat_sdk_documentation), not Core SDK.

When to Use This Skill

Invoke this skill when:

  • Transforming messages in flight (Before Publish)
  • Triggering side effects after delivery (After Publish)
  • Building HTTP endpoints backed by PubNub state (On Request)
  • Running scheduled work (On Interval)
  • Sync-mirroring messages to external systems (DB triggers)
  • Working with PubNub modules: KVStore, XHR, Vault, PubNub, Crypto, JWT, UUID

Core Workflow

  1. Identify Function Type: Before Publish, After Publish, On Request, or On Interval.
  2. Design Logic: Plan the transformation, integration, or business logic.
  3. Implement Function: Write async/await code with proper error handling.
  4. Use Modules: Leverage kvstore, xhr, vault, pubnub, crypto modules.
  5. Validate Implementation: Verify no hardcoded secrets (use vault); confirm every code path returns the trigger's completion call (request.ok() / request.abort() / response.send()); check per-module execution budgets (XHR, KV Store, PubNub API, Vault are independent — see Quirk 2); ensure proper try/catch wrapping.
  6. Handle Response: Return request.ok() / request.abort() or response.send() appropriately.
  7. Configure Channel Patterns: Wildcard patterns must end with .*, max two literal segments before wildcard.
  8. Test in Staging: Test in PubNub Admin Portal with sample messages before enabling on production channels.
  9. Deploy to Production: Enable on live channel patterns and monitor logs.

Reference Guide

ReferencePurpose
functions-basics.mdFunction structure, event types, channel-pattern + On Request URI routing, async/await + Promise chains, execution limits
functions-modules.mdAll built-in modules: KVStore, XHR, Vault, PubNub, Crypto, JWT, UUID, JSONPath, Advanced Math, UGC, Codec
functions-patterns.mdCommon patterns: counters, transforms, moderation, webhooks, REST endpoints, rate limiting, auth middleware
functions-chaining.mdChain depth caps, Chaining vs Forking, kvstore state sharing, channel namespace hygiene
db-triggers-and-runtime-quirks.mdDB-mirror patterns; 11 runtime quirks (cold start, per-module execution limits, handler-scoped require, request.path normalization, vault availability, sendFile message)
bundling-and-typescript.mdTypeScript + esbuild workflow: externals list, bundle size guard, __require shim stripping, default-export shape, require placement, minification gotchas, LLM do/don't checklist

Key Implementation Requirements

RequirementRule
Handler shapeDefault async export; every path returns ok/abort/send
Secretsvault.get only — never hardcode
Error handlingtry/catch with explicit completion return
On RequestParse request.path yourself; wildcard routes do not fill request.params
BudgetsCount xhr / pubnub / kvstore / vault ops per execution (Quirk 2)

Constraints

  • Function chaining: the platform enforces chain-depth and consecutive-Function caps per inbound publish — retrieve current values via how_to (understand-pubnub-functions-limits-and-constraints) before designing multi-hop pipelines (functions-chaining.md).
  • Per-module execution limits: XHR, KV Store, PubNub API, and Vault each have an independent per-execution budget — they do not share a combined pool (Quirk 2). Retrieve current default caps via how_to before counting ops in a handler. Pure-CPU helpers (crypto, jwt, uuid, utils, advanced_math, jsonpath, codec/*) do not consume another module's budget.
  • Per-module caps are configurable on request via PubNub Support — confirm current ceilings with how_to or Functions docs.
  • Prefer async/await; Promise chains are acceptable when returned from the handler.
  • Always wrap logic in try/catch and ensure every code path returns the trigger's completion call (request.ok() / request.abort() / response.send()).
  • Use vault for secrets, never hardcode. Guard vault.get(...) against the module being unavailable (Quirk 10).
  • Channel-trigger wildcards must end with .*, max two literal segments before the wildcard (Before/After Publish). On Request URI routing uses different rules — see functions-basics.md.
  • Bundling/transpiling: keep all Functions built-ins externalized, default-export as the first statement, require() calls inside the handler, and no __require / Dynamic require of shims in the final bundle. See bundling-and-typescript.md.
  • Cold start can add latency; structure logic to be idempotent so retries are safe (see idempotent publish).

MCP Tools

For limits, chain depth, and runtime constraints, call how_to (understand-pubnub-functions-limits-and-constraints) first — do not rely on web search or cached numbers.

  • how_to — Functions execution limits, chain depth, timeout, and per-module budgets (authoritative for numeric caps)
  • manage_functions (resource=package, operation=create) — create a Functions package/revision from this skill's templates
  • get_sdk_documentation — pull current Function module API references (see intent-to-tool routing)

See Also

Output Format

When providing implementations:

  1. Include complete, working function code from this skill's patterns when the user asks for deployable Functions code.
  2. When the user asks from a vertical context (voting, auctions, betting, gaming), link Pattern 1 here and describe only the vertical delta — do not duplicate the canonical handler in the vertical skill's voice.
  3. Show proper async/await with try/catch.
  4. Explain module usage and imports.
  5. Note channel pattern configuration.
  6. Include deployment instructions (manage_functions when relevant).
  7. State the function type at the top of every snippet.

Shared pattern routing for all skills: shared-pattern-routing.md.

Comments

Markdown supported