CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

pubnub-functions

Create, configure, and deploy PubNub Functions 2.0 event handlers, triggers, and serverless endpoints. Covers Before/After Publish, On Request, On Interval; built-in modules (kvstore, xhr, vault, pubnub, crypto, jwt, ugc, jsonpath, advanced_math, codec/*); chaining (depth caps, Chaining vs Forking, kvstore state sharing); runtime quirks (independent per-module execution budgets, cold start, request.path normalization, vault availability, sendFile message); DB-trigger patterns; and bundling/TypeScript workflow (esbuild externals, bundle size guard, __require shim stripping, default-export shape). Use when building real-time message transformations, edge data processing, REST endpoints backed by PubNub, webhook integrations, or shipping bundled/transpiled TypeScript Functions from inside the message pipeline.

Quality

87%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

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.

Repository

pubnub/skills

Path

pubnub-functions/SKILL.md

Last updated
First committed

Canonical home

pubnub/pubnub-functions
In sync

since Feb 5, 2026

Also appears in

sjmaple/skills
In sync

since Aug 28, 2026

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.