Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Validates all pre-generation gates before sending tracks to Suno. Checks sources verified, lyrics reviewed, pronunciation resolved, explicit flag set, style prompt complete, and artist names cleared. Use before generating tracks on Suno or when the user says "pre-gen check" or "ready to generate".
.claude/skills/bitwize-music-studio-pre-generation-check/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 208% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 171% | 0% |
| case-03 | ✓→✗ | ▼ Worse | -36% | 0% |
| case-08 | ✓→✗ | ▼ Worse | 106% | 0% |
| case-09 | ✓→✗ | ▼ Worse | 199% | 0% |
Input: $ARGUMENTS
Run all pre-generation gates on the specified album or track. Block generation if any gate fails.
You are a pre-generation validator. Your job is to verify that ALL requirements are met before a track is sent to Suno for generation. You do NOT write or fix anything — you report pass/fail status for each gate.
Role: Final checkpoint before Suno generation
lyric-writer (+ suno-engineer) → pronunciation-specialist → lyric-reviewer → pre-generation-check → [Generate in Suno]
↑
You are the final gateBefore running gates, check the track's frontmatter for instrumental: true and the Track Details table for **Instrumental** | Yes.
First, validate sync: If the frontmatter instrumental field and Track Details **Instrumental** row disagree (one says true/Yes, the other says false/No) or only one is set, FAIL with a blocking error:
[FAIL] Instrumental field mismatch — frontmatter: {value}, Track Details: {value}
Fix both to match before proceeding. Gate routing depends on this field.Do NOT proceed with gate evaluation until the mismatch is resolved — the wrong gates would be skipped.
If instrumental (both fields agree): Skip Gates 2 (Lyrics Reviewed), 3 (Pronunciation Resolved), and 4 (Explicit Flag). Mark them as SKIP — Instrumental track. Only run Gates 1, 5, and 6.
Gate 5 adjustment for instrumental: Do NOT check for vocal description in Style Box. Instead verify the Style Box has genre/instrumentation/mood. Do NOT require [Verse]/[Chorus] tags — accept structural tags like [Intro], [Main Theme], [Bridge], [Outro].
The MCP tool behind this skill reports 8 blocking gates plus 3 advisories (Style Box Descriptor Count, Performance Cues, Generation Settings).
Sources Verified field is Verified or N/APending or ❌ Pending/bitwize-music:verify-sources [album] to walk through human source verification for pending tracks.[TODO], [PLACEHOLDER], or template markers in lyrics/bitwize-music:lyric-writer [track] to write or complete the lyrics./bitwize-music:pronunciation-specialist [track] to scan and resolve pronunciation risks.Explicit field set to Yes or No (not empty/template)### Style Box heading in the track template)[Verse], [Chorus], etc.)[Verse 1 - cold regal]); bare tags are a common cause of flat, generic output### Generation Settings table must record a catalog model (v6, v6-wild, v6-mini, Custom: <name>) and Variety Off; at any higher Variety Suno rewrites the Style Box, so the descriptor checks above are meaningless. A PASS detail also notes when Max Mode is Off on a track targeting 2:30 or longer (Suno recommends it over two minutes; 2× credits). SKIP when the section is missing — add it from templates/track.md./bitwize-music:suno-engineer [track] to create the missing Style Box.${CLAUDE_PLUGIN_ROOT}/reference/suno/artist-blocklist.md/bitwize-music:suno-engineer [track] to regenerate the Style Box without artist names, or manually edit the Style Box to replace artist names with genre/style descriptors.run_pre_generation_gates(album_slug, track_slug) — returns all gate results (8 blocking + 3 advisory)run_pre_generation_gates(album_slug) — returns all gate results (8 blocking + 3 advisory)markdown# Pre-Generation Check **Album**: [name] **Date**: YYYY-MM-DD ## Track: [XX] - [Title] | Gate | Status | Details | |------|--------|---------| | Sources Verified | PASS | Verified 2025-01-15 | | Lyrics Reviewed | PASS | 247 words, all sections tagged | | Pronunciation Resolved | PASS | 3/3 entries applied | | Explicit Flag | PASS | Yes | | Style Prompt | PASS | "Male baritone, gritty..." | | Artist Names | PASS | No blocked names found | | Generation Settings | PASS | Model v6, Variety Off, Max Mode On | **Verdict**: READY FOR GENERATION --- ## Track: [XX] - [Title] | Gate | Status | Details | |------|--------|---------| | Sources Verified | FAIL | ❌ Pending | | Lyrics Reviewed | PASS | 312 words | | Pronunciation Resolved | FAIL | "live" unresolved in V2:L3 | | Explicit Flag | FAIL | Not set | | Style Prompt | PASS | Complete | | Artist Names | FAIL | "Nirvana" found in style prompt | | Generation Settings | WARN | Variety is 'Normal' — set Off | **Verdict**: NOT READY — 4 issues (3 blocking, 1 warning) **Warnings**: 2 --- ## Album Summary | Status | Count | |--------|-------| | Ready | 6 | | Not Ready | 2 | | **Total** | **8** | **Blocking issues**: 3 **Warnings**: 1 **Album verdict**: NOT READY — fix 2 tracks before proceeding
Your deliverable: Pass/fail report with album-level verdict.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 12,377 | 5,464 | -56% | 1 | 1 | 0% | 1,903 | 2,208 | +16% | 0 | 0 | — |
case-02 | fail→fail | 10,089 | 3,981 | -61% | 1 | 1 | 0% | 1,834 | 2,067 | +13% | 0 | 0 | — |
case-03 | pass→fail | 19,431 | 5,284 | -73% | 1 | 1 | 0% | 3,289 | 2,106 | -36% | 0 | 0 | — |
case-04 | pass→pass | 5,070 | 5,633 | +11% | 1 | 1 | 0% | 889 | 2,931 | +230% | 0 | 0 | — |
case-05 | fail→fail | 3,341 | 5,069 | +52% | 1 | 1 | 0% | 604 | 2,113 | +250% | 0 | 0 | — |
case-06 | pass→pass | 11,809 | 4,100 | -65% | 1 | 1 | 0% | 1,861 | 2,577 | +38% | 0 | 0 | — |
case-07 | fail→fail | 3,997 | 5,159 | +29% | 1 | 1 | 0% | 540 | 2,210 | +309% | 0 | 0 | — |
case-08 | pass→fail | 6,647 | 5,324 | -20% | 1 | 1 | 0% | 1,068 | 2,196 | +106% | 0 | 0 | — |
case-09 | pass→fail | 4,983 | 5,492 | +10% | 1 | 1 | 0% | 742 | 2,215 | +199% | 0 | 0 | — |
case-10 | pass→fail | 10,012 | 7,629 | -24% | 1 | 1 | 0% | 1,690 | 2,192 | +30% | 0 | 0 | — |
case-11 | fail→pass | 6,620 | 6,701 | +1% | 1 | 1 | 0% | 1,024 | 3,151 | +208% | 0 | 0 | — |
case-12 | fail→fail | 10,536 | 5,746 | -45% | 1 | 1 | 0% | 1,851 | 2,087 | +13% | 0 | 0 | — |
case-13 | pass→fail | 11,789 | 6,056 | -49% | 1 | 1 | 0% | 1,900 | 2,143 | +13% | 0 | 0 | — |
case-14 | pass→fail | 7,123 | 5,252 | -26% | 1 | 1 | 0% | 1,105 | 2,111 | +91% | 0 | 0 | — |
case-15 | fail→pass | 6,027 | 4,183 | -31% | 1 | 1 | 0% | 925 | 2,508 | +171% | 0 | 0 | — |
case-16 | pass→pass | 11,330 | 7,355 | -35% | 1 | 1 | 0% | 1,772 | 3,269 | +84% | 0 | 0 | — |
case-17 | pass→fail | 4,526 | 5,006 | +11% | 1 | 1 | 0% | 809 | 2,152 | +166% | 0 | 0 | — |
case-18 | fail→fail | 7,308 | 11,780 | +61% | 1 | 1 | 0% | 1,254 | 3,719 | +197% | 0 | 0 | — |
case-19 | fail→fail | 26,528 | 3,998 | -85% | 1 | 1 | 0% | 1,182 | 1,993 | +69% | 0 | 0 | — |
case-20 | pass→fail | 5,863 | 7,634 | +30% | 1 | 1 | 0% | 859 | 2,395 | +179% | 0 | 0 | — |
case-21 | pass→fail | 4,515 | 7,650 | +69% | 1 | 1 | 0% | 648 | 3,127 | +383% | 0 | 0 | — |
case-22 | pass→fail | 16,426 | 22,016 | +34% | 1 | 1 | 0% | 3,014 | 5,739 | +90% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 7 counted toward the lift figure. The other 15 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -36 percentage points is the difference between those two pass rates over the 7 comparable cases. 11 cases got worse with the skill loaded, and they are included in that figure.
The publisher has shipped newer versions since this run, so these numbers describe v1, not the version currently listed.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.