> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getdial.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getdial.ai/_mcp/server.

# CLI Skill

> Install the Dial CLI skill into any local AI agent so it knows how to drive the `dial` CLI on demand.

The **CLI Skill** is a single `SKILL.md` describing the `dial` CLI — its commands, flags, conventions, and onboarding flow — packaged in the [skills.sh](https://skills.sh) layout. Drop it into a local agent's config and the agent learns how to drive `dial` without you re-explaining the surface every conversation.

It's published from [`GetDial-AI/cli`](https://github.com/GetDial-AI/cli) at `skills/dial-cli/SKILL.md` and shipped with every `@getdial/cli` npm release.

## Install

You have two equivalent paths. Both write the same `SKILL.md` to the agent's standard skills directory.

```bash title="npx skills add"
npx skills add --agent <agent_name> GetDial-AI/cli
```

```bash title="dial auth verify-otp"
dial auth verify-otp --code <code> --agent <agent_name>
```

`<agent_name>` is one of: `claude-code`, `cursor`, `codex`, `opencode`, `pi`, `openclaw`, `nanoclaw`, `hermes`.

### When to use which

* **`npx skills add`** — fastest path when you don't yet have `dial` on the machine. Pulls the skill straight from GitHub and writes it to your agent's config; no Dial account or auth needed. The installed skill then walks the agent through running [`getdial.ai/skills.md`](https://getdial.ai/skills.md) to install the CLI and sign up.
* **`dial auth verify-otp --agent <name>`** — the right path once the CLI is already installed. Verifies your email OTP (one-time) and copies the bundled skill into the agent's config in the same step. The skill is installed even when signing up still needs phone verification, so the agent has the instructions it needs to finish the flow. Re-running it later (after a CLI upgrade, for example) overwrites the skill in place — the verification step is a no-op once you're signed in.

## Where it lands

Each agent has a documented skills directory; the installer writes `SKILL.md` into `<dir>/dial-cli/SKILL.md`:

| Agent         | Path                                                      |
| ------------- | --------------------------------------------------------- |
| `claude-code` | `~/.claude/skills/dial-cli/SKILL.md`                      |
| `cursor`      | `~/.cursor/skills/dial-cli/SKILL.md`                      |
| `codex`       | `~/.agents/skills/dial-cli/SKILL.md`                      |
| `opencode`    | `~/.config/opencode/skills/dial-cli/SKILL.md`             |
| `pi`          | `~/.pi/agent/skills/dial-cli/SKILL.md`                    |
| `openclaw`    | `~/.openclaw/skills/dial-cli/SKILL.md`                    |
| `hermes`      | `~/.hermes/skills/dial-cli/SKILL.md`                      |
| `nanoclaw`    | `<cwd>/.claude/skills/dial-cli/SKILL.md` (project-scoped) |

## What the skill contains

A condensed reference Claude (or any agent that loads SKILL.md files) uses to operate `dial`:

* The full command tree with the canonical `--help` discovery pattern.
* The `--json` convention for parseable output.
* The first-time onboarding flow (`auth login` → `auth verify-otp` → `auth register-number` → `auth verify-otp --number` → `listen install`).
* A docs-lookup pattern using `https://docs.getdial.ai/llms-full.txt` and the per-page `.md` companions.
* Workflow shapes for the common verbs: send an SMS, place a voice call, receive a verification code, react to a `call.ended` event, fan inbound events to a local handler.
* E.164 phone-number requirements, idempotency caveats, and the auth-file location.

The full file lives at [`skills/dial-cli/SKILL.md`](https://github.com/GetDial-AI/cli/blob/main/skills/dial-cli/SKILL.md) in the CLI repo.

## Use it

Once installed, just ask the agent in plain language:

> Send an SMS to +14155550123 with the body "running late, ETA 10 min".

The agent loads the skill, picks the right `dial` command, and runs it. See [Using Dial from an agent](/documentation/get-started/using-dial-from-an-agent) for more examples.