Skip to content
Frontend
Skill

/actions-and-utilities

Use this skill when working with Phaser 4 utility functions, actions, alignment, grid layout, or batch operations on game objects. Triggers on: align, grid layout, actions, set operations on groups of game objects.

From plugin
phaser
41k28 skills

Claude Code

$ npx -y skills add phaserjs/phaser --skill actions-and-utilities --agent claude-code

SKILL.md

actions-and-utilities.SKILL.md
name: actions-and-utilities
description: "Use this skill when working with Phaser 4 utility functions, actions, alignment, grid layout, or batch operations on game objects. Triggers on: align, grid layout, actions, set operations on groups of game objects."

Phaser 4 -- Actions & Utility Functions

> Phaser.Actions namespace for batch operations on Game Object arrays, plus Phaser.Utils.Array, Phaser.Utils.Objects, and Phaser.Utils.String helper functions.

**Related skills:** ../groups-and-containers/SKILL.md, ../sprites-and-images/SKILL.md

---

Quick Start

// Create 20 sprites and batch-position them in a grid
const sprites = [];
for (let i = 0; i < 20; i++) {
    sprites.push(this.add.sprite(0, 0, 'gem'));
}

// Arrange into a 5x4 grid
Phaser.Actions.GridAlign(sprites, {
    width: 5,
    height: 4,
    cellWidth: 64,
    cellHeight: 64,
    x: 100,
    y: 100
});

// Fade alpha from 0 to 1 across all sprites
Phaser.Actions.Spread(sprites, 'alpha', 0, 1);

// Offset each sprite's x by 10, with a step of 2 per item
Phaser.Actions.IncX(sprites, 10, 2);

// Works with Groups too
const group = this.add.group({ key: 'star', repeat: 11 });
Phaser.Actions.PlaceOnCircle(group.getChildren(), new Phaser.Geom.Circle(400, 300, 200));

---

Core Concepts

The Actions Pattern

Every Action in `Phaser.Actions` follows the same pattern:

1. **First argument is always an array** of Game Objects (or any objects with the required public properties like `x`, `y`, `alpha`, etc.). 2. **Returns the same array**, enabling chaining or pass-through. 3. **Works with Groups** by passing `group.getChildren()`. 4. Actions do NOT store state. They are one-shot batch operations.

PropertyValueSet and PropertyValueInc

Most Set/Inc actions delegate to two core functions:

  • **`PropertyValueSet(items, key, value, step, index, direction)`** -- Sets `items[i][key] = value + (i * step)`.
  • **`PropertyValueInc(items, key, value, step, index, direction)`** -- Adds `items[i][key] += value + (i * step)`.

The `step` parameter adds an incremental offset per item. The `index` and `direction` parameters control iteration start point and order (1 = forward, -1 = backward).

Geometry-Based Placement

Actions like `PlaceOnCircle`, `PlaceOnLine`, `RandomRectangle`, etc. accept Phaser geometry objects (`Phaser.Geom.Circle`, `Phaser.Geom.Line`, etc.), NOT Game Object shapes. If using a `Phaser.GameObjects.Circle`, pass its `.geom` property instead.

---

All Actions

Property Setters

| Action | Signature | Description | |---|---|---| | `SetX` | `(items, value, step?, index?, direction?)` | Set `x` property | | `SetY` | `(items, value, step?, index?, direction?)` | Set `y` property | | `SetXY` | `(items, x, y?, stepX?, stepY?, index?, direction?)` | Set both `x` and `y`; `y` defaults to `x` | | `SetAlpha` | `(items, value, step?, index?, direction?)` | Set `alpha` | | `SetBlendMode` | `(items, value, index?, direction?)` | Set blend mode | | `SetDepth` | `(items, value, step?, index?, direction?)` | Set render depth | | `SetHitArea` | `(items, hitArea?, callback?)` | Set interactive hit area | | `SetOrigin` | `(items, originX, originY?, stepX?, stepY?, index?, direction?)` | Set origin point | | `SetRotation` | `(items, value, step?, index?, direction?)` | Set rotation (radians) | | `SetScale` | `(items, scaleX, scaleY?, stepX?, stepY?, index?, direction?)` | Set both scale axes | | `SetScaleX` | `(items, value, step?, index?, direction?)` | Set `scaleX` | | `SetScaleY` | `(items, value, step?, index?, direction?)` | Set `scaleY` | | `SetScrollFactor` | `(items, x, y?, stepX?, stepY?, index?, direction?)` | Set scroll factor | | `SetScrollFactorX` | `(items, value, step?, index?, direction?)` | Set horizontal scroll factor | | `SetScrollFactorY` | `(items, value, step?, index?, direction?)` | Set vertical scroll factor | | `SetTint` | `(items, topLeft, topRight?, bottomLeft?, bottomRight?)` | Set tint color(s) | | `SetVisible` | `(items, value, index?, direction?)` | Set visibility | | `PropertyValueSet` | `(items, key, value, step?, index?, direction?)` | Generic: set any named property |

Property Incrementers

| Action | Signature | Description | |---|---|---| | `IncX` | `(items, value, step?, index?, direction?)` | Add to `x` | | `IncXY` | `(items, x, y?, stepX?, stepY?, index?, direction?)` | Add to `x` and `y` | | `IncY` | `(items, value, step?, index?, direction?)` | Add to `y` | | `IncAlpha` | `(items, value, step?, index?, direction?)` | Add to `alpha` | | `Angle` | `(items, value, step?, index?, direction?)` | Add to `angle` (degrees) | | `Rotate` | `(items, value, step?, index?, direction?)` | Add to `rotation` (radians) | | `ScaleX` | `(items, value, step?, index?, direction?)` | Add to `scaleX` | | `ScaleXY` | `(items, scaleX, scaleY?, stepX?, stepY?, index?, direction?)` | Add to both scale axes | | `ScaleY` | `(items, value, step?, index?, direction?)` | Add to `scaleY` | | `PropertyValueInc` | `(items, key, value, step?, index?, direction?)` | Generic: increment any named property |

Placement on Geometry

| Action | Signature | Description | |---|---|---| | `PlaceOnCircle` | `(items, circle, startAngle?, endAngle?)` | Evenly space on circle perimeter | | `PlaceOnEllipse` | `(items, ellipse, startAngle?, endAngle?)` | Evenly space on ellipse perimeter | | `PlaceOnLine` | `(items, line)` | Evenly space along a line | | `PlaceOnRectangle` | `(items, rect, shift?)` | Evenly space on rectangle perimeter | | `PlaceOnTriangle` | `(items, triangle, stepRate?)` | Evenly space on triangle perimeter | | `RandomCircle` | `(items, circle)` | Random positions within a circle | | `RandomEllipse` | `(items, ellipse)` | Random positions within an ellipse | | `RandomLine` | `(items, line)` | Random positions along a line | | `RandomRectangle` | `(items, rect)` | Random positions within a rectangle | | `RandomTriangle` | `(items, triangle)` | Random positions within a triangle |

##

Read more
@phaserjs
Ships withphaser

Phaser is a fast, free, and fun open source HTML5 game framework that offers WebGL and Canvas rendering across desktop and mobile web browsers and has been actively developed for over 13 years.

Stars on GitHub

Momentum

stars in total
40.7k
Star history of phaserjs/phaser on GitHub, a chart by star-history.com

Other skills on phaser.

animations

animations

Use this skill when creating or controlling sprite animations in Phaser 4. Covers spritesheets, atlases, AnimationManager,…

@phaserjs@phaserjsInstall Skill
audio-and-sound

audio-and-sound

Use this skill when adding audio or sound to a Phaser 4 game. Covers loading audio, playing sounds, music, volume, spatial audio,…

@phaserjs@phaserjsInstall Skill
cameras

cameras

Use this skill when working with cameras in Phaser 4. Covers camera effects (shake, fade, flash, pan, zoom), following sprites,…

@phaserjs@phaserjsInstall Skill
curves-and-paths

curves-and-paths

Use this skill when working with curves and paths in Phaser 4. Covers splines, bezier curves, lines, ellipses, path followers,…

@phaserjs@phaserjsInstall Skill
data-manager

data-manager

Use this skill when using the Phaser 4 DataManager to store custom key-value data on game objects, listen for data change events,…

@phaserjs@phaserjsInstall Skill
events-system

events-system

Use this skill when working with the Phaser 4 event system. Covers EventEmitter, scene events, game events, custom events, and…

@phaserjs@phaserjsInstall Skill

More skills from other plugins.

next-bundle-optimizer
Auto-invoked

next-bundle-optimizer

Audit and reduce Next.js browser initial-load work. Use for slow route startup, oversized client bundles, duplicate browser…

nextjs5d143k
@vercel@vercelInstall Skill
migrate-radix-to-base

migrate-radix-to-base

Migrates React projects and components from Radix UI to Base UI. Use when asked to migrate from radix, move to base-ui, convert…

ui2w127k
@shadcn-ui@shadcn-uiInstall Skill
chrome-release-cls

chrome-release-cls

Given a Chrome Releases blog post URL (chromereleases.googleblog.com), extract every CVE/bug and find the underlying Gerrit CL…

electron5d124k
@electron@electronInstall Skill
taste-skill
Auto-invoked

taste-skill

tasteskill v2, the anti-slop frontend skill. Art direction for websites, distilled from a study of 247 curated gallery sites (One…

Questions about actions-and-utilities.

Which coding agents can use actions-and-utilities?
actions-and-utilities installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.