docs/extend/tutorials/external-plugin-development.md
::::{important} The {{kib}} plugin interfaces are in a state of constant development. We cannot provide backwards compatibility for plugins due to the high rate of change. {{kib}} enforces that the installed plugins match the version of {{kib}} itself. Plugin developers will have to release a new version of their plugin for each new {{kib}} release as a result.
::::
Most developers who contribute code directly to the {{kib}} repo are writing code inside plugins, so our Contributing docs are the best place to start. However, there are a few differences when developing plugins outside the {{kib}} repo. These differences are covered here.
If you are coming from the in-repo plugin docs, note the following:
plugins/ directory at the root of your {{kib}} checkout. This directory is gitignored — your plugin is not tracked alongside the {{kib}} sources.kibana.json manifest (a different schema than the in-repo kibana.jsonc). Use node scripts/generate_plugin to scaffold one with the correct format.yarn dev --watch from inside the plugin directory in a dedicated terminal while yarn start runs in another — see Plugin tooling.