summer-engine 2.0.0 → 2.3.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.
Files changed (62) hide show
  1. package/{marketplace.json → .claude-plugin/marketplace.json} +3 -3
  2. package/.claude-plugin/plugin.json +37 -4
  3. package/.codex-plugin/plugin.json +38 -5
  4. package/.cursor-plugin/plugin.json +37 -4
  5. package/.factory-plugin/plugin.json +20 -0
  6. package/.opencode/INSTALL.md +9 -3
  7. package/.opencode/plugins/summer.js +0 -2
  8. package/AGENTS.md +51 -0
  9. package/CLAUDE.md +5 -0
  10. package/GEMINI.md +56 -0
  11. package/README.md +211 -61
  12. package/_persona/summer/SKILL.md +113 -0
  13. package/dist/commands/install.js +2 -2
  14. package/dist/commands/setup.js +4 -0
  15. package/dist/commands/skills.js +115 -2
  16. package/dist/lib/agent-config.d.ts +2 -2
  17. package/dist/lib/agent-config.js +171 -5
  18. package/dist/lib/skills-registry.d.ts +290 -26
  19. package/dist/lib/skills-registry.js +503 -1
  20. package/dist/mcp/tools/generate-tools.js +101 -0
  21. package/gemini-extension.json +2 -2
  22. package/package.json +9 -3
  23. package/skills/2d-assets/character-portrait/SKILL.md +196 -0
  24. package/skills/2d-assets/concept-art/SKILL.md +152 -0
  25. package/skills/2d-assets/pixel-art/SKILL.md +180 -0
  26. package/skills/2d-assets/skybox-panorama/SKILL.md +207 -0
  27. package/skills/2d-assets/sprite-sheet/SKILL.md +239 -0
  28. package/skills/2d-assets/tileable-texture/SKILL.md +205 -0
  29. package/skills/2d-assets/ui-graphics/SKILL.md +210 -0
  30. package/skills/3d-assets/character-model/SKILL.md +225 -0
  31. package/skills/3d-assets/environment-kit/SKILL.md +164 -0
  32. package/skills/3d-assets/organic-model/SKILL.md +192 -0
  33. package/skills/3d-assets/prop-model/SKILL.md +133 -0
  34. package/skills/3d-assets/vehicle-model/SKILL.md +202 -0
  35. package/skills/ai-and-npcs/design-npc/SKILL.md +3 -1
  36. package/skills/animation/animation-tree/SKILL.md +260 -0
  37. package/skills/animation/facial-and-lipsync/SKILL.md +282 -0
  38. package/skills/animation/generate-motion/SKILL.md +129 -0
  39. package/skills/animation/procedural-animation/SKILL.md +234 -0
  40. package/skills/animation/retarget/SKILL.md +172 -0
  41. package/skills/asset-pipeline/asset-strategy/SKILL.md +102 -212
  42. package/skills/audio/adaptive-music/SKILL.md +326 -0
  43. package/skills/audio/ambient-bed/SKILL.md +278 -0
  44. package/skills/audio/music-track/SKILL.md +268 -0
  45. package/skills/audio/sound-effect/SKILL.md +237 -0
  46. package/skills/audio/voice-line/SKILL.md +253 -0
  47. package/skills/catalog.yaml +249 -3
  48. package/skills/video/animated-loop/SKILL.md +200 -0
  49. package/skills/video/cinematic-cutscene/SKILL.md +204 -0
  50. package/skills/video/trailer-shot/SKILL.md +203 -0
  51. package/skills/visual-effects/_building-blocks/additive-billboard-particles.md +28 -0
  52. package/skills/visual-effects/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  53. package/skills/visual-effects/_building-blocks/trauma-shake-snippet.md +51 -0
  54. package/skills/visual-effects/{vfx → game-feel}/SKILL.md +1 -1
  55. package/skills/visual-effects/recipes/dissolve/SKILL.md +349 -0
  56. package/skills/visual-effects/recipes/fire/SKILL.md +387 -0
  57. package/skills/visual-effects/recipes/hit-spark/SKILL.md +330 -0
  58. package/skills/visual-effects/recipes/lightning/SKILL.md +372 -0
  59. package/skills/visual-effects/recipes/magic-glow/SKILL.md +377 -0
  60. package/skills/visual-effects/recipes/muzzle-flash/SKILL.md +326 -0
  61. package/skills/visual-effects/recipes/smoke/SKILL.md +381 -0
  62. package/skills/visual-effects/recipes/water-ripple/SKILL.md +340 -0
@@ -1,243 +1,133 @@
1
1
  ---
2
2
  name: asset-strategy
3
- description: Use when planning asset creation, picking an asset pipeline, or writing image-to-3D prompts — decision guide for whether to generate 3D, search the library, generate AI textures, or use primitives. Includes prompt templates for the AI image-to-3D pipeline. Trigger on "assets", "3D models", "textures", "art pipeline", "make a model", "generate asset".
3
+ description: Use when planning asset creation, picking an asset pipeline, or routing an "I need a [thing]" request to the right specialist skill. Disambiguates between 2D / 3D / audio / video / VFX / animation pipelines and dispatches via the Skill tool. Trigger on "assets", "asset pipeline", "make a model", "I need a sound", "create concept art", "generate something", broad creative requests.
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: asset-pipeline
7
7
  user-invocable: false
8
- allowed-tools: Read Grep summer_search_assets summer_import_asset summer_generate_image summer_generate_3d summer_generate_audio summer_import_from_url
8
+ allowed-tools: Read Grep Skill summer_search_assets
9
9
  ---
10
10
 
11
- # Asset Strategy for Summer Engine
11
+ # Asset Strategy — Meta-Router for Asset Creation
12
12
 
13
- How to create different types of game assets. Pick the right pipeline for each asset type.
13
+ Classify the user's request, ask at most one clarifying question, then dispatch to the right specialist via the `Skill` tool. Don't generate anything yourself — every media-type/asset-class combination has a dedicated specialist that owns the prompt patterns, polycount targets, gates, and fallbacks. Your job is the routing decision, not the work.
14
+
15
+ ## Step 1 — Classify by media type
14
16
 
15
- ---
16
-
17
- ## Decision Tree
18
-
19
- | Asset type | Pipeline | Why |
20
- |-----------|----------|-----|
21
- | Props (sword, barrel, chair, crate) | Image-to-3D | Best quality for isolated objects |
22
- | Characters (player, NPC, enemy) | Image-to-3D (mannequin ref) | T-pose reference preserves proportions |
23
- | Organic (trees, rocks, mushrooms) | Image-to-3D | Handles complex shapes well |
24
- | Vehicles (car, spaceship, boat) | Image-to-3D | Good for hard-surface objects |
25
- | Walls / floors / ceilings | Texture + BoxMesh/CSGBox | Tiled textures on simple geometry |
26
- | Terrain / ground | Texture + PlaneMesh | Tileable ground textures |
27
- | Buildings / structures | Texture + CSG or modular kit | Combine primitive shapes with textures |
28
- | UI elements / icons / HUD | 2D image only | No 3D conversion needed |
29
- | Sprites (2D games) | 2D image only | Direct use as Sprite2D texture |
30
- | Skyboxes / backgrounds | Panoramic image gen | Environment, not mesh |
31
- | Particles / VFX | Built in engine | GPUParticles3D, no generation |
32
- | Audio / music / SFX | summer_generate_audio | Separate pipeline |
33
-
34
- ---
35
-
36
- ## Pipeline 1: Image-to-3D (Props, Characters, Organic)
37
-
38
- ### How it works
39
-
40
- 1. A reference template image (mannequin on white bg) is stored server-side
41
- 2. nano-banana-2 img2img replaces the mannequin with the desired asset
42
- 3. The result is a clean, 3D-ready reference image
43
- 4. That image feeds into Hunyuan 3D (default) or Trellis 2 for 3D conversion
44
- 5. You get a 3D model back
45
-
46
- Available 3D models:
47
- - **hunyuan** (default) — Hunyuan 3D v3.1 Pro, highest quality
48
- - **trellis** — Trellis 2, fast and detailed
49
- - **meshy** — Legacy option
50
-
51
- From the CLI, the reference image step is invisible. Just call:
52
-
53
- ```
54
- summer_generate_3d(prompt="a treasure chest with gold coins")
55
- ```
56
-
57
- The server generates the reference image and feeds it to 3D automatically.
58
-
59
- To pick a specific model:
60
-
61
- ```
62
- summer_generate_3d(prompt="a treasure chest", model="trellis")
63
- ```
64
-
65
- For manual control (you want to see/approve the reference image first):
66
-
67
- ```
68
- summer_generate_image(prompt="a treasure chest with gold coins, game asset, white background, stylized, not ultra realistic")
69
- # Review the image with Read tool
70
- summer_generate_3d(kind="image-to-3d", imageUrl="<fileUrl from above>")
71
- ```
72
-
73
- ### Prompt template for 3D reference images
74
-
75
- When generating images intended for 3D conversion, use this suffix:
76
-
77
- ```
78
- [your asset description]. Game asset, centered in frame, 3D model render style,
79
- stylized game art, not ultra realistic, clean white background, soft studio
80
- lighting. Isolated object ready for 3D mesh generation.
81
- ```
82
-
83
- Examples:
84
-
85
- **Weapon:**
86
- ```
87
- A medieval broadsword with ornate crossguard and leather-wrapped grip. Game asset,
88
- centered in frame, 3D model render style, stylized game art, not ultra realistic,
89
- clean white background, soft studio lighting. Isolated object ready for 3D mesh
90
- generation.
91
- ```
92
-
93
- **Character:**
94
- ```
95
- A fantasy knight in full plate armor, red cape, detailed pauldrons. T-pose,
96
- front-facing. Game character asset, 3D model render style, stylized game art,
97
- not ultra realistic, clean white background, soft studio lighting. Ready for
98
- 3D mesh generation.
99
- ```
100
-
101
- **Organic prop:**
102
- ```
103
- Cluster of bioluminescent mushrooms growing from a small mossy rock base. Pale
104
- green glow, translucent caps, alien organic shapes. Game asset, centered in frame,
105
- 3D model render style, stylized game art, not ultra realistic, clean white
106
- background, soft studio lighting. Isolated object ready for 3D mesh generation.
107
- ```
108
-
109
- **Vehicle:**
110
- ```
111
- A rusted sci-fi hover bike with exposed engine parts and worn paint. Game asset,
112
- centered in frame, 3D model render style, stylized game art, not ultra realistic,
113
- clean white background, soft studio lighting. Isolated vehicle ready for 3D mesh
114
- generation.
115
- ```
17
+ | Signal in user request | Continue at |
18
+ |---|---|
19
+ | image, art, concept, portrait, icon, sprite, texture, skybox, HUD | 2D table |
20
+ | model, mesh, 3D, prop, character, rigged, vehicle, tree, level kit | 3D table |
21
+ | sound, SFX, music, ambient, voice, VO | Audio table |
22
+ | cutscene, trailer, loop video, animated background | Video table |
23
+ | animation, idle, walk, attack, retarget, blend tree, IK, lipsync | Animation table |
24
+ | fire, muzzle flash, smoke, lightning, shake, hit-stop, particles | VFX table |
116
25
 
117
- ### What makes a BAD 3D reference
26
+ If the request spans rows ("a witch with idle and a fire spell"), classify the **first** asset and dispatch — the specialist hands off when it's done.
118
27
 
119
- Avoid these in prompts:
120
- - Scene context ("sword lying on a table") -- the table becomes part of the mesh
121
- - Strong directional shadows -- baked into the mesh as geometry
122
- - Ultra-realistic rendering -- too much detail for game-ready meshes
123
- - Flat 2D angles (pure front/side view) -- 3D gen needs depth cues
124
- - Multiple objects ("a sword and a shield") -- generates as one fused mesh
125
- - Busy backgrounds -- bleeds into the model
28
+ ## Step 2 — Disambiguate (one question max)
29
+
30
+ Ask the **exact phrase** before dispatching. Skipping the question is the most common routing mistake.
126
31
 
127
- ### Polycount guidance
32
+ | Ambiguity | Disambiguation question (verbatim) | Routes |
33
+ |---|---|---|
34
+ | Concept art vs character portrait | "Quick check — exploring the look (3-4 variants for art direction) or generating a final character portrait for dialogue UI?" | `summer:2d-assets/concept-art` (exploring) / `summer:2d-assets/character-portrait` (final) |
35
+ | Prop vs character model | "Static object (sword, chair, lantern) or rigged character that needs animation?" | `summer:3d-assets/prop-model` / `summer:3d-assets/character-model` |
36
+ | Tile vs sprite sheet | "One seamless tile that repeats, or a frame grid for an animated sprite?" | `summer:2d-assets/tileable-texture` / `summer:2d-assets/sprite-sheet` |
37
+ | SFX vs music | "One-shot effect or a longer track (loop, theme, ambient bed)?" | `summer:audio/sound-effect` / `summer:audio/music-track` (or `audio/ambient-bed`) |
38
+ | Generate vs retarget motion | "Generate a new clip on this character, or apply an existing library to a new character?" | `summer:animation/generate-motion` / `summer:animation/retarget` |
39
+ | VFX recipe vs game-feel | "Particle/shader effect in the world or screen-feel (camera shake, hit-stop)?" | `summer:visual-effects/recipes/<name>` / `summer:visual-effects/game-feel` |
128
40
 
129
- Pass in options when quality matters:
41
+ ## Step 3 — Dispatch
130
42
 
131
- ```
132
- summer_generate_3d(prompt="...", options={ target_polycount: 5000 })
133
- ```
43
+ Invoke the specialist via the `Skill` tool. Don't paraphrase — let it run. Pass the user's original phrasing through.
134
44
 
135
- Rough targets:
136
- - Mobile games: 1k-3k tris
137
- - Indie/stylized PC: 3k-10k tris
138
- - Detailed hero assets: 10k-30k tris
139
- - Cinematics/showcase: 30k-100k tris
140
-
141
- Default if not specified: provider decides (usually 10k-30k range).
45
+ ## Routing tables
142
46
 
143
- ---
144
-
145
- ## Pipeline 2: Textures + Geometry (Walls, Floors, Structures)
146
-
147
- For flat surfaces and repeating structures, don't generate 3D models. Generate textures and apply them to simple geometry.
148
-
149
- ### Walls
150
-
151
- ```
152
- summer_generate_image(prompt="seamless brick wall texture, tileable, game texture, diffuse map")
153
- summer_import_from_url(url="<fileUrl>", path="res://assets/textures/brick_wall.png")
154
- ```
155
-
156
- Then in the scene:
157
- ```
158
- summer_add_node(parent="./Level", type="CSGBox3D", name="Wall")
159
- summer_set_prop(path="./Level/Wall", key="size", value="Vector3(10, 3, 0.3)")
160
- summer_set_prop(path="./Level/Wall", key="position", value="Vector3(0, 1.5, -5)")
161
- ```
162
-
163
- Attach material with texture via script or manual setup.
164
-
165
- ### Floors / ground
166
-
167
- ```
168
- summer_generate_image(prompt="seamless grass ground texture, top-down, tileable, game texture")
169
- ```
170
-
171
- Apply to PlaneMesh or CSGBox3D scaled flat.
172
-
173
- ### Modular building kit
47
+ ### 2D assets
174
48
 
175
- For buildings, combine CSG shapes:
176
- - CSGBox3D for walls
177
- - CSGBox3D for floors/ceilings
178
- - CSGCylinder3D for pillars
179
- - CSGPolygon3D for custom shapes
49
+ | Request | Skill |
50
+ |---|---|
51
+ | Concept / mood board / variants | `summer:2d-assets/concept-art` |
52
+ | Polished portrait / NPC bust | `summer:2d-assets/character-portrait` |
53
+ | Pixel sprite / retro icon | `summer:2d-assets/pixel-art` |
54
+ | HUD / button / inventory frame | `summer:2d-assets/ui-graphics` |
55
+ | Wall / floor / seamless ground | `summer:2d-assets/tileable-texture` |
56
+ | Run cycle / spritesheet grid | `summer:2d-assets/sprite-sheet` |
57
+ | 360 sky / panoramic background | `summer:2d-assets/skybox-panorama` |
180
58
 
181
- Generate different textures for each material:
182
- - Wall texture (brick, stone, wood)
183
- - Floor texture (tile, wood planks, concrete)
184
- - Roof texture (shingles, metal)
59
+ ### 3D assets
185
60
 
186
- ### Texture prompt tips
61
+ | Request | Skill |
62
+ |---|---|
63
+ | Sword / chair / barrel / static object | `summer:3d-assets/prop-model` |
64
+ | Player / NPC / enemy / boss / rigged humanoid | `summer:3d-assets/character-model` (canonical Meshy auto-rig) |
65
+ | Modular dungeon / building blocks | `summer:3d-assets/environment-kit` |
66
+ | Car / spaceship / hard-surface vehicle | `summer:3d-assets/vehicle-model` |
67
+ | Tree / rock / mushroom / foliage | `summer:3d-assets/organic-model` |
187
68
 
188
- For tileable textures, always include:
189
- ```
190
- [material description], seamless, tileable, game texture, diffuse map,
191
- top-down view, uniform lighting, no perspective
192
- ```
69
+ Polycount targets (hero 8k–15k, grunt 3k–6k, mobile 1k–3k, cinematic 20k–40k) live in each specialist.
193
70
 
194
- ---
195
-
196
- ## Pipeline 3: 2D Only (UI, Sprites, Icons)
197
-
198
- For 2D game assets and UI elements:
71
+ ### Audio
199
72
 
200
- ```
201
- summer_generate_image(prompt="pixel art heart icon, 64x64, red, game UI element",
202
- style="pixel")
203
- ```
73
+ | Request | Skill |
74
+ |---|---|
75
+ | Sword clash / footstep / UI click | `summer:audio/sound-effect` |
76
+ | Theme / level music / boss track | `summer:audio/music-track` |
77
+ | Forest ambience / cave drone | `summer:audio/ambient-bed` |
78
+ | NPC line / VO / spoken dialogue | `summer:audio/voice-line` |
79
+ | Music that reacts to combat | `summer:audio/adaptive-music` |
80
+ | What should this game sound like | `summer:audio/audio-direction` |
204
81
 
205
- For sprite sheets, consider the sprite animation tools (separate from this pipeline).
82
+ ### Animation
206
83
 
207
- ### UI prompt tips
208
-
209
- ```
210
- [element description], flat design, clean edges, game UI style,
211
- transparent background preferred, [size]px
212
- ```
213
-
214
- ---
215
-
216
- ## Pipeline 4: Audio
217
-
218
- Separate from visual assets. See summer_generate_audio tool:
219
-
220
- ```
221
- summer_generate_audio(capability="sound_effects", text="metal sword clash impact")
222
- summer_generate_audio(capability="music", prompt="ambient fantasy forest theme", durationSeconds=60)
223
- summer_generate_audio(capability="text_to_speech", text="You shall not pass!", voiceId="<id>")
224
- ```
225
-
226
- ---
84
+ | Request | Skill |
85
+ |---|---|
86
+ | Idle / walk / run / attack — new clip | `summer:animation/generate-motion` |
87
+ | Apply library to a different character | `summer:animation/retarget` |
88
+ | Blend tree / state machine | `summer:animation/animation-tree` |
89
+ | Look-at / IK / foot placement | `summer:animation/procedural-animation` |
90
+ | Lipsync / facial blendshapes | `summer:animation/facial-and-lipsync` |
227
91
 
228
- ## Edge Cases (add to this list as they come up)
92
+ ### Video
229
93
 
230
- - **Transparent/glass objects**: Add "translucent material, see-through" to prompt. 3D gen may struggle -- consider using engine materials instead.
231
- - **Animated objects**: Generate static mesh first, animate in engine with AnimationPlayer.
232
- - **Multi-part objects**: Generate each part separately, assemble in scene tree.
233
- - **Extremely thin objects** (paper, cloth, flags): 3D gen produces thick meshes. Better to use MeshInstance3D with a plane + texture + shader.
234
- - **Emissive/glowing objects**: Generate the mesh, add emissive material in engine. Don't rely on the glow being in the mesh.
235
- - **LOD (Level of Detail)**: Generate one version. If perf needs LOD, use Godot's LOD system or generate a second low-poly version.
94
+ | Request | Skill |
95
+ |---|---|
96
+ | Intro cutscene / story sequence | `summer:video/cinematic-cutscene` |
97
+ | Steam trailer / marketing clip | `summer:video/trailer-shot` |
98
+ | Animated menu background / loop | `summer:video/animated-loop` |
236
99
 
237
- ## Fallback
100
+ ### Visual effects
238
101
 
239
- No fallback for this — Summer MCP required for the generation pipelines (`summer_generate_image`, `summer_generate_3d`, `summer_generate_audio`, `summer_search_assets`, `summer_import_from_url`). If MCP isn't connected, the user must source assets externally (Sketchfab, Quaternius, Kenney, AmbientCG) and import via Godot's import system.
102
+ VFX is **code, not generative** — recipes are shader + GDScript + node setup, not image generation.
240
103
 
241
- ## Collaborative protocol
104
+ | Request | Skill |
105
+ |---|---|
106
+ | Fire / torch / campfire | `summer:visual-effects/recipes/fire` |
107
+ | Muzzle flash / gunshot | `summer:visual-effects/recipes/muzzle-flash` |
108
+ | Water ripple / splash | `summer:visual-effects/recipes/water-ripple` |
109
+ | Lightning / electric arc | `summer:visual-effects/recipes/lightning` |
110
+ | Dissolve / disintegrate | `summer:visual-effects/recipes/dissolve` |
111
+ | Smoke / dust puff | `summer:visual-effects/recipes/smoke` |
112
+ | Hit spark / impact flash | `summer:visual-effects/recipes/hit-spark` |
113
+ | Magic glow / aura | `summer:visual-effects/recipes/magic-glow` |
114
+ | Camera shake / hit-stop | `summer:visual-effects/game-feel` |
115
+
116
+ ## When NOT to use this skill
117
+
118
+ - The user already named the specific skill — go straight there.
119
+ - The user is debugging or running the game — route to `summer:debug` or `summer:play`.
120
+ - The asset is being imported, not generated (existing `.glb` / `.wav` from Sketchfab, Quaternius, AmbientCG) — call `summer_import_from_url` directly.
121
+ - The user wants to plan the whole game's asset list — `summer:brainstorm-game` first, then this router on each item.
122
+
123
+ ## Anti-patterns
242
124
 
243
- This skill triggers metered generation (image / 3D / audio) and mutates the scene with imported assets. Always ask before generating ("May I generate a 3D treasure chest via image-to-3D? This is one metered generation.") and before importing ("May I import the result to `res://assets/models/chest.glb`?"). See `../../_shared/collaborative-protocol.md`.
125
+ - **Generating yourself instead of dispatching.** This file holds zero prompt patterns by design. If you're writing a `summer_generate_image` call from here, stop and invoke the specialist.
126
+ - **Skipping the disambiguation question.** Sends users to the wrong specialist and burns a paid generation. The verbatim phrasing in Step 2 is required.
127
+ - **Routing concept-art to character-portrait** (or the reverse). Different goals: concept-art produces 4 divergent variants for art direction; character-portrait produces 1 polished bust for dialogue UI.
128
+ - **Inventing skill names.** Only dispatch to skills listed above. If nothing fits, ask the user to clarify.
129
+ - **Routing rigged-humanoid requests to `prop-model`.** Anything that needs animation always goes to `summer:3d-assets/character-model`.
130
+
131
+ ## Fallback (no MCP)
132
+
133
+ The router still works without MCP — classification is text-only. It hands off to the specialist, which surfaces its own no-MCP fallback (typically: run the equivalent generation via the Summer dashboard / Meshy / nano-banana web, then `summer_import_from_url` once MCP is back).