opsmill/infrahub-skills

infrahub-managing-menus

>- Creates Infrahub custom navigation menus for the web UI sidebar, organizing node types into logical groups. TRIGGER when: designing sidebar menus, grouping node types in UI, customizing Infrahub web interface navigation. DO NOT TRIGGER when: designing schemas, writing checks or transforms, populating data objects.

First seen Apr 8, 2026

Installation

$ npx skills add opsmill/infrahub-skills --skill infrahub-managing-menus

Also in this package

Other skills from opsmill/infrahub-skills · top by installs.

npx skills add opsmill/infrahub-skills

Browse all from opsmill/infrahub-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 25
License LICENSE
Default branch main
Open issues 26
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.2.8
Allowed toolsRead, Write, Edit, Bash
More metadata
version
1.2.8
author
OpsMill

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,873 B
  • docs SUMMARY.md 346 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 111 installs

SKILL.md

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.

Project Context

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

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- includeinmenu, kind links
LOW Patterns patterns- Flat menu, comments, links

Schema Features This Skill Depends On

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 includeinmenu: false on it to suppress the duplicate auto-menu entry [rules/schema-integration.md](./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](../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](../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](../infrahub-managing-schemas/rules/display-menu-placement.md)

Audit includeinmenu 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.

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:

  1. Gather requirements — Ask what schema nodes

exist, how they should be grouped, and whether the user wants flat or hierarchical navigation.

  1. 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.

  1. Generate the menu YAML — Start with the

$schema comment and apiVersion/kind/spec structure. Apply rules from step 2.

  1. Add registration and schema guidance — Every

menu file output must include: - 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 includeinmenu: 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.

Supporting References

  • [examples.md](./examples.md) -- Four worked

menu hierarchies (flat, grouped, generic-linked, full multi-domain) ready to copy and adapt

  • [infrahub-yml-reference.md](../infrahub-common/infrahub-yml-reference.md)

-- .infrahub.yml project configuration

  • [common/rules/](../infrahub-common/rules/)

-- Shared rules (git integration, caching gotchas) that apply across all skills

  • [../infrahub-common/rules/workflow-information-priority.md](../infrahub-common/rules/workflow-information-priority.md)

-- Skill content first; how to consult docs.infrahub.app on a genuine gap (e.g. deleting nodes)

  • [managing-schemas](../infrahub-managing-schemas/SKILL.md)

-- Schema node kinds that menus link to

  • [rules/](./rules/)

-- Individual rules organized by category prefix