infrahub-menu-creator
Infrahub Menu Creator
Overview
Expert guidance for creating Infrahub custom menus. Menus control the left-side navigation in the web interface, organizing schema node types into a custom hierarchy.
When to Use
- Designing navigation menus for the Infrahub web UI
- Organizing node types into logical groups and hierarchies
- Adding icons and labels to menu items
- Setting up group headers (non-clickable) with nested children
- Configuring schema nodes to use custom menus instead of auto-generated ones
Rule Categories
| Priority | Category | Prefix | Description |
|---|---|---|---|
| CRITICAL | Format | format- |
apiVersion, kind, spec |
| CRITICAL | Properties | item- |
name, namespace, label, kind |
| HIGH | Hierarchy | hierarchy- |
Nesting, group headers, data |
| HIGH | Icons | icons- |
MDI icon reference, choices |
| MEDIUM | Schema | schema- |
include_in_menu, kind links |
| LOW | Patterns | patterns- |
Flat menu, comments, links |
Menu File Basics
---
apiVersion: infrahub.app/v1
kind: Menu
spec:
data:
- namespace: Dcim
name: DeviceMenu
label: "Devices"
icon: "mdi:server"
kind: DcimDevice # Links to schema node list view
apiVersion, kind: Menu, and spec.data are always
required. Each menu item needs name and namespace.
Workflow
Follow these steps when creating a menu:
-
Gather requirements — Ask what schema nodes exist, how they should be grouped, and whether the user wants flat or hierarchical navigation.
-
Read relevant rules — Read
rules/format-structure.mdfor the required YAML structure,rules/item-properties.mdfor item fields, andrules/hierarchy-nesting.mdif nesting is needed. Readrules/icons-reference.mdto pick appropriate MDI icons. -
Generate the menu YAML — Start with the
$schemacomment andapiVersion/kind/specstructure. Apply rules from step 2. -
Add registration and schema guidance — Every menu file output must include:
- A YAML comment block showing how to register
the file in
.infrahub.ymlunder themenus:key (seerules/format-structure.md) - A YAML comment block advising to set
include_in_menu: falseon every schema node that appears in the custom menu, to prevent duplicate sidebar entries (seerules/schema-integration.md)
Include these as comments at the top of the file, before the
---document separator. This ensures the user sees the guidance alongside the menu definition. - A YAML comment block showing how to register
the file in
Supporting References
- infrahub-yml-reference.md -- .infrahub.yml project configuration
- common/rules/ -- Shared rules (git integration, caching gotchas) that apply across all skills
- schema-creator -- Schema node kinds that menus link to
- rules/ -- Individual rules organized by category prefix