Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

threejs-audio-generator — Claude Code skill: Three.js audio

A skill that turns ElevenLabs into game audio for Three.js: effects, loops, music and voice lines, written straight into the project.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add majidmanzarpour/threejs-game-skills --skill threejs-audio-generator -a claude-code
Open on GitHub

What threejs-audio-generator does

The skill wraps ElevenLabs in a single script, scripts/threejs_audio_asset.py. Subcommands sfx, music, tts, voice-change and isolate drop finished mp3 files into the game project. Read references/audio-workflows.md before the first batch: it holds the audio matrix, prompt patterns and the shape of the Web Audio manager with loading, looping and gesture unlock.

Music takes either a prompt with --duration from 3 to 600 seconds, or a composition_plan JSON passed through --plan. The --seed flag only works alongside a plan. ElevenLabs has no loop flag in its API, so track length and loop seams get handled by following the reference.

A key exported only in your shell profile can be missing from the process env; the sibling threejs-game-director/scripts/probe_asset_credentials.sh sources the profile. probe reports whether the key is there, and --validate also hits GET /user. If a valid key still fails with HTTP 4xx on a real generation, look at credits or the plan before you go debugging the key.

What it helps with

  • generate a pickup effect from a text prompt
  • build a looping ambience bed for a level
  • write a 60-second boss theme that loops without a fade
  • clean up a noisy boss line before it reaches the game
  • convert a scratch voice performance into a finished character line

Example prompts for the agent

  • Generate a short explosion SFX into `assets/audio/sfx/` with the threejs-audio-generator skill
  • Make a 12-second looping arena ambience and wire it to the match start event
  • Run `isolate` on `assets/audio/source/noisy-boss-line.wav`, then `voice-change` it with the boss voice ID

How to install threejs-audio-generator

1Skills CLI (Vercel)

npx skills add majidmanzarpour/threejs-game-skills --skill threejs-audio-generator -a claude-code

2Manually: put the files in place

~/.claude/skills/threejs-audio-generator/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/threejs-audio-generator/

From the same set4

The whole set →

Similar

unreal-cpp-gameplay gamedev-skills Teaches the agent to write UE5 gameplay C++: reflection macros, Gameplay Framework class roles, and module dependencies in *.Build.cs. Claude Code CX Codex Cursor +1 5,000installs unreal-niagara gamedev-skills Walks the agent through Niagara in Unreal Engine 5: system and emitter assets, module stacks in the spawn/update stages, effects spawned from Blueprint or C++. Claude Code CX Codex Cursor +1 4,900installs unreal-enhanced-input gamedev-skills Configures Unreal Engine 5 Enhanced Input assets, C++ bindings, and triggers. Useful when wiring movement, look, and jump controls or fixing input loss on clients. Claude Code CX Codex Cursor +1 4,900installs sprite-pipeline official OpenAI Creates and normalizes 2D animation strips from an approved frame. Use it when game sprites need consistent scale and alignment before review. CX Codex GP ChatGPT 53installs orbit-card heygen-com Adds a 10-second 1920×1080 HyperFrames motion block where a single feature card orbits a dot sphere using exported Blender camera paths. Claude Code CX Codex Cursor +1 9,800installs sdf earthtojake This skill authors and validates SDFormat files for models and worlds, then helps prepare them for simulator handoff. Claude Code CX Codex Cursor +1 10,500installs urdf earthtojake This skill helps create, validate, and debug URDF robot descriptions. Use it when working with links, joints, geometry, meshes, or inertial data. Claude Code CX Codex Cursor +1 10,400installs hatch-pet official openai Creates and packages animated pets and spritesheets for Codex. Use it to turn a character concept, reference image, or brand cues into a pet. Claude Code CX Codex Cursor +1 3,300installs

Questions about threejs-audio-generator

How do I install threejs-audio-generator in Claude Code?

Run npx skills add majidmanzarpour/threejs-game-skills --skill threejs-audio-generator -a claude-code. The skill lands at ~/.claude/skills/threejs-audio-generator/SKILL.md.

What does threejs-audio-generator do?

It generates and processes audio for Three.js games through ElevenLabs: effects, loops, music tracks, TTS lines and voice conversion. It also covers how those files get loaded through Web Audio.

Should I use `tts` or `voice-change` for a boss line?

tts builds a clean line from text. Pick voice-change when the timing and acting of a scratch performance matter. Isolate noisy speech first so the conversion starts from a clean take.

Source text

SKILL.md · MIT
---
name: threejs-audio-generator
description: "Generate, convert, clean, and integrate audio for Three.js browser games with ElevenLabs: sound effects, looping ambience, music tracks and loops (menu, gameplay, boss, victory/defeat stingers), UI sounds, impact/weapon/vehicle audio, creature and boss stingers, announcer and dialogue TTS, voice conversion from a scratch performance, voice cleanup, audio manifests, and Web Audio integration."
---

# Three.js Audio Generator

Game-ready audio for Three.js projects: SFX, music, voice work, cleanup, and runtime integration. Provider: ElevenLabs.

Resolve `<this-skill-dir>` from the actual loaded skill file. Resolve sibling skills beside it first, then use the runner's discovered paths. Do not mix installed versions or assume a particular home directory.

## Reference

`references/audio-workflows.md` — the audio matrix, prompt patterns, generation, music, and voice strategy, Web Audio manager shape, and runtime failure modes. Read it before planning a game's audio, generating a batch, wiring runtime playback, or converting voices.

## When to use

SFX (jumps, hits, weapons, explosions, pickups, collisions, UI clicks) · music (menu and gameplay loops, boss themes, intensity layers, win/lose stingers) · ambience (wind, rain, city bed, engine hum, room tone, arena beds) · voice (announcer barks, boss lines, tutorial prompts, menu narration) · voice conversion from a scratch performance when timing and acting matter · cleanup and isolation before conversion or final use · Web Audio integration with loading, looping, manifests, volume groups, pause/resume, and gesture unlock.

Audio is not cosmetic for a premium game. Build an audio matrix from the events the game actually has; do not add dialogue, weapons, music, or ambience layers just to fill categories. Respect explicit silent, procedural-audio, accessibility, and external-service constraints. A narrow sound fix does not need a new soundtrack.

## API key

The script reads `--api-key` or `ELEVENLABS_API_KEY`. Keys never go in skill files, game code, or reports.

```bash
python3 <this-skill-dir>/scripts/threejs_audio_asset.py probe   # ELEVENLABS_API_KEY=SET|MISSING
```

Keys defined only in a shell profile can be absent from the process env; `threejs-game-director/scripts/probe_asset_credentials.sh` sources the profile and probes all three providers.

Add `--validate` to call `GET /user` and confirm the key actually works (prints `VALID_USER=...`) when a key is present but generation fails. A valid key can still be blocked by credit or plan limits, which surface as an `HTTP 4xx` from a real generation attempt — report that as a plan blocker rather than a missing key.

## Commands

Run from the game project directory:

```bash
python3 <this-skill-dir>/scripts/threejs_audio_asset.py sfx \
  --prompt "tight futuristic boost pickup, bright transient, short sparkling tail, arcade racing game" \
  --duration 1.2 --prompt-influence 0.65 --out assets/audio/sfx/boost-pickup.mp3

python3 <this-skill-dir>/scripts/threejs_audio_asset.py sfx \
  --prompt "seamless cyber resort ambience, distant surf, soft neon transformer hum, gentle crowd bed" \
  --duration 12 --loop --prompt-influence 0.45 --out assets/audio/ambience/cyber-resort-loop.mp3

python3 <this-skill-dir>/scripts/threejs_audio_asset.py music \
  --prompt "driving synthwave race loop, 128 BPM, punchy analog bass, bright arpeggios, steady energy with no intro or fade-out, designed to loop" \
  --duration 60 --instrumental --out assets/audio/music/race-loop.mp3

python3 <this-skill-dir>/scripts/threejs_audio_asset.py tts \
  --text "Perfect shot." --voice-id JBFqnCBsd6RMkjVDRZzb --out assets/audio/voice/perfect-shot.mp3

python3 <this-skill-dir>/scripts/threejs_audio_asset.py isolate \
  --input assets/audio/source/noisy-boss-line.wav --out assets/audio/voice/boss-line-clean.mp3

python3 <this-skill-dir>/scripts/threejs_audio_asset.py voice-change \
  --input assets/audio/source/scratch-boss-line.wav --voice-id JBFqnCBsd6RMkjVDRZzb \
  --remove-background-noise --out assets/audio/voice/boss-line-final.mp3
```

## Defaults

- SFX: `mp3_44100_128`, 0.5–2.5s, prompt influence 0.55–0.8.
- UI: 0.15–0.8s, high prompt influence, transients kept clear.
- Ambience: 8–30s with `--loop`, prompt influence 0.3–0.55.
- Music: `music --prompt` (`--duration` 3–600s, `--instrumental`) or `--plan FILE` with a `composition_plan` JSON for sectioned tracks (`--seed` works only with plans). The API has no loop flag; lengths, looping, and layering are in the reference's Music Strategy.
- Voice: TTS for clean generated lines; `voice-change` when timing and acting from a scratch performance matter. Isolate noisy speech first.
- Runtime: generate into the game project and load through Web Audio. Follow the project's asset/version-control policy; do not commit or publish unless asked. No API keys in browser code.

## Recovery and Coordination

For coordinated games use the director's `references/asset-recovery.md`. Preserve outputs and the audio trigger mapping before retrying work. Distinguish missing credentials, permissions, exhausted credits, invalid input, and transient service failures. Reconcile an uncertain paid request before resubmitting; these one-shot commands do not implement Tripo task resume. Keep independent gameplay work moving and provide a local/synthesized fallback with honest limitations when genuinely blocked.

Listen to a representative effect or line before generating a batch. Test it through its real game event, then give the lead paths and local playback findings for one consolidated QA pass.

## Report

Generated and processed file paths, the prompts, composition plans, text, source files, voice IDs, durations, loop flags and loop points and formats behind them, the runtime trigger mapping and audio groups, and any remaining gaps or plan limits.

© majidmanzarpour · MIT · majidmanzarpour/threejs-game-skills

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor