> ## Documentation Index
> Fetch the complete documentation index at: https://docs.keebai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent Skills

> Official Keebai skills for Claude Code and AI agents that support the open Agent Skills format. They bundle the Keebai + @keebai/sdk know-how so an agent can send WhatsApp messages, manage templates, and receive webhooks without reinventing the integration.

**Agent Skills** are packaged knowledge modules that teach an AI agent (Claude Code, Cursor, Codex, Gemini CLI, and others) how to operate Keebai end-to-end. Once the skill is installed, you can tell your agent "send 'Hello' to +1555... via WhatsApp" and it will run the right flow without you having to explain the SDK, the endpoints, or auth.

Repo: [github.com/keebai-ai/agent-skills](https://github.com/keebai-ai/agent-skills) — the open [Agent Skills](https://github.com/vercel-labs/skills) format (the same one used by Vercel, Kapso, Shopify, and others).

## Why use the skills

<CardGroup cols={2}>
  <Card title="Zero agent ramp-up" icon="bolt">
    Without the skill, an agent has to figure out which SDK to use, where the PAT is, which method covers each case, and how to handle errors. With the skill: read `SKILL.md`, run the script, done.
  </Card>

  <Card title="Executable scripts included" icon="terminal">
    25 CLI scripts (one per SDK method) that take `--to`, `--text`, `--template`, etc. The agent runs them directly, no code to write.
  </Card>

  <Card title="Bundled references" icon="book">
    9 files in `references/` (messages, media, templates, interactive, webhooks, errors, etc.). The agent lazy-loads them on demand.
  </Card>

  <Card title="Standard format" icon="puzzle-piece">
    YAML frontmatter + Markdown. Works with Claude Code, Cursor, Codex, Gemini CLI, Aider, Continue, Cline, Roo, Warp, Goose, OpenHands, and 50+ other agents.
  </Card>
</CardGroup>

## Installation

With Vercel Labs' [`skills`](https://www.npmjs.com/package/skills) package (no prior install needed, comes via `npx`):

```bash theme={null}
npx skills add keebai-ai/agent-skills -g -y
```

Flags:

| Flag         | What it does                                                                |
| ------------ | --------------------------------------------------------------------------- |
| `-g`         | Global (lands in `~/.claude/skills/` or the directory matching your agent). |
| `-y`         | Skip interactive confirmations.                                             |
| `-a <agent>` | Install for a specific agent only (e.g. `claude-code`).                     |
| `--copy`     | Copy files instead of symlinking.                                           |

Alternative modes:

```bash theme={null}
# Just list what skills the repo ships, without installing
npx skills add keebai-ai/agent-skills -l

# Project-level (only in the current cwd, not global)
cd ~/my-project && npx skills add keebai-ai/agent-skills -y

# View installed skills
npx skills list

# Update to the latest version
npx skills update integrate-keebai-whatsapp -y

# Remove
npx skills remove integrate-keebai-whatsapp -g -y
```

## Available skill

### `integrate-keebai-whatsapp`

End-to-end WhatsApp integrations. Covers the full cycle: sending messages (text, media, interactive, templates), uploading and downloading media, scheduling mass broadcasts, and receiving events via webhooks. Supports both SDK modes (Keebai PAT or direct Meta).

**Triggers** that auto-invoke it in a conversation with the agent:

* "@keebai/sdk", "Keebai SDK", "Keebai public-api"
* "send WhatsApp via Keebai", "Keebai WhatsApp template"
* "pat\_" / "kbai\_pk\_", "phone\_number\_id"
* "api.keebai.com", "Keebai webhooks"

**Contents** (`SKILL.md` + bundles):

```
integrate-keebai-whatsapp/
├── SKILL.md                          # entry point
├── references/                       # detailed docs, lazy-loaded
│   ├── getting-started.md
│   ├── messages-reference.md
│   ├── media-reference.md
│   ├── templates-reference.md
│   ├── interactive-reference.md
│   ├── webhooks-reference.md
│   ├── errors-reference.md
│   ├── meta-direct-mode.md
│   └── public-api-reference.md
├── scripts/                          # 25 Node.js executables
│   ├── send-text.mjs
│   ├── send-image.mjs
│   ├── send-template.mjs
│   ├── send-bulk.mjs
│   ├── upload-media.mjs
│   ├── mark-read.mjs
│   └── …
└── assets/                           # JSON examples
    ├── webhook-message-received.example.json
    ├── webhook-message-status.example.json
    └── template-create.example.json
```

## Setup

Once installed, export the credentials once (the skill scripts read them automatically):

```bash theme={null}
# Recommended: ~/.zshenv (loaded by every zsh shell, including non-interactive ones)
cat >> ~/.zshenv <<'EOF'

# Keebai credentials for the integrate-keebai-whatsapp skill
export KEEBAI_API_KEY=kbai_pk_<hex64>
export KEEBAI_PHONE_NUMBER_ID=<numeric>
EOF

# Install the script dependencies (once)
cd ~/.agents/skills/integrate-keebai-whatsapp && npm install
```

<Warning>
  Use `~/.zshenv`, not `~/.zshrc`. The Bash tool in Claude Code (and other agents) runs commands in non-interactive mode, and `~/.zshrc` only loads in interactive shells. `~/.zshenv` is read by every zsh shell.
</Warning>

## Usage with Claude Code

After setup, in any session:

> *User*: I need to send "Hello from Keebai" to +15551234567

Claude (with the skill loaded) runs directly:

```bash theme={null}
node ~/.claude/skills/integrate-keebai-whatsapp/scripts/send-text.mjs \
  --to +15551234567 --text "Hello from Keebai"
```

And returns:

```json theme={null}
{
  "messagingProduct": "whatsapp",
  "messages": [{ "id": "wamid.HBgL..." }],
  "raw": { "message_id": "wamid.HBgL...", "status": "sent", "sent_at": "..." }
}
```

Without the user having to say which script, which flags, which endpoint, or which credentials.

## CLI scripts (no agent)

The scripts also work as standalone CLI utilities, no agent required:

```bash theme={null}
# Send text
node ~/.claude/skills/integrate-keebai-whatsapp/scripts/send-text.mjs \
  --to +15551234567 --text "hello"

# Send a template with variables
node ~/.claude/skills/integrate-keebai-whatsapp/scripts/send-template.mjs \
  --to +15551234567 --name welcome_v2 --language en_US \
  --variables '{"name":"Alex"}'

# Upload media
node ~/.claude/skills/integrate-keebai-whatsapp/scripts/upload-media.mjs \
  --file ./logo.png --type image/png

# Mark as read + typing
node ~/.claude/skills/integrate-keebai-whatsapp/scripts/mark-read.mjs \
  --message-id wamid.HBgL... --typing text

# List approved templates
node ~/.claude/skills/integrate-keebai-whatsapp/scripts/list-templates.mjs
```

Every script accepts `--help` with flag documentation.

## Agent compatibility

The `SKILL.md` format is supported by:

* **Claude Code** (Anthropic CLI)
* **Cursor**
* **Codex** (OpenAI)
* **Gemini CLI** (Google)
* **Aider**
* **Continue**
* **Cline**
* **Roo Code**
* **Warp**
* **Goose**
* **OpenHands**
* **Windsurf**
* And 50+ other agents via the [open registry](https://github.com/vercel-labs/skills)

Full list in the [`skills` npm package](https://www.npmjs.com/package/skills).

## Upcoming skills

Roadmap, no committed dates:

* **`automate-keebai-whatsapp`** — AI assistants, knowledge base, scheduling, workflows.
* **`observe-keebai-whatsapp`** — delivery debugging, webhook inspection, health checks.

Need one before we ship it? Write to [support@keebai.com](mailto:support@keebai.com) or open an issue in the [repo](https://github.com/keebai-ai/agent-skills/issues).

## Resources

<CardGroup cols={2}>
  <Card title="GitHub repo" icon="github" href="https://github.com/keebai-ai/agent-skills">
    Skill source, issues, and PRs.
  </Card>

  <Card title="TypeScript SDK" icon="code" href="/dev/sdks/typescript">
    The client the skills are built on top of.
  </Card>

  <Card title="Agent Skills format" icon="puzzle-piece" href="https://github.com/vercel-labs/skills">
    Spec for the open format.
  </Card>

  <Card title="REST API" icon="book" href="/dev/overview">
    Raw endpoints for cases without an SDK or agent.
  </Card>
</CardGroup>
