Agent skill

Csharp Godot

by jame581 in jame581/GodotPrompter

A skill your agent uses when working with C in Godot — conventions, GodotSharp API differences from GDScript, project setup, and interop

MITAuto-check passedGame Development

Install Csharp Godot

skills CLI
$ npx skills add jame581/GodotPrompter --skill csharp-godot -a claude-code

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

GitHub CLI
$ gh skill install jame581/GodotPrompter csharp-godot --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/jame581/GodotPrompter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/csharp-godot .claude/skills/csharp-godot && 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
csharp-godot
GitHub stars
799
Token cost
~3.6k tokens
SKILL.md length
1,322 words
Files
2 (incl. references)
Skills in repo
58
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when working with C in Godot — conventions, GodotSharp API differences from GDScript, project setup, and interop

  • Works in 10 steps: C# vs GDScript Syntax Comparison → Project Setup → The partial class Requirement → …
  • Working with C in Godot — conventions
  • SKILL.md covers 1. C# vs GDScript Syntax…, 2. Project Setup, 3. The partial class Requirement and 4. Naming Conventions, plus 6 more sections
  • Calls node and dotnet

What it does

Csharp Godot is an agent skill from jame581/GodotPrompter. Use when working with C in Godot — conventions, GodotSharp API differences from GDScript, project setup, and interop

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/gdscript-interop.md`).

It sits in Game Development, covering Game development. It works with Godot and C#. The repository describes itself as: Agentic skills framework for Godot 4.x. Domain-specific skills for AI coding agents (Claude Code, Copilot, Antigravity, Cursor). The licence is MIT.

When your agent uses it

  • Working with C in Godot — conventions
  • GodotSharp API differences from GDScript

Example prompts

  • “/csharp-godot”

Workflow steps

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

  1. C# vs GDScript Syntax Comparison
  2. Project Setup
  3. The partial class Requirement
  4. Naming Conventions
  5. Signals in C
  6. Async / Await
  7. GDScript Interop
  8. Performance
  9. Common Gotchas
  10. Checklist

What it can do on your machine

Read from SKILL.md and the folder at commit 1e7d79d. 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

    Shell commands in SKILL.md call:

    • node
    • dotnet

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

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com
    • docs.godotengine.org

    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

Csharp Godot loads about 3.6k tokens when it runs, and up to ~4.1k if it reads all its reference files. Until then it costs about 33 tokens; SKILL.md has 1,322 words of instructions outside code blocks.

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

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 jame581/GodotPrompter at commit 1e7d79d, republished under its MIT licence (© jame581). 1,322 words, ~3,597 tokens.

Download SKILL.mdSave it as .claude/skills/csharp-godot/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
csharp-godot
description
Use when working with C# in Godot — conventions, GodotSharp API differences from GDScript, project setup, and interop

C# in Godot 4.3+

This skill covers C#-specific conventions, API differences from GDScript, project setup, and interop patterns. All examples are C# only. Target Godot 4.3+ with the GodotSharp NuGet package.

Related skills: csharp-signals for C# signal patterns, godot-project-setup for C# project scaffolding, godot-testing for C# testing with gdUnit4, gdextension for native C++ when C# is not enough, multithreading for C# concurrency.


1. C# vs GDScript Syntax Comparison

GDScriptC# EquivalentNotes
var x = 5var x = 5; or typed int x = 5;C# var infers type at compile time
func MyMethod() -> void:public void MyMethod() { }Methods are PascalCase in C#
signal health_changed(amount: int)[Signal] delegate void HealthChangedEventHandler(int amount);Must use EventHandler suffix
@export var speed: float = 100.0[Export] public float Speed { get; set; } = 100f;PascalCase, property syntax
@onready var label = $Labelprivate Label _label; + _label = GetNode<Label>("Label"); in _Ready()No @onready equivalent; use _Ready()
match value:switch (value) { case X: break; }C# switch also supports pattern matching
class_name MyClass[GlobalClass] public partial class MyClass : GodotObject { }Requires [GlobalClass] attribute
extends Nodepublic partial class MyScript : Node { }Inheritance via :
preload("res://scene.tscn")GD.Load<PackedScene>("res://scene.tscn")Loaded at runtime, not compile time
push_error("msg")GD.PushError("msg");Prints to Godot error log
print("msg")GD.Print("msg");Also: GD.PrintS(), GD.PrintT()
node is CharacterBody2Dnode is CharacterBody2DSame keyword, same semantics
node as CharacterBody2Dnode as CharacterBody2DReturns null on failure in both
await signal_nameawait ToSignal(source, SignalName.X);Must use ToSignal() wrapper
ArrayGodot.Collections.ArrayNot System.Collections.Generic.List<T>
DictionaryGodot.Collections.DictionaryNot System.Collections.Generic.Dictionary<K,V>

2. Project Setup

.csproj and Solution

Godot auto-generates the .csproj when you create the first C# script via Script > New Script > C#. Do not edit the generated file structure manually — let the editor manage it.

MyProject/
├── MyProject.csproj          # Auto-generated, edit only for NuGet packages
├── MyProject.sln             # Auto-generated solution file
├── project.godot
└── scripts/
    └── Player.cs
NuGet Packages

Add packages in MyProject.csproj inside <ItemGroup>:

xml
<Project Sdk="Godot.NET.Sdk/4.3.0">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  </PropertyGroup>
  <ItemGroup>
    <!-- Example: add a third-party NuGet package -->
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>
</Project>

Run dotnet restore or let the IDE restore automatically after editing.

Godot.NET Preview Bindings (Godot 4.7+)

Godot 4.7's Godot.NET.Sdk accepts an opt-in MSBuild property that switches the project from the classic GodotSharp bindings to the preview Godot.NET bindings (the Godot.Bindings assembly instead of GodotSharp):

xml
<PropertyGroup>
  <EnableGodotDotNetPreview>true</EnableGodotDotNetPreview>
</PropertyGroup>

The preview bindings are experimental — leave the property unset for production projects. See GH-118001.

IDE Setup
IDESetup RequiredNotes
JetBrains RiderInstall Godot plugin (bundled in Rider 2023.3+)Best Godot C# support; debugger works out of the box
VS CodeInstall C# Dev Kit + Godot Tools extensionsRequires launch.json for debugger attachment
Visual StudioInstall Godot Visual Studio extensionWindows only; debugger via Tools > Attach to Process

For all IDEs, open the .sln file (not just a folder) to get full solution resolution.


3. The partial class Requirement

Every class that extends a Godot type must be declared partial. This is not optional.

Why

Godot uses C# source generators to emit the signal registration, property binding, and RPC code alongside your class. Source generators require partial to inject into the same class declaration.

Error When Forgotten
Error CS0260: Missing partial modifier on declaration of type 'Player';
another partial declaration of this type exists.

Or the class compiles but signals and [Export] properties silently fail to register.

Rule
csharp
// CORRECT
public partial class Player : CharacterBody2D { }

// WRONG — will cause source generator errors
public class Player : CharacterBody2D { }

This applies to every class in the inheritance chain that extends a Godot type, including intermediate base classes.


4. Naming Conventions

ElementConventionExample
MethodsPascalCasepublic void TakeDamage(int amount)
PropertiesPascalCasepublic float MaxHealth { get; set; }
Signals (delegate)PascalCase + EventHandler suffixHealthChangedEventHandler
[Export] propertiesPascalCase[Export] public float Speed { get; set; }
Private fields_camelCase with underscore prefixprivate float _currentSpeed;
Local variablescamelCasevar newPosition = ...
ParameterscamelCasevoid SetHealth(int newHealth)
Godot API namesMatch Godot's PascalCase exactlyGlobalPosition not global_position
EnumsPascalCase type, PascalCase membersenum State { Idle, Running, Dead }
ConstantsPascalCase or SCREAMING_SNAKE per team styleconst float MaxSpeed = 200f;

Always match GodotSharp property and method names exactly — they are PascalCase translations of the GDScript snake_case names (e.g. is_on_floor() → IsOnFloor()).


5. Signals in C#

Signals require a delegate declaration with the [Signal] attribute. The delegate name must end with EventHandler.

csharp
using Godot;

public partial class Player : CharacterBody2D
{
    // Declaration
    [Signal] public delegate void HealthChangedEventHandler(int newHealth);
    [Signal] public delegate void DiedEventHandler();

    private int _health = 100;

    public void TakeDamage(int amount)
    {
        _health -= amount;
        EmitSignal(SignalName.HealthChanged, _health);  // Use SignalName.X, not a string
        if (_health <= 0)
            EmitSignal(SignalName.Died);
    }
}
Connecting and Disconnecting
csharp
// Connect with +=
player.HealthChanged += OnHealthChanged;
player.Died += OnPlayerDied;

// Disconnect with -=
player.HealthChanged -= OnHealthChanged;
player.Died -= OnPlayerDied;

// Handler signatures must match the delegate
private void OnHealthChanged(int newHealth) { ... }
private void OnPlayerDied() { ... }

For full signal patterns including one-shot connections, static typed signals, and cross-language signal wiring, see the csharp-signals skill.


6. Async / Await

GDScript's await maps to C#'s await ToSignal(...). Godot signals return a SignalAwaiter that is compatible with C# await.

Awaiting a Godot Signal
csharp
public async void StartCutscene()
{
    // Wait for a timer to finish
    await ToSignal(GetTree().CreateTimer(2.0), Timer.SignalName.Timeout);

    // Wait for an animation to finish
    var anim = GetNode<AnimationPlayer>("AnimationPlayer");
    anim.Play("intro");
    await ToSignal(anim, AnimationPlayer.SignalName.AnimationFinished);

    GD.Print("Cutscene complete");
}
Task-Based Patterns

For CPU-bound work, use Task.Run — but never touch Godot objects from a non-main thread:

csharp
public async void LoadHeavyData()
{
    // Off main thread: pure C# computation only
    var result = await Task.Run(() => ComputeSomethingExpensive());

    // Back on main thread: safe to use Godot API
    ApplyResult(result);
}

private int ComputeSomethingExpensive()
{
    // No Godot API calls here
    return Enumerable.Range(0, 1_000_000).Sum();
}
GDScript await Equivalents
GDScriptC#
await get_tree().create_timer(1.0).timeoutawait ToSignal(GetTree().CreateTimer(1.0), Timer.SignalName.Timeout)
await animation_player.animation_finishedawait ToSignal(animPlayer, AnimationPlayer.SignalName.AnimationFinished)
await signal_nameawait ToSignal(this, SignalName.YourSignal)

7. GDScript Interop

C# calls into GDScript objects with Call, Get, and Set, and GDScript can use a C# class directly when it is registered as a [GlobalClass]. Values cross the boundary as Variant, and the reference lists the marshalling gotchas (null, int[], List<T>).

See references/gdscript-interop.md for the Call/Get/Set examples, the [GlobalClass] pattern, and the Variant marshalling table.


8. Performance

Show full SKILL.md (564 more words)Show less
C# vs GDScript
WorkloadWinnerReason
Math-heavy loops (pathfinding, simulation)C# (significantly faster)Compiled JIT vs interpreted GDScript
Large array/collection processingC#Value type arrays avoid boxing
Godot API calls (move_and_slide, etc.)Roughly equalBoth route through the same C++ engine
Scene tree operationsRoughly equalBottleneck is C++ overhead, not language
Rapid prototypingGDScriptLess boilerplate, hot-reload without recompile
Editor tooling (plugins, @tool)GDScriptC# tool scripts require a full build cycle
Guidance
  • Use C# for systems with tight loops: physics solvers, procedural generation, AI decision trees, data processing.
  • Use GDScript for editor plugins, @tool scripts, and rapid iteration on gameplay logic.
  • Mixing languages in the same project is supported — interop cost is minimal for occasional cross-language calls.
  • Avoid Godot.Collections.Array for hot paths; prefer typed arrays (Array<T>) or native C# arrays (T[]) converted at boundaries.
  • StringName lookups are O(1) but StringName construction is not — cache them if created frequently.

9. Common Gotchas

GotchaProblemFix
Variant to C# type conversion(float)someVariant throws if the underlying type is intUse .AsSingle(), .AsInt32(), etc. instead of casts
null vs default(Variant)Godot signals passing no value give default(Variant), not C# nullCheck .VariantType == Variant.Type.Nil
Godot.Collections vs System.CollectionsGodot API methods return Godot.Collections.Array; passing List<T> causes runtime errorAlways use Godot.Collections.Array/Dictionary at Godot API boundaries
Disposing native objectsCalling methods on a freed Godot object throws ObjectDisposedExceptionCheck IsInstanceValid(obj) before use
StringName construction in hot loopsnew StringName("my_signal") allocates each callCache as private static readonly StringName _signalName = "my_signal";
Export array types[Export] public Array Items; exports untyped arrayUse [Export] public Godot.Collections.Array<MyResource> Items { get; set; }
Node path stringsGetNode("../UI/Label") fails silently if the path changesUse GetNode<Label>("%Label") with unique names or typed [Export] node references
partial class forgottenSource generators silently fail; [Export] and [Signal] don't registerEvery class extending a Godot type must be partial
async void vs async Taskasync void swallows exceptionsUse async Task except for top-level event handlers that Godot calls

⚠️ Changed in Godot 4.7: The 4.7 C# assemblies ship several compatibility breaks. Binary-incompatible only (source still compiles — a rebuild suffices): OptimizedTranslation.Generate() now returns bool instead of void (GH-119563). Binary- and source-incompatible (code changes required): Animation.Length changed type metadata from float to double (GH-116394) — the C# property is now double, so float len = anim.Length; no longer compiles — and Control.AccessibilityLive changed enum type from DisplayServer.AccessibilityLiveMode to AccessibilityServer.AccessibilityLiveMode (GH-116839) — update declarations to the AccessibilityServer enum. Source-incompatible (existing binaries still load): RichTextLabel.ImageUpdateMask.UpdateWidthInPercent was renamed to UpdateWidthUnit (GH-112617), and the EditorSceneFormatImporter IMPORT_* constants moved into the ImportFlags enum (GH-115788). Removed: AudioEffectSpectrumAnalyzer.TapBackPos (GH-114355). Rebuild against 4.7 and fix the affected symbols. See the 4.7 migration guide.


10. Checklist

  • Every class extending a Godot type is declared partial
  • Method names match GodotSharp PascalCase (e.g. _Ready, _PhysicsProcess, IsOnFloor())
  • [Export] properties are PascalCase and use property syntax ({ get; set; })
  • Signal delegates end with EventHandler and use EmitSignal(SignalName.X)
  • Signals connected with += and disconnected with -= when no longer needed
  • await ToSignal(...) used for Godot signals — not raw Task.Delay for game timing
  • Godot.Collections.Array/Dictionary used at Godot API boundaries, not System.Collections types
  • IsInstanceValid(obj) checked before using any potentially freed Godot object
  • StringName instances cached if constructed in loops or frequently called methods
  • No Godot API calls inside Task.Run(...) callbacks — all engine calls happen on the main thread
  • .csproj opened via the .sln file in the IDE for full solution resolution
  • C# used for computation-heavy systems; GDScript retained for editor tooling and @tool scripts

© jame581, MIT. 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 skills/csharp-godot of jame581/GodotPrompter.

  • SKILL.md
  • references/gdscript-interop.md

Open the folder on GitHubat commit 1e7d79d

Compare with similar skills

Csharp Godot 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.

Csharp Godot compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Csharp Godot this skilljame581/GodotPrompter799—~3.6kAutomated safety check: PassMIT
Godot Admob App Openpoingstudios/godot-admob-plugin632—~1kAutomated safety check: PassMIT
Godot Admob Bannerpoingstudios/godot-admob-plugin632—~718Automated safety check: PassMIT
Godot Admob Get Startedpoingstudios/godot-admob-plugin632—~1kAutomated safety check: PassMIT
Godot Admob Interstitialpoingstudios/godot-admob-plugin632—~1.1kAutomated safety check: PassMIT
Godot Admob Native Overlaypoingstudios/godot-admob-plugin632—~1kAutomated safety check: PassMIT

Similar skills

  • Godot Admob App Open

    poingstudios/godot-admob-plugin

    Provides instructions to implement, load, show, and destroy App Open ads (shown on application startup or app resume) in GDScript and C.

    632 GitHub stars~1k tokensUpdated 9 days ago
    Game DevelopmentAuto-check passed
  • Godot Admob Banner

    poingstudios/godot-admob-plugin

    Provides instructions to implement, load, and destroy banner ads (AdView) using custom or adaptive sizes in GDScript and C.

    632 GitHub stars~718 tokensUpdated 9 days ago
    Game DevelopmentAuto-check passed
  • Godot Admob Get Started

    poingstudios/godot-admob-plugin

    Provides instructions to initialize the Godot AdMob SDK and configure user consent (UMP Flow) in GDScript and C.

    632 GitHub stars~1k tokensUpdated 9 days ago
    Game DevelopmentAuto-check passed
  • Godot Admob Interstitial

    poingstudios/godot-admob-plugin

    Provides instructions to implement, load, show, and destroy interstitial ads (full-screen image/text ads) in GDScript and C.

    632 GitHub stars~1.1k tokensUpdated 9 days ago
    Game DevelopmentAuto-check passed
  • Godot Admob Native Overlay

    poingstudios/godot-admob-plugin

    Provides instructions to implement, load, show, and destroy Native Overlay ads (customized/native-looking Control node template overlays) in GDScript and C.

    632 GitHub stars~1k tokensUpdated 9 days ago
    Game DevelopmentAuto-check passed
  • Apply the Stage Tamagotchi Godot C development method and code style when working in apps/stage-tamagotchi-kirie or its migration predecessor, engines/stage-tamagotchi-godot.

    50k GitHub stars~677 tokensUpdated yesterday
    Game DevelopmentAuto-check passed

More from jame581/GodotPrompter

All 58 skills in this repo
  • Godot 2D Essentials

    jame581/GodotPrompter

    Covers Godot 4.3+ 2D systems with GDScript and C# examples: canvas layers, draw order, TileMaps, parallax, lights and shadows, particles and custom drawing.

    799 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Godot 3D Essentials

    jame581/GodotPrompter

    Covers Godot 4.3+ 3D systems such as materials, lighting, shadows, environment, global illumination, fog, LOD, occlusion culling and decals, with GDScript first and C# second.

    799 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Godot Ability System

    jame581/GodotPrompter

    Builds a data-driven ability system in Godot 4 from Resources and a component node, with cooldowns, buffs, stat modifiers, gameplay tags and HUD binding.

    799 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • Godot Addon Development

    jame581/GodotPrompter

    Covers Godot 4.3+ editor plugins: plugin folders, @tool scripts, the EditorPlugin lifecycle, custom inspectors, dock panels and gizmos, in GDScript and C#.

    799 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Godot AI Navigation

    jame581/GodotPrompter

    Covers pathfinding and enemy movement in Godot 4.3 and later: navigation regions, NavigationAgent nodes, steering, behavior trees and patrol routes.

    799 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed
  • Godot Animation System

    jame581/GodotPrompter

    Covers animation in Godot 4.3 and later: AnimationPlayer basics, AnimationTree blend trees and state machines, sprite animation, skeleton IK and code-driven motion.

    799 GitHub stars~3.8k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Csharp Godot

What does Csharp Godot do?

A skill your agent uses when working with C in Godot — conventions, GodotSharp API differences from GDScript, project setup, and interop. Csharp Godot is an agent skill from jame581/GodotPrompter.

When should I use Csharp Godot?

Csharp Godot fits situations like: working with C in Godot — conventions; godotSharp API differences from GDScript.

How do I install Csharp Godot in Claude Code?

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

How do I install Csharp Godot in Codex?

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

Can I use Csharp Godot 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 jame581/GodotPrompter --skill csharp-godot -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/csharp-godot, .gemini/skills/csharp-godot, .github/skills/csharp-godot and .opencode/skills/csharp-godot in your project.

What does Csharp Godot need to run?

Going by SKILL.md and its folder, Csharp Godot needs the command-line tools its instructions call (node and dotnet).

Does Csharp Godot access the network?

SKILL.md names 2 domains. As links in the text: github.com and docs.godotengine.org. This is read from the text; nothing was executed.

Is Csharp Godot 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 Csharp Godot use?

Csharp Godot is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Csharp Godot use?

About 3.6k tokens (SKILL.md is roughly 14k 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 460 tokens, read only when the agent opens those files.

What are the alternatives to Csharp Godot?

Skills that share tags, products or a category with Csharp Godot: Godot Admob App Open (poingstudios/godot-admob-plugin, 632 stars), Godot Admob Banner (poingstudios/godot-admob-plugin, 632 stars), Godot Admob Get Started (poingstudios/godot-admob-plugin, 632 stars) and Godot Admob Interstitial (poingstudios/godot-admob-plugin, 632 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Csharp Godot?

jame581 (a GitHub user) maintains it in jame581/GodotPrompter, which has 799 GitHub stars. The repository holds 58 skills in this directory. The repository was last updated on October 8, 2026.

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