Agent skill

Input Systems

by ukanwat in ukanwat/overtime

Architect game input — action mapping (abstracting keys into named actions), rebinding with conflict detection and persistence, multi-device support (keyboard, gamepad, touch), analog deadzones, and…

Apache-2.0Auto-check passedGame Development

Install Input Systems

skills CLI
$ npx skills add ukanwat/overtime --skill input-systems -a claude-code

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

GitHub CLI
$ gh skill install ukanwat/overtime input-systems --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/ukanwat/overtime.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/input-systems .claude/skills/input-systems && 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
input-systems
GitHub stars
387
Used in
1 other repo
Token cost
~2k tokens
SKILL.md length
595 words
Files
2 (incl. references)
Skills in repo
21
Repo updated
First seen
Licence
Apache-2.0

At a glance

Architect game input — action mapping (abstracting keys into named actions), rebinding with conflict detection and persistence, multi-device support (keyboard, gamepad, touch), analog deadzones, and…

  • Works in 4 steps: Actions over raw keys; edge vs held → Analog deadzone and sensitivity → Input buffering + coyote time… → …
  • The user mentions input mapping
  • SKILL.md covers When to use, Core workflow, Patterns and Pitfalls, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Input Systems is an agent skill from ukanwat/overtime. Architect game input — action mapping (abstracting keys into named actions), rebinding with conflict detection and persistence, multi-device support (keyboard, gamepad, touch), analog deadzones, and feel features like input buffering and coyote time, plus accessibility. Engine-neutral. Use when the user mentions input mapping, rebind controls, gamepad support, deadzone, input buffering, coyote time, or accessible controls.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/buffering-and-accessibility.md`). Compatibility notes: Engine-agnostic. Pairs with unity-input-system, unreal-enhanced-input, and Godot InputMap; snippets in GDScript-like pseudocode.

It sits in Game Development, covering Accessibility and Game development. The repository describes itself as: Give a coding agent a brief, not a chat, and it works on its own across sessions. Includes an example run: an open-world city built in a real game engine with no human help. In… The licence is Apache-2.0.

When your agent uses it

  • The user mentions input mapping
  • Rebind controls
  • Gamepad support
  • Input buffering

Example prompts

  • “/input-systems”

Requirements

  • Compatibility (from SKILL.md): Engine-agnostic. Pairs with unity-input-system, unreal-enhanced-input, and Godot InputMap; snippets in GDScript-like pseudocode.

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Actions over raw keys; edge vs held
  2. Analog deadzone and sensitivity
  3. Input buffering + coyote time (forgiving, responsive feel)
  4. Rebinding with conflict detection

What it can do on your machine

Read from SKILL.md and the folder at commit fc215d4. 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 gdscript).

    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.

  • Compatibility

    Engine-agnostic. Pairs with unity-input-system, unreal-enhanced-input, and Godot InputMap; snippets in GDScript-like pseudocode.

    From compatibility in the SKILL.md frontmatter.

Context cost

Input Systems loads about 2k tokens when it runs, and up to ~3k if it reads all its reference files. Until then it costs about 110 tokens; SKILL.md has 595 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~110
When it runs · the whole SKILL.md, loaded when a task matches
~2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3k

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 ukanwat/overtime at commit fc215d4, republished under its Apache-2.0 licence (© ukanwat). 595 words, ~1,972 tokens.

Download SKILL.mdSave it as .claude/skills/input-systems/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
input-systems
description
Architect game input — action mapping (abstracting keys into named actions), rebinding with conflict detection and persistence, multi-device support (keyboard, gamepad, touch), analog deadzones, and feel features like input buffering and coyote time, plus accessibility. Engine-neutral. Use when the user mentions input mapping, rebind controls, gamepad support, deadzone, input buffering, coyote time, or accessible controls.
compatibility
Engine-agnostic. Pairs with unity-input-system, unreal-enhanced-input, and Godot InputMap; snippets in GDScript-like pseudocode.
license
Apache-2.0
metadata.engine
none
metadata.category
disciplines
metadata.difficulty
intermediate

Input systems

Never wire gameplay to raw keys. Map physical inputs (a key, a button, a touch) to named actions (jump, interact, move), and let gameplay read actions. That one indirection gives you rebinding, multi-device support, and accessibility almost for free. This skill is the engine-neutral architecture; bind it to unity-input-system, unreal-enhanced-input, or Godot's InputMap.

When to use

  • Use to design an input layer: actions, bindings, multiple devices, and a rebinding UI with conflict detection and saved bindings.
  • Use to add analog handling (deadzones, sensitivity) and game-feel features (input buffering, coyote time).
  • Use to make controls accessible (full remapping, hold-vs-toggle, sensitivity, no required simultaneous presses).

When not to use: for an engine's concrete input package/API, use unity-input-system, unreal-enhanced-input, or Godot's InputMap. For the movement/jump physics the buffer feeds, see physics-tuning and the engine movement skill. Persisting bindings to disk is save-systems.

Core workflow

  1. Define actions, not keys. Gameplay asks "is jump pressed?", never "is Space pressed?". Actions are the stable contract; bindings are data.
  2. Bind per device. Each action holds bindings for keyboard, gamepad, and touch. The active device is whichever last sent input; swap UI prompts to match.
  3. Read the right edge. Use pressed-this-frame (edge) for discrete actions (jump, interact) and held (level) for continuous ones (move, aim). Confusing the two causes double-fires or missed presses.
  4. Filter analog input. Apply a deadzone to sticks/triggers so resting drift reads as zero, and scale sensitivity/curve to taste.
  5. Buffer for feel. Remember a pressed action for a short window so a slightly early press still fires (input buffering); allow a jump shortly after leaving a ledge (coyote time).
  6. Make rebinding first-class. A UI that captures the next input, detects conflicts, and persists bindings — and a reset-to-default. Save via save-systems.
  7. Verify on every device and with rebinds: keyboard, gamepad, touch; rebind an action mid-game and confirm gameplay and prompts follow.

Patterns

1. Actions over raw keys; edge vs held
gdscript
# Gameplay reads ACTIONS. The mapping from key/button to action lives in data.
# Discrete (edge): fire once on the press frame.
if Input.is_action_just_pressed("jump"):
    try_jump()
# Continuous (held): read every frame as an axis.
var move := Input.get_axis("move_left", "move_right")   # -1..1
player.velocity.x = move * RUN_SPEED
# RIGHT: name actions ("jump"); rebinding/devices just change the binding data.
# WRONG: `if Input.is_key_pressed(KEY_SPACE)` — unrebindable, keyboard-only,
# and `is_key_pressed` is a held check that would re-fire jump every frame.

Engine equivalents: Godot InputMap + Input.is_action_just_pressed; Unity Input System InputAction / action maps; Unreal Enhanced Input Input Actions + Input Mapping Contexts.

2. Analog deadzone and sensitivity
gdscript
# Raw sticks never rest at exactly zero. Apply a RADIAL deadzone (on the vector
# length), not per-axis, so diagonals aren't clipped into the axes.
func apply_deadzone(stick: Vector2, dead := 0.2, sens := 1.0) -> Vector2:
    var mag := stick.length()
    if mag < dead:
        return Vector2.ZERO                      # inside deadzone -> no movement
    # Rescale so motion ramps from 0 at the edge of the deadzone, not from `dead`.
    var scaled := (mag - dead) / (1.0 - dead)
    return stick.normalized() * pow(scaled, sens)  # sens>1 = finer near center
# WRONG: clamping each axis separately — it carves a square hole and snaps to axes.
3. Input buffering + coyote time (forgiving, responsive feel)
gdscript
# Buffer: a jump pressed slightly BEFORE landing still triggers on touchdown.
# Coyote: a jump pressed slightly AFTER walking off a ledge still works.
const BUFFER := 0.12   # seconds an early press stays "remembered"
const COYOTE := 0.10   # seconds after leaving ground you can still jump
var _buffer_timer := 0.0
var _coyote_timer := 0.0

func _physics_process(dt):
    _buffer_timer -= dt
    _coyote_timer = COYOTE if is_on_floor() else _coyote_timer - dt
    if Input.is_action_just_pressed("jump"):
        _buffer_timer = BUFFER                  # remember the press
    if _buffer_timer > 0.0 and _coyote_timer > 0.0:
        velocity.y = JUMP_VELOCITY
        _buffer_timer = 0.0; _coyote_timer = 0.0  # consume both so it fires once
Show full SKILL.md (240 more words)Show less
4. Rebinding with conflict detection
gdscript
# Capture the next physical input, reject duplicates, then persist.
func rebind(action: String, event: InputEvent) -> bool:
    for other in actions:                        # conflict check across actions
        if other != action and binding_of(other) == event:
            return false                         # already used -> let UI warn/swap
    set_binding(action, event)                   # engine: erase old + add new event
    save_bindings()                              # persist (see save-systems)
    return true
# Always provide "reset to defaults", and never let the player unbind a key they
# need to reach the menu without an alternative.

Pitfalls

  • Hardcoding keys in gameplay blocks rebinding, locks out gamepad/touch, and scatters input logic. Read named actions only.
  • Edge vs held confusion: using a held check for jump re-fires every frame; using an edge check for movement drops held input. Match the check to the action.
  • Per-axis deadzones clip diagonal stick input and snap movement to the axes. Use a radial deadzone on the vector magnitude.
  • No buffering/coyote time makes tight platformers feel unfair even when the physics are correct — players "clearly pressed jump". Add small windows.
  • Rebinding without conflict handling lets two actions share a key, or strands the player by unbinding menu access. Detect conflicts; guarantee a way back.
  • Not swapping prompts on device change shows "Press Space" to a gamepad player. Track the last-used device and switch glyphs.
  • Ignoring accessibility: required simultaneous presses, no remap, fixed sensitivity, hold-only actions. Offer remap, toggle-vs-hold, and sensitivity.
  • Reading input in the wrong loop: poll held state in the physics step for consistent movement; capture discrete presses so none are missed between frames.

References

  • references/buffering-and-accessibility.md — buffering/coyote tuning, jump feel (variable height, apex), device detection and prompt swapping, touch controls, and an accessibility checklist (remap, toggle/hold, sensitivity, latency).
  • unity-input-system, unreal-enhanced-input — concrete engine input APIs (Godot uses InputMap + the Input singleton).
  • save-systems — persist custom key bindings and input settings.
  • physics-tuning — the movement the buffer/coyote windows feed into.
  • platformer, fps-shooter — genres whose feel depends on input handling.

© ukanwat, 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

SKILL.md and 1 other file (references) in .claude/skills/input-systems of ukanwat/overtime.

  • SKILL.md
  • references/buffering-and-accessibility.md

Open the folder on GitHubat commit fc215d4

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in ukanwat/overtime, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Input Systems 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.

Input Systems compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Input Systems this skillukanwat/overtime3871 repos~2kAutomated safety check: PassApache-2.0
Godot Input Handlingthedivergentai/GD-Agentic-Skills803—~4kAutomated safety check: PassLGPL-3.0
UI Theme QAhashgraph-online/awesome-codex-plugins1.2k—~1.8kAutomated safety check: PassApache-2.0
Scenario Godot UIscenario-labs/skills898—~5.5kAutomated safety check: PassMIT
Hz Immersive Designermeta-quest/agentic-tools213—~2.9kAutomated safety check: PassApache-2.0
Build Game Audio Feedbacknirholas/three.ws2261 repos~277Automated safety check: PassApache-2.0

Similar skills

  • Godot Input Handling

    thedivergentai/GD-Agentic-Skills

    Expert patterns for input handling covering InputMap actions, InputEvent processing, controller support, rebinding, deadzones, and input buffering.

    803 GitHub stars~4k tokensUpdated 28 days ago
    Game DevelopmentAuto-check passed
  • UI Theme QA

    hashgraph-online/awesome-codex-plugins

    A skill your agent uses to find and fix undisciplined Control-node UI in a Godot project — spacing that follows no ladder, font sizes with no modular scale, near-duplicate colours, and text that…

    1.2k GitHub stars~1.8k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Scenario Godot UI

    scenario-labs/skills

    A skill your agent uses when building or fixing game UI in Godot 4.7: main menu, settings screen, HUD (health bar, ammo, minimap frame), Control layout, containers, anchors, themes in code, 'UI…

    898 GitHub stars~5.5k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Hz Immersive Designer

    meta-quest/agentic-tools

    Guides design of comfortable, intuitive VR/MR experiences for Meta VR and Horizon OS — comfort guidelines, interaction patterns, spatial layout, accessibility.

    213 GitHub stars~2.9k tokensUpdated 13 days ago
    Frontend & DesignAuto-check passed
  • Build Game Audio Feedback

    nirholas/three.ws

    Design or implement responsive audio feedback for a Three.js or web game.

    226 GitHub starsUsed in 1 repo~277 tokens
    Game DevelopmentAuto-check passed
  • Co Op Game Intro Generator

    tl2012tl/comfyUI-llama-TE

    For users creating a two-player co-op game menu or opening animation.

    239 GitHub starsUsed in 4 repos~2k tokens
    Game DevelopmentAuto-check passed

More from ukanwat/overtime

All 21 skills in this repo
  • Audio Design

    ukanwat/overtime

    Implement game audio practice — bus/mixer architecture and gain in decibels, ducking (sidechain), adaptive/dynamic music via layering and re-sequencing, SFX variation, and beat synchronization.

    387 GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed
  • Camera Systems

    ukanwat/overtime

    Build game cameras that feel good — 2D follow with a deadzone, look-ahead, smoothing, and level-bounds clamping; 3D third-person orbit with collision and first-person look; plus multi-target framing…

    387 GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • Dialogue Systems

    ukanwat/overtime

    Build branching dialogue and narrative — a node/choice graph with conditions, variables, and localization hooks — and choose between authoring tools Ink and Yarn Spinner or a custom data-driven…

    387 GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed
  • Game AI

    ukanwat/overtime

    Design NPC and enemy decision-making with finite state machines, behavior trees, steering behaviors, and A pathfinding — engine-neutral algorithms that pair with the detected engine's navigation API.

    387 GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Game Feel

    ukanwat/overtime

    Add "juice" and game feel that makes actions satisfying — screen shake, hit-stop/freeze frames, tweened/eased motion, squash & stretch, knockback, and layered audio-visual feedback — as…

    387 GitHub starsUsed in 1 repo~2.3k tokens
    Auto-check passed
  • Game UI UX

    ukanwat/overtime

    Design and build game UI/UX — HUDs, menus, and overlays — that survive every screen: anchor- based responsive layout, resolution/aspect scaling and safe areas, keyboard/gamepad focus navigation, a…

    387 GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed

Questions about Input Systems

What does Input Systems do?

Architect game input — action mapping (abstracting keys into named actions), rebinding with conflict detection and persistence, multi-device support (keyboard, gamepad, touch), analog deadzones, and…. Input Systems is an agent skill from ukanwat/overtime. Architect game input — action mapping (abstracting keys into named actions), rebinding with conflict detection and persistence, multi-device support (keyboard, gamepad, touch), analog deadzones, and feel features like input buffering and coyote time, plus accessibility.

When should I use Input Systems?

Input Systems fits situations like: the user mentions input mapping; rebind controls; gamepad support; input buffering.

How do I install Input Systems in Claude Code?

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

How do I install Input Systems in Codex?

Run `npx skills add ukanwat/overtime --skill input-systems -a codex`. Or copy the skill folder (.claude/skills/input-systems in ukanwat/overtime) into .agents/skills/input-systems in your project. Codex loads it when a task matches its description.

Can I use Input Systems 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 ukanwat/overtime --skill input-systems -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/input-systems, .gemini/skills/input-systems, .github/skills/input-systems and .opencode/skills/input-systems in your project.

What does Input Systems need to run?

SKILL.md names no scripts, command-line tools or credentials: Input Systems is instructions for the agent only. Compatibility (from SKILL.md): Engine-agnostic. Pairs with unity-input-system, unreal-enhanced-input, and Godot InputMap; snippets in GDScript-like pseudocode..

Does Input Systems 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 Input Systems 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 Input Systems use?

Input Systems is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Input Systems use?

About 2k tokens (SKILL.md is roughly 7.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1k tokens, read only when the agent opens those files.

What are the alternatives to Input Systems?

Skills that share tags, products or a category with Input Systems: Godot Input Handling (thedivergentai/GD-Agentic-Skills, 803 stars), UI Theme QA (hashgraph-online/awesome-codex-plugins, 1.2k stars), Scenario Godot UI (scenario-labs/skills, 898 stars) and Hz Immersive Designer (meta-quest/agentic-tools, 213 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Input Systems?

ukanwat (a GitHub user) maintains it in ukanwat/overtime, which has 387 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 6, 2026.

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