WaveSpeedAI

Generate Images and Video Inside OpenCode with the WaveSpeed Skill

OpenCode loads skills from .claude/skills — which is exactly where wavespeed skill install writes. One command and the agent can search the model catalog, read input schemas, and run any image, video, audio, or 3D model.

By WaveSpeedAI3 min read

OpenCode resolves agent skills from several directories, and .claude/skills is on that list — project-local and global. That makes WaveSpeed setup a genuine one-liner, because the wavespeed CLI already installs its skill exactly there:

npm install -g @wavespeed/cli
wavespeed login            # opens the key page at wavespeed.ai, validates the paste
wavespeed skill install    # writes .claude/skills/wavespeed/SKILL.md — OpenCode picks it up

No plugin, no MCP server, no OpenCode-specific packaging. The skill is the same file that serves Claude Code, Cursor, and Codex.

What the agent does with it

Every model on wavespeed.ai is one wavespeed run <model-id> command. The skill teaches the find → inspect → run pattern:

# 1. FIND a model in the live catalog
wavespeed models "seedream"
wavespeed models --type image-to-video --popular

# 2. INSPECT its real input schema (fetched live, per model)
wavespeed run bytedance/seedream-v5.0-pro -h

# 3. RUN it, reading the result as JSON
wavespeed run bytedance/seedream-v5.0-pro \
  -p "a cyberpunk skyline at golden hour" \
  -i aspect_ratio="16:9" -i resolution="2k" --json

That ordering matters: agents that guess parameter names burn runs on validation errors, so the skill makes the schema part of the loop.

Local files go through the @path marker — uploaded and substituted with a hosted URL in one step:

# Edit a local image
wavespeed run bytedance/seedream-v5.0-pro/edit \
  -p "replace the background with a sunlit kitchen" \
  -i images='["@./input.jpg"]' --json

# Animate a local still
wavespeed run bytedance/seedance-2.5/image-to-video \
  -p "subtle parallax, gentle wind" -i image=@./hero.jpg --json

Cost control

wavespeed price bytedance/seedream-v5.0-pro -i resolution=2k   # quote, no charge
wavespeed balance

Many models bill from an input — audio duration, frame count. Quote without those and the formula collapses to the model’s base price, the floor of its range; the command names the inputs it was blind to (unpriced_inputs in --json). The amount actually charged for a run is authoritative.

Sharp edges

  • Bare paths are not uploaded. -i image=./photo.jpg sends the literal string. Use @./photo.jpg.
  • Don’t invent model IDs — confirm via wavespeed models or wavespeed schema <id> first.
  • Always --json on runs so the agent reads outputs[0] programmatically.
  • Project defaults and aliases live in wavespeed.json (wavespeed init writes one).

Where things live

Share