{
 "title": "Game dev agent skills: our catalog, awesome-gamedev-agent-skills, and a pygame test",
 "page": "https://agentcraft.dev/en/blog/gamedev-agent-skills-2026-11/",
 "catalog": {
  "read": "2026-11-07",
  "skills": 71,
  "repos": 18,
  "byEngine": {
   "Unreal": 3,
   "Godot": 7,
   "any engine": 33,
   "three.js": 2,
   "melonJS": 20,
   "Unity": 6
  },
  "rows": [
   {
    "repo": "EpicGames/unreal-engine-skills-for-claude-code-plugin",
    "skill": "unreal-skill",
    "does": "Guides writing and reviewing Unreal Engine Agent Skills that the in-editor agent loads through unreal-mcp.",
    "engine": "Unreal",
    "official": "Epic Games (Unreal)",
    "note": null,
    "repoStarsNov6": 1919,
    "repoGained8d": 194,
    "url": "https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin/blob/main/skills/unreal-skill/SKILL.md"
   },
   {
    "repo": "0x0funky/agent-sprite-forge",
    "skill": "generate2dmap",
    "does": "Plans 2D game maps and scenes with collision checks, playable previews and Tiled, Godot or LDtk export.",
    "engine": "Godot",
    "official": null,
    "note": null,
    "repoStarsNov6": 5338,
    "repoGained8d": 689,
    "url": "https://github.com/0x0funky/agent-sprite-forge/blob/main/skills/generate2dmap/SKILL.md"
   },
   {
    "repo": "Charlie85270/Dorothy",
    "skill": "world-builder",
    "does": "Designs unique game zones with layouts, NPCs and signs for Dorothy's overworld via MCP tools.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 357,
    "repoGained8d": 2,
    "url": "https://github.com/Charlie85270/Dorothy/blob/main/skills/world-builder/SKILL.md"
   },
   {
    "repo": "Donchitos/Claude-Code-Game-Studios",
    "skill": "adopt",
    "does": "Audits an existing game project's artifacts for template format compliance and writes a migration plan.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 36220,
    "repoGained8d": 6747,
    "url": "https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/adopt/SKILL.md"
   },
   {
    "repo": "Donchitos/Claude-Code-Game-Studios",
    "skill": "asset-audit",
    "does": "Audits game assets for naming, file size budgets and format standards, flagging orphans and missing references.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 36220,
    "repoGained8d": 6747,
    "url": "https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/asset-audit/SKILL.md"
   },
   {
    "repo": "Donchitos/Claude-Code-Game-Studios",
    "skill": "asset-spec",
    "does": "Writes per-asset visual specs and AI image prompts from game design docs and character profiles.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 36220,
    "repoGained8d": 6747,
    "url": "https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/asset-spec/SKILL.md"
   },
   {
    "repo": "Donchitos/Claude-Code-Game-Studios",
    "skill": "balance-check",
    "does": "Finds balance outliers, broken progressions and economy imbalances in game formulas and data.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 36220,
    "repoGained8d": 6747,
    "url": "https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/balance-check/SKILL.md"
   },
   {
    "repo": "Donchitos/Claude-Code-Game-Studios",
    "skill": "brainstorm",
    "does": "Guides the user from a rough idea to a written game concept brief, with optional director review gates.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 36220,
    "repoGained8d": 6747,
    "url": "https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/brainstorm/SKILL.md"
   },
   {
    "repo": "Donchitos/Claude-Code-Game-Studios",
    "skill": "content-audit",
    "does": "Audits game design doc content counts against implemented systems, showing planned versus built.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 36220,
    "repoGained8d": 6747,
    "url": "https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/content-audit/SKILL.md"
   },
   {
    "repo": "Donchitos/Claude-Code-Game-Studios",
    "skill": "day-one-patch",
    "does": "Plans a launch-day game patch with scoped fixes, a QA gate, and a rollback plan before shipping.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 36220,
    "repoGained8d": 6747,
    "url": "https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/day-one-patch/SKILL.md"
   },
   {
    "repo": "Leanmcp/gateway-skills",
    "skill": "godot-city-game-3d",
    "does": "Builds, runs and ships procedural 3D city games in Godot 4, including web export and cloud GPU streaming.",
    "engine": "Godot",
    "official": null,
    "note": null,
    "repoStarsNov6": 2124,
    "repoGained8d": 3,
    "url": "https://github.com/Leanmcp/gateway-skills/blob/main/skills/godot-city-game-3d/SKILL.md"
   },
   {
    "repo": "MengTo/Skills",
    "skill": "3d-cloth-material",
    "does": "Guides Three.js woven cloth with weave normals, sheen, folds that keep texture scale, and thin hems.",
    "engine": "three.js",
    "official": null,
    "note": null,
    "repoStarsNov6": 7285,
    "repoGained8d": 161,
    "url": "https://github.com/MengTo/Skills/blob/main/agent-skills/3d/3d-cloth-material/SKILL.md"
   },
   {
    "repo": "MengTo/Skills",
    "skill": "3d-falling-leaves",
    "does": "Builds Three.js falling leaves with instancing, tumbling motion, shared wind, and camera-aware recycling.",
    "engine": "three.js",
    "official": null,
    "note": null,
    "repoStarsNov6": 7285,
    "repoGained8d": 161,
    "url": "https://github.com/MengTo/Skills/blob/main/agent-skills/3d/3d-falling-leaves/SKILL.md"
   },
   {
    "repo": "arjun988/blender-skills",
    "skill": "asset-optimization",
    "does": "Checks Blender assets against polycount, UV, material and naming budgets before export to game engines.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 1996,
    "repoGained8d": 451,
    "url": "https://github.com/arjun988/blender-skills/blob/main/.claude/skills/asset-optimization/SKILL.md"
   },
   {
    "repo": "freshtechbro/claudedesignskills",
    "skill": "babylonjs-engine",
    "does": "Builds real-time 3D scenes, physics and PBR materials with the Babylon.js engine.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 1271,
    "repoGained8d": 96,
    "url": "https://github.com/freshtechbro/claudedesignskills/blob/main/.claude/skills/babylonjs-engine/SKILL.md"
   },
   {
    "repo": "freshtechbro/claudedesignskills",
    "skill": "blender-web-pipeline",
    "does": "Exports Blender models and animations to web-ready glTF, with batch scripts and optimization.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 1271,
    "repoGained8d": 96,
    "url": "https://github.com/freshtechbro/claudedesignskills/blob/main/.claude/skills/blender-web-pipeline/SKILL.md"
   },
   {
    "repo": "htdt/godogen",
    "skill": "asset-gen",
    "does": "Generates game images, 3D models, rigged characters, sound and voice using local GPU tools or paid APIs.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 7298,
    "repoGained8d": 50,
    "url": "https://github.com/htdt/godogen/blob/main/asset-gen/SKILL.md"
   },
   {
    "repo": "jame581/GodotPrompter",
    "skill": "2d-essentials",
    "does": "Guides 2D work in Godot 4.3+: TileMaps, parallax scrolling, 2D lights, canvas layers, and custom drawing.",
    "engine": "Godot",
    "official": null,
    "note": null,
    "repoStarsNov6": 932,
    "repoGained8d": 38,
    "url": "https://github.com/jame581/GodotPrompter/blob/main/skills/2d-essentials/SKILL.md"
   },
   {
    "repo": "jame581/GodotPrompter",
    "skill": "3d-essentials",
    "does": "Guides 3D work in Godot 4.3+: materials, lighting, shadows, environment, fog, LOD, and decals.",
    "engine": "Godot",
    "official": null,
    "note": null,
    "repoStarsNov6": 932,
    "repoGained8d": 38,
    "url": "https://github.com/jame581/GodotPrompter/blob/main/skills/3d-essentials/SKILL.md"
   },
   {
    "repo": "jame581/GodotPrompter",
    "skill": "ability-system",
    "does": "Builds Godot ability systems from Resource-based abilities with cooldowns, buffs, stat modifiers, and HUD binding.",
    "engine": "Godot",
    "official": null,
    "note": null,
    "repoStarsNov6": 932,
    "repoGained8d": 38,
    "url": "https://github.com/jame581/GodotPrompter/blob/main/skills/ability-system/SKILL.md"
   },
   {
    "repo": "jame581/GodotPrompter",
    "skill": "addon-development",
    "does": "Guides creating Godot 4.3+ editor plugins with EditorPlugin, @tool scripts, custom inspectors, and dock panels.",
    "engine": "Godot",
    "official": null,
    "note": null,
    "repoStarsNov6": 932,
    "repoGained8d": 38,
    "url": "https://github.com/jame581/GodotPrompter/blob/main/skills/addon-development/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-20-migration",
    "does": "Teaches the agent melonJS 20.x changes: async Application.init, WebGL 2 baseline, post effects, removed APIs.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-20-migration/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-3d",
    "does": "Guides 3D and 2.5D in melonJS: cameras, meshes, billboards, lights and fog, using its Y-down convention.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-3d/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-3d-assets",
    "does": "Loads glTF, GLB and OBJ 3D models into melonJS levels, with scale, right-handed conversion and lights.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-3d-assets/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-audio",
    "does": "Guides sound and music in melonJS: audio init formats, loading, playback, spatial audio, tones and effects.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-audio/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-camera-and-drawing",
    "does": "Guides melonJS camera follow, shake, extra cameras and custom shape or gradient drawing in draw().",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-camera-and-drawing/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-deployment",
    "does": "Guides creating, building and publishing melonJS games, including Capacitor wrapping and WeChat builds.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-deployment/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-display-and-scaling",
    "does": "Guides melonJS canvas scaling and sharpness, covering scale modes, integer scaling and texture filters.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-display-and-scaling/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-effects-and-shaders",
    "does": "Guides melonJS post effects, blend modes and custom GLSL/WGSL shaders, noting the Canvas fallback limits.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-effects-and-shaders/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-events",
    "does": "Explains the melonJS event bus: subscribing, unsubscribing without leaks, and lifecycle event names.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-events/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-getting-started",
    "does": "Guides setting up a melonJS 20.x game: async init, world container, renderer choice, and first scene.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-getting-started/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-input",
    "does": "Covers melonJS keyboard, pointer, touch and gamepad input through named actions and common pointer event pitfalls.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-input/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-lighting",
    "does": "Guides 2D dynamic lighting in melonJS with Light2d, ambient light, and normal-mapped sprites.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-lighting/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-loading-assets",
    "does": "Explains melonJS asset loading: resource descriptors, asset types, preloading, retrieval and CORS settings.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-loading-assets/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-math",
    "does": "Explains melonJS vector and matrix maths, in-place versus allocating methods, and interpolation helpers.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-math/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-particles-and-trails",
    "does": "Guides melonJS particle emitters and trails, covering emission modes, sprite sheets and 3D motion settings.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-particles-and-trails/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-performance",
    "does": "Guides diagnosing and speeding up melonJS games through profiling, pooling, batching, atlases and culling.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-performance/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-physics",
    "does": "Guides melonJS collision, bodies and queries, and choosing between built-in SAT and physics adapters.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-physics/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-plugins",
    "does": "Shows how to register melonJS plugins, use the plugin cache, patch behavior and write custom plugins.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-plugins/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-renderables",
    "does": "Guides custom melonJS Renderable draw code, pointer events, post effects and draw order.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-renderables/SKILL.md"
   },
   {
    "repo": "melonjs/melonJS",
    "skill": "melonjs-renderer-backends",
    "does": "Explains melonJS WebGPU, WebGL 2 and Canvas fallback, per-backend features and capability detection.",
    "engine": "melonJS",
    "official": "melonJS maintainers",
    "note": null,
    "repoStarsNov6": 6440,
    "repoGained8d": 10,
    "url": "https://github.com/melonjs/melonJS/blob/main/packages/melonjs/skills/melonjs-renderer-backends/SKILL.md"
   },
   {
    "repo": "patch-gg/anymove",
    "skill": "anymove-capture",
    "does": "Turns a two-camera AI clip into a rigged GLB animation, checking view agreement and fit quality.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 546,
    "repoGained8d": 119,
    "url": "https://github.com/patch-gg/anymove/blob/main/skills/anymove-capture/SKILL.md"
   },
   {
    "repo": "patch-gg/anymove",
    "skill": "anymove-rig",
    "does": "Sets up a new creature for anymove: mesh, skeleton, skinning, limb colours and camera framing.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 546,
    "repoGained8d": 119,
    "url": "https://github.com/patch-gg/anymove/blob/main/skills/anymove-rig/SKILL.md"
   },
   {
    "repo": "rehan-remade/universal-modder",
    "skill": "asset-pipeline",
    "does": "Converts generated art into engine-ready sprites, sheets, masks and Blender-rendered frames for games.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 9482,
    "repoGained8d": 279,
    "url": "https://github.com/rehan-remade/universal-modder/blob/main/skills/asset-pipeline/SKILL.md"
   },
   {
    "repo": "rehan-remade/universal-modder",
    "skill": "blitz3d-decomp",
    "does": "Decompile a Blitz3D game to readable source with B3DDecomp and port its logic to another engine.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 9482,
    "repoGained8d": 279,
    "url": "https://github.com/rehan-remade/universal-modder/blob/main/skills/blitz3d-decomp/SKILL.md"
   },
   {
    "repo": "rehan-remade/universal-modder",
    "skill": "game-recon",
    "does": "Identify an installed game's engine, version, loaders, saves and mod route before writing any mod code.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 9482,
    "repoGained8d": 279,
    "url": "https://github.com/rehan-remade/universal-modder/blob/main/skills/game-recon/SKILL.md"
   },
   {
    "repo": "rehan-remade/universal-modder",
    "skill": "game-research-websearch",
    "does": "Search the web for game modding knowledge, using archive snapshots for dead pages and citing source URLs.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 9482,
    "repoGained8d": 279,
    "url": "https://github.com/rehan-remade/universal-modder/blob/main/skills/game-research-websearch/SKILL.md"
   },
   {
    "repo": "rehan-remade/universal-modder",
    "skill": "mashup-mods",
    "does": "Plan and build cross-game mashups, such as bringing one game's mechanics or world into another.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 9482,
    "repoGained8d": 279,
    "url": "https://github.com/rehan-remade/universal-modder/blob/main/skills/mashup-mods/SKILL.md"
   },
   {
    "repo": "rehan-remade/universal-modder",
    "skill": "mod-any-game",
    "does": "Take a PC game mod idea from recon to a verified in-game result with a lab, tests and a showcase clip.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 9482,
    "repoGained8d": 279,
    "url": "https://github.com/rehan-remade/universal-modder/blob/main/skills/mod-any-game/SKILL.md"
   },
   {
    "repo": "rehan-remade/universal-modder",
    "skill": "port-a-mod",
    "does": "Port an existing mod to a newer game version or another loader while keeping its behavior and values.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 9482,
    "repoGained8d": 279,
    "url": "https://github.com/rehan-remade/universal-modder/blob/main/skills/port-a-mod/SKILL.md"
   },
   {
    "repo": "rehan-remade/universal-modder",
    "skill": "publish-mod",
    "does": "Checks, packages and uploads a finished game mod to platforms like Nexus Mods and Steam Workshop.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 9482,
    "repoGained8d": 279,
    "url": "https://github.com/rehan-remade/universal-modder/blob/main/skills/publish-mod/SKILL.md"
   },
   {
    "repo": "rehan-remade/universal-modder",
    "skill": "reverse-engineering",
    "does": "Decompiles game code, dumps data formats and reads live memory so a mod can hook real game internals.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 9482,
    "repoGained8d": 279,
    "url": "https://github.com/rehan-remade/universal-modder/blob/main/skills/reverse-engineering/SKILL.md"
   },
   {
    "repo": "zenstory-ai/novel-to-game",
    "skill": "game-build",
    "does": "Builds a runnable game prototype or production game from approved design docs, with replayable evidence.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 977,
    "repoGained8d": 36,
    "url": "https://github.com/zenstory-ai/novel-to-game/blob/main/skills/game-build/SKILL.md"
   },
   {
    "repo": "zenstory-ai/novel-to-game",
    "skill": "game-concept",
    "does": "Chooses a playable game direction for a novel by comparing concepts against hard vetoes and explicit trade-offs.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 977,
    "repoGained8d": 36,
    "url": "https://github.com/zenstory-ai/novel-to-game/blob/main/skills/game-concept/SKILL.md"
   },
   {
    "repo": "zenstory-ai/novel-to-game",
    "skill": "game-world-design",
    "does": "Turns a chosen game concept into a design document covering player promise, loops, feedback, failure and a playable slice.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 977,
    "repoGained8d": 36,
    "url": "https://github.com/zenstory-ai/novel-to-game/blob/main/skills/game-world-design/SKILL.md"
   },
   {
    "repo": "google/skills",
    "skill": "google-mobile-ads-banner",
    "does": "Guides implementing Google Mobile Ads banner ads in Android, iOS, or Unity apps, defaulting to adaptive banners.",
    "engine": "Unity",
    "official": null,
    "note": "Google Mobile Ads SDK guide, covers Unity apps",
    "repoStarsNov6": 22967,
    "repoGained8d": 1281,
    "url": "https://github.com/google/skills/blob/main/skills/ads/google-mobile-ads-banner/SKILL.md"
   },
   {
    "repo": "google/skills",
    "skill": "google-mobile-ads-get-started",
    "does": "Guides installing and initializing the Google Mobile Ads SDK in Android, iOS, or Unity apps.",
    "engine": "Unity",
    "official": null,
    "note": "Google Mobile Ads SDK guide, covers Unity apps",
    "repoStarsNov6": 22967,
    "repoGained8d": 1281,
    "url": "https://github.com/google/skills/blob/main/skills/ads/google-mobile-ads-get-started/SKILL.md"
   },
   {
    "repo": "google/skills",
    "skill": "google-mobile-ads-interstitial",
    "does": "Guides adding interstitial ads to Android, iOS, or Unity apps, covering load, callbacks, and show.",
    "engine": "Unity",
    "official": null,
    "note": "Google Mobile Ads SDK guide, covers Unity apps",
    "repoStarsNov6": 22967,
    "repoGained8d": 1281,
    "url": "https://github.com/google/skills/blob/main/skills/ads/google-mobile-ads-interstitial/SKILL.md"
   },
   {
    "repo": "google/skills",
    "skill": "google-mobile-ads-rewarded",
    "does": "Guides adding rewarded ads to Android, iOS, or Unity apps, including the opt-in reward flow.",
    "engine": "Unity",
    "official": null,
    "note": "Google Mobile Ads SDK guide, covers Unity apps",
    "repoStarsNov6": 22967,
    "repoGained8d": 1281,
    "url": "https://github.com/google/skills/blob/main/skills/ads/google-mobile-ads-rewarded/SKILL.md"
   },
   {
    "repo": "P4nda0s/reverse-skills",
    "skill": "rev-u3d-dump",
    "does": "Extracts Unity IL2CPP method names, addresses, and types from binaries and metadata for IDA or Ghidra import.",
    "engine": "Unity",
    "official": null,
    "note": null,
    "repoStarsNov6": 2347,
    "repoGained8d": 12,
    "url": "https://github.com/P4nda0s/reverse-skills/blob/main/skills/rev-u3d-dump/SKILL.md"
   },
   {
    "repo": "EpicGames/unreal-engine-skills-for-claude-code-plugin",
    "skill": "create-toolset",
    "does": "Guides authoring static Unreal Engine tool functions registered with ToolsetRegistry for the unreal-mcp server.",
    "engine": "Unreal",
    "official": "Epic Games (Unreal)",
    "note": null,
    "repoStarsNov6": 1919,
    "repoGained8d": 194,
    "url": "https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin/blob/main/skills/create-toolset/SKILL.md"
   },
   {
    "repo": "EpicGames/unreal-engine-skills-for-claude-code-plugin",
    "skill": "unreal-mcp",
    "does": "Lets the agent inspect and change a live Unreal Editor project through the unreal-mcp server connection.",
    "engine": "Unreal",
    "official": "Epic Games (Unreal)",
    "note": null,
    "repoStarsNov6": 1919,
    "repoGained8d": 194,
    "url": "https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin/blob/main/skills/unreal-mcp/SKILL.md"
   },
   {
    "repo": "IvanMurzak/Unity-MCP",
    "skill": "build-cli",
    "does": "Builds the unity-mcp-cli TypeScript project and optionally links it globally for terminal use.",
    "engine": "Unity",
    "official": null,
    "note": null,
    "repoStarsNov6": 4597,
    "repoGained8d": 45,
    "url": "https://github.com/IvanMurzak/Unity-MCP/blob/main/.claude/skills/build-cli/SKILL.md"
   },
   {
    "repo": "zenstory-ai/novel-to-game",
    "skill": "game-art-direction",
    "does": "Turns a game design doc into an art direction that defines visual identity, feedback, and key game moments.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 977,
    "repoGained8d": 36,
    "url": "https://github.com/zenstory-ai/novel-to-game/blob/main/skills/game-art-direction/SKILL.md"
   },
   {
    "repo": "jame581/GodotPrompter",
    "skill": "ai-navigation",
    "does": "Guides Godot 4.3+ AI movement with navigation agents, steering behaviors, behavior trees, and patrols.",
    "engine": "Godot",
    "official": null,
    "note": null,
    "repoStarsNov6": 932,
    "repoGained8d": 38,
    "url": "https://github.com/jame581/GodotPrompter/blob/main/skills/ai-navigation/SKILL.md"
   },
   {
    "repo": "patch-gg/anymove",
    "skill": "anymove-pack",
    "does": "Scores a creature's captured animation takes, picks keepers, makes loops and root-motion walks, exports one GLB.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 546,
    "repoGained8d": 119,
    "url": "https://github.com/patch-gg/anymove/blob/main/skills/anymove-pack/SKILL.md"
   },
   {
    "repo": "Jakeschincariol/console-skill",
    "skill": "console-anywhere",
    "does": "Builds a PS2 game port for Windows, Mac, Linux, Steam Deck, Android and Vita, packaged without game files.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 323,
    "repoGained8d": null,
    "url": "https://github.com/Jakeschincariol/console-skill/blob/main/console-anywhere/SKILL.md"
   },
   {
    "repo": "Jakeschincariol/console-skill",
    "skill": "console-backend",
    "does": "Ranks PS2Recomp runtime log errors, such as missing syscalls and stubs, into a fix list with exact tools.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 323,
    "repoGained8d": null,
    "url": "https://github.com/Jakeschincariol/console-skill/blob/main/console-backend/SKILL.md"
   },
   {
    "repo": "Jakeschincariol/console-skill",
    "skill": "console-controller",
    "does": "Generates a remapped controller input file for the PS2Recomp runtime and backs up the stock one.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 323,
    "repoGained8d": null,
    "url": "https://github.com/Jakeschincariol/console-skill/blob/main/console-controller/SKILL.md"
   },
   {
    "repo": "Jakeschincariol/console-skill",
    "skill": "console-graphics",
    "does": "Dumps PS2 textures to PNG, rebuilds edited ones in the same format, and lists 16:9 widescreen values.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 323,
    "repoGained8d": null,
    "url": "https://github.com/Jakeschincariol/console-skill/blob/main/console-graphics/SKILL.md"
   },
   {
    "repo": "Jakeschincariol/console-skill",
    "skill": "console-levels",
    "does": "Maps PS2 disc files, unpacks and repacks archives, and diffs edited bytes so levels can be swapped.",
    "engine": "any engine",
    "official": null,
    "note": null,
    "repoStarsNov6": 323,
    "repoGained8d": null,
    "url": "https://github.com/Jakeschincariol/console-skill/blob/main/console-levels/SKILL.md"
   }
  ]
 },
 "awesomeGamedevAgentSkills": {
  "repo": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills",
  "stars": 7421,
  "license": "Apache-2.0",
  "read": "2026-11-07",
  "byGroup": {
   "router": 1,
   "disciplines": 15,
   "ebitengine": 1,
   "genres": 9,
   "godot": 16,
   "other-engines": 12,
   "unity": 8,
   "unreal": 6,
   "web-engines": 6,
   "workflows": 4
  },
  "rows": [
   {
    "group": "router",
    "skill": "router",
    "chars": 18578,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Routes any game-development request to the right specialized skill(s): it detects the engine (Godot, Unity, Unreal, Ebitengine, Bevy, Phaser, PixiJS, three.js, ",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/router/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "ai-behavior-trees-utility-ai",
    "chars": 9180,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a production behavior-tree runtime (Blackboard, action/condition leaves, sequence/selector/parallel composites, decorators) and a Utility AI system (respo",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/ai-behavior-trees-utility-ai/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "audio-design",
    "chars": 9544,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Implement game audio practice \u2014 bus/mixer architecture and gain in decibels, ducking (sidechain), adaptive/dynamic music via layering and re-sequencing, SFX var",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/audio-design/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "camera-systems",
    "chars": 9216,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build game cameras that feel good \u2014 2D follow with a deadzone, look-ahead, smoothing, and level-bounds clamping; 3D third-person orbit with collision and first-",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/camera-systems/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "create-game-assets",
    "chars": 8139,
    "scripts": true,
    "references": true,
    "assets": true,
    "mentionsMcp": false,
    "desc": "Plan, generate, source, normalize, and validate cohesive visual game assets. Use for art direction, style bibles, sprites, tilesets, backgrounds, UI art, icons,",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/create-game-assets/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "dialogue-systems",
    "chars": 7885,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build branching dialogue and narrative \u2014 a node/choice graph with conditions, variables, and localization hooks \u2014 and choose between authoring tools Ink and Yar",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/dialogue-systems/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "game-ai",
    "chars": 8283,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Design NPC and enemy decision-making with finite state machines, behavior trees, steering behaviors, and A* pathfinding \u2014 engine-neutral algorithms that pair wi",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/game-ai/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "game-feel",
    "chars": 9488,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Add \"juice\" and game feel that makes actions satisfying \u2014 screen shake, hit-stop/freeze frames, tweened/eased motion, squash & stretch, knockback, and layered a",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/game-feel/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "game-ui-ux",
    "chars": 10052,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Design and build game UI/UX \u2014 HUDs, menus, and overlays \u2014 that survive every screen: anchor- based responsive layout, resolution/aspect scaling and safe areas, ",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/game-ui-ux/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "input-systems",
    "chars": 10891,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Architect game input \u2014 action mapping (abstracting keys into named actions), rebinding with conflict detection and persistence, multi-device support (keyboard, ",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/input-systems/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "level-design",
    "chars": 8878,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Design and build playable levels \u2014 the blockout/whitebox-to-playable workflow, player metrics and grid layout, pacing and flow (tension/rest curve), gating and ",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/level-design/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "performance-optimization",
    "chars": 10236,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Find and fix game performance problems methodically \u2014 measure with the engine profiler first, reason about the frame-time budget, locate the CPU-vs-GPU bottlene",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/performance-optimization/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "physics-tuning",
    "chars": 8684,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Tune game physics for stable, good-feeling motion \u2014 fixed vs variable timestep, render interpolation, mass/gravity/drag, continuous collision detection (CCD) to",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/physics-tuning/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "procedural-gen",
    "chars": 8592,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Generate game content procedurally \u2014 seeded deterministic RNG, value/Perlin/ Simplex noise for terrain and heightmaps, grid dungeon generation (rooms + corridor",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/procedural-gen/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "save-systems",
    "chars": 9207,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Design save/load for game state \u2014 choosing what to serialize, file formats, save slots, atomic crash-safe writes, schema versioning and migration, and autosave.",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/save-systems/SKILL.md"
   },
   {
    "group": "disciplines",
    "skill": "shader-programming",
    "chars": 8312,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Write game shaders from cross-engine fundamentals \u2014 the vertex\u2192fragment pipeline, coordinate spaces, UV math, and common 2D/3D effects (tint, UV scroll, dissolv",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/disciplines/shader-programming/SKILL.md"
   },
   {
    "group": "ebitengine",
    "skill": "ebitengine-game",
    "chars": 12204,
    "scripts": true,
    "references": true,
    "assets": true,
    "mentionsMcp": false,
    "desc": "Create, improve, debug and package playable 2D games in Go with Ebitengine (github.com/hajimehoshi/ebiten/v2). Use for Ebitengine game requests: game design tra",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/ebitengine/ebitengine-game/SKILL.md"
   },
   {
    "group": "genres",
    "skill": "card-game",
    "chars": 7034,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a card game: card data, deck/hand/discard zones, draw/shuffle/reshuffle, a turn structure, costs, and effect resolution. Use for a deckbuilder, TCG/CCG, o",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/genres/card-game/SKILL.md"
   },
   {
    "group": "genres",
    "skill": "fps-shooter",
    "chars": 6643,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a first-person shooter: move+mouse-look controller, hitscan or projectile shooting, weapons, health, and enemy AI. Use for an FPS, or tuning aim feel, tim",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/genres/fps-shooter/SKILL.md"
   },
   {
    "group": "genres",
    "skill": "platformer",
    "chars": 8111,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a 2D platformer: run/jump control with coyote time, jump buffering, and variable jump height, wall slide and wall jump, plus tiled levels and hazards. Use",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/genres/platformer/SKILL.md"
   },
   {
    "group": "genres",
    "skill": "puzzle",
    "chars": 7198,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a puzzle game: grid/board state, move input, rule-based resolution (match-3 cascades, sokoban pushes, tile logic), scoring, and undo. Use for a match-3, s",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/genres/puzzle/SKILL.md"
   },
   {
    "group": "genres",
    "skill": "roguelike",
    "chars": 7948,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a roguelike: turn-based grid movement, procedural dungeons, permadeath, field-of-view, and loot tables. Use for a roguelike/roguelite or turn-based grid d",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/genres/roguelike/SKILL.md"
   },
   {
    "group": "genres",
    "skill": "rpg",
    "chars": 7014,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build an RPG: stats and leveling, inventory and equipment, quests, branching dialogue, save/load, and combat. Use for an RPG/JRPG, or designing stat, inventory,",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/genres/rpg/SKILL.md"
   },
   {
    "group": "genres",
    "skill": "survival-crafting",
    "chars": 7780,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a survival-crafting game: resource gathering, inventory, crafting and a tech tree, needs (hunger/thirst/temperature), and base building. Use for a surviva",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/genres/survival-crafting/SKILL.md"
   },
   {
    "group": "genres",
    "skill": "tower-defense",
    "chars": 6846,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a tower defense: enemies pathing along lanes, wave spawning, towers that auto-target and fire, an economy, and lives. Use for a tower-defense/wave-defense",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/genres/tower-defense/SKILL.md"
   },
   {
    "group": "genres",
    "skill": "visual-novel",
    "chars": 8169,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a visual novel: a branching script, character and background display, a text box with choices, save/load, backlog, and skip/auto. Use for a VN, dating sim",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/genres/visual-novel/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-2d-movement",
    "chars": 6257,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Implement 2D kinematic character movement in Godot 4.7 with CharacterBody2D and move_and_slide(): platformer run/jump with gravity, top-down 8-direction motion,",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-2d-movement/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-3d-essentials",
    "chars": 5927,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Set up a Godot 4.7 3D scene: Node3D transforms, Camera3D, lighting (DirectionalLight3D/OmniLight3D), WorldEnvironment for sky/ambient/tonemap/post, MeshInstance",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-3d-essentials/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-animation",
    "chars": 5961,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Animate in Godot 4.7 three ways: AnimationPlayer for keyframed clips (incl. Call Method tracks), AnimationTree with state machines and blend spaces for characte",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-animation/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-audio",
    "chars": 5521,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Play and mix audio in Godot 4.7: AudioStreamPlayer (2D/3D variants), audio buses with volume/mute and effects, music vs SFX routing, db/linear volume, and preci",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-audio/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-csharp",
    "chars": 6757,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Use C#/.NET in Godot 4.7: partial classes extending nodes, the PascalCase lifecycle (_Ready/_Process/_PhysicsProcess), [Export] fields, [Signal] delegates as C#",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-csharp/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-export",
    "chars": 6001,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Export and build a Godot 4.7 project for distribution: install export templates, define export presets (Windows/macOS/Linux/Web/Android), run headless command-l",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-export/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-gdscript-headless-testing",
    "chars": 9822,
    "scripts": false,
    "references": false,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Run GDScript test suites from the command line with `godot --headless`, using a SceneTree/MainLoop runner script that exits non-zero on failure so CI can gate m",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-gdscript-headless-testing/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-gdscript",
    "chars": 5691,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Write idiomatic GDScript for Godot 4.7: static typing, the node lifecycle (_ready/_process/_physics_process), @export/@onready/@tool annotations, signals, and a",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-gdscript/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-multiplayer",
    "chars": 7514,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build networked games with Godot 4.7 high-level multiplayer: set up an ENetMultiplayerPeer server/client, define RPCs with the @rpc annotation (call via rpc()/r",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-multiplayer/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-nodes-scenes",
    "chars": 6591,
    "scripts": true,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Structure a Godot 4.7 project with the scene tree and node composition: build reusable scenes, instance PackedScenes at runtime, navigate the tree safely, and r",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-nodes-scenes/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-physics",
    "chars": 8910,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Use Godot 4.7 physics bodies and detection in 2D and 3D: RigidBody, StaticBody, Area, and CharacterBody; collision layers vs masks; contact/overlap signals; and",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-physics/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-resources",
    "chars": 5440,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Design data-driven Godot 4.7 games with custom Resource classes: define typed data with class_name + @export, save/load .tres/.res files, instance and duplicate",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-resources/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-shaders",
    "chars": 5886,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Write Godot 4.7 shaders in the Godot Shading Language: canvas_item shaders for 2D and spatial shaders for 3D, with vertex/fragment functions, uniforms (source_c",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-shaders/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-signals-groups",
    "chars": 5300,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build event-driven, decoupled Godot 4.7 gameplay with signals and node groups: declare and emit custom signals, connect with Callables (incl. bind/one-shot), an",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-signals-groups/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-tilemap",
    "chars": 6064,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build and edit tile-based 2D levels in Godot 4.7 with TileMapLayer and TileSet: paint layers, set up collision/navigation/custom-data on tiles, autotile with te",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-tilemap/SKILL.md"
   },
   {
    "group": "godot",
    "skill": "godot-ui-control",
    "chars": 6174,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build Godot 4.7 user interfaces with Control nodes: anchors and offsets for responsive layout, Container nodes (VBox/HBox/Grid/Margin) for automatic arrangement",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/godot/godot-ui-control/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "bevy-ecs",
    "chars": 10154,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Structure a Bevy app around its Entity Component System: build the App with plugins, define Component/Resource types, write systems with Query/Res/Commands, fil",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/bevy-ecs/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "defold-core",
    "chars": 12875,
    "scripts": true,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build and debug the core of a Defold game in Lua: game.project settings, collections, game objects and components, script lifecycle and self state, go.property,",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/defold-core/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "love2d-core",
    "chars": 6699,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Structure and debug a L\u00d6VE (Love2D) game in Lua: the love.load/update/draw loop, delta-time movement, input, and screen states. Use when building a L\u00d6VE 11.x ga",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/love2d-core/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "pygame-core",
    "chars": 7783,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Structure a pygame (pygame-ce) game in Python: the init/event/update/draw loop, delta-time movement, Surface/Rect blitting, keyboard/mouse input, and Sprite/Gro",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/pygame-core/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "roblox-characters",
    "chars": 9014,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build respawn-safe Roblox character systems around Players, CharacterAdded/CharacterRemoving, Humanoid, HumanoidRootPart, Animator, R6/R15 rigs, movement, anima",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/roblox-characters/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "roblox-datastores",
    "chars": 8970,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Persist player data in Roblox with DataStoreService: GetDataStore, GetAsync/ SetAsync/UpdateAsync/IncrementAsync wrapped in pcall, load-on-join and save-on-leav",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/roblox-datastores/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "roblox-luau",
    "chars": 9594,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Script a Roblox experience in Luau: get services, create and parent Instances, connect events, run server Scripts vs client LocalScripts, and communicate across",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/roblox-luau/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "roblox-networking",
    "chars": 12463,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Design and harden Roblox client/server networking with RemoteEvent, RemoteFunction, and UnreliableRemoteEvent; server authority, argument and Instance validatio",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/roblox-networking/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "roblox-physics",
    "chars": 8732,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Implement Roblox physical simulation and queries with assemblies, anchoring, constraints, collision groups, CanCollide/CanTouch/CanQuery, raycasts and overlap q",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/roblox-physics/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "roblox-simulator-economy",
    "chars": 11794,
    "scripts": true,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Design, balance, and implement the economy of a Roblox simulator, tycoon, clicker, or idle game in Luau: upgrade cost curves, buy max, income per second, rebirt",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/roblox-simulator-economy/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "roblox-studio-workflow",
    "chars": 11070,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": true,
    "desc": "Modify living Roblox Studio projects safely: inspect Explorer and execution locations, preserve existing structure, reuse modules/remotes, create meaningful Ins",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/roblox-studio-workflow/SKILL.md"
   },
   {
    "group": "other-engines",
    "skill": "roblox-ui",
    "chars": 12552,
    "scripts": false,
    "references": true,
    "assets": true,
    "mentionsMcp": false,
    "desc": "Build production Roblox interfaces with ScreenGui/PlayerGui lifecycle, responsive UDim2 layouts, safe insets, reusable editable Instances, cross-device input an",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/roblox-ui/SKILL.md"
   },
   {
    "group": "unity",
    "skill": "unity-animation",
    "chars": 6180,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Drive Unity 6.3 LTS character animation with Animator Controllers: states, transitions, parameters, blend trees, animation layers, and humanoid Avatar IK. Use w",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unity/unity-animation/SKILL.md"
   },
   {
    "group": "unity",
    "skill": "unity-build-pipeline",
    "chars": 8101,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build and ship Unity 6.3 LTS players: build settings and scenes, player/quality settings, the IL2CPP vs Mono scripting backend, managed code stripping, scripted",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unity/unity-build-pipeline/SKILL.md"
   },
   {
    "group": "unity",
    "skill": "unity-csharp-scripting",
    "chars": 7890,
    "scripts": true,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Write Unity 6.3 LTS C# gameplay scripts: the MonoBehaviour lifecycle (Awake/OnEnable/Start/Update/FixedUpdate/LateUpdate), GameObject and component access, coro",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unity/unity-csharp-scripting/SKILL.md"
   },
   {
    "group": "unity",
    "skill": "unity-input-system",
    "chars": 7914,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Wire player input in Unity 6.3 LTS with the Input System package: Input Actions, action maps, the PlayerInput component, and reading values via callbacks or pol",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unity/unity-input-system/SKILL.md"
   },
   {
    "group": "unity",
    "skill": "unity-navmesh",
    "chars": 8036,
    "scripts": false,
    "references": false,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Add AI navigation in Unity 6.3 LTS: bake a NavMesh with the AI Navigation package (NavMeshSurface), move agents with NavMeshAgent.SetDestination, and handle dyn",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unity/unity-navmesh/SKILL.md"
   },
   {
    "group": "unity",
    "skill": "unity-physics",
    "chars": 10314,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Set up 3D physics in Unity 6.3 LTS: Rigidbody movement and forces, colliders, triggers vs collisions, layer-based collision, raycasts, and joints. Use when addi",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unity/unity-physics/SKILL.md"
   },
   {
    "group": "unity",
    "skill": "unity-scriptableobjects",
    "chars": 6579,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Architect Unity 6.3 LTS data and decoupling with ScriptableObjects: config/data assets, shared runtime variables, event channels, and runtime sets/registries. U",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unity/unity-scriptableobjects/SKILL.md"
   },
   {
    "group": "unity",
    "skill": "unity-tilemap-2d",
    "chars": 6604,
    "scripts": false,
    "references": false,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build and script 2D tilemaps in Unity 6.3 LTS: the Grid + Tilemap components, the Tile Palette, tilemap colliders, rule tiles, and runtime SetTile/GetTile paint",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unity/unity-tilemap-2d/SKILL.md"
   },
   {
    "group": "unreal",
    "skill": "unreal-behavior-trees",
    "chars": 6381,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build NPC AI in Unreal Engine 5 with Behavior Trees and Blackboards: composites (Selector/Sequence), tasks, decorators, services, and running the tree from an A",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unreal/unreal-behavior-trees/SKILL.md"
   },
   {
    "group": "unreal",
    "skill": "unreal-blueprints",
    "chars": 6052,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build Unreal Engine 5 gameplay with Blueprint visual scripting: Blueprint Classes, the Event Graph and Construction Script, variables/functions/macros, and Blue",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unreal/unreal-blueprints/SKILL.md"
   },
   {
    "group": "unreal",
    "skill": "unreal-cpp-gameplay",
    "chars": 6373,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Write Unreal Engine 5 C++ gameplay code: the UCLASS/UPROPERTY/UFUNCTION reflection macros, the Gameplay Framework (GameMode, Pawn, Character, PlayerController, ",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unreal/unreal-cpp-gameplay/SKILL.md"
   },
   {
    "group": "unreal",
    "skill": "unreal-enhanced-input",
    "chars": 6623,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Set up player input in Unreal Engine 5 with Enhanced Input: Input Actions, Input Mapping Contexts, modifiers and triggers, adding the mapping context, and bindi",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unreal/unreal-enhanced-input/SKILL.md"
   },
   {
    "group": "unreal",
    "skill": "unreal-niagara",
    "chars": 6328,
    "scripts": false,
    "references": false,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Create and control VFX in Unreal Engine 5 with Niagara: systems and emitters, modules and the spawn/update stages, exposed User parameters, and spawning or driv",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unreal/unreal-niagara/SKILL.md"
   },
   {
    "group": "unreal",
    "skill": "unreal-packaging",
    "chars": 6972,
    "scripts": false,
    "references": false,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Package and ship an Unreal Engine 5 project: the Platforms menu Package Project flow, build configurations (Development vs Shipping), cooking content, packaging",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/unreal/unreal-packaging/SKILL.md"
   },
   {
    "group": "web-engines",
    "skill": "phaser-arcade-physics",
    "chars": 8160,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Use Phaser 4 Arcade Physics: enable the world, give sprites bodies, set velocity/acceleration/gravity, and resolve collisions with colliders, overlaps, groups, ",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/web-engines/phaser-arcade-physics/SKILL.md"
   },
   {
    "group": "web-engines",
    "skill": "phaser-core",
    "chars": 9432,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Set up and debug a Phaser 4 game: the Game config, the Scene lifecycle (init/preload/create/update), the asset loader, cameras, and cross-scene communication. U",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/web-engines/phaser-core/SKILL.md"
   },
   {
    "group": "web-engines",
    "skill": "pixijs-rendering",
    "chars": 9928,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a PixiJS v8 render layer: create the async Application, load textures with Assets, compose the scene graph with Container and Sprite, drive the ticker loo",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/web-engines/pixijs-rendering/SKILL.md"
   },
   {
    "group": "web-engines",
    "skill": "threejs-gltf-loading",
    "chars": 8508,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Load glTF/GLB models in three.js with GLTFLoader and play their skinned animations with AnimationMixer, including DRACO/Meshopt-compressed meshes and KTX2 textu",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/web-engines/threejs-gltf-loading/SKILL.md"
   },
   {
    "group": "web-engines",
    "skill": "threejs-materials-lighting",
    "chars": 7868,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Light and shade a three.js scene: choose materials (MeshStandardMaterial PBR vs unlit MeshBasicMaterial), add ambient/hemisphere/directional/point/spot lights, ",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/web-engines/threejs-materials-lighting/SKILL.md"
   },
   {
    "group": "web-engines",
    "skill": "threejs-scene-setup",
    "chars": 10432,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Stand up a three.js scene: import maps and the three/addons path, the Scene/PerspectiveCamera/WebGLRenderer trio, the setAnimationLoop render loop, responsive r",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/web-engines/threejs-scene-setup/SKILL.md"
   },
   {
    "group": "workflows",
    "skill": "game-jam",
    "chars": 8891,
    "scripts": false,
    "references": false,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Plan and ship a game under a jam deadline: lock scope to the clock, schedule the hours, cut features, and submit on time. Use for a game jam (Ludum Dare, GMTK J",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/workflows/game-jam/SKILL.md"
   },
   {
    "group": "workflows",
    "skill": "itch-publish",
    "chars": 9024,
    "scripts": false,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Publish and update a game on itch.io: create the project page and upload builds with the butler CLI (butler push) to named channels. Use for itch.io publishing,",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/workflows/itch-publish/SKILL.md"
   },
   {
    "group": "workflows",
    "skill": "prototype-fast",
    "chars": 6000,
    "scripts": false,
    "references": false,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Build a playable prototype in about an hour to answer one question \u2014 is it fun? \u2014 with greybox primitives, a hard timebox, and explicit keep/kill criteria. Use ",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/workflows/prototype-fast/SKILL.md"
   },
   {
    "group": "workflows",
    "skill": "steam-publish",
    "chars": 14233,
    "scripts": true,
    "references": true,
    "assets": false,
    "mentionsMcp": false,
    "desc": "Publish or update a game on Steam with Steamworks and SteamPipe: configure depots and packages, upload builds with steamcmd, set a build live on a branch, and r",
    "url": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/workflows/steam-publish/SKILL.md"
   }
  ]
 },
 "test": {
  "dtScaledContinuousMotion": {
   "base": {
    "games": 15,
    "dtScaled": 6
   },
   "pygame-core": {
    "games": 15,
    "dtScaled": 15
   }
  },
  "setup": {
   "claudeCode": "2.1.314",
   "model": "haiku",
   "pygame": "2.5.2",
   "reps": 3,
   "games": {
    "pong": "Pong for one player against a simple computer paddle; the player moves with the up and down arrow keys",
    "snake": "Snake on a grid; arrow keys turn the snake, food makes it grow, hitting a wall or itself restarts",
    "breakout": "Breakout: a paddle moved with the left and right arrow keys, a ball and five rows of bricks",
    "asteroids": "a simple Asteroids: a ship that rotates with left and right, thrusts with up, shoots with space, and rocks that split",
    "platformer": "a one-screen platformer: arrow keys run left and right, space jumps, with gravity and three platforms",
    "shooter": "a top-down shooter: arrow keys move the player in eight directions, space fires upward at enemies that fall"
   },
   "skill": "https://github.com/gamedev-skills/awesome-gamedev-agent-skills/blob/main/skills/other-engines/pygame-core/SKILL.md"
  },
  "groups": {
   "base": {
    "n": 18,
    "pctRan": 100,
    "pctDraws": 100,
    "pctInputChangedFrame": 100,
    "pctAllOk": 100,
    "styleDtScaled": 33,
    "styleDtClamped": 33,
    "styleSpriteGroups": 0,
    "styleDiagonalHandled": 28,
    "medianLines": 165.5,
    "medianOutputTokens": 6796.5,
    "totalCostUsd": 0.0937
   },
   "pygame-core": {
    "n": 18,
    "pctRan": 100,
    "pctDraws": 100,
    "pctInputChangedFrame": 100,
    "pctAllOk": 100,
    "styleDtScaled": 83,
    "styleDtClamped": 100,
    "styleSpriteGroups": 17,
    "styleDiagonalHandled": 44,
    "medianLines": 154.0,
    "medianOutputTokens": 9121.0,
    "totalCostUsd": 0.1318
   }
  },
  "perGame": {
   "pong": {
    "base": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 0,
     "styleDtClamped": 0,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 0,
     "medianLines": 143,
     "medianOutputTokens": 9306,
     "totalCostUsd": 0.0171
    },
    "pygame-core": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 100,
     "styleDtClamped": 100,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 67,
     "medianLines": 142,
     "medianOutputTokens": 10061,
     "totalCostUsd": 0.0212
    }
   },
   "snake": {
    "base": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 0,
     "styleDtClamped": 0,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 0,
     "medianLines": 129,
     "medianOutputTokens": 5227,
     "totalCostUsd": 0.0121
    },
    "pygame-core": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 0,
     "styleDtClamped": 100,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 0,
     "medianLines": 125,
     "medianOutputTokens": 6018,
     "totalCostUsd": 0.018
    }
   },
   "breakout": {
    "base": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 33,
     "styleDtClamped": 33,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 0,
     "medianLines": 181,
     "medianOutputTokens": 6629,
     "totalCostUsd": 0.0141
    },
    "pygame-core": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 100,
     "styleDtClamped": 100,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 33,
     "medianLines": 168,
     "medianOutputTokens": 9597,
     "totalCostUsd": 0.0196
    }
   },
   "asteroids": {
    "base": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 100,
     "styleDtClamped": 67,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 67,
     "medianLines": 243,
     "medianOutputTokens": 9674,
     "totalCostUsd": 0.0193
    },
    "pygame-core": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 100,
     "styleDtClamped": 100,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 67,
     "medianLines": 251,
     "medianOutputTokens": 16252,
     "totalCostUsd": 0.0327
    }
   },
   "platformer": {
    "base": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 0,
     "styleDtClamped": 0,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 0,
     "medianLines": 104,
     "medianOutputTokens": 5451,
     "totalCostUsd": 0.0127
    },
    "pygame-core": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 100,
     "styleDtClamped": 100,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 0,
     "medianLines": 88,
     "medianOutputTokens": 6349,
     "totalCostUsd": 0.0168
    }
   },
   "shooter": {
    "base": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 67,
     "styleDtClamped": 100,
     "styleSpriteGroups": 0,
     "styleDiagonalHandled": 100,
     "medianLines": 263,
     "medianOutputTokens": 9608,
     "totalCostUsd": 0.0183
    },
    "pygame-core": {
     "n": 3,
     "pctRan": 100,
     "pctDraws": 100,
     "pctInputChangedFrame": 100,
     "pctAllOk": 100,
     "styleDtScaled": 100,
     "styleDtClamped": 100,
     "styleSpriteGroups": 100,
     "styleDiagonalHandled": 100,
     "medianLines": 178,
     "medianOutputTokens": 9275,
     "totalCostUsd": 0.0235
    }
   }
  },
  "errors": [],
  "rows": [
   {
    "game": "asteroids",
    "arm": "base",
    "rep": 0,
    "outputTokens": 9259,
    "costUsd": 0.006003689999999999,
    "lines": 234,
    "style": {
     "dtScaled": true,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "asteroids",
    "arm": "base",
    "rep": 1,
    "outputTokens": 11450,
    "costUsd": 0.00710039,
    "lines": 264,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "asteroids",
    "arm": "base",
    "rep": 2,
    "outputTokens": 9674,
    "costUsd": 0.0062115899999999995,
    "lines": 243,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "asteroids",
    "arm": "pygame-core",
    "rep": 0,
    "outputTokens": 17544,
    "costUsd": 0.01415789,
    "lines": 251,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "asteroids",
    "arm": "pygame-core",
    "rep": 1,
    "outputTokens": 16252,
    "costUsd": 0.01017519,
    "lines": 255,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "asteroids",
    "arm": "pygame-core",
    "rep": 2,
    "outputTokens": 12735,
    "costUsd": 0.00841609,
    "lines": 236,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "breakout",
    "arm": "base",
    "rep": 0,
    "outputTokens": 6629,
    "costUsd": 0.004688090000000001,
    "lines": 182,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 300,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "breakout",
    "arm": "base",
    "rep": 1,
    "outputTokens": 6392,
    "costUsd": 0.00456959,
    "lines": 175,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 300,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "breakout",
    "arm": "base",
    "rep": 2,
    "outputTokens": 6964,
    "costUsd": 0.00485599,
    "lines": 181,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "breakout",
    "arm": "pygame-core",
    "rep": 0,
    "outputTokens": 9597,
    "costUsd": 0.006844289999999999,
    "lines": 164,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "breakout",
    "arm": "pygame-core",
    "rep": 1,
    "outputTokens": 10052,
    "costUsd": 0.00707179,
    "lines": 188,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "breakout",
    "arm": "pygame-core",
    "rep": 2,
    "outputTokens": 7224,
    "costUsd": 0.00565779,
    "lines": 168,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 300,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "platformer",
    "arm": "base",
    "rep": 0,
    "outputTokens": 5317,
    "costUsd": 0.00403249,
    "lines": 114,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "platformer",
    "arm": "base",
    "rep": 1,
    "outputTokens": 6421,
    "costUsd": 0.00458369,
    "lines": 104,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "platformer",
    "arm": "base",
    "rep": 2,
    "outputTokens": 5451,
    "costUsd": 0.0040990900000000005,
    "lines": 94,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "platformer",
    "arm": "pygame-core",
    "rep": 0,
    "outputTokens": 7089,
    "costUsd": 0.0071053900000000005,
    "lines": 102,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "platformer",
    "arm": "pygame-core",
    "rep": 1,
    "outputTokens": 4795,
    "costUsd": 0.00444269,
    "lines": 88,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "platformer",
    "arm": "pygame-core",
    "rep": 2,
    "outputTokens": 6349,
    "costUsd": 0.00522029,
    "lines": 86,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "pong",
    "arm": "base",
    "rep": 0,
    "outputTokens": 10560,
    "costUsd": 0.006652989999999999,
    "lines": 143,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "pong",
    "arm": "base",
    "rep": 1,
    "outputTokens": 9306,
    "costUsd": 0.0060263899999999995,
    "lines": 156,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "pong",
    "arm": "base",
    "rep": 2,
    "outputTokens": 6039,
    "costUsd": 0.00439209,
    "lines": 139,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "pong",
    "arm": "pygame-core",
    "rep": 0,
    "outputTokens": 10061,
    "costUsd": 0.007074489999999999,
    "lines": 144,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "pong",
    "arm": "pygame-core",
    "rep": 1,
    "outputTokens": 8967,
    "costUsd": 0.006526889999999999,
    "lines": 139,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "pong",
    "arm": "pygame-core",
    "rep": 2,
    "outputTokens": 11061,
    "costUsd": 0.007574489999999999,
    "lines": 142,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "shooter",
    "arm": "base",
    "rep": 0,
    "outputTokens": 10304,
    "costUsd": 0.00652579,
    "lines": 274,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "shooter",
    "arm": "base",
    "rep": 1,
    "outputTokens": 9608,
    "costUsd": 0.00617739,
    "lines": 263,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 300,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "shooter",
    "arm": "base",
    "rep": 2,
    "outputTokens": 8506,
    "costUsd": 0.005626389999999999,
    "lines": 216,
    "style": {
     "dtScaled": false,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "shooter",
    "arm": "pygame-core",
    "rep": 0,
    "outputTokens": 9275,
    "costUsd": 0.006683089999999999,
    "lines": 194,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": true,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "shooter",
    "arm": "pygame-core",
    "rep": 1,
    "outputTokens": 7666,
    "costUsd": 0.005879189999999999,
    "lines": 178,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": true,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "shooter",
    "arm": "pygame-core",
    "rep": 2,
    "outputTokens": 12675,
    "costUsd": 0.010918009999999999,
    "lines": 171,
    "style": {
     "dtScaled": true,
     "dtClamped": true,
     "spriteGroups": true,
     "diagonalHandled": true,
     "pollsKeys": true
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "snake",
    "arm": "base",
    "rep": 0,
    "outputTokens": 4467,
    "costUsd": 0.00360809,
    "lines": 107,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": false
    },
    "error": null,
    "frames": 300,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "snake",
    "arm": "base",
    "rep": 1,
    "outputTokens": 5227,
    "costUsd": 0.00398729,
    "lines": 139,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": false
    },
    "error": null,
    "frames": 300,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "snake",
    "arm": "base",
    "rep": 2,
    "outputTokens": 6311,
    "costUsd": 0.0045300900000000005,
    "lines": 129,
    "style": {
     "dtScaled": false,
     "dtClamped": false,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": false
    },
    "error": null,
    "frames": 300,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "snake",
    "arm": "pygame-core",
    "rep": 0,
    "outputTokens": 6018,
    "costUsd": 0.00650645,
    "lines": 100,
    "style": {
     "dtScaled": false,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": false
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "snake",
    "arm": "pygame-core",
    "rep": 1,
    "outputTokens": 6297,
    "costUsd": 0.00663495,
    "lines": 134,
    "style": {
     "dtScaled": false,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": false
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   },
   {
    "game": "snake",
    "arm": "pygame-core",
    "rep": 2,
    "outputTokens": 5630,
    "costUsd": 0.00486219,
    "lines": 125,
    "style": {
     "dtScaled": false,
     "dtClamped": true,
     "spriteGroups": false,
     "diagonalHandled": false,
     "pollsKeys": false
    },
    "error": null,
    "frames": 301,
    "ran": true,
    "drawsSomething": true,
    "inputChangedFrame": true
   }
  ]
 }
}