summer-engine 1.5.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{marketplace.json → .claude-plugin/marketplace.json} +3 -3
- package/.claude-plugin/plugin.json +52 -11
- package/.codex-plugin/plugin.json +69 -8
- package/.cursor-plugin/plugin.json +53 -12
- package/.factory-plugin/plugin.json +20 -0
- package/.opencode/INSTALL.md +75 -0
- package/.opencode/plugins/summer.js +9 -6
- package/AGENTS.md +51 -0
- package/CHANGELOG.md +31 -1
- package/CLAUDE.md +5 -0
- package/GEMINI.md +56 -0
- package/README.md +409 -80
- package/_persona/summer/SKILL.md +113 -0
- package/dist/bin/summer.js +0 -0
- package/dist/commands/assets.d.ts +2 -0
- package/dist/commands/assets.js +189 -0
- package/dist/commands/create.js +55 -17
- package/dist/commands/debug.d.ts +2 -0
- package/dist/commands/debug.js +127 -0
- package/dist/commands/install.js +2 -2
- package/dist/commands/list.js +24 -5
- package/dist/commands/project.d.ts +2 -0
- package/dist/commands/project.js +170 -0
- package/dist/commands/scene.d.ts +2 -0
- package/dist/commands/scene.js +290 -0
- package/dist/lib/banner.js +2 -2
- package/dist/lib/log-filters.d.ts +53 -0
- package/dist/lib/log-filters.js +130 -0
- package/dist/lib/plugin-manifests.test.d.ts +1 -0
- package/dist/lib/plugin-manifests.test.js +134 -0
- package/dist/lib/remote-templates.d.ts +25 -0
- package/dist/lib/remote-templates.js +86 -0
- package/dist/lib/skills-registry.d.ts +283 -3
- package/dist/lib/skills-registry.js +522 -2
- package/dist/lib/telemetry.d.ts +13 -0
- package/dist/lib/telemetry.js +63 -0
- package/dist/lib/with-engine.d.ts +14 -0
- package/dist/lib/with-engine.js +109 -0
- package/dist/mcp/tools/asset-tools.js +12 -13
- package/dist/mcp/tools/debug-tools.js +32 -9
- package/dist/mcp/tools/generate-tools.js +101 -0
- package/dist/mcp/tools/with-engine.js +4 -0
- package/gemini-extension.json +2 -2
- package/hooks/pre-commit-doctor.sh +0 -0
- package/hooks/run-hook.cmd +0 -0
- package/hooks/session-start.sh +0 -0
- package/package.json +11 -5
- package/skills/2d-assets/character-portrait/SKILL.md +196 -0
- package/skills/2d-assets/concept-art/SKILL.md +152 -0
- package/skills/2d-assets/pixel-art/SKILL.md +180 -0
- package/skills/2d-assets/skybox-panorama/SKILL.md +207 -0
- package/skills/2d-assets/sprite-sheet/SKILL.md +239 -0
- package/skills/2d-assets/tileable-texture/SKILL.md +205 -0
- package/skills/2d-assets/ui-graphics/SKILL.md +210 -0
- package/skills/3d-assets/character-model/SKILL.md +225 -0
- package/skills/3d-assets/environment-kit/SKILL.md +164 -0
- package/skills/3d-assets/organic-model/SKILL.md +192 -0
- package/skills/3d-assets/prop-model/SKILL.md +133 -0
- package/skills/3d-assets/vehicle-model/SKILL.md +202 -0
- package/skills/README.md +1 -1
- package/skills/_meta/skill-create/SKILL.md +1 -1
- package/skills/_meta/skill-improve/SKILL.md +1 -1
- package/skills/_meta/skill-test/SKILL.md +1 -1
- package/skills/_meta/using-summer/SKILL.md +130 -0
- package/skills/ai-and-npcs/design-npc/SKILL.md +3 -1
- package/skills/animation/animation-tree/SKILL.md +260 -0
- package/skills/animation/facial-and-lipsync/SKILL.md +282 -0
- package/skills/animation/generate-motion/SKILL.md +129 -0
- package/skills/animation/procedural-animation/SKILL.md +234 -0
- package/skills/animation/retarget/SKILL.md +172 -0
- package/skills/asset-pipeline/asset-strategy/SKILL.md +102 -212
- package/skills/audio/adaptive-music/SKILL.md +326 -0
- package/skills/audio/ambient-bed/SKILL.md +278 -0
- package/skills/audio/music-track/SKILL.md +268 -0
- package/skills/audio/sound-effect/SKILL.md +237 -0
- package/skills/audio/voice-line/SKILL.md +253 -0
- package/skills/catalog.yaml +266 -5
- package/skills/character-controllers/fps-controller/SKILL.md +1 -1
- package/skills/debugging/debug/SKILL.md +102 -82
- package/skills/rendering-and-lighting/3d-lighting/SKILL.md +1 -1
- package/skills/scene-and-project/browse-templates/SKILL.md +105 -0
- package/skills/scene-and-project/make-game/SKILL.md +159 -346
- package/skills/scene-and-project/new-project/SKILL.md +106 -0
- package/skills/scene-and-project/scene-composition/SKILL.md +1 -1
- package/skills/scripting-patterns/gdscript-patterns/SKILL.md +1 -1
- package/skills/ui-and-ux/ui-basics/SKILL.md +1 -1
- package/skills/video/animated-loop/SKILL.md +200 -0
- package/skills/video/cinematic-cutscene/SKILL.md +204 -0
- package/skills/video/trailer-shot/SKILL.md +203 -0
- package/skills/visual-effects/_building-blocks/additive-billboard-particles.md +28 -0
- package/skills/visual-effects/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
- package/skills/visual-effects/_building-blocks/trauma-shake-snippet.md +51 -0
- package/skills/visual-effects/{vfx → game-feel}/SKILL.md +1 -1
- package/skills/visual-effects/recipes/dissolve/SKILL.md +349 -0
- package/skills/visual-effects/recipes/fire/SKILL.md +387 -0
- package/skills/visual-effects/recipes/hit-spark/SKILL.md +330 -0
- package/skills/visual-effects/recipes/lightning/SKILL.md +372 -0
- package/skills/visual-effects/recipes/magic-glow/SKILL.md +377 -0
- package/skills/visual-effects/recipes/muzzle-flash/SKILL.md +326 -0
- package/skills/visual-effects/recipes/smoke/SKILL.md +381 -0
- package/skills/visual-effects/recipes/water-ripple/SKILL.md +340 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: voice-line
|
|
3
|
+
description: Use when generating TTS voice lines — NPC barks, narrator, dialogue. Includes voice-id discovery via summer_list_models family:'audio-voice', a character-to-voice decision tree, stability/style/similarity guidance, and the multi-line dialogue case via text_to_dialogue. Trigger on "make a voice line", "narrator", "NPC says", "voice for the merchant", "TTS line", "dialogue".
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: audio
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools: Read Grep Glob Write Edit summer_generate_voice summer_generate_audio summer_list_models summer_search_assets summer_import_from_url summer_add_node summer_set_prop summer_inspect_node
|
|
9
|
+
paths: ["audio/voice/**", "scripts/**", "**/*.tscn"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /voice-line — Generate TTS Voice for NPCs, Narrator, Dialogue
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
The hardest part of TTS isn't the line — it's picking the right voice. ElevenLabs ships hundreds; pick wrong and a tough warlord NPC sounds like a podcast host. This skill walks the voice-id discovery flow (`summer_list_models` family `audio-voice`), narrows by gender / accent / age / energy, presents 4–5 finalists with sample URLs for the user to audition, and locks the pick before generating.
|
|
17
|
+
|
|
18
|
+
Then it generates one line (or a multi-turn dialogue) with the right stability / style / similarity / speed for the delivery — flat for narration, expressive for a bark, fast for an excited shout.
|
|
19
|
+
|
|
20
|
+
## When to use
|
|
21
|
+
|
|
22
|
+
- NPC bark, narrator line, dialogue between two characters, tutorial voice, menu announcer.
|
|
23
|
+
- Multi-line conversation with two or more voices → use `text_to_dialogue` capability.
|
|
24
|
+
|
|
25
|
+
## When NOT to use
|
|
26
|
+
|
|
27
|
+
- Non-verbal vocal SFX (grunt, scream) → `audio/sound-effect` with prompt `male grunt of pain, mid-thirties, sharp, 400ms`.
|
|
28
|
+
- Pre-recorded voice from a real actor — import the .mp3 / .wav with `summer_import_from_url` and skip TTS.
|
|
29
|
+
|
|
30
|
+
## Steps
|
|
31
|
+
|
|
32
|
+
### 1. Read the audio bible and any character notes
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Read .summer/audio-bible.md
|
|
36
|
+
Read .summer/characters.md # if present
|
|
37
|
+
Glob .summer/characters/*.md
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If a character bible exists, the voice should match the character's age / gender / regional origin / energy. If it doesn't, ask:
|
|
41
|
+
|
|
42
|
+
> Tell me the character: gender, rough age, accent or regional flavor, and energy (calm / measured / excited / gruff). Or just give me a reference — "sounds like the captain in Mass Effect" works.
|
|
43
|
+
|
|
44
|
+
### 2. Browse the voice catalog
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
summer_list_models(family="audio-voice")
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Returns a list with `id`, `name`, `accent`, `gender`, `age`, `description`, and `previewUrl`. Filter mentally to 8–12 candidates by the character's hard constraints (gender + age + accent), then pick 4–5 finalists with maximally distinct character (gruff vs warm vs neutral vs theatrical).
|
|
51
|
+
|
|
52
|
+
Present them to the user like this:
|
|
53
|
+
|
|
54
|
+
> Four finalists for "old gruff dwarven warlord":
|
|
55
|
+
> 1. **Brogan** — male, 50s, rough Scottish, gravelly. Sample: `<previewUrl>`
|
|
56
|
+
> 2. **Hodge** — male, 60s, neutral, weathered baritone. Sample: `<previewUrl>`
|
|
57
|
+
> 3. **Marrick** — male, 40s, rough English, mid-energy. Sample: `<previewUrl>`
|
|
58
|
+
> 4. **Old Drum** — male, 70s, deep, slow speech. Sample: `<previewUrl>`
|
|
59
|
+
> Audition and pick one. Or ask for four more.
|
|
60
|
+
|
|
61
|
+
Wait for the user. Do not pick for them — voice is the highest-stakes audio decision in the project.
|
|
62
|
+
|
|
63
|
+
### 3. Character-to-voice decision tree (when the user wants a recommendation)
|
|
64
|
+
|
|
65
|
+
If the user says "you pick", lean on this tree:
|
|
66
|
+
|
|
67
|
+
| Character archetype | Look for |
|
|
68
|
+
|---|---|
|
|
69
|
+
| Old gruff warlord | male, 50–70, rough or weathered, low pitch, slow speech, regional accent for color |
|
|
70
|
+
| Wise mentor | male or female, 50+, neutral or warm, measured cadence, mid-low pitch |
|
|
71
|
+
| Excited young hero | 18–28, high energy, mid-high pitch, your own region's dominant accent |
|
|
72
|
+
| Cold villain | 30–50, neutral or theatrical, low-mid pitch, slow with sharp consonants |
|
|
73
|
+
| Mischievous trickster | varies age, theatrical, light pitch, fast cadence |
|
|
74
|
+
| Calm scholarly NPC | 30–50, neutral, mid pitch, even cadence, no regional color |
|
|
75
|
+
| Scared child | child voice if available; otherwise high-pitched young adult with high stability |
|
|
76
|
+
| Robotic / AI | flat / synthesized voice; or any voice with `stability=1.0` and `style=0.0` for monotone |
|
|
77
|
+
| Narrator (cinematic) | mid-deep male or female, neutral or theatrical, even cadence, very stable |
|
|
78
|
+
| Narrator (intimate) | warmer, mid pitch, lower stability for breathy nuance |
|
|
79
|
+
|
|
80
|
+
### 4. Lock the voice id
|
|
81
|
+
|
|
82
|
+
After the pick:
|
|
83
|
+
|
|
84
|
+
> Locked voice: `Hodge` (id `21m00Tcm4TlvDq8ikWAM`). I'll use this for all `<character>` lines unless you say otherwise.
|
|
85
|
+
|
|
86
|
+
Save it in `.summer/voice-cast.md`:
|
|
87
|
+
|
|
88
|
+
```markdown
|
|
89
|
+
# Voice Cast
|
|
90
|
+
|
|
91
|
+
| Character | Voice name | Voice id | Notes |
|
|
92
|
+
|---|---|---|---|
|
|
93
|
+
| Captain Hodge | Hodge | 21m00Tcm4TlvDq8ikWAM | Calm, weathered, low-mid |
|
|
94
|
+
| Bram the Smith | Brogan | <id> | Gruff Scottish, mid energy |
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
This is the cast bible. Every future voice line uses these ids — consistency is the point.
|
|
98
|
+
|
|
99
|
+
### 5. Tune stability / similarity / style / speed for delivery
|
|
100
|
+
|
|
101
|
+
ElevenLabs voice options:
|
|
102
|
+
|
|
103
|
+
| Param | Range | Effect |
|
|
104
|
+
|---|---|---|
|
|
105
|
+
| `stability` | 0.0–1.0 | Higher = monotone, consistent. Lower = expressive, variable. |
|
|
106
|
+
| `similarity_boost` | 0.0–1.0 | Higher = closer to the original sample. Lower = more freedom (can drift). |
|
|
107
|
+
| `style` | 0.0–1.0 | Higher = more theatrical / exaggerated. 0 = neutral. |
|
|
108
|
+
| `speed` | 0.7–1.2 | Speech speed multiplier. |
|
|
109
|
+
|
|
110
|
+
Defaults that work as a starting point:
|
|
111
|
+
|
|
112
|
+
| Delivery | stability | similarity_boost | style | speed |
|
|
113
|
+
|---|---|---|---|---|
|
|
114
|
+
| Calm narration | 0.75 | 0.75 | 0.0 | 1.0 |
|
|
115
|
+
| Cinematic narration | 0.5 | 0.85 | 0.4 | 0.95 |
|
|
116
|
+
| NPC bark (combat shout) | 0.3 | 0.75 | 0.6 | 1.1 |
|
|
117
|
+
| NPC bark (calm idle) | 0.6 | 0.75 | 0.2 | 1.0 |
|
|
118
|
+
| Excited youth | 0.35 | 0.7 | 0.55 | 1.1 |
|
|
119
|
+
| Cold villain | 0.65 | 0.85 | 0.3 | 0.92 |
|
|
120
|
+
| Robotic | 1.0 | 0.85 | 0.0 | 1.0 |
|
|
121
|
+
| Scared / breathy | 0.25 | 0.7 | 0.5 | 1.05 |
|
|
122
|
+
|
|
123
|
+
Ask:
|
|
124
|
+
|
|
125
|
+
> Delivery flavor? Calm idle / combat shout / cinematic / robotic / scared / cold? I'll set stability and style to match.
|
|
126
|
+
|
|
127
|
+
### 6. Build the line
|
|
128
|
+
|
|
129
|
+
For a single line, the prompt is just the text. Punctuation and formatting matter:
|
|
130
|
+
|
|
131
|
+
- **Periods** = clear pauses (~300ms). Use them.
|
|
132
|
+
- **Commas** = short pauses (~100ms).
|
|
133
|
+
- **Em dashes** = sharp cut. (Note: avoid em dashes in user-facing UI copy per project standard, but they're fine in voice prompts as a delivery cue.)
|
|
134
|
+
- **All-caps word** = stress: `You SHALL not pass.`
|
|
135
|
+
- **Ellipsis** = trailing pause: `I... I don't know what to say.`
|
|
136
|
+
- **Parenthetical stage direction is ignored** — `(angrily)` is read as the word "angrily". Use stability/style instead.
|
|
137
|
+
|
|
138
|
+
Example lines:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
"Hold the line. They're coming through the south gate. Ready arrows."
|
|
142
|
+
"You shall not pass. Turn back."
|
|
143
|
+
"I... I don't know if I can do this."
|
|
144
|
+
"BREACH! BREACH! Fall back to the inner courtyard!"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 7. Confirm and call
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
summer_generate_voice(
|
|
151
|
+
text="Hold the line. They're coming through the south gate. Ready arrows.",
|
|
152
|
+
voiceId="21m00Tcm4TlvDq8ikWAM",
|
|
153
|
+
modelId="eleven_multilingual_v2",
|
|
154
|
+
stability=0.6,
|
|
155
|
+
similarity_boost=0.75,
|
|
156
|
+
style=0.2,
|
|
157
|
+
speed=1.0,
|
|
158
|
+
outputPath="audio/voice/hodge_hold_the_line.mp3"
|
|
159
|
+
)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
`modelId` defaults to `eleven_multilingual_v2`. For very short / latency-sensitive in-game barks, `eleven_turbo_v2_5` is faster; for highest fidelity, `eleven_multilingual_v2` is the default.
|
|
163
|
+
|
|
164
|
+
### 8. Multi-line dialogue (two or more speakers)
|
|
165
|
+
|
|
166
|
+
Use `summer_generate_audio` with `capability: "text_to_dialogue"`:
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
summer_generate_audio(
|
|
170
|
+
capability="text_to_dialogue",
|
|
171
|
+
speakers=[
|
|
172
|
+
{ name: "Hodge", voiceId: "21m00Tcm4TlvDq8ikWAM" },
|
|
173
|
+
{ name: "Brogan", voiceId: "<brogan-id>" }
|
|
174
|
+
],
|
|
175
|
+
script=[
|
|
176
|
+
{ speaker: "Hodge", text: "They're at the gate." },
|
|
177
|
+
{ speaker: "Brogan", text: "Aye. Let 'em come." },
|
|
178
|
+
{ speaker: "Hodge", text: "Steady. On my mark." }
|
|
179
|
+
],
|
|
180
|
+
outputPath="audio/voice/dialogue_gate_warning.mp3"
|
|
181
|
+
)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
This produces a single MP3 with both voices, with dialogue-aware pacing the model handles internally. For very long scripts, split into chunks of ~6 turns and concatenate.
|
|
185
|
+
|
|
186
|
+
### 9. Wire the line as `AudioStreamPlayer` on the Voice bus
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
summer_add_node(parentPath="/root/Game/NPC", type="AudioStreamPlayer", name="VoiceLine")
|
|
190
|
+
summer_set_prop(path="/root/Game/NPC/VoiceLine", property="stream", value="res://audio/voice/hodge_hold_the_line.mp3")
|
|
191
|
+
summer_set_prop(path="/root/Game/NPC/VoiceLine", property="bus", value="Voice")
|
|
192
|
+
summer_set_prop(path="/root/Game/NPC/VoiceLine", property="volume_db", value=0.0)
|
|
193
|
+
summer_set_prop(path="/root/Game/NPC/VoiceLine", property="autoplay", value=false)
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
For positional NPCs, `AudioStreamPlayer3D` with `max_distance=15.0` so distant NPCs aren't audible.
|
|
197
|
+
|
|
198
|
+
The bible's mix rule says voice ducks music: when this player starts, fade the music bus by `-6 dB`. Wire this in the bus setup or in code with `AudioServer.set_bus_volume_db()`.
|
|
199
|
+
|
|
200
|
+
### 10. Save to the cast bible
|
|
201
|
+
|
|
202
|
+
After generation, append to `.summer/voice-cast.md` so future skills find existing lines and don't regenerate. Include line text + filename + voice id.
|
|
203
|
+
|
|
204
|
+
## Reference card — voice-pick by archetype
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
Old gruff warlord: male, 50-70, rough/weathered, low pitch, slow
|
|
208
|
+
Wise mentor: male/female, 50+, warm, measured, mid-low pitch
|
|
209
|
+
Excited young hero: 18-28, high energy, mid-high pitch
|
|
210
|
+
Cold villain: 30-50, neutral/theatrical, low-mid, slow with sharp consonants
|
|
211
|
+
Mischievous trickster: theatrical, light, fast cadence
|
|
212
|
+
Calm scholar: 30-50, neutral, mid, even cadence
|
|
213
|
+
Scared / breathy: high stability=0.25, style=0.5
|
|
214
|
+
Robotic AI: stability=1.0, style=0.0
|
|
215
|
+
Narrator cinematic: mid-deep, neutral/theatrical, even, very stable
|
|
216
|
+
Narrator intimate: warmer mid pitch, lower stability for breath
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Anti-patterns
|
|
220
|
+
|
|
221
|
+
- **Picking a voice without auditioning samples.** The user must hear it.
|
|
222
|
+
- **Reusing a voice id across two characters.** Players notice instantly. Lock the cast.
|
|
223
|
+
- **Stage directions in the text.** `(angrily) Get out!` is read literally as "angrily get out". Use stability/style.
|
|
224
|
+
- **One long blob for a multi-turn scene.** Use `text_to_dialogue` so pacing is dialogue-aware.
|
|
225
|
+
- **Voice on `Master` bus.** Must be on `Voice` bus so it can duck music per the bible.
|
|
226
|
+
- **No ducking on dialogue.** Music drowns voice; players miss lines. Always duck.
|
|
227
|
+
- **Picking a voice that doesn't match the character bible.** A noble queen with a cockney accent breaks immersion unless that's the joke.
|
|
228
|
+
|
|
229
|
+
## Edge cases
|
|
230
|
+
|
|
231
|
+
- **Line longer than ~1000 characters.** ElevenLabs caps per-call. Split at sentence boundaries, generate each, concatenate with `AudioStreamPlayer.queue` or chained `finished` signals.
|
|
232
|
+
- **Mispronunciation of a fictional word.** Spell it phonetically: `Caelthorne` → `KEL-thorn` or `KAYL-thorn`. Or use SSML if the model supports it.
|
|
233
|
+
- **Voice drifts in long lines.** Increase `similarity_boost` toward 0.9; or split.
|
|
234
|
+
- **Need a non-English line.** `eleven_multilingual_v2` supports 29 languages. Just write in the target language; the same voice id works.
|
|
235
|
+
- **User wants the line shorter on regen.** Edit the text first; don't try to compress with `speed` past 1.15 (artifacts).
|
|
236
|
+
- **NPC bark variants.** Generate 3–5 variants of the same intent (`"They're at the gate!"`, `"Enemy approaching!"`, `"Look out!"`) and pick at random in code so the bark doesn't repeat.
|
|
237
|
+
|
|
238
|
+
## Fallback (no MCP)
|
|
239
|
+
|
|
240
|
+
Print the call (text, voice id, params, target path). User runs via the Summer dashboard, then `summer_import_from_url` the result.
|
|
241
|
+
|
|
242
|
+
## Handoff
|
|
243
|
+
|
|
244
|
+
> Line `hodge_hold_the_line.mp3` wired to `NPC/VoiceLine` on the `Voice` bus. Cast bible updated. Next:
|
|
245
|
+
> - Generate 3 bark variants of the same intent so the NPC doesn't sound like a recording.
|
|
246
|
+
> - For the upcoming gate scene, run `/voice-line` with `text_to_dialogue` for the multi-turn exchange.
|
|
247
|
+
> - Set up music ducking on the `Music` bus when `Voice` is active (one Tween or a `BusEffect Compressor` sidechained to `Voice`).
|
|
248
|
+
|
|
249
|
+
## See also
|
|
250
|
+
|
|
251
|
+
- `audio/audio-direction` — Voice bus and ducking rules
|
|
252
|
+
- `audio/sound-effect` — non-verbal vocal SFX (grunt, scream)
|
|
253
|
+
- `audio/adaptive-music` — ducking integration
|
package/skills/catalog.yaml
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# When adding/changing a skill, update this file in the same commit.
|
|
5
5
|
|
|
6
6
|
version: 1
|
|
7
|
-
generated: 2026-05-
|
|
7
|
+
generated: 2026-05-10
|
|
8
8
|
|
|
9
9
|
skills:
|
|
10
10
|
# ── character-controllers ──
|
|
@@ -146,6 +146,20 @@ skills:
|
|
|
146
146
|
recommended: true
|
|
147
147
|
user-invocable: true
|
|
148
148
|
last-tested: 2026-05-05
|
|
149
|
+
- name: new-project
|
|
150
|
+
category: scene-and-project
|
|
151
|
+
status: HAVE
|
|
152
|
+
public: true
|
|
153
|
+
recommended: true
|
|
154
|
+
user-invocable: true
|
|
155
|
+
last-tested: 2026-05-09
|
|
156
|
+
- name: browse-templates
|
|
157
|
+
category: scene-and-project
|
|
158
|
+
status: HAVE
|
|
159
|
+
public: true
|
|
160
|
+
recommended: true
|
|
161
|
+
user-invocable: true
|
|
162
|
+
last-tested: 2026-05-09
|
|
149
163
|
- name: scene-composition
|
|
150
164
|
category: scene-and-project
|
|
151
165
|
status: HAVE
|
|
@@ -163,8 +177,9 @@ skills:
|
|
|
163
177
|
category: scene-and-project
|
|
164
178
|
status: HAVE
|
|
165
179
|
public: true
|
|
166
|
-
recommended:
|
|
167
|
-
|
|
180
|
+
recommended: true
|
|
181
|
+
user-invocable: true
|
|
182
|
+
last-tested: 2026-05-09
|
|
168
183
|
- name: godot-project-conventions
|
|
169
184
|
category: scene-and-project
|
|
170
185
|
status: NEXT
|
|
@@ -276,13 +291,69 @@ skills:
|
|
|
276
291
|
public: true
|
|
277
292
|
|
|
278
293
|
# ── visual-effects ──
|
|
279
|
-
- name:
|
|
294
|
+
- name: game-feel
|
|
280
295
|
category: visual-effects
|
|
281
296
|
status: HAVE
|
|
282
297
|
public: true
|
|
283
298
|
recommended: true
|
|
284
299
|
user-invocable: true
|
|
285
|
-
last-tested: 2026-05-
|
|
300
|
+
last-tested: 2026-05-10
|
|
301
|
+
- name: fire
|
|
302
|
+
category: visual-effects
|
|
303
|
+
status: HAVE
|
|
304
|
+
public: true
|
|
305
|
+
recommended: true
|
|
306
|
+
user-invocable: true
|
|
307
|
+
last-tested: 2026-05-10
|
|
308
|
+
- name: muzzle-flash
|
|
309
|
+
category: visual-effects
|
|
310
|
+
status: HAVE
|
|
311
|
+
public: true
|
|
312
|
+
recommended: true
|
|
313
|
+
user-invocable: true
|
|
314
|
+
last-tested: 2026-05-10
|
|
315
|
+
- name: water-ripple
|
|
316
|
+
category: visual-effects
|
|
317
|
+
status: HAVE
|
|
318
|
+
public: true
|
|
319
|
+
recommended: false
|
|
320
|
+
user-invocable: true
|
|
321
|
+
last-tested: 2026-05-10
|
|
322
|
+
- name: lightning
|
|
323
|
+
category: visual-effects
|
|
324
|
+
status: HAVE
|
|
325
|
+
public: true
|
|
326
|
+
recommended: false
|
|
327
|
+
user-invocable: true
|
|
328
|
+
last-tested: 2026-05-10
|
|
329
|
+
- name: dissolve
|
|
330
|
+
category: visual-effects
|
|
331
|
+
status: HAVE
|
|
332
|
+
public: true
|
|
333
|
+
recommended: false
|
|
334
|
+
user-invocable: true
|
|
335
|
+
last-tested: 2026-05-10
|
|
336
|
+
- name: smoke
|
|
337
|
+
category: visual-effects
|
|
338
|
+
status: HAVE
|
|
339
|
+
public: true
|
|
340
|
+
recommended: false
|
|
341
|
+
user-invocable: true
|
|
342
|
+
last-tested: 2026-05-10
|
|
343
|
+
- name: hit-spark
|
|
344
|
+
category: visual-effects
|
|
345
|
+
status: HAVE
|
|
346
|
+
public: true
|
|
347
|
+
recommended: false
|
|
348
|
+
user-invocable: true
|
|
349
|
+
last-tested: 2026-05-10
|
|
350
|
+
- name: magic-glow
|
|
351
|
+
category: visual-effects
|
|
352
|
+
status: HAVE
|
|
353
|
+
public: true
|
|
354
|
+
recommended: false
|
|
355
|
+
user-invocable: true
|
|
356
|
+
last-tested: 2026-05-10
|
|
286
357
|
- name: gpuparticles-3d-basics
|
|
287
358
|
category: visual-effects
|
|
288
359
|
status: NEXT
|
|
@@ -335,6 +406,41 @@ skills:
|
|
|
335
406
|
public: true
|
|
336
407
|
|
|
337
408
|
# ── animation ──
|
|
409
|
+
- name: generate-motion
|
|
410
|
+
category: animation
|
|
411
|
+
status: HAVE
|
|
412
|
+
public: true
|
|
413
|
+
recommended: true
|
|
414
|
+
user-invocable: true
|
|
415
|
+
last-tested: 2026-05-10
|
|
416
|
+
- name: retarget
|
|
417
|
+
category: animation
|
|
418
|
+
status: HAVE
|
|
419
|
+
public: true
|
|
420
|
+
recommended: false
|
|
421
|
+
user-invocable: true
|
|
422
|
+
last-tested: 2026-05-10
|
|
423
|
+
- name: animation-tree
|
|
424
|
+
category: animation
|
|
425
|
+
status: HAVE
|
|
426
|
+
public: true
|
|
427
|
+
recommended: false
|
|
428
|
+
user-invocable: true
|
|
429
|
+
last-tested: 2026-05-10
|
|
430
|
+
- name: procedural-animation
|
|
431
|
+
category: animation
|
|
432
|
+
status: HAVE
|
|
433
|
+
public: true
|
|
434
|
+
recommended: false
|
|
435
|
+
user-invocable: true
|
|
436
|
+
last-tested: 2026-05-10
|
|
437
|
+
- name: facial-and-lipsync
|
|
438
|
+
category: animation
|
|
439
|
+
status: HAVE
|
|
440
|
+
public: true
|
|
441
|
+
recommended: false
|
|
442
|
+
user-invocable: true
|
|
443
|
+
last-tested: 2026-05-10
|
|
338
444
|
- name: animation-tree-basics
|
|
339
445
|
category: animation
|
|
340
446
|
status: NEXT
|
|
@@ -368,6 +474,41 @@ skills:
|
|
|
368
474
|
recommended: true
|
|
369
475
|
user-invocable: true
|
|
370
476
|
last-tested: 2026-05-05
|
|
477
|
+
- name: sound-effect
|
|
478
|
+
category: audio
|
|
479
|
+
status: HAVE
|
|
480
|
+
public: true
|
|
481
|
+
recommended: true
|
|
482
|
+
user-invocable: true
|
|
483
|
+
last-tested: 2026-05-10
|
|
484
|
+
- name: music-track
|
|
485
|
+
category: audio
|
|
486
|
+
status: HAVE
|
|
487
|
+
public: true
|
|
488
|
+
recommended: true
|
|
489
|
+
user-invocable: true
|
|
490
|
+
last-tested: 2026-05-10
|
|
491
|
+
- name: ambient-bed
|
|
492
|
+
category: audio
|
|
493
|
+
status: HAVE
|
|
494
|
+
public: true
|
|
495
|
+
recommended: false
|
|
496
|
+
user-invocable: true
|
|
497
|
+
last-tested: 2026-05-10
|
|
498
|
+
- name: voice-line
|
|
499
|
+
category: audio
|
|
500
|
+
status: HAVE
|
|
501
|
+
public: true
|
|
502
|
+
recommended: true
|
|
503
|
+
user-invocable: true
|
|
504
|
+
last-tested: 2026-05-10
|
|
505
|
+
- name: adaptive-music
|
|
506
|
+
category: audio
|
|
507
|
+
status: HAVE
|
|
508
|
+
public: true
|
|
509
|
+
recommended: false
|
|
510
|
+
user-invocable: true
|
|
511
|
+
last-tested: 2026-05-10
|
|
371
512
|
- name: audio-bus-setup
|
|
372
513
|
category: audio
|
|
373
514
|
status: NEXT
|
|
@@ -393,6 +534,117 @@ skills:
|
|
|
393
534
|
status: LATER
|
|
394
535
|
public: true
|
|
395
536
|
|
|
537
|
+
# ── 2d-assets ──
|
|
538
|
+
- name: concept-art
|
|
539
|
+
category: 2d-assets
|
|
540
|
+
status: HAVE
|
|
541
|
+
public: true
|
|
542
|
+
recommended: true
|
|
543
|
+
user-invocable: true
|
|
544
|
+
last-tested: 2026-05-10
|
|
545
|
+
- name: character-portrait
|
|
546
|
+
category: 2d-assets
|
|
547
|
+
status: HAVE
|
|
548
|
+
public: true
|
|
549
|
+
recommended: true
|
|
550
|
+
user-invocable: true
|
|
551
|
+
last-tested: 2026-05-10
|
|
552
|
+
- name: pixel-art
|
|
553
|
+
category: 2d-assets
|
|
554
|
+
status: HAVE
|
|
555
|
+
public: true
|
|
556
|
+
recommended: true
|
|
557
|
+
user-invocable: true
|
|
558
|
+
last-tested: 2026-05-10
|
|
559
|
+
- name: ui-graphics
|
|
560
|
+
category: 2d-assets
|
|
561
|
+
status: HAVE
|
|
562
|
+
public: true
|
|
563
|
+
recommended: false
|
|
564
|
+
user-invocable: true
|
|
565
|
+
last-tested: 2026-05-10
|
|
566
|
+
- name: tileable-texture
|
|
567
|
+
category: 2d-assets
|
|
568
|
+
status: HAVE
|
|
569
|
+
public: true
|
|
570
|
+
recommended: false
|
|
571
|
+
user-invocable: true
|
|
572
|
+
last-tested: 2026-05-10
|
|
573
|
+
- name: sprite-sheet
|
|
574
|
+
category: 2d-assets
|
|
575
|
+
status: HAVE
|
|
576
|
+
public: true
|
|
577
|
+
recommended: false
|
|
578
|
+
user-invocable: true
|
|
579
|
+
last-tested: 2026-05-10
|
|
580
|
+
- name: skybox-panorama
|
|
581
|
+
category: 2d-assets
|
|
582
|
+
status: HAVE
|
|
583
|
+
public: true
|
|
584
|
+
recommended: false
|
|
585
|
+
user-invocable: true
|
|
586
|
+
last-tested: 2026-05-10
|
|
587
|
+
|
|
588
|
+
# ── 3d-assets ──
|
|
589
|
+
- name: prop-model
|
|
590
|
+
category: 3d-assets
|
|
591
|
+
status: HAVE
|
|
592
|
+
public: true
|
|
593
|
+
recommended: true
|
|
594
|
+
user-invocable: true
|
|
595
|
+
last-tested: 2026-05-10
|
|
596
|
+
- name: character-model
|
|
597
|
+
category: 3d-assets
|
|
598
|
+
status: HAVE
|
|
599
|
+
public: true
|
|
600
|
+
recommended: true
|
|
601
|
+
user-invocable: true
|
|
602
|
+
last-tested: 2026-05-10
|
|
603
|
+
- name: environment-kit
|
|
604
|
+
category: 3d-assets
|
|
605
|
+
status: HAVE
|
|
606
|
+
public: true
|
|
607
|
+
recommended: false
|
|
608
|
+
user-invocable: true
|
|
609
|
+
last-tested: 2026-05-10
|
|
610
|
+
- name: vehicle-model
|
|
611
|
+
category: 3d-assets
|
|
612
|
+
status: HAVE
|
|
613
|
+
public: true
|
|
614
|
+
recommended: false
|
|
615
|
+
user-invocable: true
|
|
616
|
+
last-tested: 2026-05-10
|
|
617
|
+
- name: organic-model
|
|
618
|
+
category: 3d-assets
|
|
619
|
+
status: HAVE
|
|
620
|
+
public: true
|
|
621
|
+
recommended: false
|
|
622
|
+
user-invocable: true
|
|
623
|
+
last-tested: 2026-05-10
|
|
624
|
+
|
|
625
|
+
# ── video ──
|
|
626
|
+
- name: cinematic-cutscene
|
|
627
|
+
category: video
|
|
628
|
+
status: HAVE
|
|
629
|
+
public: true
|
|
630
|
+
recommended: true
|
|
631
|
+
user-invocable: true
|
|
632
|
+
last-tested: 2026-05-10
|
|
633
|
+
- name: trailer-shot
|
|
634
|
+
category: video
|
|
635
|
+
status: HAVE
|
|
636
|
+
public: true
|
|
637
|
+
recommended: false
|
|
638
|
+
user-invocable: true
|
|
639
|
+
last-tested: 2026-05-10
|
|
640
|
+
- name: animated-loop
|
|
641
|
+
category: video
|
|
642
|
+
status: HAVE
|
|
643
|
+
public: true
|
|
644
|
+
recommended: false
|
|
645
|
+
user-invocable: true
|
|
646
|
+
last-tested: 2026-05-10
|
|
647
|
+
|
|
396
648
|
# ── physics ──
|
|
397
649
|
- name: rigid-bodies
|
|
398
650
|
category: physics
|
|
@@ -728,3 +980,12 @@ skills:
|
|
|
728
980
|
category: deployment
|
|
729
981
|
status: LATER
|
|
730
982
|
public: true
|
|
983
|
+
|
|
984
|
+
# ── _persona ──
|
|
985
|
+
- name: summer
|
|
986
|
+
category: _persona
|
|
987
|
+
status: HAVE
|
|
988
|
+
public: true
|
|
989
|
+
recommended: true
|
|
990
|
+
user-invocable: true
|
|
991
|
+
last-tested: 2026-05-10
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fps-controller
|
|
3
|
-
description:
|
|
3
|
+
description: Use when building an FPS, first-person movement, or a 3D character that walks, jumps, and reacts to external forces — production-quality first-person controller with WASD, mouse look, jump, coyote time, jump buffering, air control, and external-velocity handling. Trigger on "FPS", "first-person", "WASD", "character controller", "mouse look", "player movement", "jump".
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: character-controllers
|