Generate music using ElevenLabs Music API - instrumental tracks, songs with lyrics, and fine-grained composition plans
95
93%
Does it follow best practices?
Impact
99%
1.57xAverage score across 5 eval scenarios
Passed
No findings from the security scan
{
"context": "Tests whether the agent uses the correct JavaScript SDK package, implements the two-step composition plan workflow for granular control, respects mutually exclusive parameters, and properly handles streaming audio output.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Correct JS package",
"description": "package.json lists '@elevenlabs/elevenlabs-js' as a dependency (not the deprecated 'elevenlabs' npm package or any other incorrect package)",
"max_score": 12
},
{
"name": "No deprecated package",
"description": "Does NOT reference or install the 'elevenlabs' npm package (the deprecated v1.x package)",
"max_score": 8
},
{
"name": "Correct client import",
"description": "Imports ElevenLabsClient from '@elevenlabs/elevenlabs-js' (not from a different package or using a different class name)",
"max_score": 10
},
{
"name": "Client instantiation",
"description": "Creates client using 'new ElevenLabsClient()' constructor",
"max_score": 5
},
{
"name": "Composition plan creation",
"description": "Calls client.music.compositionPlan.create() or equivalent method to generate a structured composition plan before composing audio",
"max_score": 15
},
{
"name": "Plan inspection step",
"description": "Includes a step that reads or logs properties of the composition plan (e.g., accessing sections, positiveGlobalStyles, or negativeGlobalStyles) between plan creation and audio generation",
"max_score": 8
},
{
"name": "Two-step workflow",
"description": "Uses a two-step workflow: first creates a composition plan, then passes that plan to a separate compose call (not a single call with just a prompt)",
"max_score": 12
},
{
"name": "Mutually exclusive params",
"description": "When composing with a composition plan, does NOT also pass a 'prompt' parameter to the compose call — uses one or the other",
"max_score": 10
},
{
"name": "Stream handling",
"description": "Handles audio output as a stream (e.g., using .pipe() to a write stream) rather than treating it as a single buffer",
"max_score": 10
},
{
"name": "Env var authentication",
"description": "Uses ELEVENLABS_API_KEY environment variable for authentication rather than hardcoding a key",
"max_score": 5
},
{
"name": "Music length parameter",
"description": "Passes a music_length_ms (or musicLengthMs in JS) parameter when creating the composition plan, with a value in the valid range (3000-600000)",
"max_score": 5
}
]
}