Godot Ability System logo

Godot Ability System

Community
thedivergentai
godot-ability-system

Expert patterns for RPG/action ability systems including cooldown strategies, combo systems, ability chaining, skill trees with prerequisites, upgrade paths, and resource management. Use when implementing unlockable abilities, character progression, or complex skill systems. Trigger keywords: PlayerAbility, AbilityManager, cooldown, SkillTree, SkillNode, prerequisites, can_use, execute, ComboSystem, ability_chain, global_cooldown, charge_system, upgrade_path.

Overview

Publisherthedivergentai
RepositoryGD-Agentic-Skills
Skill namegodot-ability-system
Stars
727
Forks
43
Bundled files
13
LicenseLGPL-3.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 13 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by thedivergentai on GitHub. Read the source before you install it.

Installation

Install the Godot Ability System AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/thedivergentai/GD-Agentic-Skills.git /tmp/GD-Agentic-Skills
mkdir -p .claude/skills
cp -r /tmp/GD-Agentic-Skills/skills/godot-ability-system .claude/skills/godot-ability-system
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Godot Ability System in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Godot Ability System on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Godot Ability System is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Architecture Decision: Where Does the Manager Live?

ScopePolicyScript
Per character / enemy / turretScene-scoped manager as child (default)ability_manager.gd or composition ability_container.gd on the entity
Shared unlock / loadout catalog across scenesAutoload catalog / progression only (ranks, unlock flags) — not live cast stateThin Autoload data; casts still go through the entity manager
Global "cast any ability anywhere" AutoloadAvoidBreaks encapsulation and multiplayer authority

Resolved policy: Live cooldowns, GCD, and execute() run on a scene-scoped AbilityManager / AbilityContainer under the caster. Autoloads may store unlock ranks; they must not be the combat cast oracle. Skill-tree UI reads/writes progression data, then calls into the caster’s manager — never /root/AbilityManager.use_* for combat.

NEVER Do

  • NEVER tick cooldowns / status durations in _process() — Use _physics_process(delta) or one-shot Timers so cooldowns stay deterministic under frame spikes.
  • NEVER forget global cooldown (GCD) when design needs anti-spam — Small shared lock (0.5–1.5s) between casts when required.
  • NEVER hardcode ability effects in the manager — Strategy: each ability is a Resource / node with execute() (ability_resource.gd).
  • NEVER allow casts during animation lock — Gate on is_casting / anim signals.
  • NEVER save remaining cooldown floats without time normalization — Persist absolute end timestamps (Time.get_unix_time_from_system() + remaining).
  • NEVER put live combat cast state in a global Autoload — Scene-scoped manager (see decision table). Progression Autoloads are fine.
  • NEVER blindly ban or blindly require object pools — GDScript refcounting makes pool-optional for light VFX; do pool when spawn/despawn of projectiles/AoE is high-frequency or allocation shows up in the profiler. Prefer instantiate/queue_free until measured otherwise.
  • NEVER grow deep ability inheritance trees — Compose Resources + containers (godot-composition).

Golden Path (MANDATORY)

  1. ability_resource.gd — data + virtual execute()
  2. ability_manager.gd or ability_container.gd — scene-scoped cast/cooldown
  3. buff_stat.gd — when buffs/modifiers exist
  4. Damage resolution → godot-combat-system

Do NOT paste inline AbilityManager / ComboSystem / SkillTreeManager novels into scenes. Skill trees are progression UI + prerequisite graphs that grant Resources to the caster’s container.

Available Scripts

Cooldown & Status Timing Contract

  • Cooldown registry updates and status process_tick must use physics-frame delta (_physics_process) or Timer nodes owned by the container.
  • Hit detection from abilities stays on the physics tick when applying impulses / queries.
  • UI may read cooldown progress in _process; it must not own the truth.

Expert Techniques (short)

  • Dependency injection: parents inject caster context; abilities do not get_node("/root/Player").
  • Duck-typed hits: has_method(&"take_damage") / combat DamageData — see combat skill.
  • AoE: call_group or space queries; do not scan the whole tree each cast.
  • Networking: predict locally, authority validates can_use + costs (godot-multiplayer-networking).
  • Skill-tree visualizer: @tool GraphEdit for design-time graphs; runtime still grants Resources to scene managers.

Status Effects & Combos (critical WHY)

CAUTION: Status/buff templates applied at runtime must use duplicate(true). One poisoned .tres mutates every character sharing that asset — see status_effect_manager.gd.

  • Combos: combo_tracker.gd — sequence window + recipe table; finishers remain normal AbilityResource entries.
  • Charges: charge_ability.gd — recharge ticks belong on _physics_process, not UI _process.
  • Skill trees: skill_tree_manager.gd grants abilities to the caster's scene manager — progression Autoloads hold ranks only.
  • Save cooldowns: persist absolute end timestamps (Time.get_unix_time_from_system() + remaining), not raw remaining floats — prevents clock/load exploits.

MANDATORY for combos/charges/skill-tree/status/network depth beyond bullets above: elite-ability-patterns.md. Do NOT Load for a first AbilityResource + AbilityManager pass.

Reference

Progressive disclosure: Skim Official Documentation only for the APIs you are implementing (Resources, timers, signals, save, multiplayer). Open Related Skills when wiring adjacent systems—do not preload the whole lattice.

Official Documentation

  • Resources — Ability definitions, buffs, and status effects should be Resource data (not hardcoded manager switches) so designers can author and share assets.
  • Resource — Use duplicate(true) when applying a status/buff template at runtime so one character’s ticking state cannot mutate the shared .tres for everyone.
  • GDScript exports@export / @export_group power Inspector-tuned costs, cooldowns, prerequisites, and effect arrays on ability Resources.
  • Using signals — Emit ability_cast, ability_ready, and cooldown lifecycle signals so UI and VFX subscribe without coupling to AbilityManager internals.
  • Scene organization — Keep “signals up, calls down”: parents/UI listen; managers call into ability Resources/nodes rather than reaching globally for combat state.
  • Idle and Physics Processing — Tick cooldowns and GCD in _physics_process (fixed delta); avoid _process for cooldown math that desyncs under frame spikes.
  • Timer — One-shot Timer children are a clean composition pattern for per-ability cooldowns in container-style managers.
  • SceneTreeTimercreate_timer() / await patterns fit cast times and short buff durations without adding persistent Timer nodes for every cast.
  • Groups — AoE abilities should call_group (or query groups) instead of hand-rolled scene scans for every hit target.
  • Time — Persist cooldown end timestamps (get_unix_time_from_system() + remaining), not raw remaining floats, across save/load.
  • Saving games — Serialize ability unlock ranks and absolute cooldown end times with the rest of player progression data.
  • High-level multiplayer — Authoritative cast validation + @rpc confirmation/cancel is the engine baseline for predicted ability casts.

Related Skills

Prerequisites
  • godot-resource-data-patterns — Abilities, buffs, and skill-tree nodes are Resource-first; load this before inventing custom serialization or inheritance trees for ability data.
  • godot-signal-architecture — Cast/ready/cooldown signals and UI hooks depend on disciplined signal ownership so AbilityManager stays decoupled from characters and HUD.
  • godot-composition — Prefer AbilityContainer / component nodes over deep BaseAbility → MagicAbility → FireAbility inheritance for runtime behavior.
  • godot-gdscript-mastery — Virtual execute() / can_cast(), typed Resources, and await-on-timer cast flows assume solid GDScript patterns.
Complements
  • godot-combat-system — Damage, hit reactions, and targeting pipelines consume ability execute() results; keep DamageData separate from ability metadata.
  • godot-rpg-stats — Mana/stamina costs, stat bonuses from skill ranks, and buff multipliers need a consistent stats/modifier layer.
  • godot-input-handling — Hotbar / action-map input should call can_use / use_ability rather than embedding cooldown logic in input callbacks.
  • godot-animation-player — Animation lock and cast telegraphs gate ability spam; wire AnimationPlayer start/finish into is_casting.
  • godot-state-machine-advanced — Cast, channel, and interrupt states belong in a character state machine that asks the ability manager, not the other way around.
  • godot-save-load-systems — Skill ranks, unlock flags, and absolute cooldown end times must round-trip through the project save schema.
Downstream / consumers
  • godot-monte-carlo-balancer — After cooldowns, costs, and damage/effect Resources are tunable, Monte Carlo loadout sims prove ability DPS/uptime bands before shipping curves.
  • godot-multiplayer-networking — Predicted casts, authority checks, and rollback of failed RPCs build on the ability manager’s can_use / execute split.
  • godot-genre-action-rpg — Action-RPG skill bars, skill trees, and ability chaining assemble this skill with combat, stats, and progression genre glue.
  • godot-inventory-system — Consumable scrolls, skill books, and equipment that grants abilities bridge inventory grants into AbilityManager registration.
Master
  • godot-master — Library router and mirrored module entry; use when discovering peer skills or syncing shared script mirrors after Domain Skill edits.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Godot Ability System AI skill do?

Expert patterns for RPG/action ability systems including cooldown strategies, combo systems, ability chaining, skill trees with prerequisites, upgrade paths, and resource management. Use when implementing unlockable abilities, character progression, or complex skill systems. Trigger keywords: PlayerAbility, AbilityManager, cooldown, SkillTree, SkillNode, prerequisites, can_use, execute, ComboSystem, ability_chain, global_cooldown, charge_system, upgrade_path.

Why use Godot Ability System on TypingMind?

Because you install it once and use it with any model. Godot Ability System is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Godot Ability System in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/thedivergentai/GD-Agentic-Skills/tree/main/skills/godot-ability-system. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Godot Ability System?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Godot Ability System?

As many as you like. As long as a model supports skills, you can use Godot Ability System with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Godot Ability System AI skill free?

Yes. It is published on GitHub by thedivergentai under the LGPL-3.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇