Agent Skills
A Claude Code plugin that teaches your agent the right order of RiffAds calls.
Read as MarkdownAgent Skills: not distributed yet
The riffads plugin gives Claude Code the RiffAds MCP tools plus a written procedure: look up, estimate, quote, submit, follow, hand over the file. No code, no new capability.
Install
/plugin marketplace add riffads-ai/skills
/plugin install riffads@riffadsriffads@riffadsis<plugin>@<marketplace>. The repo is its own marketplace.- Claude Code only. Other clients get the same tools, without the procedure: connect a client.
- No API key. The plugin adds the MCP server, and you sign in in a browser.
The plugin ships this .mcp.json:
{
"mcpServers": {
"riffads": {
"type": "http",
"url": "https://mcp.riffads.com"
}
}
}Not live for you yet? Add the server by hand. You get all 17 tools, just not the procedure:
claude mcp add --transport http riffads https://mcp.riffads.comFirst run
Sign in
The first tool call opens a browser. Sign in and approve.
Pick a workspace (only if you have several)
Until you pick, every call refuses with connection_not_configured. Pick at app.riffads.com/connections.
Just ask
No command to type. A skill loads when your request matches:
- "make me an ad"
- "what would this cost in RiffAds"
- "give me four variants of this image"
- "the same script with three different actors"
Check it worked: ask "What are you connected to?". The agent calls riffads_ping and names the workspace.
The three skills
| Skill | Use it for | Loads on |
|---|---|---|
cost-aware-generation | Any single generation, including talking actor ads. The other two build on it. | "make me an ad", "generate a talking actor video", "what would this cost in RiffAds", "check on the RiffAds generation from earlier" |
batch-image-variants | Up to 4 takes of one image or video config, read back with get_batch. | "give me four variants of this image", "some options for this product shot" |
batch-actor-variants | One script, several actors, through a workflow template. | "the same script with three different actors", "which actor reads this script best", "run a RiffAds workflow" |
All three can start paid work. Only the short descriptions load each session. The full procedure loads when a skill runs.
How the agent behaves
Free calls first. Never submits to find out a price.
| # | Tool | Why |
|---|---|---|
| 1 | riffads_ping | Which workspace, whether it may spend. Once per conversation |
| 2 | get_credit_balance | Stops early if nothing can be spent |
| 3 | list_capabilities | Only if the capability id is unknown |
| 4 | get_capability_schema | Builds a valid config |
| 5 | estimate_generation | The number to quote |
| 6 | submit_generation | Only after you agree to the quote |
Quotes before spending. Tells you the number and waits for a yes. Sends max_credits of at least ceil(estimate * 1.1), never a big round number.
Follows the job itself. Calls wait_for_generation until still_running is false. You do not have to ask "is it done?".
Hands over the file fast. Links last about 10 minutes. Expired links get refreshed with get_generation.
Respects retryable. false: never resends, explains or changes the request. true: at most 2 more tries, honouring retry_after_seconds. moderation_blocked is never reworded around.
Talking actor = two generations. tts first, then generate_talking_actor with approved_voice_generation_id. Quotes both up front.
Several actors = a workflow. Starts with list_templates (node ids cannot be guessed), sets max_credits for every step, polls get_workflow_run about every 30 seconds.
Uploads honestly. create_upload, one PUT, finalize_upload, and uses the asset only after usable: true. If it cannot make the PUT, it says so.
Never says posted, published or shared. Never says finished before the job ends. Never invents an actor id, voice id, capability id or number.
Guidance, not enforcement
The server enforces every rule on every call, plugin or not: moderation, max_credits, workspace spend caps, one agent submission at a time. An agent that skips the procedure gets refused, not overcharged.
Every tool and argument: MCP tools. Every refusal code: errors.