Skip to content
Content
Skill

/generate

Generates a track on Suno through Suno's official MCP server - a song, a cover of another Suno song, a track sung in a saved Voice, a spoken-word piece, or a sketch that plays a MIDI score. Runs the pre-generation gates, shows the cost, waits for a go-ahead, makes two takes,

From plugin
bitwize-music
66861 skills1 hook1 MCP

Claude Code

$ npx -y skills add bitwize-music-studio/claude-ai-music-skills --skill generate --agent claude-code

SKILL.md

generate.SKILL.md
name: generate
description: Generates a track on Suno through Suno's official MCP server - a song, a cover of another Suno song, a track sung in a saved Voice, a spoken-word piece, or a sketch that plays a MIDI score. Runs the pre-generation gates, shows the cost, waits for a go-ahead, makes two takes, logs them and hands off to listening. Use when the user says "generate track N", "regenerate", or is ready to make audio. Falls back to the clipboard flow when the Suno server is not connected.
argument-hint: <album-name> [track-number-or-slug] [--midi [file]] [--no-listen] [--no-check]
model: sonnet
effort: medium
prerequisites:
  - suno-engineer
allowed-tools:
  - Read
  - Edit
  - bitwize-music-mcp
  - mcp__suno__*

Your Task

**Input**: $ARGUMENTS

Generate one track on Suno through the Suno MCP server: check the gates, show what it will cost, get a go-ahead, generate, log the takes, and hand off to listening.

You never choose a take, mark one as the keeper, set a track `Final` or publish a song. The user listens and decides.

---

Generate Skill

You run the generation hop — the one step that used to mean leaving the terminal for suno.com.

pre-generation-check → generate → listen → [user picks the keeper] → import-audio --from-suno
                          ↑
                    You are here

Setup, costs, the track-file mapping and the tool notes are in `${CLAUDE_PLUGIN_ROOT}/reference/suno/mcp-api-mapping.md`. Read it before your first Suno call in a session.

Step 1: Resolve the Track

Expected format: `<album-name> [track-number-or-slug] [--midi [file]] [--no-listen] [--no-check]`

If arguments are missing, show:

Usage: /generate <album-name> <track> [--midi [file]] [--no-listen] [--no-check]

Example: /generate sample-album 03

`--midi` makes the track from a MIDI file: see **From a MIDI Score** before Step 4.

With a track, this run generates that one track. With an album and no track, go to **Album Mode** below: every track that is ready, after one summary and one go-ahead. If the user names a few tracks, do them one at a time — each gets its own summary and its own go-ahead.

Step 2: Run the Gates

Call `run_pre_generation_gates(album_slug, track_slug)`.

  • **Any blocking gate failed** → show the failed gates and the fix for each, then stop. You fix nothing yourself.
  • **Warnings only** → show them and continue.

Step 3: Check the Suno Server

Follow § Preflight in `${CLAUDE_PLUGIN_ROOT}/reference/suno/mcp-api-mapping.md`:

1. Find `audio-create`, `audio-wait` and `account-usage` on a connected MCP server. Load their definitions now; do not rely on a parameter list you remember. 2. Not connected or not signed in → show the **Fallback** below and stop. 3. Call `account-usage` and keep `allowed_models`, `features`, `suno_account.credits_remaining` and `suno_account.download_credits_remaining`.

Step 4: Build the Request

Call `get_generation_request(album_slug, track_slug)`. It reads what kind of request the track makes and names the Suno tool to send it to in `tool`: a song (`audio-create`), a cover (`audio-covers-create`) or spoken word (`speech-create`). The differences are under **Covers, Voices and Spoken Tracks**.

| Result | Do | |--------|-----| | `found: false` | Report the error and stop | | `supported: false` | List the blocking problems and stop. For `custom_model_unsupported` or `cover_source_not_on_suno`, show the **Fallback** | | `tool` is not `audio-create` | Find that tool and load its definition as in Step 3. `features` lacks `generate.cover` (a cover) or `speech` (spoken word) → say the plan does not include it and stop | | `voice` is set | `voices-list(query: <voice.name>)`; nothing found → once more with `collection: "loved"`. One match, or one whose name is exactly the Voice's → add its `id` to the request as `voice_id`. Several otherwise → ask which. None, or `features` lacks `voices` → name the Voice, say it was not found on the Suno account, point to `/bitwize-music:suno-voice` (it lists their Voices, and gives Suno's link to make a new one when they ask), and stop | | `track_status` is `Final` | Say the track already has an approved take and ask whether to regenerate. Stop unless the answer is yes | | `request.model` is not in `allowed_models` | Say the plan does not include that model and stop | | A key in `needs_grant` while `features` lacks `controls.advanced` | Remove that key from the request and remember to say so in the summary. A dotted name such as `controls.weirdness` is a key inside `controls`; `controls.variety` is never listed and stays | | Warnings in `problems` | Show them and continue |

Also call `get_listen_plan(album_slug, track_slug)` and keep `mode`, `confirm_download`, `player` and `iterm2` for the summary.

Step 4b: The Album's Workspace

Each album's takes live in a Suno workspace of their own, so they are easy to find on suno.com. Call `get_album_workspace(album_slug)`. Skip this step when `enabled` is false (`generation.suno_workspaces: false` in the config).

  • `workspace` set → call `workspaces-list(query: <workspace.name>)` and look for `workspace.id` among the answers. Found → `request.workspace_id` is already set; nothing more to do. Not found → the workspace was deleted on suno.com: say so and offer "create it again" or "carry on without". Never recreate it silently. For "carry on without", drop `workspace_id` from `request` for this run.
  • `workspace` null → plan to create one in Step 6: keep `suggested_name` and `batches`, and add the **Workspace** line to the summary.

Step 5: Show the Summary and Get a Go-Ahead

Nothing has been spent yet. Show exactly what will be sent and what it costs:

READY TO GENERATE — [NN] [Title]  ([album])

  Model      v6
  Takes      2 (one call always makes two)
  Max Mode   On — costs a multiple of the usual credits (2× on suno.com)
  Variety    Off — the Style Box is used as written
  Sliders    Weirdness 50 · Style Influence 50
  Du
Read more
@bitwize-music-studio
Ships withbitwize-music

I love music but never learned an instrument. AI became the creative outlet that was always out of reach. This project started as a way to go deep on Claude Code plugin architecture, agentic workflows, multi-model orchestration, and MCP tooling.

66861 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
668
Star history of bitwize-music-studio/claude-ai-music-skills on GitHub, a chart by star-history.com

Other skills on bitwize-music.

More skills from other plugins.

prompt-lookup

prompt-lookup

Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…

@gh-f@gh-fInstall Skill
ppt-master

ppt-master

AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…

@hugohe3@hugohe3Install Skill
morph-ppt

morph-ppt

Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…

@iofficeai@iofficeaiInstall Skill

Questions about generate.

Which coding agents can use generate?
generate installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.