Builds or extends Kirby plugins using hooks, extensions, blocks, KirbyTags, and shared templates/controllers. Use when creating reusable features or integrating Panel customizations.
日本語に翻訳
name: kirby-plugin-development
description: Builds or extends Kirby plugins using hooks, extensions, blocks, KirbyTags, and shared templates/controllers. Use when creating reusable features or integrating Panel customizations.
Kirby Plugin Development
KB entry points
kirby://kb/scenarios/04-share-templates-controllers-via-plugin
kirby://kb/scenarios/05-kirbytext-kirbytags-hooks
kirby://kb/scenarios/15-custom-blocks-nested-blocks
kirby://kb/scenarios/17-extend-kirbytags
kirby://kb/scenarios/59-monolithic-plugin-setup
kirby://kb/scenarios/60-plugin-workflow-local-testing
Required inputs
Plugin id (vendor/name) and scope.
Extension points (hooks/fields/tags/blocks/sections).
Distribution plan (project-only or composer package).
Minimal plugin skeleton
Kirby::plugin('vendor/name', [
'hooks' => [],
'blueprints' => [],
'snippets' => [],
]);
Local testing
Use the local workflow guide to test without publishing.
Render affected pages and verify plugin registration.
Common pitfalls
Using inconsistent plugin ids or folder names.
Registering hooks that assume Panel or API is always enabled.
Workflow
Define the plugin id (vendor/name), feature scope, and whether it must be reusable across projects.
Call kirby:kirby_init and read kirby://roots to locate plugin roots.
Inspect existing plugins to avoid duplication: kirby:kirby_plugins_index.
Use extension and hook references:
kirby://extensions and kirby://extension/{name}
kirby://hooks and kirby://hook/{name}
Search the KB with kirby:kirby_search (examples: "kirbytext hooks", "extend kirbytags", "custom blocks", "share templates via plugin", "monolithic plugin setup").
Implement the plugin with a minimal index.php registration, then add blueprints/snippets/assets as needed.
Verify by rendering affected pages with kirby:kirby_render_page and confirming the plugin loads without errors.