Creator · jame581
Last updated · Sep 5, 2026
Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels
Creator · jame581
Last updated · Sep 5, 2026
Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels
Creator · jame581
Last updated · Sep 5, 2026
Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels
Creator · jame581
Last updated · Sep 5, 2026
Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels
Install targets
Codex install prompt
Install the "addon-development" agent skill from https://github.com/jame581/GodotPrompter/tree/master/skills/addon-development. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"jame581-addon-development","task":"Install addon-development","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add jame581/GodotPrompter --skill addon-development
Maintenance
fresh
26d since push
Risk
Needs review
Financial research output is not financial advice; require human review before any live investment decision
GitHub quality
674
75/100 Quality · 82/100 Trust
Coverage tags
Review notes
Financial research output is not financial advice; require human review before any live investment decision · Financial research output is not financial advice; require human review before any live investment decision.
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
StrongSolid option that is likely worth shortlisting for production workflows.
Trust
Sandbox onlyUseful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Run only in a sandbox and compare close alternatives before using it for real work.
Stars
674 GitHub stars
Repo activity
674 stars, 31 forks
Maintenance
26d since push
License
MIT
Install
npx skills add jame581/GodotPrompter --skill addon-development
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add jame581/GodotPrompter --skill addon-developmentDo not use when
Alternative
1.9K Stars
npx skills add yanliudesign/mono-color-skill --skill mono-color
Alternative
61.0K Stars
npx skills add mvanhorn/last30days-skill -g
Alternative
38.4K Stars
npx skills add Imbad0202/academic-research-skills
Alternative
256.3K Stars
npx skills add mattpocock/skills --skill grill-me
Agent safety v2
Usable candidate, but the agent should surface permission and audit notes before installation.
Require human approval before installing into a real workspace.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/jame581-addon-development/install
Agent should check
Copy prompt
Task: Use addon-development in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/jame581-addon-development/install
Install command: npx skills add jame581/GodotPrompter --skill addon-development
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/jame581-addon-development/install
LLM text format
/api/skills/jame581-addon-development/install?format=text
Find alternatives
/api/skills/search?q=addon-development&limit=3
Agent prompt
Use addon-development for this task. Review https://www.openagentskill.com/api/skills/jame581-addon-development/install, then install with: npx skills add jame581/GodotPrompter --skill addon-developmentRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/jame581-addon-development
LLM text
/api/registry/manifest/jame581-addon-development?format=text
Install alias
/api/registry/install/jame581-addon-development
Recommend
/api/registry/recommend?task=Use%20addon-development%20in%20an%20agent%20workflow&limit=3
Agent fit
Browser automation
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Browser automation
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
GitHub adoption
INFO674 GitHub stars
Stars/forks activity
INFO674 stars, 31 forks; issue activity unavailable in current metadata
Recent maintenance
PASS26d since push
License clarity
PASSMIT
Good signals
Review before install
Recommended action
Run only in a sandbox and compare close alternatives before using it for real work.
Quality profile
Solid option that is likely worth shortlisting for production workflows.
Workflow fit
Operate web apps
I need my agent to control a browser, fill forms, and verify web app workflows.
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Verify behavior
I need my agent to test a web app, reproduce bugs, and verify fixes.
Workflow fit
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Inspect, patch, and verify code
A workflow for software agents that inspect repositories, review pull requests, generate tests, and turn findings into shippable patches.
Alternative shortlist
Similar skills that may fit this task.
Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo. Always use this skill when the user asks for 单色海报、双色印刷、单色调视觉、蓝色/绿色孔版印刷、risograph、网点照片、复古或当代编辑排版、zine poster, monochrome editorial poster, duotone print, or asks to use the mono-color style. It uses an adaptive white, gray, or pale-beige substrate, no more than two printing inks, active negative space, terse human language, and strong serif/grotesk/mono typography without making retro styling the default or copying a source composition, wording, logo, or artwork. Produce both the final generation prompt and the generated raster image unless the user explicitly asks for prompt only.
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
Academic Research Skills for Claude Code: research → write → review → revise → finalize
A relentless interview to sharpen a plan or design.
--- name: addon-development description: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels ---
# Addon Development in Godot 4.3+
Editor plugins extend the Godot editor itself: custom node types, inspector panels, dock widgets, 3D gizmos, and toolbar buttons. All examples target Godot 4.3+ with no deprecated APIs.
> **Related skills:** **resource-pattern** for custom Resource editors, **godot-ui** for editor panel UI, **csharp-godot** for C# plugin development.
---
## 1. Plugin Structure
Every plugin lives inside `addons/` at the project root. Godot discovers plugins by scanning for `plugin.cfg` files.
``` res:// └── addons/ └── my_plugin/ ├── plugin.cfg # required — plugin metadata ├── plugin.gd # main EditorPlugin script (named in plugin.cfg) ├── my_inspector.gd # optional — EditorInspectorPlugin ├── my_dock.tscn # optional — dock panel scene └── icons/ └── my_node.svg # optional — custom node icons ```
`plugin.cfg` is a plain INI file. Godot reads it when scanning `addons/`. The `script` key must point to the main plugin script relative to the plugin folder.
Enable the plugin: **Project → Project Settings → Plugins** → tick the checkbox next to your plugin name.
---
## 2. @tool Annotation
`@tool` makes a GDScript (or its C# equivalent) run inside the editor process as well as at runtime. Without it, the script only runs when the game is playing.
### GDScript
```gdscript @tool extends Sprite2D
# Engine.is_editor_hint() is true when running inside the editor, # false during a running game. Use it to guard editor-only logic. func _process(delta: float) -> void: if Engine.is_editor_hint(): # This block runs in the editor viewport — safe to call editor APIs. update_configuration_warnings() else: # Normal game logic here. pass
# _get_configuration_warnings() returns an array of strings shown as # yellow warning icons on the node in the Scene panel. func _get_configuration_warnings() -> PackedStringArray: var warnings := PackedStringArray() if texture == null: warnings.append("Texture is not set. Assign a Texture2D in the Inspector.") return warnings ```
### C#
```csharp #if TOOLS using Godot;
[Tool] public partial class MyToolSprite : Sprite2D { public override void _Process(double delta) { if (Engine.IsEditorHint()) { // Editor-only logic — safe to call editor APIs here. UpdateConfigurationWarnings(); } else { // Normal game logic. } }
public override string[] _GetConfigurationWarnings() { if (Texture == null) return new[] { "Texture is not set. Assign a Texture2D in the Inspector." }; return System.Array.Empty<string>(); } } #endif ```
> Wrap C# tool scripts in `#if TOOLS` / `#endif` to prevent the class from being included in exported builds. GDScript `@tool` scripts are excluded from exports automatically.
**Key rules:** - Add `@tool` / `[Tool]` at the top of every script that needs editor access. - Always guard runtime-only code with `Engine.is_editor_hint()` to avoid crashing the editor when processing begins before the scene is fully loaded. - Call `update_configuration_warnings()` whenever a property changes that might affect the warning state.
---
## 3. EditorPlugin Base
The main plugin script extends `EditorPlugin`. Godot calls `_enter_tree()` when the plugin is enabled and `_exit_tree()` when it is disabled or the project is closed. **Everything added in `_enter_tree()` must be removed in `_exit_tree()`.**
### GDScript
```gdscript # plugin.gd @tool extends EditorPlugin
func _enter_tree() -> void: # Register a custom node type. The editor shows MyNode in the # "Add Node" dialog under the chosen base class, with a custom icon. add_custom_type( "MyNode", # name shown in editor "Node2D", # base class to extend preload("res://addons/my_plugin/my_node.gd"), preload("res://addons/my_plugin/icons/my_node.svg") )
# Add a menu item to the Project menu (top toolbar). add_tool_menu_item("My Plugin Action", _on_tool_menu_item)
func _exit_tree() -> void: remove_custom_type("MyNode") remove_tool_menu_item("My Plugin Action")
func _on_tool_menu_item() -> void: print("My Plugin Action triggered") ```
### C#
```csharp // Plugin.cs #if TOOLS using Godot;
[Tool] public partial class MyPlugin : EditorPlugin { public override void _EnterTree() { AddCustomType( "MyNode", "Node2D", GD.Load<Script>("res://addons/my_plugin/MyNode.cs"), GD.Load<Texture2D>("res://addons/my_plugin/icons/my_node.svg") );
AddToolMenuItem("My Plugin Action", new Callable(this, MethodName.OnToolMenuAction)); }
public override void _ExitTree() { RemoveCustomType("MyNode"); RemoveToolMenuItem("My Plugin Action"); }
private void OnToolMenuAction() { GD.Print("My Plugin Action triggered"); } } #endif ```
**add_custom_type parameters:**
| Parameter | Description | |---|---| | `name` | The name shown in the Add Node dialog | | `base` | String name of the Godot base class | | `script` | The GDScript / C# script resource | | `icon` | A `Texture2D`, typically a 16×16 SVG |
**add_tool_menu_item** adds an entry under **Project** in the top menu bar. Pass a `Callable` that takes no arguments.
### Unsaved-State & Script Editor Control (Godot 4.7+)
Godot 4.7 adds file-management APIs useful for build/export tooling — check for unsaved work before running an action, or refresh scripts changed by an external tool.
```gdscript func _run_pre_build_check() -> void: var unsaved_scenes := EditorInterface.get_unsaved_scenes() # PackedStringArray of scene paths var script_editor := EditorInterface.get_script_editor() var unsaved_files := script_editor.get_unsaved_files() # PackedStringArray of script paths if not unsaved_scenes.is_empty() or not unsaved_files.is_empty(): push_warning("Unsaved work detected — save before building.")
script_editor.save_all_scripts() # saves every open script script_editor.reload_open_files() # re-read files changed outside the editor # Closes the tab, discarding unsaved changes; OK or ERR_FILE_NOT_FOUND. var err := script_editor.close_file("res://addons/my_plugin/generated.gd") ```
```csharp #if TOOLS private void RunPreBuildCheck() { string[] unsavedScenes = EditorInterface.Singleton.GetUnsavedScenes(); var scriptEditor = EditorInterface.Singleton.GetScriptEditor(); string[] unsavedFiles = scriptEditor.GetUnsavedFiles(); if (unsavedScenes.Length > 0 || unsavedFiles.Length > 0) GD.PushWarning("Unsaved work detected — save before building.");
scriptEditor.SaveAllScripts(); scriptEditor.ReloadOpenFiles(); Error err = scriptEditor.CloseFile("res://addons/my_plugin/Generated.cs"); } #endif ```
---
## 4. Custom Inspector Plugin
When you want a custom widget for an exported property of a specific type, register an `EditorInspectorPlugin` from your main `EditorPlugin`. The inspector plugin overrides `_can_handle` to opt in and `_parse_property` (or `_parse_begin`) to inject custom widgets. Pair with an `EditorProperty` subclass for the actual UI.
> See [references/inspector-plugins.md](references/inspector-plugins.md) for the full GDScript and C# scaffold (custom inspector + EditorProperty + registration boilerplate).
> **Godot 4.7+:** the static `EditorInspector.create_default_inspector(filter_line_edit: LineEdit = null)` returns an inspector with the same configuration as the editor's Inspector dock, ready to embed in plugin UIs — pass a `LineEdit` for live property filtering (see [references/inspector-plugins.md](references/inspector-plugins.md)). `EditorContextMenuPlugin` also gains `CONTEXT_SLOT_INSPECTOR_PROPERTY` in `ContextMenuSlot`, so context-menu plugins can extend the inspector property right-click menu: `_popup_menu()` receives `[object ID, property name]` and the option callback receives the `EditorProperty` directly.
---
## 5. Custom Dock Panel
Add a custom dock to the editor by calling `add_control_to_dock(slot, control)` from your `EditorPlugin._enter_tree`. Free the control on `_exit_tree`. Useful for project-wide tooling UIs (level browser, asset summary, build dashboard).
> See [references/dock-panels.md](references/dock-panels.md) for the full GDScript and C# dock scaffold.
---
## 6. Custom Resource Editors
`EditorResourcePicker` lets you constrain a property to a specific Resource subclass with a tooltip and base-type filter. `EditorResourcePreviewGenerator` provides custom thumbnails for resources in the FileSystem dock and Inspector.
> See [references/inspector-plugins.md](references/inspector-plugins.md) for the full GDScript and C# `EditorResourcePicker` and `EditorResourcePreviewGenerator` scaffolds.
---
## 7. Gizmos
`EditorNode3DGizmoPlugin` adds visual handles for 3D nodes in the editor — wireframe shapes, draggable handles, rotation rings. Implement `_init` (materials), `_get_gizmo_name`, `_has_gizmo`, `_redraw` (draw lines/handles), and `_get_handle_value` / `_set_handle` / `_commit_handle` for interactive editing.
> See [references/gizmos-deep-dive.md](references/gizmos-deep-dive.md) for the full GDScript and C# gizmo plugin (with undo/redo wiring for handle commits).
> **Godot 4.7+:** override `_can_commit_handle_on_click() -> bool` (returns `false` if not overridden) to commit a handle action even when the final handle position is the same as the initial one — i.e. on a plain click.
---
## 8. Testing Plugins
Toggle the plugin off and on in **Project Settings → Plugins** to reload it; saving a `@tool` script hot-reloads automatically, but new class registrations and dock changes need the full cycle. `print()` / `push_warning()` / `push_error()` go to the Output panel. **C# plugins must recompile first** — `Could not find type "Plugin"` means the assembly failed to build, so check the MSBuild panel before anything else.
Reload recipes (GDScript + C# `PluginReloader`), console launch flags, and the lifecycle-gotcha table (orphaned docks, stale custom types, double-registered inspector plugins): [references/testing-plugins.md](references/testing-plugins.md)
---
## 9. plugin.cfg Format
`plugin.cfg` is a plain INI file placed at the root of the plugin folder. All fields in the `[plugin]` section are required except `dependencies` and `installs`.
```ini [plugin]
name="My Plugin" description="Adds MyNode, a custom inspector, and a dock panel to the editor." author="Your Name" version="1.0.0" script="plugin.gd" ```
**Field reference:**
| Key | Type | Description | |---|---|---| | `name` | String | Display name shown in Project Settings → Plugins | | `description` | String | Short summary shown in the Plugins panel | | `author` | String | Author name or organisation | | `version` | String | Semantic version string (e.g. `"1.2.0"`) | | `script` | String | Path to the main `EditorPlugin` script, **relative to the plugin folder** |
**Complete example with all optional fields:**
```ini [plugin]
name="My Plugin" description="Adds MyNode, a custom inspector, and a dock panel to the editor." author="Your Name" version="1.0.0" script="plugin.gd" ```
> There are no other standard keys in Godot 4.x `plugin.cfg`. Dependency management is handled externally (e.g., by the Asset Library or manual installation instructions).
---
## 10. Checklist
- [ ] `addons/<plugin_name>/plugin.cfg` exists with `name`, `description`, `author`, `version`, `script` - [ ] Main script extends `EditorPlugin` and is decorated with `@tool` (GDScript) or `[Tool]` insid
Source provenance
Decision snapshot
674 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for addon-development, ready for a manual X post.
A practical pick for source-backed research: addon-development: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels 674 stars https://www.openagentskill.com/skills/jame581-addon-development?ref=x
Listing + install path for addon-development: https://www.openagentskill.com/skills/jame581-addon-development?ref=x Install: npx skills add jame581/GodotPrompter --skill addon-development
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to jame581 but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jame581-addon-development/audit)
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)jame581
@jame581
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Sandbox only
mono-color
Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo. Always use this skill when the user asks for 单色海报、双色印刷、单色调视觉、蓝色/绿色孔版印刷、risograph、网点照片、复古或当代编辑排版、zine poster, monochrome editorial poster, duotone print, or asks to use the mono-color style. It uses an adaptive white, gray, or pale-beige substrate, no more than two printing inks, active negative space, terse human language, and strong serif/grotesk/mono typography without making retro styling the default or copying a source composition, wording, logo, or artwork. Produce both the final generation prompt and the generated raster image unless the user explicitly asks for prompt only.
1.9K StarsLast30days Skill
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
61.0K StarsAcademic Research Skills
Academic Research Skills for Claude Code: research → write → review → revise → finalize
38.4K Starsgrill-me
A relentless interview to sharpen a plan or design.
256.3K StarsInstall targets
Codex install prompt
Install the "addon-development" agent skill from https://github.com/jame581/GodotPrompter/tree/master/skills/addon-development. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"jame581-addon-development","task":"Install addon-development","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add jame581/GodotPrompter --skill addon-development
Maintenance
fresh
26d since push
Risk
Needs review
Financial research output is not financial advice; require human review before any live investment decision
GitHub quality
674
75/100 Quality · 82/100 Trust
Coverage tags
Review notes
Financial research output is not financial advice; require human review before any live investment decision · Financial research output is not financial advice; require human review before any live investment decision.
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
StrongSolid option that is likely worth shortlisting for production workflows.
Trust
Sandbox onlyUseful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Run only in a sandbox and compare close alternatives before using it for real work.
Stars
674 GitHub stars
Repo activity
674 stars, 31 forks
Maintenance
26d since push
License
MIT
Install
npx skills add jame581/GodotPrompter --skill addon-development
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add jame581/GodotPrompter --skill addon-developmentDo not use when
Alternative
1.9K Stars
npx skills add yanliudesign/mono-color-skill --skill mono-color
Alternative
61.0K Stars
npx skills add mvanhorn/last30days-skill -g
Alternative
38.4K Stars
npx skills add Imbad0202/academic-research-skills
Alternative
256.3K Stars
npx skills add mattpocock/skills --skill grill-me
Agent safety v2
Usable candidate, but the agent should surface permission and audit notes before installation.
Require human approval before installing into a real workspace.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/jame581-addon-development/install
Agent should check
Copy prompt
Task: Use addon-development in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/jame581-addon-development/install
Install command: npx skills add jame581/GodotPrompter --skill addon-development
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/jame581-addon-development/install
LLM text format
/api/skills/jame581-addon-development/install?format=text
Find alternatives
/api/skills/search?q=addon-development&limit=3
Agent prompt
Use addon-development for this task. Review https://www.openagentskill.com/api/skills/jame581-addon-development/install, then install with: npx skills add jame581/GodotPrompter --skill addon-developmentRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/jame581-addon-development
LLM text
/api/registry/manifest/jame581-addon-development?format=text
Install alias
/api/registry/install/jame581-addon-development
Recommend
/api/registry/recommend?task=Use%20addon-development%20in%20an%20agent%20workflow&limit=3
Agent fit
Browser automation
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Browser automation
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
GitHub adoption
INFO674 GitHub stars
Stars/forks activity
INFO674 stars, 31 forks; issue activity unavailable in current metadata
Recent maintenance
PASS26d since push
License clarity
PASSMIT
Good signals
Review before install
Recommended action
Run only in a sandbox and compare close alternatives before using it for real work.
Quality profile
Solid option that is likely worth shortlisting for production workflows.
Workflow fit
Operate web apps
I need my agent to control a browser, fill forms, and verify web app workflows.
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Verify behavior
I need my agent to test a web app, reproduce bugs, and verify fixes.
Workflow fit
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Inspect, patch, and verify code
A workflow for software agents that inspect repositories, review pull requests, generate tests, and turn findings into shippable patches.
Alternative shortlist
Similar skills that may fit this task.
Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo. Always use this skill when the user asks for 单色海报、双色印刷、单色调视觉、蓝色/绿色孔版印刷、risograph、网点照片、复古或当代编辑排版、zine poster, monochrome editorial poster, duotone print, or asks to use the mono-color style. It uses an adaptive white, gray, or pale-beige substrate, no more than two printing inks, active negative space, terse human language, and strong serif/grotesk/mono typography without making retro styling the default or copying a source composition, wording, logo, or artwork. Produce both the final generation prompt and the generated raster image unless the user explicitly asks for prompt only.
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
Academic Research Skills for Claude Code: research → write → review → revise → finalize
A relentless interview to sharpen a plan or design.
--- name: addon-development description: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels ---
# Addon Development in Godot 4.3+
Editor plugins extend the Godot editor itself: custom node types, inspector panels, dock widgets, 3D gizmos, and toolbar buttons. All examples target Godot 4.3+ with no deprecated APIs.
> **Related skills:** **resource-pattern** for custom Resource editors, **godot-ui** for editor panel UI, **csharp-godot** for C# plugin development.
---
## 1. Plugin Structure
Every plugin lives inside `addons/` at the project root. Godot discovers plugins by scanning for `plugin.cfg` files.
``` res:// └── addons/ └── my_plugin/ ├── plugin.cfg # required — plugin metadata ├── plugin.gd # main EditorPlugin script (named in plugin.cfg) ├── my_inspector.gd # optional — EditorInspectorPlugin ├── my_dock.tscn # optional — dock panel scene └── icons/ └── my_node.svg # optional — custom node icons ```
`plugin.cfg` is a plain INI file. Godot reads it when scanning `addons/`. The `script` key must point to the main plugin script relative to the plugin folder.
Enable the plugin: **Project → Project Settings → Plugins** → tick the checkbox next to your plugin name.
---
## 2. @tool Annotation
`@tool` makes a GDScript (or its C# equivalent) run inside the editor process as well as at runtime. Without it, the script only runs when the game is playing.
### GDScript
```gdscript @tool extends Sprite2D
# Engine.is_editor_hint() is true when running inside the editor, # false during a running game. Use it to guard editor-only logic. func _process(delta: float) -> void: if Engine.is_editor_hint(): # This block runs in the editor viewport — safe to call editor APIs. update_configuration_warnings() else: # Normal game logic here. pass
# _get_configuration_warnings() returns an array of strings shown as # yellow warning icons on the node in the Scene panel. func _get_configuration_warnings() -> PackedStringArray: var warnings := PackedStringArray() if texture == null: warnings.append("Texture is not set. Assign a Texture2D in the Inspector.") return warnings ```
### C#
```csharp #if TOOLS using Godot;
[Tool] public partial class MyToolSprite : Sprite2D { public override void _Process(double delta) { if (Engine.IsEditorHint()) { // Editor-only logic — safe to call editor APIs here. UpdateConfigurationWarnings(); } else { // Normal game logic. } }
public override string[] _GetConfigurationWarnings() { if (Texture == null) return new[] { "Texture is not set. Assign a Texture2D in the Inspector." }; return System.Array.Empty<string>(); } } #endif ```
> Wrap C# tool scripts in `#if TOOLS` / `#endif` to prevent the class from being included in exported builds. GDScript `@tool` scripts are excluded from exports automatically.
**Key rules:** - Add `@tool` / `[Tool]` at the top of every script that needs editor access. - Always guard runtime-only code with `Engine.is_editor_hint()` to avoid crashing the editor when processing begins before the scene is fully loaded. - Call `update_configuration_warnings()` whenever a property changes that might affect the warning state.
---
## 3. EditorPlugin Base
The main plugin script extends `EditorPlugin`. Godot calls `_enter_tree()` when the plugin is enabled and `_exit_tree()` when it is disabled or the project is closed. **Everything added in `_enter_tree()` must be removed in `_exit_tree()`.**
### GDScript
```gdscript # plugin.gd @tool extends EditorPlugin
func _enter_tree() -> void: # Register a custom node type. The editor shows MyNode in the # "Add Node" dialog under the chosen base class, with a custom icon. add_custom_type( "MyNode", # name shown in editor "Node2D", # base class to extend preload("res://addons/my_plugin/my_node.gd"), preload("res://addons/my_plugin/icons/my_node.svg") )
# Add a menu item to the Project menu (top toolbar). add_tool_menu_item("My Plugin Action", _on_tool_menu_item)
func _exit_tree() -> void: remove_custom_type("MyNode") remove_tool_menu_item("My Plugin Action")
func _on_tool_menu_item() -> void: print("My Plugin Action triggered") ```
### C#
```csharp // Plugin.cs #if TOOLS using Godot;
[Tool] public partial class MyPlugin : EditorPlugin { public override void _EnterTree() { AddCustomType( "MyNode", "Node2D", GD.Load<Script>("res://addons/my_plugin/MyNode.cs"), GD.Load<Texture2D>("res://addons/my_plugin/icons/my_node.svg") );
AddToolMenuItem("My Plugin Action", new Callable(this, MethodName.OnToolMenuAction)); }
public override void _ExitTree() { RemoveCustomType("MyNode"); RemoveToolMenuItem("My Plugin Action"); }
private void OnToolMenuAction() { GD.Print("My Plugin Action triggered"); } } #endif ```
**add_custom_type parameters:**
| Parameter | Description | |---|---| | `name` | The name shown in the Add Node dialog | | `base` | String name of the Godot base class | | `script` | The GDScript / C# script resource | | `icon` | A `Texture2D`, typically a 16×16 SVG |
**add_tool_menu_item** adds an entry under **Project** in the top menu bar. Pass a `Callable` that takes no arguments.
### Unsaved-State & Script Editor Control (Godot 4.7+)
Godot 4.7 adds file-management APIs useful for build/export tooling — check for unsaved work before running an action, or refresh scripts changed by an external tool.
```gdscript func _run_pre_build_check() -> void: var unsaved_scenes := EditorInterface.get_unsaved_scenes() # PackedStringArray of scene paths var script_editor := EditorInterface.get_script_editor() var unsaved_files := script_editor.get_unsaved_files() # PackedStringArray of script paths if not unsaved_scenes.is_empty() or not unsaved_files.is_empty(): push_warning("Unsaved work detected — save before building.")
script_editor.save_all_scripts() # saves every open script script_editor.reload_open_files() # re-read files changed outside the editor # Closes the tab, discarding unsaved changes; OK or ERR_FILE_NOT_FOUND. var err := script_editor.close_file("res://addons/my_plugin/generated.gd") ```
```csharp #if TOOLS private void RunPreBuildCheck() { string[] unsavedScenes = EditorInterface.Singleton.GetUnsavedScenes(); var scriptEditor = EditorInterface.Singleton.GetScriptEditor(); string[] unsavedFiles = scriptEditor.GetUnsavedFiles(); if (unsavedScenes.Length > 0 || unsavedFiles.Length > 0) GD.PushWarning("Unsaved work detected — save before building.");
scriptEditor.SaveAllScripts(); scriptEditor.ReloadOpenFiles(); Error err = scriptEditor.CloseFile("res://addons/my_plugin/Generated.cs"); } #endif ```
---
## 4. Custom Inspector Plugin
When you want a custom widget for an exported property of a specific type, register an `EditorInspectorPlugin` from your main `EditorPlugin`. The inspector plugin overrides `_can_handle` to opt in and `_parse_property` (or `_parse_begin`) to inject custom widgets. Pair with an `EditorProperty` subclass for the actual UI.
> See [references/inspector-plugins.md](references/inspector-plugins.md) for the full GDScript and C# scaffold (custom inspector + EditorProperty + registration boilerplate).
> **Godot 4.7+:** the static `EditorInspector.create_default_inspector(filter_line_edit: LineEdit = null)` returns an inspector with the same configuration as the editor's Inspector dock, ready to embed in plugin UIs — pass a `LineEdit` for live property filtering (see [references/inspector-plugins.md](references/inspector-plugins.md)). `EditorContextMenuPlugin` also gains `CONTEXT_SLOT_INSPECTOR_PROPERTY` in `ContextMenuSlot`, so context-menu plugins can extend the inspector property right-click menu: `_popup_menu()` receives `[object ID, property name]` and the option callback receives the `EditorProperty` directly.
---
## 5. Custom Dock Panel
Add a custom dock to the editor by calling `add_control_to_dock(slot, control)` from your `EditorPlugin._enter_tree`. Free the control on `_exit_tree`. Useful for project-wide tooling UIs (level browser, asset summary, build dashboard).
> See [references/dock-panels.md](references/dock-panels.md) for the full GDScript and C# dock scaffold.
---
## 6. Custom Resource Editors
`EditorResourcePicker` lets you constrain a property to a specific Resource subclass with a tooltip and base-type filter. `EditorResourcePreviewGenerator` provides custom thumbnails for resources in the FileSystem dock and Inspector.
> See [references/inspector-plugins.md](references/inspector-plugins.md) for the full GDScript and C# `EditorResourcePicker` and `EditorResourcePreviewGenerator` scaffolds.
---
## 7. Gizmos
`EditorNode3DGizmoPlugin` adds visual handles for 3D nodes in the editor — wireframe shapes, draggable handles, rotation rings. Implement `_init` (materials), `_get_gizmo_name`, `_has_gizmo`, `_redraw` (draw lines/handles), and `_get_handle_value` / `_set_handle` / `_commit_handle` for interactive editing.
> See [references/gizmos-deep-dive.md](references/gizmos-deep-dive.md) for the full GDScript and C# gizmo plugin (with undo/redo wiring for handle commits).
> **Godot 4.7+:** override `_can_commit_handle_on_click() -> bool` (returns `false` if not overridden) to commit a handle action even when the final handle position is the same as the initial one — i.e. on a plain click.
---
## 8. Testing Plugins
Toggle the plugin off and on in **Project Settings → Plugins** to reload it; saving a `@tool` script hot-reloads automatically, but new class registrations and dock changes need the full cycle. `print()` / `push_warning()` / `push_error()` go to the Output panel. **C# plugins must recompile first** — `Could not find type "Plugin"` means the assembly failed to build, so check the MSBuild panel before anything else.
Reload recipes (GDScript + C# `PluginReloader`), console launch flags, and the lifecycle-gotcha table (orphaned docks, stale custom types, double-registered inspector plugins): [references/testing-plugins.md](references/testing-plugins.md)
---
## 9. plugin.cfg Format
`plugin.cfg` is a plain INI file placed at the root of the plugin folder. All fields in the `[plugin]` section are required except `dependencies` and `installs`.
```ini [plugin]
name="My Plugin" description="Adds MyNode, a custom inspector, and a dock panel to the editor." author="Your Name" version="1.0.0" script="plugin.gd" ```
**Field reference:**
| Key | Type | Description | |---|---|---| | `name` | String | Display name shown in Project Settings → Plugins | | `description` | String | Short summary shown in the Plugins panel | | `author` | String | Author name or organisation | | `version` | String | Semantic version string (e.g. `"1.2.0"`) | | `script` | String | Path to the main `EditorPlugin` script, **relative to the plugin folder** |
**Complete example with all optional fields:**
```ini [plugin]
name="My Plugin" description="Adds MyNode, a custom inspector, and a dock panel to the editor." author="Your Name" version="1.0.0" script="plugin.gd" ```
> There are no other standard keys in Godot 4.x `plugin.cfg`. Dependency management is handled externally (e.g., by the Asset Library or manual installation instructions).
---
## 10. Checklist
- [ ] `addons/<plugin_name>/plugin.cfg` exists with `name`, `description`, `author`, `version`, `script` - [ ] Main script extends `EditorPlugin` and is decorated with `@tool` (GDScript) or `[Tool]` insid
Source provenance
Decision snapshot
674 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for addon-development, ready for a manual X post.
A practical pick for source-backed research: addon-development: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels 674 stars https://www.openagentskill.com/skills/jame581-addon-development?ref=x
Listing + install path for addon-development: https://www.openagentskill.com/skills/jame581-addon-development?ref=x Install: npx skills add jame581/GodotPrompter --skill addon-development
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to jame581 but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jame581-addon-development/audit)
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)jame581
@jame581
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Sandbox only
mono-color
Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo. Always use this skill when the user asks for 单色海报、双色印刷、单色调视觉、蓝色/绿色孔版印刷、risograph、网点照片、复古或当代编辑排版、zine poster, monochrome editorial poster, duotone print, or asks to use the mono-color style. It uses an adaptive white, gray, or pale-beige substrate, no more than two printing inks, active negative space, terse human language, and strong serif/grotesk/mono typography without making retro styling the default or copying a source composition, wording, logo, or artwork. Produce both the final generation prompt and the generated raster image unless the user explicitly asks for prompt only.
1.9K StarsLast30days Skill
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
61.0K StarsAcademic Research Skills
Academic Research Skills for Claude Code: research → write → review → revise → finalize
38.4K Starsgrill-me
A relentless interview to sharpen a plan or design.
256.3K StarsInstall targets
Codex install prompt
Install the "addon-development" agent skill from https://github.com/jame581/GodotPrompter/tree/master/skills/addon-development. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"jame581-addon-development","task":"Install addon-development","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add jame581/GodotPrompter --skill addon-development
Maintenance
fresh
26d since push
Risk
Needs review
Financial research output is not financial advice; require human review before any live investment decision
GitHub quality
674
75/100 Quality · 82/100 Trust
Coverage tags
Review notes
Financial research output is not financial advice; require human review before any live investment decision · Financial research output is not financial advice; require human review before any live investment decision.
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
StrongSolid option that is likely worth shortlisting for production workflows.
Trust
Sandbox onlyUseful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Run only in a sandbox and compare close alternatives before using it for real work.
Stars
674 GitHub stars
Repo activity
674 stars, 31 forks
Maintenance
26d since push
License
MIT
Install
npx skills add jame581/GodotPrompter --skill addon-development
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add jame581/GodotPrompter --skill addon-developmentDo not use when
Alternative
1.9K Stars
npx skills add yanliudesign/mono-color-skill --skill mono-color
Alternative
61.0K Stars
npx skills add mvanhorn/last30days-skill -g
Alternative
38.4K Stars
npx skills add Imbad0202/academic-research-skills
Alternative
256.3K Stars
npx skills add mattpocock/skills --skill grill-me
Agent safety v2
Usable candidate, but the agent should surface permission and audit notes before installation.
Require human approval before installing into a real workspace.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/jame581-addon-development/install
Agent should check
Copy prompt
Task: Use addon-development in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/jame581-addon-development/install
Install command: npx skills add jame581/GodotPrompter --skill addon-development
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/jame581-addon-development/install
LLM text format
/api/skills/jame581-addon-development/install?format=text
Find alternatives
/api/skills/search?q=addon-development&limit=3
Agent prompt
Use addon-development for this task. Review https://www.openagentskill.com/api/skills/jame581-addon-development/install, then install with: npx skills add jame581/GodotPrompter --skill addon-developmentRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/jame581-addon-development
LLM text
/api/registry/manifest/jame581-addon-development?format=text
Install alias
/api/registry/install/jame581-addon-development
Recommend
/api/registry/recommend?task=Use%20addon-development%20in%20an%20agent%20workflow&limit=3
Agent fit
Browser automation
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Browser automation
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
GitHub adoption
INFO674 GitHub stars
Stars/forks activity
INFO674 stars, 31 forks; issue activity unavailable in current metadata
Recent maintenance
PASS26d since push
License clarity
PASSMIT
Good signals
Review before install
Recommended action
Run only in a sandbox and compare close alternatives before using it for real work.
Quality profile
Solid option that is likely worth shortlisting for production workflows.
Workflow fit
Operate web apps
I need my agent to control a browser, fill forms, and verify web app workflows.
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Verify behavior
I need my agent to test a web app, reproduce bugs, and verify fixes.
Workflow fit
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Inspect, patch, and verify code
A workflow for software agents that inspect repositories, review pull requests, generate tests, and turn findings into shippable patches.
Alternative shortlist
Similar skills that may fit this task.
Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo. Always use this skill when the user asks for 单色海报、双色印刷、单色调视觉、蓝色/绿色孔版印刷、risograph、网点照片、复古或当代编辑排版、zine poster, monochrome editorial poster, duotone print, or asks to use the mono-color style. It uses an adaptive white, gray, or pale-beige substrate, no more than two printing inks, active negative space, terse human language, and strong serif/grotesk/mono typography without making retro styling the default or copying a source composition, wording, logo, or artwork. Produce both the final generation prompt and the generated raster image unless the user explicitly asks for prompt only.
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
Academic Research Skills for Claude Code: research → write → review → revise → finalize
A relentless interview to sharpen a plan or design.
--- name: addon-development description: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels ---
# Addon Development in Godot 4.3+
Editor plugins extend the Godot editor itself: custom node types, inspector panels, dock widgets, 3D gizmos, and toolbar buttons. All examples target Godot 4.3+ with no deprecated APIs.
> **Related skills:** **resource-pattern** for custom Resource editors, **godot-ui** for editor panel UI, **csharp-godot** for C# plugin development.
---
## 1. Plugin Structure
Every plugin lives inside `addons/` at the project root. Godot discovers plugins by scanning for `plugin.cfg` files.
``` res:// └── addons/ └── my_plugin/ ├── plugin.cfg # required — plugin metadata ├── plugin.gd # main EditorPlugin script (named in plugin.cfg) ├── my_inspector.gd # optional — EditorInspectorPlugin ├── my_dock.tscn # optional — dock panel scene └── icons/ └── my_node.svg # optional — custom node icons ```
`plugin.cfg` is a plain INI file. Godot reads it when scanning `addons/`. The `script` key must point to the main plugin script relative to the plugin folder.
Enable the plugin: **Project → Project Settings → Plugins** → tick the checkbox next to your plugin name.
---
## 2. @tool Annotation
`@tool` makes a GDScript (or its C# equivalent) run inside the editor process as well as at runtime. Without it, the script only runs when the game is playing.
### GDScript
```gdscript @tool extends Sprite2D
# Engine.is_editor_hint() is true when running inside the editor, # false during a running game. Use it to guard editor-only logic. func _process(delta: float) -> void: if Engine.is_editor_hint(): # This block runs in the editor viewport — safe to call editor APIs. update_configuration_warnings() else: # Normal game logic here. pass
# _get_configuration_warnings() returns an array of strings shown as # yellow warning icons on the node in the Scene panel. func _get_configuration_warnings() -> PackedStringArray: var warnings := PackedStringArray() if texture == null: warnings.append("Texture is not set. Assign a Texture2D in the Inspector.") return warnings ```
### C#
```csharp #if TOOLS using Godot;
[Tool] public partial class MyToolSprite : Sprite2D { public override void _Process(double delta) { if (Engine.IsEditorHint()) { // Editor-only logic — safe to call editor APIs here. UpdateConfigurationWarnings(); } else { // Normal game logic. } }
public override string[] _GetConfigurationWarnings() { if (Texture == null) return new[] { "Texture is not set. Assign a Texture2D in the Inspector." }; return System.Array.Empty<string>(); } } #endif ```
> Wrap C# tool scripts in `#if TOOLS` / `#endif` to prevent the class from being included in exported builds. GDScript `@tool` scripts are excluded from exports automatically.
**Key rules:** - Add `@tool` / `[Tool]` at the top of every script that needs editor access. - Always guard runtime-only code with `Engine.is_editor_hint()` to avoid crashing the editor when processing begins before the scene is fully loaded. - Call `update_configuration_warnings()` whenever a property changes that might affect the warning state.
---
## 3. EditorPlugin Base
The main plugin script extends `EditorPlugin`. Godot calls `_enter_tree()` when the plugin is enabled and `_exit_tree()` when it is disabled or the project is closed. **Everything added in `_enter_tree()` must be removed in `_exit_tree()`.**
### GDScript
```gdscript # plugin.gd @tool extends EditorPlugin
func _enter_tree() -> void: # Register a custom node type. The editor shows MyNode in the # "Add Node" dialog under the chosen base class, with a custom icon. add_custom_type( "MyNode", # name shown in editor "Node2D", # base class to extend preload("res://addons/my_plugin/my_node.gd"), preload("res://addons/my_plugin/icons/my_node.svg") )
# Add a menu item to the Project menu (top toolbar). add_tool_menu_item("My Plugin Action", _on_tool_menu_item)
func _exit_tree() -> void: remove_custom_type("MyNode") remove_tool_menu_item("My Plugin Action")
func _on_tool_menu_item() -> void: print("My Plugin Action triggered") ```
### C#
```csharp // Plugin.cs #if TOOLS using Godot;
[Tool] public partial class MyPlugin : EditorPlugin { public override void _EnterTree() { AddCustomType( "MyNode", "Node2D", GD.Load<Script>("res://addons/my_plugin/MyNode.cs"), GD.Load<Texture2D>("res://addons/my_plugin/icons/my_node.svg") );
AddToolMenuItem("My Plugin Action", new Callable(this, MethodName.OnToolMenuAction)); }
public override void _ExitTree() { RemoveCustomType("MyNode"); RemoveToolMenuItem("My Plugin Action"); }
private void OnToolMenuAction() { GD.Print("My Plugin Action triggered"); } } #endif ```
**add_custom_type parameters:**
| Parameter | Description | |---|---| | `name` | The name shown in the Add Node dialog | | `base` | String name of the Godot base class | | `script` | The GDScript / C# script resource | | `icon` | A `Texture2D`, typically a 16×16 SVG |
**add_tool_menu_item** adds an entry under **Project** in the top menu bar. Pass a `Callable` that takes no arguments.
### Unsaved-State & Script Editor Control (Godot 4.7+)
Godot 4.7 adds file-management APIs useful for build/export tooling — check for unsaved work before running an action, or refresh scripts changed by an external tool.
```gdscript func _run_pre_build_check() -> void: var unsaved_scenes := EditorInterface.get_unsaved_scenes() # PackedStringArray of scene paths var script_editor := EditorInterface.get_script_editor() var unsaved_files := script_editor.get_unsaved_files() # PackedStringArray of script paths if not unsaved_scenes.is_empty() or not unsaved_files.is_empty(): push_warning("Unsaved work detected — save before building.")
script_editor.save_all_scripts() # saves every open script script_editor.reload_open_files() # re-read files changed outside the editor # Closes the tab, discarding unsaved changes; OK or ERR_FILE_NOT_FOUND. var err := script_editor.close_file("res://addons/my_plugin/generated.gd") ```
```csharp #if TOOLS private void RunPreBuildCheck() { string[] unsavedScenes = EditorInterface.Singleton.GetUnsavedScenes(); var scriptEditor = EditorInterface.Singleton.GetScriptEditor(); string[] unsavedFiles = scriptEditor.GetUnsavedFiles(); if (unsavedScenes.Length > 0 || unsavedFiles.Length > 0) GD.PushWarning("Unsaved work detected — save before building.");
scriptEditor.SaveAllScripts(); scriptEditor.ReloadOpenFiles(); Error err = scriptEditor.CloseFile("res://addons/my_plugin/Generated.cs"); } #endif ```
---
## 4. Custom Inspector Plugin
When you want a custom widget for an exported property of a specific type, register an `EditorInspectorPlugin` from your main `EditorPlugin`. The inspector plugin overrides `_can_handle` to opt in and `_parse_property` (or `_parse_begin`) to inject custom widgets. Pair with an `EditorProperty` subclass for the actual UI.
> See [references/inspector-plugins.md](references/inspector-plugins.md) for the full GDScript and C# scaffold (custom inspector + EditorProperty + registration boilerplate).
> **Godot 4.7+:** the static `EditorInspector.create_default_inspector(filter_line_edit: LineEdit = null)` returns an inspector with the same configuration as the editor's Inspector dock, ready to embed in plugin UIs — pass a `LineEdit` for live property filtering (see [references/inspector-plugins.md](references/inspector-plugins.md)). `EditorContextMenuPlugin` also gains `CONTEXT_SLOT_INSPECTOR_PROPERTY` in `ContextMenuSlot`, so context-menu plugins can extend the inspector property right-click menu: `_popup_menu()` receives `[object ID, property name]` and the option callback receives the `EditorProperty` directly.
---
## 5. Custom Dock Panel
Add a custom dock to the editor by calling `add_control_to_dock(slot, control)` from your `EditorPlugin._enter_tree`. Free the control on `_exit_tree`. Useful for project-wide tooling UIs (level browser, asset summary, build dashboard).
> See [references/dock-panels.md](references/dock-panels.md) for the full GDScript and C# dock scaffold.
---
## 6. Custom Resource Editors
`EditorResourcePicker` lets you constrain a property to a specific Resource subclass with a tooltip and base-type filter. `EditorResourcePreviewGenerator` provides custom thumbnails for resources in the FileSystem dock and Inspector.
> See [references/inspector-plugins.md](references/inspector-plugins.md) for the full GDScript and C# `EditorResourcePicker` and `EditorResourcePreviewGenerator` scaffolds.
---
## 7. Gizmos
`EditorNode3DGizmoPlugin` adds visual handles for 3D nodes in the editor — wireframe shapes, draggable handles, rotation rings. Implement `_init` (materials), `_get_gizmo_name`, `_has_gizmo`, `_redraw` (draw lines/handles), and `_get_handle_value` / `_set_handle` / `_commit_handle` for interactive editing.
> See [references/gizmos-deep-dive.md](references/gizmos-deep-dive.md) for the full GDScript and C# gizmo plugin (with undo/redo wiring for handle commits).
> **Godot 4.7+:** override `_can_commit_handle_on_click() -> bool` (returns `false` if not overridden) to commit a handle action even when the final handle position is the same as the initial one — i.e. on a plain click.
---
## 8. Testing Plugins
Toggle the plugin off and on in **Project Settings → Plugins** to reload it; saving a `@tool` script hot-reloads automatically, but new class registrations and dock changes need the full cycle. `print()` / `push_warning()` / `push_error()` go to the Output panel. **C# plugins must recompile first** — `Could not find type "Plugin"` means the assembly failed to build, so check the MSBuild panel before anything else.
Reload recipes (GDScript + C# `PluginReloader`), console launch flags, and the lifecycle-gotcha table (orphaned docks, stale custom types, double-registered inspector plugins): [references/testing-plugins.md](references/testing-plugins.md)
---
## 9. plugin.cfg Format
`plugin.cfg` is a plain INI file placed at the root of the plugin folder. All fields in the `[plugin]` section are required except `dependencies` and `installs`.
```ini [plugin]
name="My Plugin" description="Adds MyNode, a custom inspector, and a dock panel to the editor." author="Your Name" version="1.0.0" script="plugin.gd" ```
**Field reference:**
| Key | Type | Description | |---|---|---| | `name` | String | Display name shown in Project Settings → Plugins | | `description` | String | Short summary shown in the Plugins panel | | `author` | String | Author name or organisation | | `version` | String | Semantic version string (e.g. `"1.2.0"`) | | `script` | String | Path to the main `EditorPlugin` script, **relative to the plugin folder** |
**Complete example with all optional fields:**
```ini [plugin]
name="My Plugin" description="Adds MyNode, a custom inspector, and a dock panel to the editor." author="Your Name" version="1.0.0" script="plugin.gd" ```
> There are no other standard keys in Godot 4.x `plugin.cfg`. Dependency management is handled externally (e.g., by the Asset Library or manual installation instructions).
---
## 10. Checklist
- [ ] `addons/<plugin_name>/plugin.cfg` exists with `name`, `description`, `author`, `version`, `script` - [ ] Main script extends `EditorPlugin` and is decorated with `@tool` (GDScript) or `[Tool]` insid
Source provenance
Decision snapshot
674 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for addon-development, ready for a manual X post.
A practical pick for source-backed research: addon-development: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels 674 stars https://www.openagentskill.com/skills/jame581-addon-development?ref=x
Listing + install path for addon-development: https://www.openagentskill.com/skills/jame581-addon-development?ref=x Install: npx skills add jame581/GodotPrompter --skill addon-development
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to jame581 but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jame581-addon-development/audit)
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)jame581
@jame581
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Sandbox only
mono-color
Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo. Always use this skill when the user asks for 单色海报、双色印刷、单色调视觉、蓝色/绿色孔版印刷、risograph、网点照片、复古或当代编辑排版、zine poster, monochrome editorial poster, duotone print, or asks to use the mono-color style. It uses an adaptive white, gray, or pale-beige substrate, no more than two printing inks, active negative space, terse human language, and strong serif/grotesk/mono typography without making retro styling the default or copying a source composition, wording, logo, or artwork. Produce both the final generation prompt and the generated raster image unless the user explicitly asks for prompt only.
1.9K StarsLast30days Skill
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
61.0K StarsAcademic Research Skills
Academic Research Skills for Claude Code: research → write → review → revise → finalize
38.4K Starsgrill-me
A relentless interview to sharpen a plan or design.
256.3K StarsInstall targets
Codex install prompt
Install the "addon-development" agent skill from https://github.com/jame581/GodotPrompter/tree/master/skills/addon-development. Read its SKILL.md or equivalent instructions first, install only the files needed for this workspace, and summarize any required setup before using it. Skill purpose: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels After the install attempt, report the result to https://www.openagentskill.com/api/agent/outcome with POST JSON {"event_id":"install_<unique-id>","skill_slug":"jame581-addon-development","task":"Install addon-development","agent":"codex","outcome":"success","install_used":true}. Replace event_id with a unique value and outcome with success or failed. Report success only after the skill is installed and a minimal verification passes.Supply asset profile
Deep research, source comparison, literature review, RAG, knowledge search, and reports.
Scenario
Research agents
I need my agent to research a topic, compare sources, and produce a concise report.
Agent fit
Claude Code + Browser agents + CLI
Codex, Claude Code, Cursor, CLI, or custom agents.
Install
Ready
npx skills add jame581/GodotPrompter --skill addon-development
Maintenance
fresh
26d since push
Risk
Needs review
Financial research output is not financial advice; require human review before any live investment decision
GitHub quality
674
75/100 Quality · 82/100 Trust
Coverage tags
Review notes
Financial research output is not financial advice; require human review before any live investment decision · Financial research output is not financial advice; require human review before any live investment decision.
Agent adoption scorecard
These scores combine public repository metadata, OpenAgentSkill review signals, maintenance freshness, and install readiness. They are a shortlist signal, not a replacement for human review.
Quality
StrongSolid option that is likely worth shortlisting for production workflows.
Trust
Sandbox onlyUseful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
Audit
Needs reviewA machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
OpenAgentSkill Trust Score v5
Run only in a sandbox and compare close alternatives before using it for real work.
Stars
674 GitHub stars
Repo activity
674 stars, 31 forks
Maintenance
26d since push
License
MIT
Install
npx skills add jame581/GodotPrompter --skill addon-development
Install safety
Agent-readable metadata
Use this block or the embedded JSON to decide whether an agent should install this skill, choose an alternative, or ask for human review first.
Suited tasks
Suited agents
Install decision
Trust and risk
Outcome loop
Install command
npx skills add jame581/GodotPrompter --skill addon-developmentDo not use when
Alternative
1.9K Stars
npx skills add yanliudesign/mono-color-skill --skill mono-color
Alternative
61.0K Stars
npx skills add mvanhorn/last30days-skill -g
Alternative
38.4K Stars
npx skills add Imbad0202/academic-research-skills
Alternative
256.3K Stars
npx skills add mattpocock/skills --skill grill-me
Agent safety v2
Usable candidate, but the agent should surface permission and audit notes before installation.
Require human approval before installing into a real workspace.
medium
Skill may drive a browser or interact with web pages.
medium
Skill likely fetches remote pages, APIs, repositories, or external services.
medium
Skill may read or write project files, documents, generated artifacts, or local workspace state.
Agent resolve plan
The Resolve API returns the selected skill, alternatives, safety policy, audit notes, install target, and copy-paste prompt an agent can follow without scraping this page.
Open JSON
/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Resolve text
/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text
Install handoff
/api/skills/jame581-addon-development/install
Agent should check
Copy prompt
Task: Use addon-development in this workspace.
Resolve first: https://www.openagentskill.com/api/agent/resolve?task=Use%20addon-development%20for%20an%20agent%20workflow&agent=codex&max_risk=medium
Review install handoff: https://www.openagentskill.com/api/skills/jame581-addon-development/install
Install command: npx skills add jame581/GodotPrompter --skill addon-development
Before running it, summarize audit warnings, required permissions, and the fallback skill if install is risky.Agent handoff
Use the public install endpoint to fetch the command, safety checklist, target prompts, and canonical links for this skill.
Install handoff
/api/skills/jame581-addon-development/install
LLM text format
/api/skills/jame581-addon-development/install?format=text
Find alternatives
/api/skills/search?q=addon-development&limit=3
Agent prompt
Use addon-development for this task. Review https://www.openagentskill.com/api/skills/jame581-addon-development/install, then install with: npx skills add jame581/GodotPrompter --skill addon-developmentRegistry metadata
This page exposes the same decision, trust, audit, use-case, and install signals through the Registry API, so agents can rank this skill without scraping the UI.
Manifest
/api/registry/manifest/jame581-addon-development
LLM text
/api/registry/manifest/jame581-addon-development?format=text
Install alias
/api/registry/install/jame581-addon-development
Recommend
/api/registry/recommend?task=Use%20addon-development%20in%20an%20agent%20workflow&limit=3
Agent fit
Browser automation
Use-case tags
Platforms
Claude Code, Browser agents
Audit report
A machine-readable review of install readiness, security metadata, maintenance, and adoption risk.
Agent decision cockpit
Use this as a leading candidate, then validate the README and install path in your own agent stack.
Role in stack
Primary pick
Primary fit
Browser automation
Trust label
Production-ready
Install path
Command ready
Use when
Evidence
review first
Implementation path
Trust profile
Useful candidate with missing or mixed trust signals. Keep it in an isolated workspace until the outcome loop proves task fit.
GitHub adoption
INFO674 GitHub stars
Stars/forks activity
INFO674 stars, 31 forks; issue activity unavailable in current metadata
Recent maintenance
PASS26d since push
License clarity
PASSMIT
Good signals
Review before install
Recommended action
Run only in a sandbox and compare close alternatives before using it for real work.
Quality profile
Solid option that is likely worth shortlisting for production workflows.
Workflow fit
Operate web apps
I need my agent to control a browser, fill forms, and verify web app workflows.
Investigate faster
I need my agent to research a topic, compare sources, and produce a concise report.
Verify behavior
I need my agent to test a web app, reproduce bugs, and verify fixes.
Workflow fit
Operate and verify web apps
A workflow for agents that navigate products, fill forms, take screenshots, and verify real user flows across web applications.
Find, compare, and synthesize
A workflow for agents that gather sources, compare claims, summarize long material, and draft useful research briefs.
Inspect, patch, and verify code
A workflow for software agents that inspect repositories, review pull requests, generate tests, and turn findings into shippable patches.
Alternative shortlist
Similar skills that may fit this task.
Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo. Always use this skill when the user asks for 单色海报、双色印刷、单色调视觉、蓝色/绿色孔版印刷、risograph、网点照片、复古或当代编辑排版、zine poster, monochrome editorial poster, duotone print, or asks to use the mono-color style. It uses an adaptive white, gray, or pale-beige substrate, no more than two printing inks, active negative space, terse human language, and strong serif/grotesk/mono typography without making retro styling the default or copying a source composition, wording, logo, or artwork. Produce both the final generation prompt and the generated raster image unless the user explicitly asks for prompt only.
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
Academic Research Skills for Claude Code: research → write → review → revise → finalize
A relentless interview to sharpen a plan or design.
--- name: addon-development description: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels ---
# Addon Development in Godot 4.3+
Editor plugins extend the Godot editor itself: custom node types, inspector panels, dock widgets, 3D gizmos, and toolbar buttons. All examples target Godot 4.3+ with no deprecated APIs.
> **Related skills:** **resource-pattern** for custom Resource editors, **godot-ui** for editor panel UI, **csharp-godot** for C# plugin development.
---
## 1. Plugin Structure
Every plugin lives inside `addons/` at the project root. Godot discovers plugins by scanning for `plugin.cfg` files.
``` res:// └── addons/ └── my_plugin/ ├── plugin.cfg # required — plugin metadata ├── plugin.gd # main EditorPlugin script (named in plugin.cfg) ├── my_inspector.gd # optional — EditorInspectorPlugin ├── my_dock.tscn # optional — dock panel scene └── icons/ └── my_node.svg # optional — custom node icons ```
`plugin.cfg` is a plain INI file. Godot reads it when scanning `addons/`. The `script` key must point to the main plugin script relative to the plugin folder.
Enable the plugin: **Project → Project Settings → Plugins** → tick the checkbox next to your plugin name.
---
## 2. @tool Annotation
`@tool` makes a GDScript (or its C# equivalent) run inside the editor process as well as at runtime. Without it, the script only runs when the game is playing.
### GDScript
```gdscript @tool extends Sprite2D
# Engine.is_editor_hint() is true when running inside the editor, # false during a running game. Use it to guard editor-only logic. func _process(delta: float) -> void: if Engine.is_editor_hint(): # This block runs in the editor viewport — safe to call editor APIs. update_configuration_warnings() else: # Normal game logic here. pass
# _get_configuration_warnings() returns an array of strings shown as # yellow warning icons on the node in the Scene panel. func _get_configuration_warnings() -> PackedStringArray: var warnings := PackedStringArray() if texture == null: warnings.append("Texture is not set. Assign a Texture2D in the Inspector.") return warnings ```
### C#
```csharp #if TOOLS using Godot;
[Tool] public partial class MyToolSprite : Sprite2D { public override void _Process(double delta) { if (Engine.IsEditorHint()) { // Editor-only logic — safe to call editor APIs here. UpdateConfigurationWarnings(); } else { // Normal game logic. } }
public override string[] _GetConfigurationWarnings() { if (Texture == null) return new[] { "Texture is not set. Assign a Texture2D in the Inspector." }; return System.Array.Empty<string>(); } } #endif ```
> Wrap C# tool scripts in `#if TOOLS` / `#endif` to prevent the class from being included in exported builds. GDScript `@tool` scripts are excluded from exports automatically.
**Key rules:** - Add `@tool` / `[Tool]` at the top of every script that needs editor access. - Always guard runtime-only code with `Engine.is_editor_hint()` to avoid crashing the editor when processing begins before the scene is fully loaded. - Call `update_configuration_warnings()` whenever a property changes that might affect the warning state.
---
## 3. EditorPlugin Base
The main plugin script extends `EditorPlugin`. Godot calls `_enter_tree()` when the plugin is enabled and `_exit_tree()` when it is disabled or the project is closed. **Everything added in `_enter_tree()` must be removed in `_exit_tree()`.**
### GDScript
```gdscript # plugin.gd @tool extends EditorPlugin
func _enter_tree() -> void: # Register a custom node type. The editor shows MyNode in the # "Add Node" dialog under the chosen base class, with a custom icon. add_custom_type( "MyNode", # name shown in editor "Node2D", # base class to extend preload("res://addons/my_plugin/my_node.gd"), preload("res://addons/my_plugin/icons/my_node.svg") )
# Add a menu item to the Project menu (top toolbar). add_tool_menu_item("My Plugin Action", _on_tool_menu_item)
func _exit_tree() -> void: remove_custom_type("MyNode") remove_tool_menu_item("My Plugin Action")
func _on_tool_menu_item() -> void: print("My Plugin Action triggered") ```
### C#
```csharp // Plugin.cs #if TOOLS using Godot;
[Tool] public partial class MyPlugin : EditorPlugin { public override void _EnterTree() { AddCustomType( "MyNode", "Node2D", GD.Load<Script>("res://addons/my_plugin/MyNode.cs"), GD.Load<Texture2D>("res://addons/my_plugin/icons/my_node.svg") );
AddToolMenuItem("My Plugin Action", new Callable(this, MethodName.OnToolMenuAction)); }
public override void _ExitTree() { RemoveCustomType("MyNode"); RemoveToolMenuItem("My Plugin Action"); }
private void OnToolMenuAction() { GD.Print("My Plugin Action triggered"); } } #endif ```
**add_custom_type parameters:**
| Parameter | Description | |---|---| | `name` | The name shown in the Add Node dialog | | `base` | String name of the Godot base class | | `script` | The GDScript / C# script resource | | `icon` | A `Texture2D`, typically a 16×16 SVG |
**add_tool_menu_item** adds an entry under **Project** in the top menu bar. Pass a `Callable` that takes no arguments.
### Unsaved-State & Script Editor Control (Godot 4.7+)
Godot 4.7 adds file-management APIs useful for build/export tooling — check for unsaved work before running an action, or refresh scripts changed by an external tool.
```gdscript func _run_pre_build_check() -> void: var unsaved_scenes := EditorInterface.get_unsaved_scenes() # PackedStringArray of scene paths var script_editor := EditorInterface.get_script_editor() var unsaved_files := script_editor.get_unsaved_files() # PackedStringArray of script paths if not unsaved_scenes.is_empty() or not unsaved_files.is_empty(): push_warning("Unsaved work detected — save before building.")
script_editor.save_all_scripts() # saves every open script script_editor.reload_open_files() # re-read files changed outside the editor # Closes the tab, discarding unsaved changes; OK or ERR_FILE_NOT_FOUND. var err := script_editor.close_file("res://addons/my_plugin/generated.gd") ```
```csharp #if TOOLS private void RunPreBuildCheck() { string[] unsavedScenes = EditorInterface.Singleton.GetUnsavedScenes(); var scriptEditor = EditorInterface.Singleton.GetScriptEditor(); string[] unsavedFiles = scriptEditor.GetUnsavedFiles(); if (unsavedScenes.Length > 0 || unsavedFiles.Length > 0) GD.PushWarning("Unsaved work detected — save before building.");
scriptEditor.SaveAllScripts(); scriptEditor.ReloadOpenFiles(); Error err = scriptEditor.CloseFile("res://addons/my_plugin/Generated.cs"); } #endif ```
---
## 4. Custom Inspector Plugin
When you want a custom widget for an exported property of a specific type, register an `EditorInspectorPlugin` from your main `EditorPlugin`. The inspector plugin overrides `_can_handle` to opt in and `_parse_property` (or `_parse_begin`) to inject custom widgets. Pair with an `EditorProperty` subclass for the actual UI.
> See [references/inspector-plugins.md](references/inspector-plugins.md) for the full GDScript and C# scaffold (custom inspector + EditorProperty + registration boilerplate).
> **Godot 4.7+:** the static `EditorInspector.create_default_inspector(filter_line_edit: LineEdit = null)` returns an inspector with the same configuration as the editor's Inspector dock, ready to embed in plugin UIs — pass a `LineEdit` for live property filtering (see [references/inspector-plugins.md](references/inspector-plugins.md)). `EditorContextMenuPlugin` also gains `CONTEXT_SLOT_INSPECTOR_PROPERTY` in `ContextMenuSlot`, so context-menu plugins can extend the inspector property right-click menu: `_popup_menu()` receives `[object ID, property name]` and the option callback receives the `EditorProperty` directly.
---
## 5. Custom Dock Panel
Add a custom dock to the editor by calling `add_control_to_dock(slot, control)` from your `EditorPlugin._enter_tree`. Free the control on `_exit_tree`. Useful for project-wide tooling UIs (level browser, asset summary, build dashboard).
> See [references/dock-panels.md](references/dock-panels.md) for the full GDScript and C# dock scaffold.
---
## 6. Custom Resource Editors
`EditorResourcePicker` lets you constrain a property to a specific Resource subclass with a tooltip and base-type filter. `EditorResourcePreviewGenerator` provides custom thumbnails for resources in the FileSystem dock and Inspector.
> See [references/inspector-plugins.md](references/inspector-plugins.md) for the full GDScript and C# `EditorResourcePicker` and `EditorResourcePreviewGenerator` scaffolds.
---
## 7. Gizmos
`EditorNode3DGizmoPlugin` adds visual handles for 3D nodes in the editor — wireframe shapes, draggable handles, rotation rings. Implement `_init` (materials), `_get_gizmo_name`, `_has_gizmo`, `_redraw` (draw lines/handles), and `_get_handle_value` / `_set_handle` / `_commit_handle` for interactive editing.
> See [references/gizmos-deep-dive.md](references/gizmos-deep-dive.md) for the full GDScript and C# gizmo plugin (with undo/redo wiring for handle commits).
> **Godot 4.7+:** override `_can_commit_handle_on_click() -> bool` (returns `false` if not overridden) to commit a handle action even when the final handle position is the same as the initial one — i.e. on a plain click.
---
## 8. Testing Plugins
Toggle the plugin off and on in **Project Settings → Plugins** to reload it; saving a `@tool` script hot-reloads automatically, but new class registrations and dock changes need the full cycle. `print()` / `push_warning()` / `push_error()` go to the Output panel. **C# plugins must recompile first** — `Could not find type "Plugin"` means the assembly failed to build, so check the MSBuild panel before anything else.
Reload recipes (GDScript + C# `PluginReloader`), console launch flags, and the lifecycle-gotcha table (orphaned docks, stale custom types, double-registered inspector plugins): [references/testing-plugins.md](references/testing-plugins.md)
---
## 9. plugin.cfg Format
`plugin.cfg` is a plain INI file placed at the root of the plugin folder. All fields in the `[plugin]` section are required except `dependencies` and `installs`.
```ini [plugin]
name="My Plugin" description="Adds MyNode, a custom inspector, and a dock panel to the editor." author="Your Name" version="1.0.0" script="plugin.gd" ```
**Field reference:**
| Key | Type | Description | |---|---|---| | `name` | String | Display name shown in Project Settings → Plugins | | `description` | String | Short summary shown in the Plugins panel | | `author` | String | Author name or organisation | | `version` | String | Semantic version string (e.g. `"1.2.0"`) | | `script` | String | Path to the main `EditorPlugin` script, **relative to the plugin folder** |
**Complete example with all optional fields:**
```ini [plugin]
name="My Plugin" description="Adds MyNode, a custom inspector, and a dock panel to the editor." author="Your Name" version="1.0.0" script="plugin.gd" ```
> There are no other standard keys in Godot 4.x `plugin.cfg`. Dependency management is handled externally (e.g., by the Asset Library or manual installation instructions).
---
## 10. Checklist
- [ ] `addons/<plugin_name>/plugin.cfg` exists with `name`, `description`, `author`, `version`, `script` - [ ] Main script extends `EditorPlugin` and is decorated with `@tool` (GDScript) or `[Tool]` insid
Source provenance
Decision snapshot
674 GitHub stars
Audit
Install and adoption review
Agent-proven evidence
Outcome reports after resolve, review, install, and one narrow run.
No agent outcome data yet. The first agent run can report success, setup needs, risk blocks, failure, or not-relevant through /api/agent/outcome.
Install
Free and open source. Review the report before installing into production agents.
Growth loop
Scenario-led draft for addon-development, ready for a manual X post.
A practical pick for source-backed research: addon-development: Use when creating Godot editor plugins — EditorPlugin, @tool scripts, custom inspectors, and dock panels 674 stars https://www.openagentskill.com/skills/jame581-addon-development?ref=x
Listing + install path for addon-development: https://www.openagentskill.com/skills/jame581-addon-development?ref=x Install: npx skills add jame581/GodotPrompter --skill addon-development
Listing source
This listing was indexed from public sources and is not marked official until a maintainer claim is approved.
Attribution links to the public repository or creator profile. Creators can claim the listing to update ownership signals.
Claim this skillOwner claim
This Registry indexed listing is attributed to jame581 but is not marked official yet. Claim it to add a verified owner signal and make future launch, install, and audit updates easier to trust.
Creator backlink kit
Show the canonical listing, current trust and audit signals, and real Agent-Proven evidence where developers evaluate the repository.
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[](https://www.openagentskill.com/skills/jame581-addon-development/audit)
[](https://www.openagentskill.com/skills/jame581-addon-development?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)jame581
@jame581
Share whether this skill looks useful for your agent workflow. Aggregated feedback improves rankings over time.
Sandbox only
mono-color
Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo. Always use this skill when the user asks for 单色海报、双色印刷、单色调视觉、蓝色/绿色孔版印刷、risograph、网点照片、复古或当代编辑排版、zine poster, monochrome editorial poster, duotone print, or asks to use the mono-color style. It uses an adaptive white, gray, or pale-beige substrate, no more than two printing inks, active negative space, terse human language, and strong serif/grotesk/mono typography without making retro styling the default or copying a source composition, wording, logo, or artwork. Produce both the final generation prompt and the generated raster image unless the user explicitly asks for prompt only.
1.9K StarsLast30days Skill
Research the last 30 days across Reddit, X, YouTube, Hacker News, Polymarket, GitHub, and the web, then synthesize a grounded brief for an AI agent.
61.0K StarsAcademic Research Skills
Academic Research Skills for Claude Code: research → write → review → revise → finalize
38.4K Starsgrill-me
A relentless interview to sharpen a plan or design.
256.3K StarsPermission surface
filesystem or document access, network or browser access
Agent outcomes
No agent outcome data yet
Docs
Strong README/SKILL.md context
Risk summary
Install readiness
Permission surface
filesystem or document access, network or browser access
Agent outcomes
No agent outcome data yet
Docs
Strong README/SKILL.md context
Risk summary
Install readiness
Permission surface
filesystem or document access, network or browser access
Agent outcomes
No agent outcome data yet
Docs
Strong README/SKILL.md context
Risk summary
Install readiness
Permission surface
filesystem or document access, network or browser access
Agent outcomes
No agent outcome data yet
Docs
Strong README/SKILL.md context
Risk summary
Install readiness