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.
git clone --depth 1 https://github.com/perniemann/pnCoreWrote 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.
[](https://agentmods.dev/rules/perniemann/pncore/pn-godot)<a href="https://agentmods.dev/rules/perniemann/pncore/pn-godot"><img src="https://agentmods.dev/badge/rules/perniemann/pncore/pn-godot/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.
<a href="https://agentmods.dev/rules/perniemann/pncore/pn-godot"><img src="https://agentmods.dev/badge/rules/perniemann/pncore/pn-godot.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.01156 | $0.01156 |
| Opus 5 | $0.00578 | $0.00578 |
| Sonnet 5 | $0.00231 | $0.00231 |
| Haiku 4.5 | $0.00116 | $0.00116 |
Grade A, and why
pn-godot 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 7d 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.
How it starts
The opening of the file, as written. The whole thing — 64 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Godot 4.x rules
GDScript
- Always use type hints. Every variable, parameter, and return type must be annotated:
var health: int,func take_damage(amount: int) -> void. Enables static analysis and editor autocomplete. @onreadyfor node references. Use@onready var label: Label = $UI/Label— neverget_node()inside_ready(). Null-check when the node may be absent.- Signals with types. Declare
signal health_changed(new_value: int)— always typed. Connect viasignal.connect(callable)in code (notconnect("signal", target, "method")— that is Godot 3 style). - No magic strings for node paths. Assign node references via
@exportor@onready; never hardcode long$Path/To/Nodestrings in logic. - Prefer
_physics_processfor movement. Use_processfor visuals/UI;_physics_processformove_and_slide, physics queries, and RigidBody interaction.
Scene composition
- One responsibility per scene. Extract logical sub-trees into
.tscnfiles. Instance scenes rather than duplicating node trees. - Autoloads for globals only. Register autoloads for services/event buses/global state. Do not put per-scene state in autoloads.
- Signal over direct call. Nodes below should not call nodes above in the tree directly. Emit a signal up; the parent or autoload routes it. Direct calls are acceptable downward (parent → child).
- Groups for broadcast. Use
add_to_group()for queries across unrelated branches (e.g. "enemies"). Do not use groups as a substitute for signals when you need a response.
Naming conventions
- Files:
snake_case.gd,snake_case.tscn,snake_case.tres. No spaces. - Nodes: PascalCase (
PlayerController,HealthBar). Scene roots match the file name. - Variables/functions:
snake_case. Constants:ALL_CAPS. Enums:PascalCase, valuesALL_CAPS. - Signals: past-tense or noun phrase:
health_changed,enemy_died,level_completed. - Prefixes:
_for private helpers; no prefix for public API. Avoidon_prefix on signal declarations (reserve_on_for handler methods:_on_button_pressed).
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.
- 7d ago First seen · 64 lines · 1,156 tokens per session scan A 988ac63df55f
pn-godot is a cursor rule published in the GitHub repository perniemann/pnCore (0 stars, last pushed 2d ago), licensed MIT. It adds 1,156 tokens to every session, about $0.0058 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.
Other cursor rules, from other repositories
t-800-operator-routing
A routing rule for explaining Cursor and its agent features to Russian-speaking beginners. Cursor is a code editor with built-in AI assistance.
t-800-factory-routing
A routing rule for building and coordinating groups of coding subagents. Subagents are separate agents that handle parts of a larger task.
t-800-cloud-hub-routing
A routing rule for Cloud Hub setup work, sending matching requests to a designated lead agent. Cloud Hub is the project area named in the rule.
typescript-conventions
Cursor rule "typescript-conventions" from VirtusLab-Open-Source/strapi-plugin-mcp, covering typescript and coding conventions, typescript configuration, import/export patterns, code organization and services (server/src/services/).
game-architect
Game Architect agent (Cloud Dragonborn).
game-designer
Game Designer agent (Samus Shepard).