The MCP server tells the agent *that* it can publish. The skill tells it *how*: slides vs dashboard, new deck vs revision, inventory of local files, and `uploadUrl` + `curl` for binaries.

Without the skill, a local agent often base64-encodes images into tool arguments. That is slow and hits size limits. With the skill, it zips the folder and `curl -T`s it.

The published repo is [`tagpilot/prezzly-skills`](https://github.com/tagpilot/prezzly-skills). Source of truth is the Prezzly monorepo; deploys copy that tree 1:1.

## Install with the skills CLI

Requires Node.js 18+ and an agent that supports the [skills CLI](https://github.com/vercel-labs/skills) (Cursor, Claude Code, Codex, and others).

```bash
npx skills add tagpilot/prezzly-skills
```

List skills in the repo:

```bash
npx skills add tagpilot/prezzly-skills --list
```

Install only `prezzly-presentations`:

```bash
npx skills add tagpilot/prezzly-skills --skill prezzly-presentations
```

Scope the install to one agent or to your user profile when the CLI supports it:

```bash
npx skills add tagpilot/prezzly-skills --agent cursor
npx skills add tagpilot/prezzly-skills -g
```

`--agent` values commonly include `cursor`, `claude-code`, and `codex`. `-g` / `--global` writes into the user-level skills directory instead of the project.

The CLI writes `skills-lock.json` in the project so the next install can pin the same revision.

## Where the skill lands

After install you should see `SKILL.md` in one of these trees (the CLI picks the one your agent reads):

| Agent | Typical path |
| --- | --- |
| Cursor | `.cursor/skills/prezzly-presentations/SKILL.md` or `.agents/skills/prezzly-presentations/SKILL.md` |
| Claude Code | `.claude/skills/prezzly-presentations/SKILL.md` |
| Codex and others | `.agents/skills/prezzly-presentations/SKILL.md` |

Reload the agent window if it does not pick the skill up immediately.

## Manual install

If you cannot run the CLI, copy [`SKILL.md`](https://github.com/tagpilot/prezzly-skills/blob/master/skills/prezzly-presentations/SKILL.md) into the path your agent already reads (see the table). Keep the folder name `prezzly-presentations`.

## Update

Re-run the same `npx skills add` command. The lockfile records `source`, `ref`, and a content hash. After a Prezzly deploy that changes the skill, update the project so the agent does not follow a stale upload recipe.

## Skill vs MCP instructions

| You have | What the agent knows |
| --- | --- |
| MCP only | Tool names, server instructions, `viewUrl` / `uploadUrl` |
| Skill only | HTML conventions and the upload playbook, but no live tools |
| Both | The intended setup: connect MCP, then install the skill |

The skill does not replace [connecting an MCP client](/docs/mcp/connect/). After both are in place, [publish the deck](/docs/mcp/upload/).