genre-pack-platformer

genre-pack-platformer is a skill for Claude Code from Simone-Tarantino/godot-superpowers. It costs 56 tokens per session (2,334 once invoked), scanned A, original, MIT.

A movement pack for 2D platform games, where characters run and jump across platforms.

In plain words
What is it for?
Use it to build or tune character movement for games inspired by platformers such as Celeste, Hollow Knight, or Mario.
Why use it?
It provides common movement behaviors such as forgiving jumps, variable jump height, wall movement, dashing, and extra jumps.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Part of the godot-superpowers plugin — 33 skills, 15 agents, 4 hooks, 5 MCP servers shipped together

Good fit Use it to build or tune character movement for games inspired by platformers such as Celeste, Hollow Knight, or Mario.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/simone-tarantino/godot-superpowers/genre-pack-platformer
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add Simone-Tarantino/godot-superpowers --skill genre-pack-platformer
Clone the repo
git clone --depth 1 https://github.com/Simone-Tarantino/godot-superpowers

Made for: Claude Code.

Or install godot-superpowers, the plugin that ships this one along with the rest of its 33 skills, 15 agents, 4 hooks, 5 MCP servers.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for genre-pack-platformer

README.md
[![agentmods](https://agentmods.dev/badge/skills/simone-tarantino/godot-superpowers/genre-pack-platformer/github.svg)](https://agentmods.dev/skills/simone-tarantino/godot-superpowers/genre-pack-platformer)
Your own site
<a href="https://agentmods.dev/skills/simone-tarantino/godot-superpowers/genre-pack-platformer"><img src="https://agentmods.dev/badge/skills/simone-tarantino/godot-superpowers/genre-pack-platformer/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for genre-pack-platformer

Your own site · 80×15
<a href="https://agentmods.dev/skills/simone-tarantino/godot-superpowers/genre-pack-platformer"><img src="https://agentmods.dev/badge/skills/simone-tarantino/godot-superpowers/genre-pack-platformer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 56 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,334 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00056 $0.02334
Opus 5 $0.00028 $0.01167
Sonnet 5 $0.00011 $0.00467
Haiku 4.5 $0.00006 $0.00233

Measured 11d ago against content hash edad8581a533, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

genre-pack-platformer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/genre-pack-platformer/SKILL.md · 244 lines

How it starts

The opening of the file, as written. The whole thing — 244 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Genre Pack: 2D Platformer

Battle-tested platformer movement. Tune the constants — defaults give a snappy mid-air feel similar to Celeste / Hollow Knight.

Tuning constants reference

# scripts/components/platformer_move_component.gd
class_name PlatformerMoveComponent
extends Node

# Horizontal
@export var max_speed: float = 250.0
@export var ground_acceleration: float = 1800.0
@export var ground_friction: float = 1800.0
@export var air_acceleration: float = 1000.0
@export var air_friction: float = 600.0

# Jump
@export var jump_velocity: float = -400.0
@export var jump_cut_factor: float = 0.5     ## velocity multiplier on early release
@export var coyote_time: float = 0.10        ## seconds after leaving ground you can still jump
@export var jump_buffer_time: float = 0.10   ## seconds before landing where jump press still counts

# Gravity
@export var gravity: float = 980.0
@export var fall_gravity_multiplier: float = 1.6   ## faster falling = snappier feel
@export var max_fall_speed: float = 500.0

# Air control
@export var max_air_jumps: int = 0           ## 1 = double jump, 2 = triple, etc.

# Wall mechanics
@export var wall_slide_max_speed: float = 80.0
@export var wall_jump_velocity: Vector2 = Vector2(220.0, -380.0)
@export var wall_jump_lockout: float = 0.15  ## input ignore time after wall jump

# Dash
@export var dash_speed: float = 700.0
@export var dash_duration: float = 0.18
@export var dash_cooldown: float = 0.5

# State (read-only outside)
var _coyote: float = 0.0
var _jump_buffer: float = 0.0
var _air_jumps_remaining: int = 0
var _wall_lock: float = 0.0
var _dash_time: float = 0.0
var _dash_cd: float = 0.0
var body: CharacterBody2D

func _ready() -> void:
    body = get_parent() as CharacterBody2D
    assert(body, "PlatformerMoveComponent parent must be CharacterBody2D")

func physics_step(delta: float, input_x: float, jump_pressed: bool, jump_released: bool, dash_pressed: bool) -> void:
    _wall_lock = maxf(0.0, _wall_lock - delta)
    _dash_cd = maxf(0.0, _dash_cd - delta)

    # Dash overrides everything
    if _dash_time > 0.0:
        _dash_time -= delta
        body.velocity.x = sign(body.velocity.x if body.velocity.x != 0.0 else input_x) * dash_speed
        body.velocity.y = 0.0
        body.move_and_slide()
        return
    if dash_pressed and _dash_cd <= 0.0 and absf(input_x) > 0.05:
        _dash_time = dash_duration
        _dash_cd = dash_cooldown
        return

    # Gravity
    var g := gravity * (fall_gravity_multiplier if body.velocity.y > 0.0 else 1.0)
    body.velocity.y = minf(body.velocity.y + g * delta, max_fall_speed)

    # Wall slide
    var on_wall := body.is_on_wall_only()
    if on_wall and body.velocity.y > 0.0:
        body.velocity.y = minf(body.velocity.y, wall_slide_max_speed)

    # Horizontal
    if _wall_lock <= 0.0:
        if absf(input_x) > 0.05:
            var accel := ground_acceleration if body.is_on_floor() else air_acceleration
            body.velocity.x = move_toward(body.velocity.x, input_x * max_speed, accel * delta)
        else:
            var fric := ground_friction if body.is_on_floor() else air_friction
            body.velocity.x = move_toward(body.velocity.x, 0.0, fric * delta)

    # Coyote + jump buffer
    if body.is_on_floor():
        _coyote = coyote_time
        _air_jumps_remaining = max_air_jumps
    else:
        _coyote = maxf(0.0, _coyote - delta)
    if jump_pressed:
        _jump_buffer = jump_buffer_time
    else:
        _jump_buffer = maxf(0.0, _jump_buffer - delta)

    # Jump resolution
    if _jump_buffer > 0.0:
        if _coyote > 0.0:
            body.velocity.y = jump_velocity
            _jump_buffer = 0.0
            _coyote = 0.0
        elif on_wall:
            body.velocity.y = wall_jump_velocity.y
            body.velocity.x = -sign(body.get_wall_normal().x) * wall_jump_velocity.x  # away from wall
            _wall_lock = wall_jump_lockout
            _jump_buffer = 0.0
        elif _air_jumps_remaining > 0:
            body.velocity.y = jump_velocity
            _air_jumps_remaining -= 1
            _jump_buffer = 0.0

    # Variable jump height (cut on release)
    if jump_released and body.velocity.y < 0.0:
        body.velocity.y *= jump_cut_factor

    body.move_and_slide()

func is_dashing() -> bool:
    return _dash_time > 0.0

Read the full file on GitHub · 244 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 11d ago First seen · 244 lines · 56 tokens per session scan A edad8581a533

Subscribe to this mod's changes

genre-pack-platformer is a skill published in the GitHub repository Simone-Tarantino/godot-superpowers (2 stars, last pushed 4mo ago), licensed MIT. It adds 56 tokens to every session and 2,334 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

game-build-team

Build a Godot 4 / GDScript game feature with a coordinated agent team — a Manager (you), a Creative Director, a Logic Developer, an Animation Developer, and a Tester — that iteratively and autonomously design, build, juice, and verify the feature against the project's design contract to a strict, un-skippable quality…

Varalix-Digitech-Solutions/game-build-team-skill · 248 tokens

avatar-contribution-pr

Turn an avatar GitHub issue (from the in-app avatar-editor easter egg) into a merged sprite — validate the art, then either add a new module or replace an existing one, and open a PR that closes the issue. Handles both "Avatar contribution: " (a brand-new sprite) and "Avatar edit: " (a hand-redraw of an existing…

khromov/codebay · 0 tokens

wavedash

Use when building, integrating, testing, uploading, publishing, or preparing a browser game for Wavedash, including CLI setup, Wavedash SDK features, multiplayer, achievements, leaderboards, cloud saves, player identity, user-generated content, store metadata, monetization, and content guidelines.

wvdsh/ai · 63 tokens

godot-engineer

!cat skills/shared/protocols/3d-spatial-foundations.md 2>/dev/null || true !cat skills/shared/game-visual-foundations.md 2>/dev/null || echo "=== Visual Foundations not loaded ===" !cat skills/shared/protocols/ux-protocol.md 2>/dev/null || true !cat skills/shared/protocols/game-test-protocol.md 2>/dev/null || true…

buiphucminhtam/forgewright · 52 tokens

bootstrap-game-qa-system

Use ONCE per browser-game project to set up the game-qa infrastructure. Copies the shipped runner template, the adapter skeleton, and the journey schema; gap-fills the project's existing debug system if one is present. Skip for non-game projects.

Bulugulu/game-qa · 56 tokens

requesting-game-qa

Use ONLY for QA on browser-game feature work. Triggers when the engineer signals readiness for QA: "request QA on X", "verify X", "QA this", "ready for QA on X", "this should be ready, can we make sure it works?" Compiles a brief, drives test-plan sign-off, then hands off to game-qa. Skip for tooling, build scripts…

Bulugulu/game-qa · 93 tokens