summer-engine 1.2.1 → 1.3.1
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/LICENSE +21 -0
- package/README.md +7 -2
- package/dist/bin/summer.js +24 -1
- package/dist/commands/doctor.js +44 -20
- package/dist/commands/setup.js +77 -6
- package/dist/commands/skills.js +14 -6
- package/dist/lib/format.d.ts +23 -0
- package/dist/lib/format.js +60 -0
- package/dist/lib/format.test.d.ts +1 -0
- package/dist/lib/format.test.js +36 -0
- package/dist/lib/skills-registry.d.ts +33 -11
- package/dist/lib/skills-registry.js +71 -11
- package/package.json +1 -1
- package/skills/README.md +96 -0
- package/skills/_meta/skill-create/SKILL.md +143 -0
- package/skills/_meta/skill-improve/SKILL.md +89 -0
- package/skills/_meta/skill-test/SKILL.md +86 -0
- package/skills/_shared/collaborative-protocol.md +50 -0
- package/skills/_shared/gd-style.md +121 -0
- package/skills/_shared/godot-version.md +32 -0
- package/skills/_shared/mcp-tools-reference.md +133 -0
- package/skills/_shared/template-registry.md +40 -0
- package/skills/_tests/runner.md +90 -0
- package/skills/_tests/specs/3d-lighting.md +19 -0
- package/skills/_tests/specs/asset-strategy.md +19 -0
- package/skills/_tests/specs/debug.md +94 -0
- package/skills/_tests/specs/fps-controller.md +100 -0
- package/skills/_tests/specs/gdscript-patterns.md +19 -0
- package/skills/_tests/specs/make-game.md +19 -0
- package/skills/_tests/specs/play.md +88 -0
- package/skills/_tests/specs/scene-composition.md +19 -0
- package/skills/_tests/specs/ui-basics.md +19 -0
- package/skills/{asset-strategy → asset-pipeline/asset-strategy}/SKILL.md +5 -5
- package/skills/catalog.yaml +646 -0
- package/skills/{fps-controller → character-controllers/fps-controller}/SKILL.md +7 -5
- package/skills/debugging/debug/SKILL.md +137 -0
- package/skills/{3d-lighting → rendering-and-lighting/3d-lighting}/SKILL.md +6 -5
- package/skills/{make-game → scene-and-project/make-game}/SKILL.md +6 -5
- package/skills/scene-and-project/play/SKILL.md +108 -0
- package/skills/{scene-composition → scene-and-project/scene-composition}/SKILL.md +6 -5
- package/skills/{gdscript-patterns → scripting-patterns/gdscript-patterns}/SKILL.md +6 -5
- package/skills/{ui-basics → ui-and-ux/ui-basics}/SKILL.md +6 -5
- /package/skills/{gdscript-patterns → scripting-patterns/gdscript-patterns}/reference.md +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debug
|
|
3
|
+
description: Use when the user reports their game is broken, crashing, behaving unexpectedly, or says "debug", "fix", "something's wrong", or "it's not working". Triages the bug end-to-end via Summer Engine's diagnostic tools (console, debugger errors, script errors), locates the offending code, proposes a fix, and verifies the fix.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: debugging
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools: Read Grep Glob Edit summer_get_console summer_get_debugger_errors summer_get_script_errors summer_get_diagnostics summer_clear_console summer_play summer_stop summer_is_running summer_get_scene_tree summer_inspect_node
|
|
9
|
+
paths: ["**/*.gd", "**/*.tscn", "**/*.cs"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /debug — Triage and Fix a Bug
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
A bug in a Godot/Summer game can hide in three places: scripts (GDScript/C# compile or runtime errors), the engine console (printed messages, warnings), or the scene/resource state (wrong property, missing collider, broken signal connection). This skill walks all three before guessing.
|
|
17
|
+
|
|
18
|
+
**Core principle:** read what the engine actually saw, not what the code looks like it does.
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
### 1. Get the user's description first
|
|
23
|
+
|
|
24
|
+
Ask one short question:
|
|
25
|
+
|
|
26
|
+
> What's happening? Briefly: when does it go wrong, and what do you expect vs. what you see?
|
|
27
|
+
|
|
28
|
+
Wait for the answer before doing anything else. Don't start grepping code yet — the user's words narrow the search 10x.
|
|
29
|
+
|
|
30
|
+
### 2. Read the engine's actual error state
|
|
31
|
+
|
|
32
|
+
Always do this in order. Each tool answers a different question.
|
|
33
|
+
|
|
34
|
+
**Preferred (Summer MCP):**
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
summer_get_script_errors # Compile errors? (cheapest, do first)
|
|
38
|
+
summer_get_console # Print() output, warnings, info
|
|
39
|
+
summer_get_debugger_errors # Runtime errors with stack traces
|
|
40
|
+
summer_get_diagnostics # Aggregated count + summary
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
If the bug is reproducible only at runtime and the engine isn't currently playing:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
summer_clear_console # Clean slate
|
|
47
|
+
summer_play # Run it
|
|
48
|
+
# (let the user reproduce the bug)
|
|
49
|
+
summer_get_debugger_errors # Now read what blew up
|
|
50
|
+
summer_stop # When done
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Fallback (no MCP — engine isn't connected):**
|
|
54
|
+
|
|
55
|
+
Ask the user to copy-paste the engine's Output panel and Debugger errors. Inspect manually.
|
|
56
|
+
|
|
57
|
+
### 3. Locate the offending code
|
|
58
|
+
|
|
59
|
+
For each error, follow the stack trace to the file + line. Use host file tools:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Read <file>:<line-near-error>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Read 20–40 lines around the error site. Don't open the whole file unless you need to — context budget matters.
|
|
66
|
+
|
|
67
|
+
If the error mentions a node path (e.g. `./World/Player/Camera`), inspect it:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
summer_inspect_node "./World/Player/Camera"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 4. Form a hypothesis and propose the fix
|
|
74
|
+
|
|
75
|
+
State it in one sentence:
|
|
76
|
+
|
|
77
|
+
> The error happens because <root cause>. The fix is <one-line summary>.
|
|
78
|
+
|
|
79
|
+
Then ask:
|
|
80
|
+
|
|
81
|
+
> May I edit `<file>` to <do exactly this>?
|
|
82
|
+
|
|
83
|
+
Don't guess at multiple fixes at once. Pick one. If wrong, the next iteration is cheap.
|
|
84
|
+
|
|
85
|
+
### 5. Apply the fix
|
|
86
|
+
|
|
87
|
+
On user yes, edit the file with host tools (`Edit`/`Write`). Single focused change.
|
|
88
|
+
|
|
89
|
+
### 6. Verify
|
|
90
|
+
|
|
91
|
+
Re-run the relevant check:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
summer_get_script_errors # If it was a compile error
|
|
95
|
+
summer_play → summer_get_debugger_errors → summer_stop # If runtime
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Report:
|
|
99
|
+
|
|
100
|
+
> Fixed. <One-line description of what changed.>
|
|
101
|
+
|
|
102
|
+
If still broken: go back to step 4 with the new error state. State explicitly that the first hypothesis was wrong.
|
|
103
|
+
|
|
104
|
+
## Common bug patterns and how to spot them
|
|
105
|
+
|
|
106
|
+
| Symptom | Likely cause | First check |
|
|
107
|
+
|---|---|---|
|
|
108
|
+
| `Invalid set index 'X' (on base: Nil)` | Node path resolved to null | `summer_inspect_node` the path |
|
|
109
|
+
| `Identifier not declared` (script error) | Missing `class_name` or wrong scope | `summer_get_script_errors` |
|
|
110
|
+
| Game runs but sprite doesn't appear | Node added but not visible (transform / parent / layer) | `summer_get_scene_tree` + inspect parent |
|
|
111
|
+
| Signal handler never fires | Connection not made, or connected to wrong instance | `summer_inspect_node` of emitter, check connections |
|
|
112
|
+
| Player falls through floor | CollisionShape3D has no shape, or shape is inline sub_resource | `summer_inspect_resource` on the CollisionShape |
|
|
113
|
+
| Mouse capture stuck | `Input.set_mouse_mode` not paired with release on focus loss | `summer_get_console` for warnings |
|
|
114
|
+
| Game hangs on start | Infinite loop in `_ready()` or `_process()` | `summer_get_debugger_errors` after a forced stop |
|
|
115
|
+
|
|
116
|
+
## Anti-patterns (don't do these)
|
|
117
|
+
|
|
118
|
+
- **Don't** start by reading the user's whole codebase. The error tells you where to look.
|
|
119
|
+
- **Don't** propose a sweeping refactor for a single bug. One file, one change, verify.
|
|
120
|
+
- **Don't** call `summer_set_resource_property` on an inline `sub_resource` — it silently fails. See `_shared/mcp-tools-reference.md` § "Trap".
|
|
121
|
+
- **Don't** call `summer_play` without `summer_clear_console` first if you want clean output to read.
|
|
122
|
+
- **Don't** skip the user's description in step 1. "What were you trying to do" beats "what does the code do" 9/10 times.
|
|
123
|
+
|
|
124
|
+
## Collaborative protocol
|
|
125
|
+
|
|
126
|
+
This skill writes files. Always ask before each edit step. See `_shared/collaborative-protocol.md`.
|
|
127
|
+
|
|
128
|
+
## Want a working starter?
|
|
129
|
+
|
|
130
|
+
No template — this is a workflow, not a project scaffold. It works against any Godot/Summer project that has Summer MCP wired up.
|
|
131
|
+
|
|
132
|
+
## See also
|
|
133
|
+
|
|
134
|
+
- `_shared/mcp-tools-reference.md` — full tool list
|
|
135
|
+
- `_shared/godot-version.md` — engine version + LLM cutoff risks
|
|
136
|
+
- `scripting-patterns/gdscript-patterns/SKILL.md` — what good GDScript looks like
|
|
137
|
+
- `scene-and-project/play/SKILL.md` — running the game
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 3d-lighting
|
|
3
|
-
description: Lighting setup,
|
|
3
|
+
description: Lighting setup, WorldEnvironment, sky, and shadows for 3D scenes. Use when setting up a 3D scene, adding lights, configuring environment, or adjusting shadows. Trigger on "lighting", "shadows", "WorldEnvironment", "sun", "ambient".
|
|
4
4
|
license: MIT
|
|
5
|
-
compatibility:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: rendering-and-lighting
|
|
7
|
+
user-invocable: false
|
|
8
|
+
allowed-tools: Read Grep summer_add_node summer_set_prop summer_set_resource_property summer_save_scene
|
|
9
|
+
paths: ["**/*.tscn", "**/*.tres"]
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# 3D Lighting for Summer Engine
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: make-game
|
|
3
|
-
description: End-to-end game creation workflow. Use when the user wants to build a complete game
|
|
3
|
+
description: End-to-end game creation workflow that orchestrates project setup, asset creation, scene building, scripting, and testing. Use when the user wants to build a complete game from scratch or says "make me a game". Trigger on "make a game", "build me a game", "create a new game".
|
|
4
4
|
license: MIT
|
|
5
|
-
compatibility:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: scene-and-project
|
|
7
|
+
user-invocable: false
|
|
8
|
+
allowed-tools: Read Grep Glob Write Edit summer_get_project_context summer_get_agent_playbook summer_create_scene summer_open_scene summer_save_scene summer_add_node summer_set_prop summer_set_resource_property summer_instantiate_scene summer_play summer_stop summer_get_diagnostics
|
|
9
|
+
paths: ["**/*.gd", "**/*.tscn", "**/project.godot"]
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# Make a Game with Summer Engine
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: play
|
|
3
|
+
description: Use when the user says "play", "run it", "test it", "let me see it", or "start the game". Runs the project in Summer Engine, briefly waits, then reports what's happening — clean run, errors, or warnings.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: scene-and-project
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools: summer_is_running summer_play summer_stop summer_clear_console summer_get_console summer_get_debugger_errors summer_get_script_errors summer_get_diagnostics
|
|
9
|
+
paths: ["**/project.godot", "**/*.tscn"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /play — Run the Game
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
Press play. Watch what happens. Report it back.
|
|
17
|
+
|
|
18
|
+
## Steps
|
|
19
|
+
|
|
20
|
+
### 1. Check if it's already running
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
summer_is_running
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
If running:
|
|
27
|
+
> The game is already playing. Stop and restart, or leave it?
|
|
28
|
+
|
|
29
|
+
Wait for the user. Don't unilaterally stop.
|
|
30
|
+
|
|
31
|
+
If not running, continue.
|
|
32
|
+
|
|
33
|
+
### 2. Pre-check for compile errors
|
|
34
|
+
|
|
35
|
+
Cheapest call. If the script won't compile, play will fail with a noisy error — better to surface that clearly first.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
summer_get_script_errors
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
If errors found:
|
|
42
|
+
> Won't run yet — there's a script error: `<one-line summary>`. Want me to /debug it?
|
|
43
|
+
|
|
44
|
+
Stop here on user's no.
|
|
45
|
+
|
|
46
|
+
### 3. Clear and play
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
summer_clear_console
|
|
50
|
+
summer_play
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 4. Brief wait, then read state
|
|
54
|
+
|
|
55
|
+
Wait ~2 seconds (so the engine has time to process at least one frame). Then:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
summer_get_diagnostics
|
|
59
|
+
summer_get_debugger_errors
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 5. Report
|
|
63
|
+
|
|
64
|
+
Three outcomes:
|
|
65
|
+
|
|
66
|
+
**Clean:** `summer_get_diagnostics` shows zero errors and zero warnings.
|
|
67
|
+
|
|
68
|
+
> Running. No errors or warnings. Tell me what you see and I'll dig in if needed.
|
|
69
|
+
|
|
70
|
+
**Warnings only:**
|
|
71
|
+
|
|
72
|
+
> Running. <N> warnings — `<one-line summary of the most important one>`. Want me to look at them?
|
|
73
|
+
|
|
74
|
+
**Runtime error:**
|
|
75
|
+
|
|
76
|
+
> Crashed: `<error class>` at `<file>:<line>` — `<message>`. Want me to /debug?
|
|
77
|
+
|
|
78
|
+
### 6. Don't auto-stop
|
|
79
|
+
|
|
80
|
+
Leave the game running. The user wants to play it. Stop only on explicit ask.
|
|
81
|
+
|
|
82
|
+
## Common patterns
|
|
83
|
+
|
|
84
|
+
| Situation | Right move |
|
|
85
|
+
|---|---|
|
|
86
|
+
| User says "play" with no context | Steps 1–5 above |
|
|
87
|
+
| User says "play and watch it for me" | After step 5, set a timer / poll `summer_get_debugger_errors` every few seconds for the duration the user specifies |
|
|
88
|
+
| User says "play the boss fight scene" | Open the specific scene first (`summer_open_scene "scenes/boss_fight.tscn"`), then steps 1–5 |
|
|
89
|
+
| Game is already running and user says "play" again | Step 1's check covers it — ask before restarting |
|
|
90
|
+
|
|
91
|
+
## Anti-patterns
|
|
92
|
+
|
|
93
|
+
- **Don't** auto-stop a running game just because the user said "play". They probably mean "make sure it's playing", not "stop and restart".
|
|
94
|
+
- **Don't** call `summer_get_console` instead of `summer_get_debugger_errors` for runtime errors. Console has print() output and warnings; debugger errors has the stack traces.
|
|
95
|
+
- **Don't** report "no errors" before waiting for the engine to actually run a frame. A 0-frame snapshot is meaningless.
|
|
96
|
+
|
|
97
|
+
## Collaborative protocol
|
|
98
|
+
|
|
99
|
+
This skill mutates engine state (clearing console, starting play). It's a read-side workflow with one safe write (`summer_play`). No "May I" needed — this is what the user asked for. Do confirm before stopping a running game.
|
|
100
|
+
|
|
101
|
+
## Want a working starter?
|
|
102
|
+
|
|
103
|
+
No template — works against any Godot/Summer project that has a main scene set in `project.godot`.
|
|
104
|
+
|
|
105
|
+
## See also
|
|
106
|
+
|
|
107
|
+
- `_shared/mcp-tools-reference.md` — full tool list
|
|
108
|
+
- `debugging/debug/SKILL.md` — what to do when /play surfaces an error
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: scene-composition
|
|
3
|
-
description: How to structure scenes, when to use sub-scenes,
|
|
3
|
+
description: How to structure scenes, when to use sub-scenes, node hierarchy conventions, and reusable prefabs. Use when building scenes, organizing nodes, or creating instanced prefabs. Trigger on "scene", "sub-scene", "instance", "prefab", "node hierarchy".
|
|
4
4
|
license: MIT
|
|
5
|
-
compatibility:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: scene-and-project
|
|
7
|
+
user-invocable: false
|
|
8
|
+
allowed-tools: Read Grep summer_create_scene summer_open_scene summer_get_scene_tree summer_add_node summer_instantiate_scene summer_save_scene
|
|
9
|
+
paths: ["**/*.tscn"]
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# Scene Composition for Summer Engine
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gdscript-patterns
|
|
3
|
-
description: Common GDScript idioms, signals, exports,
|
|
3
|
+
description: Common GDScript idioms — type hints, signals, exports, onready, lifecycle methods, naming conventions. Use when writing GDScript, attaching scripts, or refactoring untyped code. Trigger on "GDScript", "script", "signals", "exports".
|
|
4
4
|
license: MIT
|
|
5
|
-
compatibility:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: scripting-patterns
|
|
7
|
+
user-invocable: false
|
|
8
|
+
allowed-tools: Read Grep summer_get_script_errors
|
|
9
|
+
paths: ["**/*.gd"]
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# GDScript Patterns for Summer Engine
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ui-basics
|
|
3
|
-
description: HUD, menus, health bars, and
|
|
3
|
+
description: HUD, menus, health bars, progress bars, and Control-based UI layout. Use when building menus, HUDs, health bars, or any Control-tree UI. Trigger on "UI", "HUD", "menu", "health bar", "Control".
|
|
4
4
|
license: MIT
|
|
5
|
-
compatibility:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: ui-and-ux
|
|
7
|
+
user-invocable: false
|
|
8
|
+
allowed-tools: Read Grep summer_add_node summer_set_prop summer_connect_signal summer_save_scene
|
|
9
|
+
paths: ["**/*.tscn", "**/*.gd"]
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# UI Basics for Summer Engine
|
|
File without changes
|