Create Your First Plugin

Required folder structure, manifest fields, and the plugin entry point.

Every plugin lives in its own folder inside plugins/ at the project root.

Required structure

Roneat_Studio/
└── plugins/
    └── com.yourname.awesome_plugin/
        ├── plugin.json
        ├── __init__.py
        └── any_other_files.py

The manifest file

plugin.json defines the plugin identity, permissions, and lifecycle hooks.

{
  "id": "com.myname.test",
  "name": "My Amazing Plugin",
  "version": "1.0",
  "author": "John Doe",
  "description": "Injects random notes and changes the theme to neon.",
  "permissions": ["ui_modification", "score_editor"],
  "hooks": {
    "on_app_start": "start_my_plugin",
    "on_unload": "cleanup_my_plugin"
  }
}

The entry point

__init__.py is the file loaded automatically.

It must define the functions referenced by your hooks.

Build flow

1

Create the plugin folder

Use a stable identifier such as com.yourname.plugin_name.

2

Add plugin.json

Declare metadata, permissions, and lifecycle hooks.

3

Add __init__.py

Implement the functions named in the manifest.

4

Start with one visible action

A toast, a button, or a score insertion is enough for the first test.

Best practices

  • keep the plugin ID globally unique

  • request only the permissions you need

  • keep startup logic short

  • close streams, files, and workers on unload

Last updated

Was this helpful?