Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions marketplaces/openhands-extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -834,6 +834,19 @@
"pull-request",
"automation"
]
},
{
"name": "wavespeed",
"source": "./skills/wavespeed",
"description": "Generate and edit AI media (image, video, audio, 3D) on the WaveSpeed platform through the open-source wavespeed CLI: live catalog search, per-model schema, price quotes, local-file upload.",
"category": "integrations",
"keywords": [
"wavespeed",
"image-generation",
"video-generation",
"audio",
"3d"
]
}
]
}
16 changes: 16 additions & 0 deletions skills/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions skills/wavespeed/.claude-plugin
1 change: 1 addition & 0 deletions skills/wavespeed/.codex-plugin
20 changes: 20 additions & 0 deletions skills/wavespeed/.plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "wavespeed",
"version": "1.0.0",
"description": "Generate and edit AI media (image, video, audio, 3D) on the WaveSpeed platform through the open-source wavespeed CLI: live catalog search, per-model schema, price quotes, local-file upload.",
"author": {
"name": "WaveSpeedAI",
"email": "support@wavespeed.ai"
},
"homepage": "https://github.com/WaveSpeedAI/agent-skills",
"repository": "https://github.com/WaveSpeedAI/agent-skills",
"license": "MIT",
"keywords": [
"wavespeed",
"image-generation",
"video-generation",
"audio-generation",
"3d-generation",
"media"
]
}
22 changes: 22 additions & 0 deletions skills/wavespeed/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# WaveSpeed

Generate and edit AI media — image, video, audio, 3D — on the [WaveSpeed](https://wavespeed.ai) platform from OpenHands, through the open-source [`wavespeed` CLI](https://github.com/WaveSpeedAI/wavespeed-cli).

The skill teaches the agent the find → inspect → run pattern: search the live model catalog, read the selected model's input schema, quote the price, run it with `--json`, and upload local files with the `@path` marker. The agent never asks the user to paste an API key into the chat; `wavespeed login` (or `WAVESPEED_API_KEY` in the sandbox environment) handles auth.

## Setup

```bash
npm install -g @wavespeed/cli
wavespeed login # or export WAVESPEED_API_KEY=...
```

## Example prompts

- "Generate a 16:9 hero image of a cyberpunk skyline at golden hour."
- "Animate ./hero.jpg into a 5-second clip with subtle parallax."
- "Replace the background of ./product.png with a sunlit kitchen, and tell me the cost first."

## More

Per-model skills (Seedream, Seedance, Veo 3.1, Wan, Nano Banana, MiniMax Speech, upscalers, face swap, watermark removal) and the `@wavespeed/mcp` server declaration live in [WaveSpeedAI/agent-skills](https://github.com/WaveSpeedAI/agent-skills).
89 changes: 89 additions & 0 deletions skills/wavespeed/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
name: wavespeed
description: Generate or edit AI media (image, video, audio, 3D) by calling the wavespeed CLI on the user's machine. Use whenever the user asks to create, edit, animate, upscale, or transform a visual asset, generate audio/TTS/music, or produce marketing creatives. Every model on the WaveSpeed platform is one `wavespeed run <id>` call.
triggers:
- wavespeed
- generate image
- generate video
- text to image
- image to video
- text to video
- upscale
- text to speech
---

# WaveSpeed

You have access to the `wavespeed` CLI. Every generation flows through one verb. There are no `image` / `video` shortcuts; the model id is always explicit.

## The three-step pattern

```bash
# 1. FIND a model — search the live catalog
wavespeed models "seedream"
wavespeed models --type image-to-video --popular

# 2. INSPECT its inputs — dynamic schema, per model
wavespeed run bytedance/seedream-v5.0-pro -h

# 3. RUN it — always pass --json so you can read the result
wavespeed run bytedance/seedream-v5.0-pro \
-p "a cyberpunk skyline at golden hour" \
-i aspect_ratio="16:9" -i resolution="2k" --json
```

`run --json` returns `{ id, model, prompt, outputs: [url, ...], saved: [path, ...], elapsed_ms, raw }`. Keep `id` — it is the handle for `wavespeed show <id>` if anything is interrupted. Use the URL when the user wants a link. Add `--download` if they need bytes on disk.

## Recommended defaults

| Use case | Model |
|---|---|
| Text → image | `bytedance/seedream-v5.0-pro` |
| Image edit (instruction-driven) | `bytedance/seedream-v5.0-pro/edit` — requires `images: [url, ...]` |
| Text → video | `wavespeed-ai/minimax-h3/text-to-video` |
| Image → video | `wavespeed-ai/minimax-h3/image-to-video` — requires `image: url` |
| Video edit (instruction-driven) | `wavespeed-ai/minimax-h3/video-edit` — requires `video: url` |
| Video extend | `wavespeed-ai/minimax-h3/video-extend` — requires `video: url` |

These are good starting points. MiniMax H3 is the open-weights default: cheap, fast, and native stereo audio — the best place to start. When you need the highest quality, switch to `bytedance/seedance-2.5/*` (text-to-video, image-to-video, video-edit, video-extend). Browse alternatives with `wavespeed models <query>`.

## Common recipes

```bash
# Edit an existing image — @path uploads the file and passes its URL (one step)
wavespeed run bytedance/seedream-v5.0-pro/edit \
-p "replace the background with a sunlit kitchen" \
-i images='["@./input.jpg"]' --json

# Image-to-video — same @ marker for single-URL fields
wavespeed run wavespeed-ai/minimax-h3/image-to-video \
-p "subtle parallax, gentle wind" \
-i image=@./hero.jpg -i duration=5 --json

# Or upload separately when you need the URL itself
URL=$(wavespeed upload ./hero.jpg --json | jq -r .url)

# Save outputs locally with a template
wavespeed run ... -p "..." --download "./out/{index}.{ext}"
```

## Project config and aliases

If `wavespeed.json` exists (created by `wavespeed init`):

- **`defaultModel`** — lets `wavespeed run -p "…"` (no model arg) work.
- **Aliases** — named shortcuts that bundle model + default inputs. Run `wavespeed aliases` to see what's defined. `wavespeed run <alias> -h` shows the resolved schema. CLI `-i k=v` overrides alias defaults.

The CLI never modifies the user's prompt or inputs. The single exception is explicit: an `@path` value uploads that file and substitutes its hosted URL. Bare paths are never uploaded.

## Auth

`wavespeed status` shows whether the user is signed in. If not, ask them to run `wavespeed login` (opens https://wavespeed.ai/accesskey). **Never** ask the user to paste an API key into the chat — the CLI handles it.

## Pitfalls

- Local files: use `@./file.jpg` in `-i` values. Bare paths are NOT uploaded and the model will reject them.
- Don't invent model IDs. Always confirm via `wavespeed models` or `wavespeed schema <id>` before running.
- Use `--json` on every `run` so you can read `outputs[0]` programmatically.
- `wavespeed delete` requires `--yes` when run non-interactively (that includes you).
- Spend questions: `wavespeed usage` (totals, per-model) and `wavespeed billings` (per-charge records).
Loading