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 viewapiVersion, 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: 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 .infrahub.yml under the menus: key (see rules/format-structure.md) - A YAML comment block advising to set include_in_menu: false on every schema node that appears in the custom menu, to prevent duplicate sidebar entries (see rules/schema-integration.md)
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