Consider an enabled plugin with the following script:

# res://addons/coloring/swatch_ref.gd
class_name SwatchRef
extends Resource
 
@export var swatch_key: String
@export var default_color: Color
@export var use_swatch: bool
 
func get_color() -> Color:
	if use_swatch:
		# TODO: Lookup the color using the swatch key
		return default_color
	else:
		return default_color

And in the root of the godot project with that plugin:

# res://test.gd
@tool
extends Node3D
 
@export var swatch_ref: SwatchRef = SwatchRef.new()
 
func _process(_delta) -> void:
	print(swatch_ref.default_color) # Works
	print(swatch_ref.get_color()) # Doesn't work

You will always get the error res://test.gd:8 - Invalid call. Nonexistent function 'get_color' in base 'Resource (SwatchRef)'. while in the Editor (it will work in play mode).

This is because SwatchRef does not have the @tool annotation, meaning that it won’t have code that can be run in the editor and the methods won’t be added to the class.

See: