Agent skill

Gamemaker Gml

by Mindrally in Mindrally/skills

Best practices for GameMaker Language (GML) development, covering scripts, object events, rooms, data structures, and performance-minded game code.

Apache-2.0Auto-check passed

Install Gamemaker Gml

skills CLI
$ npx skills add Mindrally/skills --skill gamemaker-gml -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Mindrally/skills gamemaker-gml --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Mindrally/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/gamemaker-gml .claude/skills/gamemaker-gml && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
gamemaker-gml
GitHub stars
268
Token cost
~2.2k tokens
SKILL.md length
888 words
Files
1
Skills in repo
34
Repo updated
First seen
Licence
Apache-2.0

At a glance

Best practices for GameMaker Language (GML) development, covering scripts, object events, rooms, data structures, and performance-minded game code.

  • Works in 7 steps: Design the object — Decide what Create,… → Initialize in Create — Set default… → Simulate in Step — Put input handling,… → …
  • Writing GML scripts
  • SKILL.md covers Workflow for Building GML…, Code Organization, GML Style and Gameplay Architecture, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Gamemaker Gml is an agent skill from Mindrally/skills. Best practices for GameMaker Language (GML) development, covering scripts, object events, rooms, data structures, and performance-minded game code. Use when writing GML scripts or object event code in GameMaker Studio, structuring create/step/draw events, managing rooms and instances, building state machines for gameplay, or optimizing GML for performance.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: 255+ Claude Code skills converted from Cursor rules. Expert coding guidelines for every major framework and language. The licence is Apache-2.0.

When your agent uses it

  • Writing GML scripts
  • Object event code in GameMaker Studio
  • Structuring create/step/draw events
  • Managing rooms and instances

Example prompts

  • “/gamemaker-gml”

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Design the object — Decide what Create, Step, Draw, Collision, and Alarm events the object needs, and what data it owns.
  2. Initialize in Create — Set default variable values, instantiate data structures (ds_map, ds_list, structs), and cache references (layer…
  3. Simulate in Step — Put input handling, physics/movement, state machine transitions, and collision response in Step (or Step-adjacent…
  4. Render in Draw — Keep Draw events limited to rendering; never mutate gameplay state there.
  5. Extract reusable logic into scripts — Move any behavior used by more than one object, or any event body that's grown complex, into a named…
  6. Clean up on Destroy/Room End — Destroy any manually created data structures (ds_list_destroy, etc.) and free surfaces to avoid memory leaks.
  7. Profile before optimizing — Use GameMaker's built-in profiler or manual timing (get_timer()) to find actual hot paths before restructuring…

What it can do on your machine

Read from SKILL.md and the folder at commit 9718410. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are gml).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Gamemaker Gml loads about 2.2k tokens when it runs. Until then it costs about 93 tokens; SKILL.md has 888 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~93
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Mindrally/skills at commit 9718410, republished under its Apache-2.0 licence (© Mindrally). 888 words, ~2,246 tokens.

Download SKILL.mdSave it as .claude/skills/gamemaker-gml/SKILL.md (or your agent's skills folder).
name
gamemaker-gml
description
Best practices for GameMaker Language (GML) development, covering scripts, object events, rooms, data structures, and performance-minded game code. Use when writing GML scripts or object event code in GameMaker Studio, structuring create/step/draw events, managing rooms and instances, building state machines for gameplay, or optimizing GML for performance.

GameMaker Language (GML) Development

This skill covers writing maintainable, performant game code in GameMaker Language (GML), including code organization, style conventions, gameplay architecture, and performance patterns specific to GameMaker Studio.

Workflow for Building GML Gameplay Features

  1. Design the object — Decide what Create, Step, Draw, Collision, and Alarm events the object needs, and what data it owns.
  2. Initialize in Create — Set default variable values, instantiate data structures (ds_map, ds_list, structs), and cache references (layer IDs, other instance IDs) in the Create event.
  3. Simulate in Step — Put input handling, physics/movement, state machine transitions, and collision response in Step (or Step-adjacent events like Begin/End Step).
  4. Render in Draw — Keep Draw events limited to rendering; never mutate gameplay state there.
  5. Extract reusable logic into scripts — Move any behavior used by more than one object, or any event body that's grown complex, into a named script/function.
  6. Clean up on Destroy/Room End — Destroy any manually created data structures (ds_list_destroy, etc.) and free surfaces to avoid memory leaks.
  7. Profile before optimizing — Use GameMaker's built-in profiler or manual timing (get_timer()) to find actual hot paths before restructuring for performance.

Code Organization

  • Keep object event code short; move any reusable behavior into scripts or named functions instead of duplicating logic across events or objects.
  • Use clear, consistent prefixes or naming conventions for scripts (scr_), objects (obj_), sprites (spr_), rooms (rm_), and global variables/macros, matching whatever convention the project has already established.
  • Prefer functions over copy-pasted event blocks — if the same five lines appear in two objects' Step events, it belongs in a script.
  • Keep Create/Step/Draw responsibilities separate: initialization goes in Create, simulation and logic in Step, and rendering-only work in Draw (and Draw GUI for HUD/UI elements that shouldn't scale/move with the room camera).

GML Style

  • Use descriptive variable names (player_speed, enemy_target) and avoid single-letter names outside small, obviously-scoped loops (for (var i = 0; i < count; i++)).
  • Prefer local variables declared with var (function/event-scoped) over unnecessary instance variables — instance variables should hold state that genuinely needs to persist or be accessed elsewhere.
  • Use constants, enums (enum PlayerState { IDLE, RUN, JUMP }), and macros (#macro) for repeated identifiers, layer names, state IDs, and collision groups — never scatter raw numeric or string literals for meaningful values.
  • Guard optional or possibly-stale instance references with instance_exists(other_id) before accessing their variables, since instance IDs can become invalid after the referenced instance is destroyed.
  • Keep global state (global.*) minimal and documented; excessive globals make an object's actual dependencies invisible.
Example: A State Machine with a Script and an Object
gml
// scr_player_states.gml
function player_state_enter(_inst, _state) {
    _inst.state = _state;
    switch (_state) {
        case PlayerState.IDLE:
            _inst.sprite_index = spr_player_idle;
            break;
        case PlayerState.RUN:
            _inst.sprite_index = spr_player_run;
            break;
        case PlayerState.JUMP:
            _inst.sprite_index = spr_player_jump;
            _inst.vspeed = -_inst.jump_force;
            break;
    }
}

function player_state_step(_inst) {
    switch (_inst.state) {
        case PlayerState.IDLE:
            if (_inst.input_x != 0) {
                player_state_enter(_inst, PlayerState.RUN);
            } else if (!_inst.on_ground) {
                player_state_enter(_inst, PlayerState.JUMP);
            }
            break;

        case PlayerState.RUN:
            _inst.hspeed = _inst.input_x * _inst.move_speed;
            if (_inst.input_x == 0) {
                player_state_enter(_inst, PlayerState.IDLE);
            } else if (!_inst.on_ground) {
                player_state_enter(_inst, PlayerState.JUMP);
            }
            break;

        case PlayerState.JUMP:
            _inst.hspeed = _inst.input_x * _inst.move_speed;
            if (_inst.on_ground && _inst.vspeed >= 0) {
                player_state_enter(_inst, PlayerState.IDLE);
            }
            break;
    }
}
gml
// obj_player - Create event
enum PlayerState { IDLE, RUN, JUMP }

move_speed   = 4;
jump_force   = 8;
input_x      = 0;
on_ground    = false;
state        = PlayerState.IDLE;

player_state_enter(id, PlayerState.IDLE);
gml
// obj_player - Step event
input_x = (keyboard_check(vk_right) - keyboard_check(vk_left));
on_ground = place_meeting(x, y + 1, obj_ground);

player_state_step(id);

move_and_collide(hspeed, vspeed, obj_ground);

Gameplay Architecture

  • Use finite state machines (enums + switch, or a struct-based FSM) for player, enemy, UI, and game-flow states instead of a tangle of boolean flags.
  • Keep collision logic explicit and deterministic — use place_meeting, instance_place, and collision events consistently rather than mixing multiple ad hoc distance checks for the same interaction.
  • Separate input collection (reading keyboard_check/gamepad_* into intent variables like input_x) from action execution (applying that intent to movement/attacks), so input remapping or AI-driven control doesn't require touching gameplay logic.
  • Use alarms, timelines, or explicit timer variables consistently within a project; mixing multiple timing patterns for the same kind of behavior makes debugging harder.
  • Store save data through structured maps/structs ({ level: 3, hp: 80, inventory: [...] }) and version the save format (a save_version field) so future format changes can migrate old saves instead of breaking them.
Show full SKILL.md (333 more words)Show less

Performance

  • Avoid expensive searches such as broad instance_find/instance_number loops or repeated full-room collision scans inside every Step event; scope searches with object type filters and spatial partitioning (grids, layers) where possible.
  • Cache frequently used asset IDs, layer IDs, and instance references in Create rather than re-resolving them (e.g., layer_get_id("Instances")) every Step.
  • Destroy data structures (ds_list_destroy, ds_map_destroy, ds_grid_destroy) when no longer needed — GML data structures are not garbage collected and leak until manually freed or the game restarts.
  • Use object pooling (deactivate/reuse instances via instance_deactivate_object/reactivate, or a custom pool) for frequently spawned projectiles, particles, or short-lived effects once instance_create_layer/instance_destroy churn becomes a measurable cost.
  • Profile before optimizing (GameMaker's built-in profiler, or get_timer() deltas around suspect code) and keep hot-path code simple — premature micro-optimization usually costs more in the code review than it saves in frame time.

Debugging and Testing

  • Add debug overlays (drawn conditionally behind a debug flag) for collision boxes, current state, velocity vectors, and AI decisions when tracking down gameplay bugs.
  • Use assertions or explicit guard clauses (if (!instance_exists(target)) return;) for states that should be impossible, so bugs fail loudly during development instead of silently misbehaving.
  • Test room transitions, pause/resume, save/load, and controller/keyboard input as separate concerns — each has its own failure modes (state not reset on room change, input still processed while paused, etc.).
  • Keep reproducible test rooms for complex mechanics (a "test_boss_fight" room, a "test_platforming" room) so a specific interaction can be re-verified quickly after a change.

Common Mistakes

  • Putting game logic (state changes, physics, spawning) inside a Draw event, which can run at a different rate than Step and shouldn't mutate gameplay state.
  • Creating data structures (ds_list_create, ds_map_create, surfaces) without ever destroying them, leaking memory over a play session.
  • Relying on room-editor instance creation order for critical behavior — order isn't guaranteed to match visual/editor order at runtime; use explicit Create-event initialization or a controller object instead.
  • Hardcoding magic numeric state IDs (state = 2) instead of named enum values (state = PlayerState.JUMP), which makes the code unreadable and error-prone to change.

© Mindrally, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in gamemaker-gml of Mindrally/skills.

Open the folder on GitHubat commit 9718410

Compare with similar skills

Gamemaker Gml next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Gamemaker Gml compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Gamemaker Gml this skillMindrally/skills268—~2.2kAutomated safety check: PassApache-2.0
Cliptalk Speaker EditorGML-MMGroup/ClipTalk136—~326Automated safety check: PassCustom licence
Cliptalk Person EditorGML-MMGroup/ClipTalk136—~311Automated safety check: PassCustom licence
Cliptalk Revision EditorGML-MMGroup/ClipTalk136—~302Automated safety check: PassCustom licence
Cliptalk Cover DirectorGML-MMGroup/ClipTalk136—~607Automated safety check: PassCustom licence
Cliptalk Smart ReframeGML-MMGroup/ClipTalk136—~628Automated safety check: PassCustom licence

Similar skills

  • Cliptalk Speaker Editor

    GML-MMGroup/ClipTalk

    Creates cuts based on who is speaking. An agent skill from GML-MMGroup/ClipTalk.

    136 GitHub stars~326 tokensUpdated 14 days ago
    Media & CreativeAuto-check passed
  • Cliptalk Person Editor

    GML-MMGroup/ClipTalk

    Creates cuts based on who appears on screen. An agent skill from GML-MMGroup/ClipTalk.

    136 GitHub stars~311 tokensUpdated 14 days ago
    Media & CreativeAuto-check passed
  • Cliptalk Revision Editor

    GML-MMGroup/ClipTalk

    Revises an existing ClipTalk cut or review timeline. An agent skill from GML-MMGroup/ClipTalk.

    136 GitHub stars~302 tokensUpdated 14 days ago
    Media & CreativeAuto-check passed
  • Cliptalk Cover Director

    GML-MMGroup/ClipTalk

    Produces evidence-backed cover candidates and reviewable cover variants for a ClipTalk video.

    136 GitHub stars~607 tokensUpdated 14 days ago
    Media & CreativeAuto-check passed
  • Cliptalk Smart Reframe

    GML-MMGroup/ClipTalk

    Creates a subject-aware, time-varying crop track and a review-only social-format preview from an accepted ClipTalk cut.

    136 GitHub stars~628 tokensUpdated 14 days ago
    Media & CreativeAuto-check passed
  • Cliptalk Content Extractor

    GML-MMGroup/ClipTalk

    Locates and assembles source passages matching a semantic request.

    136 GitHub stars~386 tokensUpdated 14 days ago
    Media & CreativeAuto-check passed

More from Mindrally/skills

All 34 skills in this repo
  • Analytics Data Analysis

    Mindrally/skills

    Best practices for analytics, data analysis, and visualization using Python, pandas, matplotlib, seaborn, and Jupyter notebooks.

    268 GitHub stars~1.6k tokensUpdated 1 mo ago
    Auto-check passed
  • Best practices for AutoML and hyperparameter search with Optuna, Ray Tune, and PyCaret, covering search-space design, validation splits, and leakage prevention.

    268 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Blender Python Addon

    Mindrally/skills

    Best practices for writing Blender Python add-ons using the bpy API, covering operators, panels, properties, registration, and API-safe scripting.

    268 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Expert guidelines for Chrome extension development with Manifest V3, covering security, performance, and best practices.

    268 GitHub stars~1.7k tokensUpdated 1 mo ago
    Auto-check passed
  • Clean Code

    Mindrally/skills

    Clean, maintainable, human-readable code principles combined with anti-over-engineering discipline: naming, single responsibility, DRY, and scoping changes to exactly what was requested.

    268 GitHub stars~1.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Design Systems

    Mindrally/skills

    Comprehensive design system guidelines for building consistent, accessible, and scalable component libraries.

    268 GitHub stars~1.8k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Gamemaker Gml

What does Gamemaker Gml do?

Best practices for GameMaker Language (GML) development, covering scripts, object events, rooms, data structures, and performance-minded game code. Gamemaker Gml is an agent skill from Mindrally/skills. Best practices for GameMaker Language (GML) development, covering scripts, object events, rooms, data structures, and performance-minded game code.

When should I use Gamemaker Gml?

Gamemaker Gml fits situations like: writing GML scripts; object event code in GameMaker Studio; structuring create/step/draw events; managing rooms and instances.

How do I install Gamemaker Gml in Claude Code?

Run `npx skills add Mindrally/skills --skill gamemaker-gml -a claude-code`. Or copy the skill folder (gamemaker-gml in Mindrally/skills) into .claude/skills/gamemaker-gml in your project. Claude Code loads it when a task matches its description.

How do I install Gamemaker Gml in Codex?

Run `npx skills add Mindrally/skills --skill gamemaker-gml -a codex`. Or copy the skill folder (gamemaker-gml in Mindrally/skills) into .agents/skills/gamemaker-gml in your project. Codex loads it when a task matches its description.

Can I use Gamemaker Gml in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Mindrally/skills --skill gamemaker-gml -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gamemaker-gml, .gemini/skills/gamemaker-gml, .github/skills/gamemaker-gml and .opencode/skills/gamemaker-gml in your project.

What does Gamemaker Gml need to run?

SKILL.md names no scripts, command-line tools or credentials: Gamemaker Gml is instructions for the agent only.

Does Gamemaker Gml access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Gamemaker Gml safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Gamemaker Gml use?

Gamemaker Gml is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Gamemaker Gml use?

About 2.2k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Gamemaker Gml?

Skills that share tags, products or a category with Gamemaker Gml: Cliptalk Speaker Editor (GML-MMGroup/ClipTalk, 136 stars), Cliptalk Person Editor (GML-MMGroup/ClipTalk, 136 stars), Cliptalk Revision Editor (GML-MMGroup/ClipTalk, 136 stars) and Cliptalk Cover Director (GML-MMGroup/ClipTalk, 136 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Gamemaker Gml?

Mindrally (a GitHub organization) maintains it in Mindrally/skills, which has 268 GitHub stars. The repository holds 34 skills in this directory. The repository was last updated on September 3, 2026.

Source: Mindrally/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.