Plugin authoring guide exists
Why it matters
Without a plugin authoring guide, a developer who wants to extend the system must reverse-engineer existing plugins and read the host's internal source code. This creates a barrier that collapses the potential plugin ecosystem to however many developers are willing to invest that archaeology time — typically zero third-party developers. ISO 25010 maintainability.analysability scores fall when the system cannot be understood without execution; an authoring guide is the primary mechanism for making the plugin API understandable before writing code.
Severity rationale
High because the absence of an authoring guide makes third-party plugin development practically inaccessible, limiting the plugin ecosystem to developers willing to reverse-engineer host internals.
Remediation
Create a docs/plugins.md or docs/plugin-authoring-guide.md that covers the complete authoring workflow from manifest creation through testing. Include a working code example for each major step.
# Creating a Plugin
## 1. Create the manifest
Create a `plugin.json` file with `name`, `version`, and `engines.host-api`.
## 2. Implement the plugin
Export a class implementing the `Plugin` interface from `'host/plugin-api'`.
## 3. Register hooks
In your `activate()` method, call `context.hooks.on('before:request', handler)`.
## 4. Test your plugin
Use `createTestHost()` from `'host/testing'` to run your plugin in isolation.
## 5. Distribute
Publish to npm with the `my-app-plugin` keyword.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Plugin / Extension Architecture Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · maintainability.analysability — Analysability — an authoring guide reduces the cognitive effort required to understand and extend the plugin system
Taxons
History
- 2026-04-18·v1.0.0·Initial import from plugin-extension-architecture·automated