| references/api-changelog.md | High-impact plugin API changes by Halo version, with docs routes | Before using version-sensitive APIs, upgrading Halo dependencies, or raising spec.requires |
| references/plugin-structure.md | Directory structure, backend/frontend layout, build.gradle basics | Creating a new plugin from scratch or understanding the directory layout |
| references/plugin-manifest.md | plugin.yaml fields, version requirements, dependencies, settings/configMap | Writing or editing plugin.yaml |
| references/plugin-interaction.md | pluginDependencies, API modules, shared events, defining and consuming plugin extension points | Depending on another plugin, exposing an API module, sharing events, or making a plugin extensible |
| references/devtools.md | haloServer, reload, watch, generateApiClient, generateRoleTasks, debug config | Running ./gradlew haloServer, hot reload, or debugging a plugin |
| references/server-extension.md | Custom Extension (GVK), AbstractExtension, CRUD APIs, indexes, field/label selectors | Defining a custom data model, storage, or query indexes |
| references/server-api.md | CustomEndpoint, @Controller with @ApiVersion, query params, validation, OpenAPI docs | Writing a new backend API endpoint or controller |
| references/server-lifecycle.md | BasePlugin lifecycle (start/stop/delete), Scheme registration/cleanup | Handling plugin start, stop, delete, or scheme registration |
| references/server-shared-beans.md | ReactiveExtensionClient, SchemeManager, UserService, AttachmentService, ExtensionGetter, etc. | Injecting or calling Halo core services from plugin Java code |
| references/server-security.md | Role templates, RBAC rules, verbs, aggregation, UI permissions | Adding RBAC roles, API permissions, or UI permission checks |
|