summer-engine 2.3.0 → 2.6.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +24 -8
- package/.codex-plugin/plugin.json +19 -8
- package/.cursor-plugin/plugin.json +18 -7
- package/.factory-plugin/plugin.json +3 -3
- package/.opencode/INSTALL.md +1 -1
- package/AGENTS.md +6 -4
- package/CHANGELOG.md +46 -7
- package/CLAUDE.md +2 -2
- package/GEMINI.md +5 -6
- package/README.md +116 -109
- package/_persona/summer/SKILL.md +5 -6
- package/commands/gameskill.md +103 -0
- package/dist/bin/summer.js +17 -4
- package/dist/commands/cloud.d.ts +2 -0
- package/dist/commands/cloud.js +80 -0
- package/dist/commands/create.js +2 -0
- package/dist/commands/doctor.js +90 -1
- package/dist/commands/install.d.ts +17 -0
- package/dist/commands/install.js +63 -4
- package/dist/commands/login.js +4 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/memory.d.ts +14 -0
- package/dist/commands/memory.js +196 -0
- package/dist/commands/open.js +1 -1
- package/dist/commands/plan.d.ts +2 -0
- package/dist/commands/plan.js +60 -0
- package/dist/commands/run.js +132 -35
- package/dist/commands/setup.js +8 -2
- package/dist/commands/skills.js +90 -6
- package/dist/commands/status.js +3 -0
- package/dist/lib/agent-config.d.ts +2 -2
- package/dist/lib/agent-config.js +134 -7
- package/dist/lib/api-client.d.ts +13 -0
- package/dist/lib/api-client.js +63 -26
- package/dist/lib/async-op-lifecycle.d.ts +60 -0
- package/dist/lib/async-op-lifecycle.js +83 -0
- package/dist/lib/auth.d.ts +2 -0
- package/dist/lib/auth.js +13 -0
- package/dist/lib/cloud/api.d.ts +79 -0
- package/dist/lib/cloud/api.js +107 -0
- package/dist/lib/cloud/apply.d.ts +32 -0
- package/dist/lib/cloud/apply.js +294 -0
- package/dist/lib/cloud/checkpoint.d.ts +26 -0
- package/dist/lib/cloud/checkpoint.js +142 -0
- package/dist/lib/cloud/conflicts.d.ts +55 -0
- package/dist/lib/cloud/conflicts.js +131 -0
- package/dist/lib/cloud/containment.d.ts +8 -0
- package/dist/lib/cloud/containment.js +52 -0
- package/dist/lib/cloud/diff.d.ts +39 -0
- package/dist/lib/cloud/diff.js +138 -0
- package/dist/lib/cloud/engine-bridge.d.ts +21 -0
- package/dist/lib/cloud/engine-bridge.js +105 -0
- package/dist/lib/cloud/hash-cache.d.ts +23 -0
- package/dist/lib/cloud/hash-cache.js +44 -0
- package/dist/lib/cloud/hash.d.ts +10 -0
- package/dist/lib/cloud/hash.js +111 -0
- package/dist/lib/cloud/http.d.ts +17 -0
- package/dist/lib/cloud/http.js +47 -0
- package/dist/lib/cloud/lock-path.d.ts +1 -0
- package/dist/lib/cloud/lock-path.js +5 -0
- package/dist/lib/cloud/lock.d.ts +14 -0
- package/dist/lib/cloud/lock.js +143 -0
- package/dist/lib/cloud/manifest.d.ts +6 -0
- package/dist/lib/cloud/manifest.js +41 -0
- package/dist/lib/cloud/paths.d.ts +20 -0
- package/dist/lib/cloud/paths.js +90 -0
- package/dist/lib/cloud/project-godot-merge.d.ts +32 -0
- package/dist/lib/cloud/project-godot-merge.js +185 -0
- package/dist/lib/cloud/rules.d.ts +39 -0
- package/dist/lib/cloud/rules.js +159 -0
- package/dist/lib/cloud/sync.d.ts +21 -0
- package/dist/lib/cloud/sync.js +518 -0
- package/dist/lib/cloud/transfer.d.ts +23 -0
- package/dist/lib/cloud/transfer.js +184 -0
- package/dist/lib/cloud/types.d.ts +62 -0
- package/dist/lib/cloud/validate-path.d.ts +23 -0
- package/dist/lib/cloud/validate-path.js +103 -0
- package/dist/lib/engine.d.ts +6 -0
- package/dist/lib/engine.js +36 -1
- package/dist/lib/game-task-plan.d.ts +42 -0
- package/dist/lib/game-task-plan.js +376 -0
- package/dist/lib/project-memory.d.ts +33 -0
- package/dist/lib/project-memory.js +220 -0
- package/dist/lib/skills-registry.d.ts +134 -61
- package/dist/lib/skills-registry.js +102 -4
- package/dist/lib/version-check.d.ts +106 -0
- package/dist/lib/version-check.js +338 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.js +83 -0
- package/dist/mcp/tools/asset-tools.js +265 -45
- package/dist/mcp/tools/cloud-tools.d.ts +2 -0
- package/dist/mcp/tools/cloud-tools.js +42 -0
- package/dist/mcp/tools/debug-tools.js +32 -2
- package/dist/mcp/tools/generate-tools.js +101 -13
- package/dist/mcp/tools/project-tools.js +76 -21
- package/dist/mcp/tools/with-engine.d.ts +14 -0
- package/dist/mcp/tools/with-engine.js +52 -7
- package/gemini-extension.json +3 -3
- 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 +20 -7
- package/skills/2d-assets/character-portrait/SKILL.md +1 -1
- package/skills/2d-assets/concept-art/SKILL.md +1 -1
- package/skills/2d-assets/create-asset-sheet/SKILL.md +163 -0
- package/skills/2d-assets/instantiate-asset-pack/SKILL.md +245 -0
- package/skills/2d-assets/pixel-art/SKILL.md +1 -1
- package/skills/2d-assets/skybox-panorama/SKILL.md +1 -1
- package/skills/2d-assets/sprite-sheet/SKILL.md +1 -1
- package/skills/2d-assets/tileable-texture/SKILL.md +1 -1
- package/skills/2d-assets/ui-graphics/SKILL.md +1 -1
- package/skills/2d-assets/use-widget-asset/SKILL.md +217 -0
- package/skills/3d-assets/character-model/SKILL.md +28 -6
- package/skills/3d-assets/environment-kit/SKILL.md +7 -2
- package/skills/3d-assets/organic-model/SKILL.md +5 -4
- package/skills/3d-assets/prop-model/SKILL.md +17 -9
- package/skills/3d-assets/vehicle-model/SKILL.md +5 -4
- package/skills/README.md +37 -30
- package/skills/ai-and-npcs/design-npc/SKILL.md +6 -6
- package/skills/animation/animation-tree/SKILL.md +4 -2
- package/skills/animation/facial-and-lipsync/SKILL.md +1 -1
- package/skills/animation/generate-motion/SKILL.md +26 -5
- package/skills/animation/procedural-animation/SKILL.md +2 -2
- package/skills/asset-pipeline/asset-strategy/SKILL.md +3 -2
- package/skills/audio/adaptive-music/SKILL.md +1 -1
- package/skills/audio/audio-direction/SKILL.md +5 -5
- package/skills/audio/sound-effect/SKILL.md +2 -2
- package/skills/audio/voice-line/SKILL.md +25 -3
- package/skills/character-controllers/fps-controller/SKILL.md +5 -5
- package/skills/debugging/debug/SKILL.md +39 -1
- package/skills/deployment/export-and-ship/SKILL.md +4 -4
- package/skills/gameplay-mechanics/auto-fire-targeting/SKILL.md +170 -0
- package/skills/gameplay-mechanics/design-mechanic/SKILL.md +8 -8
- package/skills/level-design/design-level/SKILL.md +5 -5
- package/skills/level-design/scene-to-level/SKILL.md +125 -0
- package/skills/multiplayer-and-networking/host-authoritative-state/SKILL.md +4 -4
- package/skills/multiplayer-and-networking/peer-to-peer-multiplayer/SKILL.md +4 -4
- package/skills/multiplayer-and-networking/setup-multiplayer/SKILL.md +7 -7
- package/skills/performance/tune-performance/SKILL.md +5 -5
- package/skills/rendering-and-lighting/3d-lighting/SKILL.md +1 -1
- package/skills/rendering-and-lighting/art-direction/SKILL.md +5 -5
- package/skills/scene-and-project/brainstorm-game/SKILL.md +4 -4
- package/skills/scene-and-project/play/SKILL.md +1 -1
- package/skills/scene-and-project/scene-composition/SKILL.md +30 -1
- package/skills/scripting-patterns/gdscript-patterns/SKILL.md +53 -0
- package/skills/ui-and-ux/ui-basics/SKILL.md +1 -1
- package/skills/video/animated-loop/SKILL.md +1 -1
- package/skills/video/cinematic-cutscene/SKILL.md +1 -1
- package/skills/video/trailer-shot/SKILL.md +1 -1
- package/skills/visual-effects/game-feel/SKILL.md +6 -6
- package/skills/workflow/brainstorming/SKILL.md +164 -0
- package/skills/workflow/brainstorming/scripts/frame-template.html +214 -0
- package/skills/workflow/brainstorming/scripts/helper.js +88 -0
- package/skills/workflow/brainstorming/scripts/server.cjs +354 -0
- package/skills/workflow/brainstorming/scripts/start-server.sh +148 -0
- package/skills/workflow/brainstorming/scripts/stop-server.sh +56 -0
- package/skills/workflow/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/workflow/brainstorming/visual-companion.md +287 -0
- package/skills/workflow/debugging-game-feel/SKILL.md +174 -0
- package/skills/workflow/diagnosing-perf-regressions/SKILL.md +190 -0
- package/skills/workflow/dispatching-parallel-agents/SKILL.md +182 -0
- package/skills/workflow/gameskill/SKILL.md +111 -0
- package/skills/workflow/investigating-bugs/CREATION-LOG.md +119 -0
- package/skills/workflow/investigating-bugs/SKILL.md +296 -0
- package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +158 -0
- package/skills/workflow/investigating-bugs/condition-based-waiting.md +115 -0
- package/skills/workflow/investigating-bugs/defense-in-depth.md +122 -0
- package/skills/workflow/investigating-bugs/find-polluter.sh +63 -0
- package/skills/workflow/investigating-bugs/root-cause-tracing.md +169 -0
- package/skills/workflow/investigating-bugs/test-academic.md +14 -0
- package/skills/workflow/investigating-bugs/test-pressure-1.md +58 -0
- package/skills/workflow/investigating-bugs/test-pressure-2.md +68 -0
- package/skills/workflow/investigating-bugs/test-pressure-3.md +69 -0
- package/skills/workflow/mcpupdate/SKILL.md +134 -0
- package/skills/workflow/playtesting-a-feature/SKILL.md +173 -0
- package/skills/{_meta → workflow}/skill-create/SKILL.md +32 -22
- package/skills/{_meta → workflow}/skill-improve/SKILL.md +9 -10
- package/skills/{_meta → workflow}/skill-test/SKILL.md +12 -12
- package/skills/{_meta → workflow}/using-summer/SKILL.md +5 -2
- package/skills/workflow/verification-before-completion/SKILL.md +139 -0
- package/skills/workflow/writing-plans/SKILL.md +152 -0
- package/skills/workflow/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/skills/workflow/writing-skills/SKILL.md +655 -0
- package/skills/workflow/writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/workflow/writing-skills/graphviz-conventions.dot +172 -0
- package/skills/workflow/writing-skills/persuasion-principles.md +187 -0
- package/skills/workflow/writing-skills/render-graphs.js +168 -0
- package/skills/workflow/writing-skills/testing-skills-with-subagents.md +384 -0
- package/dist/commands/assets.d.ts +0 -2
- package/dist/commands/assets.js +0 -189
- package/dist/commands/debug.d.ts +0 -2
- package/dist/commands/debug.js +0 -127
- package/dist/commands/doctor.test.js +0 -29
- package/dist/commands/project.d.ts +0 -2
- package/dist/commands/project.js +0 -170
- package/dist/commands/scene.d.ts +0 -2
- package/dist/commands/scene.js +0 -290
- package/dist/lib/agent-config.test.d.ts +0 -1
- package/dist/lib/agent-config.test.js +0 -80
- package/dist/lib/format.test.d.ts +0 -1
- package/dist/lib/format.test.js +0 -36
- package/dist/lib/plugin-manifests.test.d.ts +0 -1
- package/dist/lib/plugin-manifests.test.js +0 -134
- package/dist/lib/with-engine.d.ts +0 -14
- package/dist/lib/with-engine.js +0 -109
- package/skills/_shared/collaborative-protocol.md +0 -50
- package/skills/_shared/gd-style.md +0 -121
- package/skills/_shared/godot-version.md +0 -32
- package/skills/_shared/mcp-tools-reference.md +0 -133
- package/skills/_shared/summer-folder.md +0 -44
- package/skills/_shared/template-registry.md +0 -40
- package/skills/_tests/runner.md +0 -90
- package/skills/_tests/specs/3d-lighting.md +0 -19
- package/skills/_tests/specs/art-direction.md +0 -115
- package/skills/_tests/specs/asset-strategy.md +0 -19
- package/skills/_tests/specs/audio-direction.md +0 -123
- package/skills/_tests/specs/brainstorm-game.md +0 -99
- package/skills/_tests/specs/debug.md +0 -94
- package/skills/_tests/specs/design-level.md +0 -113
- package/skills/_tests/specs/design-mechanic.md +0 -112
- package/skills/_tests/specs/design-npc.md +0 -143
- package/skills/_tests/specs/export-and-ship.md +0 -114
- package/skills/_tests/specs/fps-controller.md +0 -113
- package/skills/_tests/specs/gdscript-patterns.md +0 -19
- package/skills/_tests/specs/host-authoritative-state.md +0 -104
- package/skills/_tests/specs/make-game.md +0 -19
- package/skills/_tests/specs/peer-to-peer-multiplayer.md +0 -99
- package/skills/_tests/specs/play.md +0 -88
- package/skills/_tests/specs/scene-composition.md +0 -19
- package/skills/_tests/specs/setup-multiplayer.md +0 -106
- package/skills/_tests/specs/tune-performance.md +0 -104
- package/skills/_tests/specs/ui-basics.md +0 -19
- package/skills/_tests/specs/vfx.md +0 -116
- package/skills/catalog.yaml +0 -991
- /package/dist/{commands/doctor.test.d.ts → lib/cloud/types.js} +0 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: playtesting-a-feature
|
|
3
|
+
description: Use when about to claim a gameplay feature is done, shipped, or working — requires actually running the game and walking through the feature before declaring completion. Static diagnostics and type checks do not count as playtesting.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Playtesting A Feature
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
A game feature is not done because it compiles. It is not done because the tests pass. It is not done because `summer_get_diagnostics` is clean. It is done when someone has played it and the thing it promised actually happens.
|
|
11
|
+
|
|
12
|
+
**Core principle:** If you have not pressed play and walked the feature, you have not shipped it.
|
|
13
|
+
|
|
14
|
+
This skill governs the play-the-game layer of verification. It does not replace:
|
|
15
|
+
|
|
16
|
+
- `summer:verification-before-completion` — type checks, build output, test runs. Run that for the code layer.
|
|
17
|
+
- `summer:debug` — operational triage when a feature is actively broken or crashing.
|
|
18
|
+
- `summer:investigating-bugs` — root-cause analysis once a specific bug is reproducible.
|
|
19
|
+
|
|
20
|
+
Use those skills first if they apply. This skill runs **after** code-level verification, **before** telling the user the feature is done.
|
|
21
|
+
|
|
22
|
+
<EXTREMELY-IMPORTANT>
|
|
23
|
+
Static analysis is necessary but never sufficient for gameplay features. A clean `summer_get_diagnostics` after `summer_play` only proves the game booted. It does NOT prove the feature works. Auto-fire weapons, level transitions, UI flows, input handling, multi-frame physics — none of these surface in diagnostics until they fire during real play.
|
|
24
|
+
</EXTREMELY-IMPORTANT>
|
|
25
|
+
|
|
26
|
+
## The Iron Law
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
NO "FEATURE SHIPPED" CLAIM WITHOUT A PLAYED WALKTHROUGH
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If you have not, in this session, called `summer_play` and either:
|
|
33
|
+
|
|
34
|
+
1. Walked the feature yourself via MCP-driven repros where possible, OR
|
|
35
|
+
2. Asked the user to walk it and confirmed the result via `summer_get_console` / `summer_get_debugger_errors`
|
|
36
|
+
|
|
37
|
+
— then you cannot claim the feature works.
|
|
38
|
+
|
|
39
|
+
## The Loop
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Define golden path → Play → Walk it → Probe edges → Capture state → Decide
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 1. Define the golden path
|
|
46
|
+
|
|
47
|
+
Before pressing play, write down — in one or two sentences — what "feature works" means as a user-visible sequence. Be concrete.
|
|
48
|
+
|
|
49
|
+
> **Good:** "Player walks to chest, presses E, chest opens, item drops, item enters inventory, inventory UI updates."
|
|
50
|
+
> **Bad:** "Inventory pickup works."
|
|
51
|
+
|
|
52
|
+
If you cannot describe the golden path in one sentence, you do not understand the feature well enough to verify it. Ask the user.
|
|
53
|
+
|
|
54
|
+
### 2. Press play
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
summer_clear_console
|
|
58
|
+
summer_play
|
|
59
|
+
summer_is_running (confirm)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`summer_clear_console` first so the buffer is not polluted by a previous session's errors. If you skip this, you will chase ghost errors that have nothing to do with the current feature.
|
|
63
|
+
|
|
64
|
+
### 3. Walk the golden path
|
|
65
|
+
|
|
66
|
+
The MCP cannot simulate keyboard input, mouse motion, or controller. So either:
|
|
67
|
+
|
|
68
|
+
- **The user plays.** Ask them to walk the exact golden path you defined. Wait for their confirmation that they did. Then check state.
|
|
69
|
+
- **You drive via scene mutation.** For features that can be triggered through `summer_set_prop` or function calls exposed to the editor (e.g. autoload methods), drive them programmatically. Be honest about which path you took.
|
|
70
|
+
|
|
71
|
+
After the walkthrough:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
summer_get_console (look for unexpected prints, warnings)
|
|
75
|
+
summer_get_debugger_errors (runtime errors caught mid-play)
|
|
76
|
+
summer_get_diagnostics (overall counts)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
If anything is non-zero or unexpected, the feature is not done. Go to `summer:debug`.
|
|
80
|
+
|
|
81
|
+
### 4. Probe the edges
|
|
82
|
+
|
|
83
|
+
The golden path proves the happy case. Most gameplay bugs live in the edges. Before claiming done, probe at least these four classes:
|
|
84
|
+
|
|
85
|
+
| Edge | What to try | Why |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| Input spam | Press the action button 10x in a row, hold it, mash during a transition | Race conditions, state machines that swallow input, double-trigger bugs |
|
|
88
|
+
| Off-screen / out-of-range | Trigger the feature when the actor is far from the camera, off the navmesh, in a different scene | `@onready` paths that assume specific parent, signal connections that drop when nodes free |
|
|
89
|
+
| Paused / state-change | Trigger during pause, mid-cutscene, while another modal is open | `process_mode` mistakes, `get_tree().paused` not respected |
|
|
90
|
+
| Multi-frame | Repeat the feature 5 times in a row without restarting the scene | Leaked nodes, accumulating signals, growing arrays, sound stacking |
|
|
91
|
+
|
|
92
|
+
You do not need to probe every edge for every feature. Pick the 2-3 that are most relevant to the feature's mechanics. Skip with a one-line note if you skip: "Did not probe pause-state — feature only runs in main menu."
|
|
93
|
+
|
|
94
|
+
### 5. Capture state, then decide
|
|
95
|
+
|
|
96
|
+
After the walkthrough and edge probes, capture one final snapshot:
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
summer_get_diagnostics
|
|
100
|
+
summer_get_console (if anything looked off)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
State the result in plain language:
|
|
104
|
+
|
|
105
|
+
> "Played the chest-open feature: golden path works (chest opens, item enters inventory, UI updates). Probed input spam (no double-pickup), probed pause (correctly disabled). Diagnostics clean. Feature done."
|
|
106
|
+
|
|
107
|
+
Or:
|
|
108
|
+
|
|
109
|
+
> "Played the chest-open feature: golden path works, but pressing E twice in 100ms duplicates the pickup. Not done — going to summer:debug."
|
|
110
|
+
|
|
111
|
+
## "Looks right" vs "is right"
|
|
112
|
+
|
|
113
|
+
A common failure mode: the feature visually looks correct on first try, you stop there, ship it, and a deeper bug surfaces later.
|
|
114
|
+
|
|
115
|
+
**Looks right** means the rendered frame matches expectations.
|
|
116
|
+
|
|
117
|
+
**Is right** means the rendered frame matches expectations AND the underlying state is consistent AND it survives repetition AND no errors are silently logged.
|
|
118
|
+
|
|
119
|
+
The console catches "looks right but isn't right" cases — silent errors, deprecation warnings, signal misfires that don't crash but indicate a real bug. **Always read `summer_get_console` after a playthrough, even when the visuals looked fine.**
|
|
120
|
+
|
|
121
|
+
## When to record video vs when console+diagnostics is enough
|
|
122
|
+
|
|
123
|
+
Console + diagnostics + your walkthrough description is usually enough. Ask the user for a video or screenshot when:
|
|
124
|
+
|
|
125
|
+
- The feature is **visual** (camera, lighting, particles, animation, UI layout) and the user is the only one who can see the result.
|
|
126
|
+
- The feature **feels wrong** — see `summer:debugging-game-feel`. Frame counts and console output cannot capture "the jump feels floaty."
|
|
127
|
+
- The bug is **non-deterministic** — sometimes-works features need a recording to share with anyone diagnosing later.
|
|
128
|
+
|
|
129
|
+
Don't ask for video reflexively. Most features can be verified through `summer_get_console` + a "did the golden path work?" question. Cost-aware.
|
|
130
|
+
|
|
131
|
+
## Red Flags — STOP
|
|
132
|
+
|
|
133
|
+
| Red flag | Reality |
|
|
134
|
+
|---|---|
|
|
135
|
+
| "Compiles clean, shipping it" | Compiling is not playing. Press play. |
|
|
136
|
+
| "Diagnostics returned 0 errors after boot" | Boot is not play. The feature has not fired yet. |
|
|
137
|
+
| "User said make this — I'll move on once it builds" | The user wants the feature to work, not to build. |
|
|
138
|
+
| "It would take too long to play" | Playtest takes 60 seconds. Shipping a broken feature costs hours. |
|
|
139
|
+
| "The unit test passes" | Unit tests cover code paths, not gameplay sequences. |
|
|
140
|
+
| "I already played it in a previous session" | State changed. Press play in this session. |
|
|
141
|
+
| "I'll let the user catch any issues" | That is the user's job description for a non-AI engineer. Yours is to ship working features. |
|
|
142
|
+
| Skipping `summer_clear_console` before `summer_play` | You will chase last session's errors. |
|
|
143
|
+
| Skipping `summer_get_console` because diagnostics looked fine | Silent warnings and signal misfires hide there. |
|
|
144
|
+
|
|
145
|
+
## Rationalization Prevention
|
|
146
|
+
|
|
147
|
+
| Excuse | Reality |
|
|
148
|
+
|---|---|
|
|
149
|
+
| "Static checks are enough for this feature" | If it has any runtime behavior, no. |
|
|
150
|
+
| "The feature is too small to playtest" | Two lines of code can break a state machine. Play it. |
|
|
151
|
+
| "I'll batch the playtest with the next feature" | Bugs compound. Play each feature individually. |
|
|
152
|
+
| "User is in a hurry" | Shipping broken features is the slowest path. |
|
|
153
|
+
| "The repro is hard to set up" | That is a sign the feature has insufficient instrumentation. Add it, then play. |
|
|
154
|
+
|
|
155
|
+
## When the engine isn't running
|
|
156
|
+
|
|
157
|
+
If `summer_play` returns "Summer Engine is not running":
|
|
158
|
+
|
|
159
|
+
1. Tell the user: `summer run` to start it.
|
|
160
|
+
2. Do not claim the feature is verified from static analysis alone. Say: "Code compiles and looks correct, but I cannot playtest until the engine is running."
|
|
161
|
+
3. When the engine comes back, run the loop.
|
|
162
|
+
|
|
163
|
+
## The Bottom Line
|
|
164
|
+
|
|
165
|
+
A game feature is a promise to the player. Verifying it means seeing the promise kept on screen, not seeing the code that would, in theory, keep it.
|
|
166
|
+
|
|
167
|
+
Press play. Walk the path. Probe the edges. Read the console. Then claim done.
|
|
168
|
+
|
|
169
|
+
**Related skills:**
|
|
170
|
+
- `summer:verification-before-completion` — the code-layer verification this skill builds on.
|
|
171
|
+
- `summer:debug` — when the playtest surfaces a crash or error.
|
|
172
|
+
- `summer:investigating-bugs` — when the playtest surfaces a reproducible logical bug.
|
|
173
|
+
- `summer:debugging-game-feel` — when the feature works but feels wrong.
|
|
@@ -3,7 +3,7 @@ name: skill-create
|
|
|
3
3
|
description: Use when a contributor wants to add a new skill to the Summer library — bootstraps the canonical folder structure, frontmatter, and stub sections. Trigger on "create skill", "add skill", "new skill", "scaffold a skill".
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
-
category:
|
|
6
|
+
category: workflow
|
|
7
7
|
allowed-tools: Read Write Glob Grep
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -15,9 +15,9 @@ allowed-tools: Read Write Glob Grep
|
|
|
15
15
|
|
|
16
16
|
Ask the user:
|
|
17
17
|
- **Name** (kebab-case, ≤ 64 chars). Example: `state-machine-patterns`.
|
|
18
|
-
- **Category** (one of the 20 in `
|
|
18
|
+
- **Category** (one of the 20 in `SKILL_CATEGORIES` at `src/lib/skills-registry.ts`). Example: `scripting-patterns`.
|
|
19
19
|
- **One-sentence description** for the frontmatter.
|
|
20
|
-
- **Template-id** (optional). Lookup against `
|
|
20
|
+
- **Template-id** (optional). Lookup against `references/template-registry.md`.
|
|
21
21
|
|
|
22
22
|
### 2. Create the folder
|
|
23
23
|
|
|
@@ -40,7 +40,7 @@ description: <one-sentence what + when. Lead with key trigger phrases.>
|
|
|
40
40
|
license: MIT
|
|
41
41
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
42
42
|
category: <category>
|
|
43
|
-
template-id: <optional template-id from
|
|
43
|
+
template-id: <optional template-id from references/template-registry.md>
|
|
44
44
|
allowed-tools: Read Grep <summer_* tools this skill uses>
|
|
45
45
|
paths: ["**/*.gd", "**/*.tscn"]
|
|
46
46
|
---
|
|
@@ -79,14 +79,14 @@ May I <action>?
|
|
|
79
79
|
## Want a working starter?
|
|
80
80
|
|
|
81
81
|
→ **template-id**: `<template-id>`
|
|
82
|
-
→ **Repo**: <github URL from
|
|
82
|
+
→ **Repo**: <github URL from references/template-registry.md>
|
|
83
83
|
→ **Bootstrap**: `summer template clone <template-id> my-game`
|
|
84
84
|
|
|
85
85
|
## See also
|
|
86
86
|
|
|
87
|
-
- `
|
|
88
|
-
- `
|
|
89
|
-
- `
|
|
87
|
+
- `references/godot-version.md`
|
|
88
|
+
- `references/mcp-tools-reference.md`
|
|
89
|
+
- `references/gd-style.md`
|
|
90
90
|
- (other relevant skills)
|
|
91
91
|
```
|
|
92
92
|
|
|
@@ -115,29 +115,39 @@ May I <action>?
|
|
|
115
115
|
**Expected:** <how the skill should adapt>
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
### 5. Register
|
|
118
|
+
### 5. Register the skill
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
Two files to update, both required for the skill to load in Claude Code / Cursor / Codex AND to be installable via `summer skills install`:
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
122
|
+
**5a. `.claude-plugin/plugin.json`** (and sibling manifests `.codex-plugin/plugin.json`, `.cursor-plugin/plugin.json`). Append to the `skills:` array:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
"./skills/<category>/<name>/",
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**5b. `src/lib/skills-registry.ts`** `SKILL_REGISTRY` array. Append a typed entry:
|
|
129
|
+
|
|
130
|
+
```ts
|
|
131
|
+
{
|
|
132
|
+
name: "<name>",
|
|
133
|
+
category: "<category>",
|
|
134
|
+
public: true,
|
|
135
|
+
clients: ALL_CLIENTS,
|
|
136
|
+
recommended: false,
|
|
137
|
+
requiresMcpTools: ["summer_<tool>", ...],
|
|
138
|
+
testScenario: "<one-line scenario the skill should handle end-to-end>",
|
|
139
|
+
},
|
|
129
140
|
```
|
|
130
141
|
|
|
131
142
|
### 6. Run /skill-test in static mode
|
|
132
143
|
|
|
133
|
-
Confirm the new skill passes the
|
|
144
|
+
Confirm the new skill passes the structural checks before commit. The `plugin-manifests.test.ts` test will fail the build if 5a or 5b is missing.
|
|
134
145
|
|
|
135
146
|
## Collaborative protocol
|
|
136
147
|
|
|
137
|
-
This skill writes files (the new skill folder +
|
|
148
|
+
This skill writes files (the new skill folder + plugin manifest update + TS registry update). Always ask before each write step.
|
|
138
149
|
|
|
139
150
|
## See also
|
|
140
151
|
|
|
141
|
-
- `
|
|
142
|
-
- `
|
|
143
|
-
- `catalog.yaml`
|
|
152
|
+
- `references/collaborative-protocol.md`
|
|
153
|
+
- `workflow/skill-test/SKILL.md`
|
|
@@ -3,7 +3,7 @@ name: skill-improve
|
|
|
3
3
|
description: Use when a contributor wants to upgrade a Summer skill that is underperforming or to fix a regression — runs the skill against a behavioral spec with and without proposed changes via parallel-eval harness and ships the version that wins. Trigger on "improve skill", "iterate on skill", "make this skill better".
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
-
category:
|
|
6
|
+
category: workflow
|
|
7
7
|
allowed-tools: Read Write Edit Task
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -24,7 +24,7 @@ Run this when `/skill-test spec` flags issues you can't fix by reading the skill
|
|
|
24
24
|
|
|
25
25
|
Ask the user:
|
|
26
26
|
- **Skill name.** Resolves to `skills/<category>/<name>/SKILL.md`.
|
|
27
|
-
- **Test cases to focus on.** Default: all `## Case` blocks in `
|
|
27
|
+
- **Test cases to focus on.** Default: all `## Case` blocks in `tests/specs/<name>.md`.
|
|
28
28
|
|
|
29
29
|
### 2. Establish a baseline
|
|
30
30
|
|
|
@@ -35,7 +35,7 @@ For each Case:
|
|
|
35
35
|
3. Capture the tool calls it makes and the diff it produces.
|
|
36
36
|
4. Score against the Case's Assertions.
|
|
37
37
|
|
|
38
|
-
Save outputs to `
|
|
38
|
+
Save outputs to `tests/runs/<skill-name>/baseline/case-<N>/`.
|
|
39
39
|
|
|
40
40
|
### 3. Propose changes
|
|
41
41
|
|
|
@@ -45,11 +45,11 @@ Read the failing Cases. Identify the gap between what the skill says and what th
|
|
|
45
45
|
- Skill assumes a fixture detail the agent missed (add explicit step to confirm).
|
|
46
46
|
- Skill's "May I" wording is too generic for the agent to infer the right ask.
|
|
47
47
|
|
|
48
|
-
Draft a revised SKILL.md. May I write it to `
|
|
48
|
+
Draft a revised SKILL.md. May I write it to `tests/runs/<skill-name>/proposed/SKILL.md`?
|
|
49
49
|
|
|
50
50
|
### 4. Run the proposed version
|
|
51
51
|
|
|
52
|
-
Repeat step 2 with the proposed SKILL.md. Save to `
|
|
52
|
+
Repeat step 2 with the proposed SKILL.md. Save to `tests/runs/<skill-name>/proposed/case-<N>/`.
|
|
53
53
|
|
|
54
54
|
### 5. Compare and decide
|
|
55
55
|
|
|
@@ -69,13 +69,12 @@ Case 3 (Edge): baseline 3/3 proposed 3/3 = no change
|
|
|
69
69
|
|
|
70
70
|
If proposed wins on net, prompt the user:
|
|
71
71
|
|
|
72
|
-
> Proposed version wins 2 cases, ties 1, loses 0. May I overwrite `skills/<category>/<name>/SKILL.md` with the proposed version
|
|
72
|
+
> Proposed version wins 2 cases, ties 1, loses 0. May I overwrite `skills/<category>/<name>/SKILL.md` with the proposed version?
|
|
73
73
|
|
|
74
74
|
### 6. Ship
|
|
75
75
|
|
|
76
76
|
On user yes:
|
|
77
77
|
- Overwrite `SKILL.md`.
|
|
78
|
-
- Update `last-tested: <today>` in `catalog.yaml`.
|
|
79
78
|
- Commit with message `feat(skill): improve <name> — <one-line summary of change>`.
|
|
80
79
|
|
|
81
80
|
## Collaborative protocol
|
|
@@ -84,6 +83,6 @@ This skill writes files at multiple steps. Always ask before each write.
|
|
|
84
83
|
|
|
85
84
|
## See also
|
|
86
85
|
|
|
87
|
-
- `
|
|
88
|
-
- `
|
|
89
|
-
- `
|
|
86
|
+
- `workflow/skill-test/SKILL.md`
|
|
87
|
+
- `tests/runner.md`
|
|
88
|
+
- `tests/specs/`
|
|
@@ -3,7 +3,7 @@ name: skill-test
|
|
|
3
3
|
description: Use when a contributor wants to lint a Summer skill before commit, audit the whole library, or check a behavioral spec assertion — validates against static structural rules and per-skill behavioral specs. Trigger on "skill test", "lint skill", "validate skill".
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
-
category:
|
|
6
|
+
category: workflow
|
|
7
7
|
allowed-tools: Read Glob Grep
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -21,9 +21,9 @@ For a single skill at `skills/<category>/<name>/`, run these checks:
|
|
|
21
21
|
- At least one `summer_*` MCP tool example.
|
|
22
22
|
- At least one file-edit fallback block (e.g., raw `.tscn` snippet) OR an explicit "no fallback for this — Summer MCP required" note.
|
|
23
23
|
4. **Collaborative protocol.** If the skill triggers user-visible writes, body must contain at least one of: `May I`, `I'm about to`, `Continue?`, `OK?`, `Proceed?`. Skills that only inspect/read are exempt.
|
|
24
|
-
5. **Template-id resolved.** If the skill's frontmatter declares `template-id: <id>`, that id must exist in `
|
|
24
|
+
5. **Template-id resolved.** If the skill's frontmatter declares `template-id: <id>`, that id must exist in `references/template-registry.md`.
|
|
25
25
|
6. **Tests/spec.md present.** Every skill in a non-`_meta` category must have `tests/spec.md` with at least one `## Case` heading.
|
|
26
|
-
7. **Relative links resolve.** Every `](../
|
|
26
|
+
7. **Relative links resolve.** Every `](../references/...)`, `](../../references/...)`, `](./references/...)`, and `](./examples/...)` link must point at an existing file (FAIL if broken). Forward references in `## See also` to other SKILL.md files (e.g., `[design-mechanic](../../gameplay-mechanics/design-mechanic/SKILL.md)`) are allowed to dangle and only WARN if the target is missing — the catalog evolves and skills should be free to point at planned skills.
|
|
27
27
|
|
|
28
28
|
Output:
|
|
29
29
|
|
|
@@ -42,7 +42,7 @@ skill: <category>/<name>
|
|
|
42
42
|
|
|
43
43
|
## Mode: `spec` — Behavioral spec runner
|
|
44
44
|
|
|
45
|
-
For a single skill, read both `skills/<category>/<name>/SKILL.md` and `
|
|
45
|
+
For a single skill, read both `skills/<category>/<name>/SKILL.md` and `tests/specs/<name>.md`. For each `## Case` in the spec:
|
|
46
46
|
|
|
47
47
|
1. Lay out the **Fixture** (starting state, available tools).
|
|
48
48
|
2. Read the **Input** (user prompt).
|
|
@@ -55,13 +55,13 @@ No code execution. Pure reasoning over text.
|
|
|
55
55
|
|
|
56
56
|
## Mode: `audit` — Whole library report
|
|
57
57
|
|
|
58
|
-
Read `
|
|
58
|
+
Read the `skills:` array in `.claude-plugin/plugin.json`. For each registered skill:
|
|
59
59
|
|
|
60
60
|
1. Run `static` mode on the skill.
|
|
61
|
-
2. Note
|
|
62
|
-
3. Flag skills
|
|
61
|
+
2. Note any `last-tested:` field in the SKILL.md frontmatter (optional).
|
|
62
|
+
3. Flag skills failing static checks.
|
|
63
63
|
|
|
64
|
-
Output: a table with PASS / FAIL counts
|
|
64
|
+
Output: a table with PASS / FAIL counts and a punch list of skills needing attention.
|
|
65
65
|
|
|
66
66
|
## When to use which mode
|
|
67
67
|
|
|
@@ -80,7 +80,7 @@ This skill is **read-only**. It never writes. No "May I" needed.
|
|
|
80
80
|
|
|
81
81
|
## See also
|
|
82
82
|
|
|
83
|
-
- `
|
|
84
|
-
- `
|
|
85
|
-
- `
|
|
86
|
-
- `
|
|
83
|
+
- `references/collaborative-protocol.md`
|
|
84
|
+
- `references/template-registry.md`
|
|
85
|
+
- `tests/runner.md`
|
|
86
|
+
- `tests/specs/` — per-skill behavioral specs
|
|
@@ -47,6 +47,8 @@ Scenes are always `.tscn`/`.scn`. Resources are always `.tres`/`.res`. Drive the
|
|
|
47
47
|
|
|
48
48
|
The engine must be running for MCP tools that touch scenes or diagnostics. If it isn't, the tool returns an error pointing the user at `summer run`.
|
|
49
49
|
|
|
50
|
+
`.summer/` is the project's durable memory. `summer_get_project_context` surfaces a lightweight `projectMemory` summary; use it to read only the relevant Markdown before creative, audio, dialogue, level, or character work. Facts marked `priority: locked` are stable project decisions and require explicit user confirmation before changing.
|
|
51
|
+
|
|
50
52
|
## How to Access Skills
|
|
51
53
|
|
|
52
54
|
**Claude Code / Cursor / Codex / Copilot CLI:** Use the `Skill` tool. When you invoke a skill, its content loads — follow it directly. Never use `Read` on a skill file.
|
|
@@ -83,6 +85,7 @@ These thoughts mean STOP. Check skills first.
|
|
|
83
85
|
| "The user just wants me to start" | Most "just build it" requests still benefit from the brainstorm-game skill. Offer it. |
|
|
84
86
|
| "I can read the .tscn file directly" | `summer_get_scene_tree` and `summer_inspect_node` are authoritative. Files lag the editor's in-memory state. |
|
|
85
87
|
| "I'll skip the soul file" | `.summer/GameSoul.md` is what every other skill reads. Honor it. |
|
|
88
|
+
| "This voice or canon fact is probably fine to change" | Check `.summer/memory` first. `priority: locked` facts require explicit user confirmation. |
|
|
86
89
|
| "I don't need to brainstorm — they said FPS" | Even with the genre named, brainstorm-game scopes mechanics, art direction, and the cut list. Skip only if explicitly told to. |
|
|
87
90
|
| "I'll write the GDScript myself, no skill" | `gdscript-patterns` encodes idioms that Claude/Codex/Cursor regularly get wrong (signal connection, type hints, `_ready` vs `_process`). |
|
|
88
91
|
| "The engine isn't running, I'll just edit files" | Editing scene files directly while the engine is running silently overwrites in-memory state. Check the skill. |
|
|
@@ -122,8 +125,8 @@ Do NOT fall back to editing `.tscn` files directly. The engine reads them on dis
|
|
|
122
125
|
If skills aren't found or the MCP server fails to start:
|
|
123
126
|
|
|
124
127
|
1. Check whether `summer` is on PATH: `which summer` / `where summer`.
|
|
125
|
-
2. If not, point them at: `
|
|
126
|
-
3. If `summer doctor` is available, run it: `summer doctor` reports auth, engine, port, and skill state.
|
|
128
|
+
2. If not, point them at: `npx -y summer-engine@latest setup <agent> --yes --force`.
|
|
129
|
+
3. If `summer doctor` is available, run it: `summer doctor` reports auth, engine, port, project memory, and skill state.
|
|
127
130
|
|
|
128
131
|
## User Instructions Trump Everything
|
|
129
132
|
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-before-completion
|
|
3
|
+
description: Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Verification Before Completion
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Claiming work is complete without verification is dishonesty, not efficiency.
|
|
11
|
+
|
|
12
|
+
**Core principle:** Evidence before claims, always.
|
|
13
|
+
|
|
14
|
+
**Violating the letter of this rule is violating the spirit of this rule.**
|
|
15
|
+
|
|
16
|
+
## The Iron Law
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
If you haven't run the verification command in this message, you cannot claim it passes.
|
|
23
|
+
|
|
24
|
+
## The Gate Function
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
BEFORE claiming any status or expressing satisfaction:
|
|
28
|
+
|
|
29
|
+
1. IDENTIFY: What command proves this claim?
|
|
30
|
+
2. RUN: Execute the FULL command (fresh, complete)
|
|
31
|
+
3. READ: Full output, check exit code, count failures
|
|
32
|
+
4. VERIFY: Does output confirm the claim?
|
|
33
|
+
- If NO: State actual status with evidence
|
|
34
|
+
- If YES: State claim WITH evidence
|
|
35
|
+
5. ONLY THEN: Make the claim
|
|
36
|
+
|
|
37
|
+
Skip any step = lying, not verifying
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Common Failures
|
|
41
|
+
|
|
42
|
+
| Claim | Requires | Not Sufficient |
|
|
43
|
+
|-------|----------|----------------|
|
|
44
|
+
| Tests pass | Test command output: 0 failures | Previous run, "should pass" |
|
|
45
|
+
| Linter clean | Linter output: 0 errors | Partial check, extrapolation |
|
|
46
|
+
| Build succeeds | Build command: exit 0 | Linter passing, logs look good |
|
|
47
|
+
| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
|
|
48
|
+
| Regression test works | Red-green cycle verified | Test passes once |
|
|
49
|
+
| Agent completed | VCS diff shows changes | Agent reports "success" |
|
|
50
|
+
| Requirements met | Line-by-line checklist | Tests passing |
|
|
51
|
+
|
|
52
|
+
## Red Flags - STOP
|
|
53
|
+
|
|
54
|
+
- Using "should", "probably", "seems to"
|
|
55
|
+
- Expressing satisfaction before verification ("Great!", "Perfect!", "Done!", etc.)
|
|
56
|
+
- About to commit/push/PR without verification
|
|
57
|
+
- Trusting agent success reports
|
|
58
|
+
- Relying on partial verification
|
|
59
|
+
- Thinking "just this once"
|
|
60
|
+
- Tired and wanting work over
|
|
61
|
+
- **ANY wording implying success without having run verification**
|
|
62
|
+
|
|
63
|
+
## Rationalization Prevention
|
|
64
|
+
|
|
65
|
+
| Excuse | Reality |
|
|
66
|
+
|--------|---------|
|
|
67
|
+
| "Should work now" | RUN the verification |
|
|
68
|
+
| "I'm confident" | Confidence ≠ evidence |
|
|
69
|
+
| "Just this once" | No exceptions |
|
|
70
|
+
| "Linter passed" | Linter ≠ compiler |
|
|
71
|
+
| "Agent said success" | Verify independently |
|
|
72
|
+
| "I'm tired" | Exhaustion ≠ excuse |
|
|
73
|
+
| "Partial check is enough" | Partial proves nothing |
|
|
74
|
+
| "Different words so rule doesn't apply" | Spirit over letter |
|
|
75
|
+
|
|
76
|
+
## Key Patterns
|
|
77
|
+
|
|
78
|
+
**Tests:**
|
|
79
|
+
```
|
|
80
|
+
✅ [Run test command] [See: 34/34 pass] "All tests pass"
|
|
81
|
+
❌ "Should pass now" / "Looks correct"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Regression tests (TDD Red-Green):**
|
|
85
|
+
```
|
|
86
|
+
✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)
|
|
87
|
+
❌ "I've written a regression test" (without red-green verification)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Build:**
|
|
91
|
+
```
|
|
92
|
+
✅ [Run build] [See: exit 0] "Build passes"
|
|
93
|
+
❌ "Linter passed" (linter doesn't check compilation)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Requirements:**
|
|
97
|
+
```
|
|
98
|
+
✅ Re-read plan → Create checklist → Verify each → Report gaps or completion
|
|
99
|
+
❌ "Tests pass, phase complete"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Agent delegation:**
|
|
103
|
+
```
|
|
104
|
+
✅ Agent reports success → Check VCS diff → Verify changes → Report actual state
|
|
105
|
+
❌ Trust agent report
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Why This Matters
|
|
109
|
+
|
|
110
|
+
From 24 failure memories:
|
|
111
|
+
- the user said "I don't believe you" - trust broken
|
|
112
|
+
- Undefined functions shipped - would crash
|
|
113
|
+
- Missing requirements shipped - incomplete features
|
|
114
|
+
- Time wasted on false completion → redirect → rework
|
|
115
|
+
- Violates: "Honesty is a core value. If you lie, you'll be replaced."
|
|
116
|
+
|
|
117
|
+
## When To Apply
|
|
118
|
+
|
|
119
|
+
**ALWAYS before:**
|
|
120
|
+
- ANY variation of success/completion claims
|
|
121
|
+
- ANY expression of satisfaction
|
|
122
|
+
- ANY positive statement about work state
|
|
123
|
+
- Committing, PR creation, task completion
|
|
124
|
+
- Moving to next task
|
|
125
|
+
- Delegating to agents
|
|
126
|
+
|
|
127
|
+
**Rule applies to:**
|
|
128
|
+
- Exact phrases
|
|
129
|
+
- Paraphrases and synonyms
|
|
130
|
+
- Implications of success
|
|
131
|
+
- ANY communication suggesting completion/correctness
|
|
132
|
+
|
|
133
|
+
## The Bottom Line
|
|
134
|
+
|
|
135
|
+
**No shortcuts for verification.**
|
|
136
|
+
|
|
137
|
+
Run the command. Read the output. THEN claim the result.
|
|
138
|
+
|
|
139
|
+
This is non-negotiable.
|