skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
zavudev/zavu-skills224 installs

zavu-rules

Foundational context for the Zavu unified messaging API. Always loaded.

How do I install this agent skill?

npx skills add https://github.com/zavudev/zavu-skills --skill zavu-rules
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    The skill provides foundational context and documentation for the Zavu unified messaging API. It includes instructions for installing official SDKs and CLI tools across multiple languages and follows security best practices for API key management using environment variables.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

  • Runlayerpass

    1 file scanned · No issues

  • ZeroLeakswarn

    1 finding · Score: 69/100

What does this agent skill do?

Zavu API Context

Zavu is a unified multi-channel messaging API. One API to send messages via SMS, WhatsApp, Telegram, Email, Instagram, and Voice, with automatic channel selection and fallback.

SDK Ecosystem

LanguagePackageInstall
TypeScript@zavudev/sdknpm add @zavudev/sdk
Pythonzavudevpip install zavudev
Gogithub.com/zavudev/sdk-gogo get github.com/zavudev/sdk-go
PHPzavudev/sdk-phpComposer
Rubyzavudev/sdk-rubyRubyGems

Tooling

ToolPurposeInstall
zavu CLIInteract with the API from the terminal; manage Zavu Functions (serverless TypeScript on Zavu Cloud)npx zavudev@latest (no install), or npm install -g zavudev
@zavudev/functionsRuntime package for Zavu Functions. Provides defineAgent, defineTool, defineFunction declarative APIs.Pre-installed in the function runtime — import { defineAgent } from "@zavudev/functions" (no install needed).

The CLI is the primary interface for Zavu Functions: serverless TypeScript that runs on Zavu Cloud and lets you declare AI agents + tool handlers in code. See the functions skill for full coverage.

TypeScript Init

import Zavudev from '@zavudev/sdk';

const zavu = new Zavudev({
  apiKey: process.env['ZAVUDEV_API_KEY'],
});

Python Init

import os
from zavudev import Zavudev

zavu = Zavudev(api_key=os.environ.get("ZAVUDEV_API_KEY"))

Python Async

from zavudev import AsyncZavudev

zavu = AsyncZavudev(api_key=os.environ.get("ZAVUDEV_API_KEY"))

Go Init

import "github.com/zavudev/sdk-go"

client := zavudev.NewClient(os.Getenv("ZAVUDEV_API_KEY"))

Ruby Init

require "zavudev"

client = Zavudev::Client.new(api_key: ENV["ZAVUDEV_API_KEY"])

PHP Init

use Zavudev\Client;

$client = new Client(apiKey: getenv('ZAVUDEV_API_KEY'));

Authentication

  • Environment variable: ZAVUDEV_API_KEY
  • Key prefixes: zv_live_ (production), zv_test_ (sandbox)
  • Header: Authorization: Bearer <api_key>
  • Sender override header: Zavu-Sender: <sender_id>

Core Conventions

  • Phone numbers: Always E.164 format (+14155551234)
  • Channels: auto, sms, sms_oneway, whatsapp, telegram, email, instagram, messenger, voice
  • Message types: text, image, video, audio, document, sticker, location, contact, buttons, list, cta_url, request_contact_info, location_request, reaction, template
  • Pagination: Cursor-based. All list endpoints return { items: [...], nextCursor: string | null }
  • Idempotency: Use idempotencyKey on send to prevent duplicate messages

Error Handling

TypeScript

import Zavudev, { APIError } from '@zavudev/sdk';

try {
  await zavu.messages.send({ to: "+14155551234", text: "Hello" });
} catch (error) {
  if (error instanceof APIError) {
    console.error(error.status, error.message);
  }
}

Python

from zavudev import Zavudev, APIError

try:
    zavu.messages.send(to="+14155551234", text="Hello")
except APIError as e:
    print(e.status_code, e.message)

Key Business Rules

  1. WhatsApp 24h window: Free-form messages require an open conversation window (user messaged you in last 24h). Use template messages to initiate conversations outside the window.
  2. Verification raises limits; it is not permission to send: an account sends on every channel, to any destination, from its first minute. Identity verification, a saved payment method, a settled deposit or a paid plan raise the daily ceilings, which return 429 daily_limit_exceeded when spent. Business verification (KYB) gates 10DLC registration, which every US and Canadian (+1) SMS destination needs (403 ten_dlc_required); no channel needs it to send. Every sms, sms_oneway, email and voice message is read before it is sent and can be held briefly for review (it stays queued) or refused (RISK_BLOCKED, RISK_REJECTED, RISK_REVIEW_EXPIRED on the failed message); repeated refusals suspend an account's sending (403 sending_suspended). See the send-message skill.
  3. URL verification: SMS/email messages containing URLs require those URLs to be pre-verified via /v1/urls.
  4. URL shorteners blocked: bit.ly, t.co, etc. are always blocked. Use full destination URLs.
  5. Channel auto: picks the first channel the sender has configured that the recipient's address can receive on, in a fixed preference order. It does not consider cost. Cost-based, per-contact selection exists only on broadcasts sent with channel smart.
  6. Fallback: If WhatsApp fails, messages can automatically fall back to SMS (enabled by default).
  7. Voice agents: An agent can answer and place phone calls when its voice config has enabled: true. Place outbound calls via /v1/calls and fetch transcripts from /v1/calls/{callId}. Requires the Voice Agents feature and a live key. See the ai-agent skill.

MCP Server

For direct API execution from AI assistants:

claude mcp add --transport stdio zavudev_sdk_api \
  --env ZAVUDEV_API_KEY=$ZAVUDEV_API_KEY -- npx -y @zavudev/sdk-mcp

Tools available: search_docs (search API docs), execute (run TypeScript against authenticated client).

CLI

The zavudev/cli package provides terminal access to all API operations.

Rate Limits

Check X-RateLimit-Remaining header. Use .withResponse() (TS) or .with_raw_response() (Python) to access response headers.

Message Statuses

queued -> sending -> sent -> delivered -> read (success path) queued -> sending -> failed (failure path) received (inbound messages) pending_url_verification (message with URLs awaiting verification)

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/zavudev/zavu-skills/zavu-rules">View zavu-rules on skillZs</a>