From infrahub
Creates custom navigation menus for the Infrahub web UI sidebar, organizing node types into logical groups with icons and labels.
How this skill is triggered — by the user, by Claude, or both
Slash command
/infrahub:infrahub-managing-menus [menu-structure-description][menu-structure-description]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Expert guidance for creating Infrahub custom menus.
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.
Existing menu files:
!find . -name "*.yml" -path "*/menus/*" 2>/dev/null | head -10
Schema files (to identify available node types):
!find . -name "*.yml" -path "*/schemas/*" -o -name "*schema*" -name "*.yml" 2>/dev/null | head -10
| 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 |
A custom menu doesn't replace the auto-menu — it augments it. Schemas need cooperating settings to avoid duplicates and stay UI-stable.
| If the menu item... | The schema must... | See |
|---|---|---|
Links to a schema node's list view via kind: | Define that node (or generic) so the URL resolves — and set include_in_menu: false on it to suppress the duplicate auto-menu entry | rules/schema-integration.md |
| Shows all subtypes under one entry via a generic kind | Have the generic defined, with all the relevant nodes inherit_from it | ../infrahub-managing-schemas/rules/hierarchy-setup.md |
| Should appear at a specific position when auto-menu is in play | Set order_weight on the schema node (auto-menu uses it; custom menu ignores it) | ../infrahub-managing-schemas/rules/display-order-weight.md |
| Groups subtypes under a parent node entry | Set menu_placement: <FullKind> on each subtype so the auto-menu side groups consistently with the custom menu | ../infrahub-managing-schemas/rules/display-menu-placement.md |
Audit include_in_menu on every node you reference
from the menu file — the sidebar duplicates that
this prevents look to users like the custom menu is
"broken", but the fix is on the schema side.
---
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.
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.md
for the required YAML structure, rules/item-properties.md
for item fields, and rules/hierarchy-nesting.md
if nesting is needed. Read rules/icons-reference.md
to pick appropriate MDI icons.
Generate the menu YAML — Start with the
$schema comment and apiVersion/kind/spec
structure. Apply rules from step 2.
Add registration and schema guidance — Every menu file output must include:
.infrahub.yml under the menus:
key (see rules/format-structure.md)include_in_menu: false on every schema node
that appears in the custom menu, to prevent
duplicate sidebar entries
(see rules/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.
npx claudepluginhub opsmill/claude-marketplace --plugin infrahubCreates, validates, and modifies Infrahub schema YAML files — nodes, generics, attributes, relationships, and extensions. Use when designing data models, validating schemas, or planning migrations.
Provides C# models and patterns for menu hierarchies, breadcrumbs, mega-menus, footer nav, mobile patterns, and headless CMS navigation APIs.
Implements custom menus and menu items in Umbraco backoffice using official docs. Generates TypeScript or JSON manifests for new or extended menus like Help or Content.