Game juice pass
@gameforge/game-juice-pass
Make a working game feel good: an ordered juice pass that adds screen shake, hit stop, particles, squash and stretch, easing, score popups, flashes, and tiny Web Audio sounds to the moments that matter, each behind a config value and a reduced-motion setting. Ships dependency-free canvas snippets.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
How this works
- It is a skill: written instructions Claude reads when your request matches what the skill is for. You do not call it by name; just ask for the task.
- While it works, it reads and changes files in the places it lists, nowhere else.
- Nothing runs until you choose to use it, and you can remove it any time.
SKILL.md
Game juice pass
Juice is feedback: the game answering every player action with motion, light, and sound. Done well it turns a correct game into a fun one. Done badly it is noise. This kit adds it in a fixed order, to the moments that matter, with every effect tunable and switchable.
The snippets in references/juice-snippets.js are plain canvas JavaScript with no dependencies. Read that file before editing the game, and copy only what is needed.
Inputs
- The game files, usually
game/index.htmlorsrc/. Ask if there are several candidates. - The feel they want in a word or two: punchy, floaty, cozy, chaotic. Default: punchy but readable.
- Sound: on or off by default? Default: on, with a mute key (M) and a tap target.
Steps
- Read the game and list its key moments in a table: the player action or event, where it happens in code, and current feedback (usually none). Typical moments: start, jump or move, pickup, hit, near miss, combo, death, new best.
- Pick at most 6 moments and show the plan before editing: moment, effects, strength. Biggest feedback goes to the rarest, most important events (death, new best). Frequent events (every step) get the smallest.
Add effects in this order, checking the game still runs after each:
- Easing on anything that moves on its own (menus, popups, camera).
- Squash and stretch on the player for jump and land.
- Particles on pickup and hit.
- Score popups on points.
- Screen shake on big impacts only (trauma model, not random each frame).
- Hit stop of 0.03 to 0.08 seconds on the hardest hits.
- Flash on damage.
- Sound: one blip per key moment, created after the first user input.
- Put every number in a
JUICEconfig object next to the game's existing config, with a comment per value. AddJUICE.enabledand respectprefers-reduced-motionby scaling shake and flashes down. - Keep the simulation honest: effects must not change hitboxes, scoring, or timing, except hit stop, which pauses the update step while drawing continues. Use
dtfor every effect. - Report with the table below and suggest the user plays 2 minutes with
JUICE.enabledtrue and then false to feel the difference.
Output
| Moment | Before | Added | Tune with |
| ------ | ------ | ----- | --------- |
| Pickup | score +1 | particles, popup "+1", blip | JUICE.pickupParticles |
| Hit | game over | shake 0.6, hit stop 0.06 s, flash, low blip | JUICE.shake, JUICE.hitStop |
| Land | nothing | squash 0.25 | JUICE.squash |
Toggle: JUICE.enabled. Reduced motion: shake max 3 px, no flashes. Mute: M key.Guardrails
- Never add external libraries, image files, or audio files. Everything stays in code so a single-file game stays one file.
- Change feel, not rules. If a fix needs a gameplay change (hitbox, speed), propose it separately.
- No flashing faster than 3 times per second, and keep full-screen flashes below 0.4 opacity, to stay safe for photosensitive players.
- Audio starts only after a user gesture and always has a mute.
- Edit only the game files listed in Inputs. Show the plan from step 2 and wait for a yes before editing.
README.md
Game juice pass
Makes a game that works feel good to play. Claude finds the key moments in your game (pickup, hit, jump, death, new best) and adds screen shake, hit stop, particles, squash and stretch, easing, score popups, flashes, and tiny sound effects, each behind one tunable JUICE config.
Who it is for: anyone with a playable HTML5 canvas game (from a jam, a tutorial, or the browser-game-starter kit) that feels flat.
Example
You say:
My dodge game works but feels dead. Add some juice.
Claude shows a plan first, then edits the game and reports:
| Moment | Before | Added | Tune with |
|---|---|---|---|
| Dodge near miss | nothing | small popup "close!", soft blip | JUICE.nearMiss |
| Crash | game over text | shake, 0.06 s hit stop, red flash, particles | JUICE.shake, JUICE.hitStop |
| New best | nothing | gold popup, rising blip | JUICE.newBest |
There is one JUICE.enabled switch to compare before and after, a mute key, and reduced-motion support.
What it can access
- Reads and edits your game files in
game/,src/, orindex.html. - Ships
references/juice-snippets.js, plain canvas JavaScript with no dependencies. - No scripts to run, no network, no env vars. Works in Claude Code, Codex, and Cursor.
Setup
None.
Files
- README.md
- SKILL.md
- kit.json
- references/juice-snippets.js
Did it work?
0worked for them0did not work
Sign in to say whether it worked for you.
Nobody has said yet. Tried it? Tell the next person.
