• Sign In



  • Categories

    Extension Details



    Readme

    Kirby Completions for Nova

    Static PHP completions generated from the current Kirby CMS reference in Nova's XML completions format.

    What's included

    • Kirby template helpers such as page(), snippet(), and kirby()
    • Kirby's bundled icon names after an icon: key in YAML blueprints
    • Contextual methods for documented variables such as $page->, $site->, $file->, and $field->
    • Static methods such as Str::, Html::, F::, and A::
    • Documented Kirby class names after new
    • Support for Nova's built-in php and php_only syntaxes
    • Support for plain and quoted icon values in Nova's built-in yaml syntax

    Requirements

    Install the YAML extension for Nova first. Kirby CMS configures that extension for Kirby projects and does not replace it.

    Setup

    Open a Kirby project and choose Extensions → Kirby CMS → Configure Blueprint Support.

    The command:

    1. Detects the installed Kirby version from kirby/composer.json. If that file is unavailable, it falls back to the root composer.lock, then the root composer.json requirement.
    2. Prompts for a version if detection is not possible.
    3. Copies the bundled schema to .nova/kirby-blueprints/.
    4. Merges a mapping into .nova/Configuration.json for both .yml and .yaml blueprints.

    Other yaml.schemas mappings are preserved. The project-local schema path means the checked-in Nova configuration works without network access.

    Use the extension's Project Settings to override the Kirby version or the default site/blueprints directory, then run the configure command again.

    PHP Template Type Hints

    When editing a PHP-only template or snippet, choose Editor → Insert Kirby Template Type Hints. The command adds PHPDoc types for $kirby, $site, $page, and $pages so PHP language tooling such as Intelephense can understand Kirby's injected template variables.

    Existing variable annotations are preserved and only missing hints are added. If the file starts with <?php, the annotations are placed in that PHP block. Otherwise, the command prepends a PHP block without adding rendered whitespace before the existing template output.

    Development Details

    Use in a Nova extension

    To test locally, enable extension development in Nova and run:

    nova extension validate /path/to/Kirby.novaextension
    nova extension activate /path/to/Kirby.novaextension
    

    Update from the Kirby reference

    Generator uses Python's standard library:

    python3 Tools/generate_completions.py
    

    For offline generation, save source pages and pass them to the script:

    python3 Tools/generate_completions.py \
      --reference-input reference.html \
      --objects-input objects.html
    

    The generated XML is intentionally contextual. Methods are offered only after the variable or static class prefix documented by Kirby, which avoids mixing more than a thousand unrelated methods into every PHP completion request.

    Release Notes

    Version 1.2.0

    Adds a new Editor command to insert a set of type hints for php completions for $kirby, $page, $pages, and $site to assist Intelephense type hints in templates and snippets.

    Version 1.1.3

    • Match blueprints stored directly in site/blueprints, preventing generic SchemaStore associations such as Ansible from being selected for site.yml
    • Additional schema fixes

    Version 1.1.2

    Allow unknown plugin field and section types without weakening validation for Kirby core types

    Version 1.1.1

    Fix broken schema file names

    Version 1.1.0

    • Bundle Kirby 4 and 5 blueprint schemas from Bnomei
    • Detect installed Kirby major version from Composer metadata
    • Configure Kirby schemas for Nova

    Version 1.0

    Initial release, supports Kirby version 5.5.2

    License

    MIT License

    Copyright (c) 2026 Scott Boms

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.