frogoe 0.5.5 → 0.7.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/dist/cli.js +1202 -475
- package/dist/templates/_shared/AGENTS.md +17 -13
- package/dist/templates/_shared/CLAUDE.md +18 -14
- package/package.json +1 -1
|
@@ -71,7 +71,7 @@ bundle`. Use `--json` for machine-readable findings that can be fixed programmat
|
|
|
71
71
|
|
|
72
72
|
- `index.html` — entry shell: `<canvas id="c">` + import map + `.hud` layer (HUD blocks land here)
|
|
73
73
|
- `game.js` — the whole simulation: `defineGame(({stage, input, loop, finish}) => {...})`
|
|
74
|
-
- `BRIEF.md` — the game's identity: verb, mood, palette (validated by `frogoe check`)
|
|
74
|
+
- `BRIEF.md` — the game's identity: verb, session, mood, palette (validated by `frogoe check`)
|
|
75
75
|
- `assets/poster.js` + `assets/icon.js` — REQUIRED identity art: canvas scenes importing the game's own sprites (`art/missing` gates the check; frogoe-creative → `references/art.md`)
|
|
76
76
|
- `frogoe.json` — contract version pin
|
|
77
77
|
- `.frogoe/` — tool-owned, gitignored (the contract runtime — never edit)
|
|
@@ -89,17 +89,20 @@ frogoe check # full gate: + browser — runtime errors, canvas paint
|
|
|
89
89
|
|
|
90
90
|
Fix all errors before presenting the result. Common findings:
|
|
91
91
|
|
|
92
|
-
| Code | Meaning
|
|
93
|
-
| ------------------------ |
|
|
94
|
-
| `brief/todo` | BRIEF.md still has TODO markers
|
|
95
|
-
| `art/missing` | `assets/poster.js` / `assets/icon.js` absent
|
|
96
|
-
| `art/title-band` | poster declares no lettering-block band
|
|
97
|
-
| `input/incremental-drag` | `x += p.dx` (wall-rocket bug)
|
|
98
|
-
| `folder/touch-select` | Phone long-press summons text selection (iOS + Android)
|
|
99
|
-
| `audio/suspended-only` | Resume gated on `=== "suspended"` (iOS silent bug)
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
92
|
+
| Code | Meaning | Fix |
|
|
93
|
+
| ------------------------ | -------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
94
|
+
| `brief/todo` | BRIEF.md still has TODO markers | Fill in verb, mood, palette |
|
|
95
|
+
| `art/missing` | `assets/poster.js` / `assets/icon.js` absent | Author both scenes — they import sprites from game.js (frogoe-creative → `references/art.md`) |
|
|
96
|
+
| `art/title-band` | poster declares no lettering-block band | Set `ctx.__frogoeTitleBand = [x0,y0,x1,y1]` from the layout variables (never hand-typed) |
|
|
97
|
+
| `input/incremental-drag` | `x += p.dx` (wall-rocket bug) | Use `x = grabX + p.dx` or track lastX |
|
|
98
|
+
| `folder/touch-select` | Phone long-press summons text selection (iOS + Android) | Add `-webkit-user-select: none; user-select: none; -webkit-touch-callout: none` on html/body |
|
|
99
|
+
| `audio/suspended-only` | Resume gated on `=== "suspended"` (iOS silent bug) | Resume when `state !== "running"` — see frogoe-core `references/audio.md` |
|
|
100
|
+
| `brief/verb` | Verb not in the 9-value enum | Pick from: tap\|hold\|steer\|aim\|swap\|place\|type\|draw\|idle — frogoe-core → brief-format |
|
|
101
|
+
| `brief/session` | Session not blitz/round/toy | blitz = short arcade (default), round = turn-based, toy = never ends — frogoe-core → genres |
|
|
102
|
+
| `input/verb-mismatch` | Declared verb requires input wiring the game never wrote | Wire the required handlers — frogoe-core → brief-format (verb → handler table) |
|
|
103
|
+
| `live/hud-outline` | HUD text missing text-shadow/stroke | Add `text-shadow: 0 2px 0 <dark>` |
|
|
104
|
+
| `live/fps` | Below 30fps | Cache gradients, reduce shadowBlur, cut particles |
|
|
105
|
+
| `live/not-playable` | Scripted taps changed nothing | Wire `input.on("down")` to actual game logic |
|
|
103
106
|
|
|
104
107
|
## Key rules
|
|
105
108
|
|
|
@@ -109,4 +112,5 @@ Fix all errors before presenting the result. Common findings:
|
|
|
109
112
|
4. **Fixed furniture respects `stage.safe`** — notches cover screen edges. Score at fixed y=34 sits under the Dynamic Island on modern phones.
|
|
110
113
|
5. **One page, zero runtime requests** after bundling. Author-time CDN dependencies are fine — `frogoe bundle` dissolves them (allowlist + pin + hash + inline).
|
|
111
114
|
6. **`finish(score)`** ends the run. The results card is a HUD block (`game-over-card`), never something the platform draws.
|
|
112
|
-
7. **
|
|
115
|
+
7. **Declare your session honestly** — `session: blitz` (default) expects death ≤45s with retry; `session: round` (turn-based) waits a short grace, never warns on no-death; `session: toy` (idle/drawing) never ends, no game-over-card needed. The sandbox reads BRIEF to shape its gate (frogoe-core → references/genres.md).
|
|
116
|
+
8. **Identity art is authored, never captured** — `assets/poster.js` + `assets/icon.js` draw with the game's own sprite functions (1:1 by construction; `art/*` findings gate them). Iterate with `frogoe vision` — render, LOOK at the ASCII map, fix; agents that draw blind ship blobs.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Always read the relevant skill before writing or modifying game code.** Skills encode the frogoe contract and creative direction that generic docs don't cover. Skipping them produces broken games.
|
|
6
6
|
|
|
7
|
-
**Doing anything with frogoe?**
|
|
7
|
+
**Doing anything with frogoe?** Read the `/frogoe` skill — it confirms the BRIEF (verb, mood, palette) up front and routes every request. The domain skills it routes to:
|
|
8
8
|
|
|
9
9
|
- `/frogoe-core` — the technical contract: folder form, `defineGame` closure, four nouns, HUD bindings, external libraries, the identity-art assets (`assets/poster.js` + `assets/icon.js`). Read before writing any game code.
|
|
10
10
|
- `/frogoe-creative` — house style: three dials (VARIANCE/MOTION/DENSITY), lazy defaults, typography, palettes, game feel, identity art (the poster + icon are authored, 1:1 with gameplay). Read when choosing how a game looks — including its face.
|
|
@@ -71,7 +71,7 @@ bundle`. Use `--json` for machine-readable findings that can be fixed programmat
|
|
|
71
71
|
|
|
72
72
|
- `index.html` — entry shell: `<canvas id="c">` + import map + `.hud` layer (HUD blocks land here)
|
|
73
73
|
- `game.js` — the whole simulation: `defineGame(({stage, input, loop, finish}) => {...})`
|
|
74
|
-
- `BRIEF.md` — the game's identity: verb, mood, palette (validated by `frogoe check`)
|
|
74
|
+
- `BRIEF.md` — the game's identity: verb, session, mood, palette (validated by `frogoe check`)
|
|
75
75
|
- `assets/poster.js` + `assets/icon.js` — REQUIRED identity art: canvas scenes importing the game's own sprites (`art/missing` gates the check; frogoe-creative → `references/art.md`)
|
|
76
76
|
- `frogoe.json` — contract version pin
|
|
77
77
|
- `.frogoe/` — tool-owned, gitignored (the contract runtime — never edit)
|
|
@@ -89,17 +89,20 @@ frogoe check # full gate: + browser — runtime errors, canvas paint
|
|
|
89
89
|
|
|
90
90
|
Fix all errors before presenting the result. Common findings:
|
|
91
91
|
|
|
92
|
-
| Code | Meaning
|
|
93
|
-
| ------------------------ |
|
|
94
|
-
| `brief/todo` | BRIEF.md still has TODO markers
|
|
95
|
-
| `art/missing` | `assets/poster.js` / `assets/icon.js` absent
|
|
96
|
-
| `art/title-band` | poster declares no lettering-block band
|
|
97
|
-
| `input/incremental-drag` | `x += p.dx` (wall-rocket bug)
|
|
98
|
-
| `folder/touch-select` | Phone long-press summons text selection (iOS + Android)
|
|
99
|
-
| `audio/suspended-only` | Resume gated on `=== "suspended"` (iOS silent bug)
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
92
|
+
| Code | Meaning | Fix |
|
|
93
|
+
| ------------------------ | -------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
94
|
+
| `brief/todo` | BRIEF.md still has TODO markers | Fill in verb, mood, palette |
|
|
95
|
+
| `art/missing` | `assets/poster.js` / `assets/icon.js` absent | Author both scenes — they import sprites from game.js (frogoe-creative → `references/art.md`) |
|
|
96
|
+
| `art/title-band` | poster declares no lettering-block band | Set `ctx.__frogoeTitleBand = [x0,y0,x1,y1]` from the layout variables (never hand-typed) |
|
|
97
|
+
| `input/incremental-drag` | `x += p.dx` (wall-rocket bug) | Use `x = grabX + p.dx` or track lastX |
|
|
98
|
+
| `folder/touch-select` | Phone long-press summons text selection (iOS + Android) | Add `-webkit-user-select: none; user-select: none; -webkit-touch-callout: none` on html/body |
|
|
99
|
+
| `audio/suspended-only` | Resume gated on `=== "suspended"` (iOS silent bug) | Resume when `state !== "running"` — see frogoe-core `references/audio.md` |
|
|
100
|
+
| `brief/verb` | Verb not in the 9-value enum | Pick from: tap\|hold\|steer\|aim\|swap\|place\|type\|draw\|idle — frogoe-core → brief-format |
|
|
101
|
+
| `brief/session` | Session not blitz/round/toy | blitz = short arcade (default), round = turn-based, toy = never ends — frogoe-core → genres |
|
|
102
|
+
| `input/verb-mismatch` | Declared verb requires input wiring the game never wrote | Wire the required handlers — frogoe-core → brief-format (verb → handler table) |
|
|
103
|
+
| `live/hud-outline` | HUD text missing text-shadow/stroke | Add `text-shadow: 0 2px 0 <dark>` |
|
|
104
|
+
| `live/fps` | Below 30fps | Cache gradients, reduce shadowBlur, cut particles |
|
|
105
|
+
| `live/not-playable` | Scripted taps changed nothing | Wire `input.on("down")` to actual game logic |
|
|
103
106
|
|
|
104
107
|
## Key rules
|
|
105
108
|
|
|
@@ -109,4 +112,5 @@ Fix all errors before presenting the result. Common findings:
|
|
|
109
112
|
4. **Fixed furniture respects `stage.safe`** — notches cover screen edges. Score at fixed y=34 sits under the Dynamic Island on modern phones.
|
|
110
113
|
5. **One page, zero runtime requests** after bundling. Author-time CDN dependencies are fine — `frogoe bundle` dissolves them (allowlist + pin + hash + inline).
|
|
111
114
|
6. **`finish(score)`** ends the run. The results card is a HUD block (`game-over-card`), never something the platform draws.
|
|
112
|
-
7. **
|
|
115
|
+
7. **Declare your session honestly** — `session: blitz` (default) expects death ≤45s with retry; `session: round` (turn-based) waits a short grace, never warns on no-death; `session: toy` (idle/drawing) never ends, no game-over-card needed. The sandbox reads BRIEF to shape its gate (frogoe-core → references/genres.md).
|
|
116
|
+
8. **Identity art is authored, never captured** — `assets/poster.js` + `assets/icon.js` draw with the game's own sprite functions (1:1 by construction; `art/*` findings gate them). Iterate with `frogoe vision` — render, LOOK at the ASCII map, fix; agents that draw blind ship blobs.
|
package/package.json
CHANGED