ai-behavior-trees-util…
Engine-neutral behavior tree and utility AI code for NPCs in any language: Blackboard, reactive composites, decorators and…
Designs grid and logic puzzle games in any engine: match-3 cascades, Sokoban pushing, unique-solution grids (nonogram, Sudoku), exact undo and solver-checked levels. Use for a Candy Crush-like, Sokoban or Picross, or broken cascades, drifting undo or unsolvable levels. Not for
Claude Code
$ npx -y skills add gamedev-skills/awesome-gamedev-agent-skills --skill puzzle --agent claude-code
Codex
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill puzzle -a codex -y
Cursor
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill puzzle -a cursor -y
Gemini CLI
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill puzzle -a gemini-cli -y
GitHub Copilot
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill puzzle -a github-copilot -y
OpenCode
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill puzzle -a opencode -y
Windsurf
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill puzzle -a windsurf -y
name: puzzle description: > Designs grid and logic puzzle games in any engine: match-3 cascades, Sokoban pushing, unique-solution grids (nonogram, Sudoku), exact undo and solver-checked levels. Use for a Candy Crush-like, Sokoban or Picross, or broken cascades, drifting undo or unsolvable levels. Not for physics puzzlers (`platformer`, `physics-tuning`) or card games (`card-game`).
Owns discrete board puzzles: the rules engine, resolution order, undo, solvability and level difficulty. The board model is the only truth; the view replays the list of changes each move produced.
pushing, sliding, merging, or pure logic deduction.
**When not to use:** physics-driven puzzles and puzzle platformers (`platformer`, `physics-tuning`); turn-based dungeon runs (`roguelike`); card zones (`card-game`).
1. **Model the board as plain data** (grid of cell values plus counters and RNG state) with a pure `apply(state, move) -> (state, events)` function. The view animates `events`. 2. **Write the rule resolver** for the family (below) and loop until stable where rules cascade. 3. **Undo from day one:** push a snapshot (or invertible command) before every move, including score, move counters and RNG state. Add restart, which thinky puzzles need as much as undo. 4. **Write a solver early** (BFS or A* over states for push and slide puzzles, a line or constraint solver for logic grids, move-existence for match-3). It validates every level, measures difficulty and powers hints. 5. **Order levels by measured difficulty,** introducing one mechanic at a time: a level that teaches it alone, a level that tests it, then one that combines it with a known mechanic. 6. **Check it.** Run these in the project's test runner and report the numbers:
and flag levels whose order disagrees with difficulty;
valid move;
| Family | Rules that matter | Starting numbers | |--------|------------------|------------------| | Match-3 | 4 in a line makes a line-clear piece, an L or T of 5 makes an area bomb, 5 in a line makes a colour bomb (Candy Crush naming) | 8x8 or 9x9 board, 5-6 colours (fewer colours, more cascades), hint after about 5 s idle | | Push (Sokoban) | push one box, never pull; dead squares (non-goal corners, wall edges with no goal) | difficulty from minimum pushes and states explored, not board size | | Slide (15-puzzle) | half of random arrangements are unsolvable | check inversion parity (refs §7) | | Merge (2048) | slide, merge equal neighbours once per move, then spawn | the original spawns a 2 with 90% chance and a 4 with 10% | | Logic grids | exactly one solution, reachable by deduction alone | grade difficulty by the hardest deduction rule the solver needed | | Rule-changing (Baba Is You style) | rules are board objects; re-derive the rule set after every move, before win checks | test every rule word against every object type |
No-guess generation is standard for logic puzzles: Simon Tatham's Mines, for example, ensures by default that the whole grid can be deduced from the first opening.
def resolve(board, rng):
events, chain = [], 0
while True:
matches = find_matches(board) # runs of 3+, rows and columns
if not matches:
break
chain += 1
specials = specials_from(matches) # decide BEFORE clearing (shape and swap cell)
events.append(("clear", matches, chain))
clear(board, matches); place(board, specials)
events.append(("fall", apply_gravity(board)))
events.append(("spawn", refill(board, rng))) # seeded RNG, saved in undo snapshots
if not has_valid_move(board):
events.append(("shuffle", reshuffle_until_playable(board, rng)))
return eventsthe match shape and the swapped cell first.
pieces. Snapshot board, score, counters and RNG state together.
event list; lock or queue input until it finishes.
free matches) or end the level.
solved state with inverse moves (pull for Sokoban), or generate and solve, with the seed kept.
for a second solution and reject or add a clue.
mechanic at a time.
squares and offer restart or flag them.
deadlock code, cascade scoring, Sokoban pushing, logic-grid validity checks, undo strategies, solvable generation and slidin
<img src="docs/assets/awesome-gamedev-agent-skills-banner.png" width="820" alt="awesome-gamedev-agent-skills — game-dev skills for AI coding agents.
Engine-neutral behavior tree and utility AI code for NPCs in any language: Blackboard, reactive composites, decorators and…
Engine-neutral game audio technique: bus layout, volume sliders in decibels, loudness, ducking music under dialogue, adaptive…
Builds and tunes game cameras, engine-neutral with Godot and Cinemachine 3 mappings: 2D follow with deadzone and look-ahead,…
Plans, generates or sources, and validates consistent game art: style guides, sprites, pixel art, tilesets, icons and textures,…
Builds engine-neutral branching dialogue with Ink, Yarn Spinner or a small JSON graph runner: lines, choices, conditions,…
Designs engine-neutral enemy and NPC AI: picks FSM, behavior tree, utility or GOAP, and builds perception, steering and A*…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.