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

# Reply Skills

> Outbound expertise as markdown skills — three installable packs that teach your agent what to run, in what order, and with which guardrails.

[reply-skills](https://github.com/reply-team/reply-skills) packages Reply.io's outbound expertise as
plain-markdown **Agent Skills**: 18 skills across three independently installable packs. A skill is a
folder containing a `SKILL.md` — a description your agent's router matches on, plus the guidance it
loads when the description matches. No runtime, no code, nothing to host.

Skills use the open [Agent Skills](https://agentskills.io) format, so they load in Claude Code,
Codex, and any other `SKILL.md`-compatible host.

<Note>
  **MCP gives your agent tools. Skills give it judgement.** MCP and the CLI are *execution*
  surfaces — individual operations your agent can call. Skills are *procedure*: which operations to
  compose, in what order, what to verify, and where to stop and ask. See
  [Choose your interface](/agents/choose-your-interface).
</Note>

## The three packs

The packs split along a clean line: the SDR methodology, the Reply.io execution layer, and the
durable-work runtime each install on their own, so you take the pieces your setup calls for.

| Pack                  | Alias     | Skills | What your agent gains                                                                                                                 | Requires                           |
| --------------------- | --------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| **`ai-sdr-core`**     | `core`    | 9      | What an SDR operation *is*, outbound strategy and playbooks, and the guardrails — sending limits, channel limits, approval boundaries | —                                  |
| **`reply-adapter`**   | `adapter` | 5      | Executing those operations against Reply.io: the CLI, API v3, MCP, auth and scopes, error translation                                 | `ai-sdr-core` + a Reply.io account |
| **`agentic-runtime`** | `runtime` | 4      | Durable multi-session work: goals, plans, work items, checkpoints, resumability, reports, user memory                                 | `ai-sdr-core`                      |

```
                    ┌───────────────┐
                    │  ai-sdr-core  │  the base pack · SDR methodology
                    └───────┬───────┘
                  ┌─────────┴─────────┐
        ┌─────────▼──────┐   ┌────────▼─────────┐
        │ reply-adapter  │   │ agentic-runtime  │
        │  Reply.io      │   │  durable work    │
        └────────────────┘   └──────────────────┘
```

`ai-sdr-core` has no dependencies of its own, and `reply-adapter` and `agentic-runtime` never depend
on each other — either can be absent. Guardrails and approval boundaries ship **inside
`ai-sdr-core`**, so no selective install can leave safe operation out.

<Tip>
  `reply-adapter` is the pack that connects to Reply.io — install it when you want your agent
  operating the platform. The other two carry the methodology and the runtime, and depend only on
  `ai-sdr-core`.
</Tip>

Every skill, with its pack, category, and maturity: [Skill catalog](/skills/catalog).

## Install

### `reply skills install` — recommended

The [Reply CLI](/cli/overview#skills) detects the assistants on your machine and installs all three
packs into each one, resolving dependencies itself:

```bash theme={null}
npm install -g reply-cli    # needs Node.js 20 or newer
reply skills install
```

```
✓ detected Claude Code, Codex
✓ Claude Code · ai-sdr-core, reply-adapter, agentic-runtime installed
✓ Codex       · ai-sdr-core, reply-adapter, agentic-runtime installed
Start a new session in each assistant so the skills load.
```

Install a subset — dependencies come along, so `adapter` pulls `core`:

```bash theme={null}
reply skills install core
reply skills install adapter runtime
reply skills install --agent codex     # only this assistant
reply skills install --project         # into this repository, not your home directory
reply skills install --dry-run         # show the plan, change nothing
```

Full command surface and flags: [Reply CLI → Skills](/cli/overview#skills).

### Claude Code — plugin marketplace

```bash theme={null}
claude plugin marketplace add reply-team/reply-skills
claude plugin install reply-adapter@reply-skills
claude plugin install agentic-runtime@reply-skills
```

`ai-sdr-core` is resolved automatically as a dependency of either pack — Claude Code reports
`(+ 1 dependency: ai-sdr-core)`. Install it alone if you want the vendor-neutral expertise only:

```bash theme={null}
claude plugin install ai-sdr-core@reply-skills
```

Skills arrive namespaced per pack — `ai-sdr-core:campaign-launch`, `reply-adapter:reply-cli` — so they
never collide with skills you wrote yourself.

### Codex — plugin marketplace

```bash theme={null}
codex plugin marketplace add reply-team/reply-skills

# ai-sdr-core FIRST — Codex resolves no dependencies
codex plugin add ai-sdr-core@reply-skills
codex plugin add reply-adapter@reply-skills
codex plugin add agentic-runtime@reply-skills
```

<Warning>
  **Install order matters on Codex.** The Codex plugin format has no dependency field, so nothing
  installs `ai-sdr-core` for you. Adding `reply-adapter` on its own gives you five skills whose
  guidance is missing. Install the core first, or install all three.
</Warning>

Skills are namespaced per pack here too. Re-running `codex plugin add` upgrades in place rather than
duplicating the entry.

### Any host — the skills ecosystem CLI

[`npx skills`](https://github.com/vercel-labs/skills) is the ecosystem package manager for Agent
Skills, with a directory entry at
[skills.sh/reply-team/reply-skills](https://www.skills.sh/reply-team/reply-skills). Use it to reach
hosts Reply does not package for individually.

```bash theme={null}
npx skills add reply-team/reply-skills                                    # asks where to install
npx skills add reply-team/reply-skills --skill '*' --agent claude-code -y  # no prompts
npx skills add reply-team/reply-skills --list                             # look, install nothing
```

<Warning>
  **This channel has no pack model.** It installs individual skills by name — no packs, no
  namespacing, no dependency resolution. **Install all 18.** A `--skill` subset is your own
  responsibility: the CLI will install `reply-operations-mapping` or `durable-work` without
  `sdr-operations` and say nothing about it, leaving a skill whose declared dependency is absent.
</Warning>

Provenance is recorded in `skills-lock.json`, so `npx skills update` works later.

### Cursor, Windsurf, Gemini CLI, GitHub Copilot — directory copy

These hosts have no plugin mechanism, so a pack is installed by copying its skills directory. That
works because a pack is just a directory of skills.

```bash theme={null}
git clone https://github.com/reply-team/reply-skills /tmp/reply-skills

# ai-sdr-core is required by the others — copy it first
cp -r /tmp/reply-skills/plugins/ai-sdr-core/skills/*     <host skills dir>/
cp -r /tmp/reply-skills/plugins/reply-adapter/skills/*   <host skills dir>/
cp -r /tmp/reply-skills/plugins/agentic-runtime/skills/* <host skills dir>/
```

`reply skills install` does this copying for you, to the same paths. Never copy `reply-adapter` or
`agentic-runtime` without `ai-sdr-core`, or their skills will reference guidance that is not there.

## Install channels compared

Each row states the version it was verified against. Rows marked *not verified* have instructions
that are a reasonable starting point, not a promise.

| Channel                                                                   | Installs           | Dependency handling                                            | Layout on disk                          | Verified against                                                                |
| ------------------------------------------------------------------------- | ------------------ | -------------------------------------------------------------- | --------------------------------------- | ------------------------------------------------------------------------------- |
| **`reply skills install`**                                                | Packs              | **Resolved by the installer** on every host                    | Whatever the channel it drives produces | reply CLI 0.4.0 — Claude Code and Codex; other hosts receive files, unconfirmed |
| Claude Code plugin marketplace                                            | Packs              | **Resolved by the host** — `reply-adapter` pulls `ai-sdr-core` | Namespaced per pack                     | Claude Code 2.1.220                                                             |
| Codex plugin marketplace                                                  | Packs              | **Manual** — install `ai-sdr-core` first                       | Namespaced per pack                     | codex-cli 0.146.0-alpha.3.1                                                     |
| `npx skills` / [skills.sh](https://www.skills.sh/reply-team/reply-skills) | Individual skills  | **None** — install all 18 yourself                             | Flat, no namespacing                    | skills CLI 1.5.21                                                               |
| Cursor · Windsurf · Gemini CLI · GitHub Copilot                           | Skills, by copying | **Manual** — copy `ai-sdr-core` first                          | Flat, per host path                     | Not verified                                                                    |

Only the first two channels resolve the `ai-sdr-core` dependency for you.

## Where the files land

`reply skills install` writes to your user directory by default, or to the current repository with
`--project`.

| Assistant      | How it receives the packs                             | Project-scoped path | Paths verified |
| -------------- | ----------------------------------------------------- | ------------------- | -------------- |
| Claude Code    | its own plugin CLI                                    | `.claude/skills/`   | Yes            |
| Codex          | its own plugin CLI (`--project` copies files instead) | `.agents/skills/`   | Yes            |
| Cursor         | copied files                                          | `.agents/skills/`   | Not yet        |
| Gemini CLI     | copied files                                          | `.agents/skills/`   | Not yet        |
| GitHub Copilot | copied files                                          | `.agents/skills/`   | Not yet        |
| Windsurf       | copied files                                          | `.windsurf/skills/` | Not yet        |

On Claude Code and Codex the packs go through the assistant's own plugin mechanism, so they keep
updating through it. Other `SKILL.md` hosts receive the skills as files.

<Note>
  **"Not yet" means the skills directory came from that assistant's documentation** and has not been
  confirmed by a verification run. The install works; what is unconfirmed is whether the assistant
  reads from where the files were put. Those hosts are marked `(paths not yet verified)` in the report
  and carry `"verified": false` in `--json` output.
</Note>

## Verify the install

```bash theme={null}
reply skills list          # what's installed where, and what has an update available
reply skills list --json   # machine-readable, including per-host `verified`
```

On Claude Code you can also ask the host directly:

```bash theme={null}
claude plugin list
claude plugin details ai-sdr-core   # its skills and their token cost
```

**Start a new session** in each assistant — newly installed skills are picked up at session start,
not mid-conversation.

## Connect an execution surface

**Installing skills is a separate step from connecting Reply.io.** `reply-adapter` is the pack that
calls the platform, so it needs at least one Reply.io execution surface configured:

| Surface                                    | When to use it                                                             | Start                                      |
| ------------------------------------------ | -------------------------------------------------------------------------- | ------------------------------------------ |
| [Reply CLI](/cli/overview)                 | Your agent has a shell. `reply api` reaches every v3 endpoint.             | `reply auth login`                         |
| [Reply MCP](/mcp/overview)                 | Your client speaks MCP and has no shell — desktop apps, hosted assistants. | [Connect](/mcp/connect)                    |
| [REST API v3](/api-reference/introduction) | You are driving the API directly.                                          | [Get a key](/api-reference/authentication) |

If the CLI is installed, this confirms the adapter has something to drive:

```bash theme={null}
reply auth whoami
```

Agents driving the API directly should start at
[llms.txt](https://docs.reply.io/llms.txt) — see [Machine-readable](/agents/machine-readable).

## Run your first skill

Once installed, ask your agent in plain language — the host routes to a skill by matching its
description:

* *"Import this CSV as a new list and tell me about the duplicates"* → `audience-building`
* *"Plan an outbound campaign to book ten meetings with fintech founders"* → `campaign-planning`
* *"What sending limits should I respect on a brand-new domain?"* → `sending-guardrails`
* *"Show me the interested replies from this week"* → `inbox-triage`
* *"Which campaigns are underperforming, and what should I fix?"* → `performance-analysis`
* *"Turn this goal into a plan I can resume tomorrow"* → `durable-work`

## Safety model

Skills never let an agent start a sequence, send a message, or delete data without your explicit
confirmation in the conversation. Anything that sends content requires you to approve the **literal
text** first. Bulk operations show their plan and their counts before running.

Protective actions are the one exception: pausing a campaign that is burning your domain happens
first and tells you immediately, because waiting is the destructive choice.

The rules live in one skill — `approval-boundaries` — and ship inside `ai-sdr-core`, so no selective
install can omit them. Bound them mechanically as well, with
[scoped API keys](/api-reference/authentication): grant an agent only the scopes its work needs. See
[Agent safety rules](/agents/safety).

## Manage installed packs

```bash theme={null}
reply skills list             # what's installed where
reply skills update           # bring installed packs to the latest version
reply skills remove runtime   # remove one pack
reply skills remove           # remove all of them
```

Add `--dry-run` to any of them to see the plan without changing anything. Removing a pack that
another installed pack depends on is refused — remove both, or run `reply skills remove` with no pack.

Through Claude Code's own plugin mechanism:

```bash theme={null}
claude plugin update reply-adapter      # restart to apply
claude plugin uninstall reply-adapter
claude plugin prune                     # drop dependencies nothing needs any more
```

## Troubleshooting

<AccordionGroup>
  <Accordion title="The agent doesn't seem to know the skills">
    Skills load at session start. Start a **new** session in the assistant, then ask something that
    matches a skill description — hosts route on the `description` field, so a vague prompt may match
    nothing. Confirm the install first with `reply skills list`.
  </Accordion>

  <Accordion title="A skill references guidance that isn't there">
    A pack was installed without `ai-sdr-core`. Only `reply skills install` and the Claude Code
    marketplace resolve that dependency; on Codex, `npx skills`, and directory copies it is your job.
    Install the core and start a new session.
  </Accordion>

  <Accordion title="`which codex` says Codex is missing on Windows">
    The `codex` binary is not on `PATH` — it ships with the desktop app at
    `%LOCALAPPDATA%\OpenAI\Codex\bin\<hash>\codex.exe`. Call it by full path. Tooling that detects
    Codex with `which codex` will wrongly report it as absent.
  </Accordion>

  <Accordion title="Skills installed, but Reply operations fail">
    `reply-adapter` needs a working Reply.io credential. Run `reply auth whoami`; if it fails, run
    `reply auth login`. For `401`/`403` on a specific call, check the key's scopes against
    [Authentication](/api-reference/authentication).
  </Accordion>

  <Accordion title="The install reported a host as unverified">
    Expected for Cursor, Windsurf, Gemini CLI, and GitHub Copilot. The files were written to the path
    that host documents, but Reply has not confirmed the host reads them. Check the host's own skills
    directory and consult its documentation.
  </Accordion>
</AccordionGroup>

## Maturity and honest gaps

Each skill carries a maturity level — `draft`, `reviewed`, `validated`, or `production`. Some business
and protection content ships as **honest skeletons** marked `TODO(expert)`: the structure and safety
posture are final, the specific numbers await validation by domain experts. A visible gap is
deliberate; invented expertise would be worse. Per-skill maturity is in the
[Skill catalog](/skills/catalog).

## Links

* Repo: [github.com/reply-team/reply-skills](https://github.com/reply-team/reply-skills) (MIT)
* Live catalog, always current: [`INDEX.md`](https://github.com/reply-team/reply-skills/blob/main/INDEX.md)
* The contract every skill follows: [`docs/skill-contract.md`](https://github.com/reply-team/reply-skills/blob/main/docs/skill-contract.md)
* Pack architecture and invariants: [`docs/packs.md`](https://github.com/reply-team/reply-skills/blob/main/docs/packs.md)
* Execution layer: [Reply CLI](/cli/overview) · [Reply MCP](/mcp/overview) · [API v3](/api-reference/introduction)
* Next: [Skill catalog](/skills/catalog)
