contexture godot.instructions.md

Godot game-development guidance covering GDScript, C# integration, editor plugins, nodes, and scenes.

In plain words
What is it for?
Use it when building or editing Godot games, especially scripts, C# components, editor plugins, nodes, and scenes.
Why use it?
It helps prevent mistakes caused by Godot's engine-managed objects, C# interaction costs, invisible editor fields, and incorrectly connected signals.

Instructions file for GitHub Copilot

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.

agentmods
npx agentmods add instructions/ackeskin/contexture/godot
Clone the repo
git clone --depth 1 https://github.com/AcKeskin/contexture

Made for: GitHub Copilot.

Per session 1,773 This file is loaded in full into every session.
When invoked 1,773 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
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 $0.01773 $0.01773
Opus 5 $0.00886 $0.00886
Sonnet 5 $0.00355 $0.00355
Haiku 4.5 $0.00177 $0.00177

Measured 2d ago against content hash c20f3d1d3deb, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

contexture godot.instructions.md 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 2d 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.

.github/instructions/godot.instructions.md · 58 lines

How it starts

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

godot rules

Auto-loaded by Copilot when editing files matching **. Generated from architectural-rules/godot/ — do not hand-edit.

C# in Godot

Expose inspector-editable fields with [Export] on a C# property/field, the binding equivalent of GDScript's @export. Plain C# fields are invisible to the editor. (Godot docs — C# basics) Declare signals as [Signal] public delegate void NameEventHandler(...). The generated event is the typed, editor-visible signal; ad-hoc C# events are not Godot signals. (Godot docs — C# basics) Every C#↔engine call crosses a marshalling boundary with real per-call cost. Do not make many small cross-language calls per frame — batch work and cache values on the C# side. (Godot docs — C# API differences) A GodotObject (Node, Resource) has engine-owned native lifetime that is independent of the C# GC. Free engine objects explicitly (QueueFree/Free); never assume the GC reclaims them, and never touch a C# wrapper after the native object is freed. (Godot docs — C# API differences) Connect signals in C# with a Callable (e.g. Connect(SignalName.X, Callable.From(handler))), not a raw string method name. Callable-based connection is type-checked and refactor-safe. (Godot docs — C# basics)

Cross-reference: the universal C# rules under csharp/ still apply — these add only the Godot-binding specifics on top of them.

Why: The C# binding sits over a native engine: the marshalling boundary and the GodotObject/GC lifetime split are the two seams where idiomatic C# assumptions break. Treating engine objects as GC-managed, or chattering across the boundary each frame, produces both correctness bugs (use-after-free) and frame-time regressions. Source: Godot docs — C# basics / C# API differences.

Editor plugins

A socket/server polled inside a Node's _process() runs on the editor MAIN thread (Thread.is_main_thread() is true). EditorInterface calls from there need NO call_deferred or cross-thread marshalling. Poll editor-facing work on _process to stay main-thread-safe by construction. Do NOT await RenderingServer.frame_post_draw to force a frame before capturing an EDITOR viewport — that signal does not fire predictably for the editor's own viewports and the coroutine hangs. Read viewport.get_texture().get_image() directly; editor viewports render continuously, so the latest frame is already available. Set WebSocketPeer.inbound_buffer_size and outbound_buffer_size large (e.g. 16 MB) BEFORE calling accept_stream(). The default (~64 KB) is too small for large payloads (e.g. base64 viewport PNGs); a big send fails with ERR_OUT_OF_MEMORY. Buffer sizing after accept_stream is too late. Validate editor-plugin tools that render or push large payloads in a WINDOWED editor, not --headless. Headless has no render surface (cannot verify viewport capture) and masks WebSocket buffer limits (there is no large payload to send). Headless is fine ONLY for parse-checks, registry writes, and socket round-trips. Keep any plugin backup/old copy OUTSIDE res://. An in-tree backup collides class_name with the live copy ("Class X hides a global script class") and breaks the entire plugin load; it also pollutes .godot/global_script_class_cache.cfg and uid_cache.bin, which survive restart. If already hit, move the backup out and clear those caches.

Read the full file on GitHub · 58 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. 2d ago First seen · 58 lines · 1,773 tokens per session scan A c20f3d1d3deb

Subscribe to this mod's changes

contexture godot.instructions.md is an instructions file published in the GitHub repository AcKeskin/contexture (2 stars, last pushed 1mo ago), licensed MIT. It adds 1,773 tokens to every session, about $0.0089 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.