Skip to main content
Every Klyx extension requires a plugin.json file at the project root. This file declares who made the extension, what it does, and crucially — which class Klyx should load as the entry point.

File location

plugin.json must live at the root of your project (the same directory as build.gradle.kts). The Klyx Gradle plugin detects it automatically.

Full schema

plugin.json

Field reference

id (required)

Unique plugin identifier in reverse-domain notation.

name (optional, defaults to id)

Human-readable display name shown in Klyx’s plugin manager.

version (required)

Semantic version string. Klyx uses this to determine if an update is available.

minAppVersion (required)

The minimum version of Klyx required to run this extension. Version 4.2.0 introduced the plugin system.

maxAppVersion (optional)

If set, the extension won’t load on newer versions of Klyx. Use this for forward compatibility breaks.

entryClass (required)

The fully qualified class name of your KlyxPlugin implementation. Klyx loads this class reflectively, so it must not be obfuscated or removed during build.
If you use R8 or ProGuard, you must add a keep rule for your entry class:
The SamplePlugin ships with a keepRules/rules.keep file for reference.

description (optional)

A short description of what your extension does.

icon (optional)

Path to a PNG icon file relative to the project root. Displayed in the plugin manager.

author (optional)

Information about the extension author. All fields are optional except name.

license (optional)

SPDX license identifier or custom license name.
Links associated with the extension.

permissions (optional)

A list of permission strings your extension requires. Currently reserved for future use.

Validation rules

When publishing to the community registry, CI enforces these rules: See Building & Bundling > Publishing for the full publishing workflow.

Example from SamplePlugin

The SamplePlugin ships with this manifest:
Last modified on July 11, 2026