mcpField
I
infrahub-managing-menus

infrahub-managing-menus

github.com/opsmill设计与 UI27152 次安装1 天前更新
代码仓库

关于 infrahub-managing-menus

为 Infrahub 项目提供自定义菜单设计指导,面向需要组织 Web 界面侧边栏的开发者。涵盖菜单层级、图标及与 Schema 的配合,帮助避免重复条目并排查显示问题。

主要功能

  1. 01编写菜单 YAML
  2. 02组织菜单层级与分组
  3. 03配置图标和标签
  4. 04关联 Schema 节点
  5. 05排查重复或错位条目

适用场景

  1. 01为 Infrahub Web UI 设计导航
  2. 02将节点类型分组排列
  3. 03调整现有菜单结构
  4. 04排查菜单项未显示的问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/opsmill/infrahub-skills --skill infrahub-managing-menus

安装后在 Claude Code 中输入/infrahub-managing-menus确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples.md
rules/
_sections.md
_template.md
format-structure.md
hierarchy-nesting.md
icons-reference.md
item-properties.md
patterns-common.md
schema-integration.md

详细介绍

Infrahub 菜单创建器

概述

提供创建 Infrahub 自定义菜单的专业指导。 菜单控制 Web 界面左侧的导航,将架构节点类型整理成自定义 层级结构。

项目上下文

现有菜单文件: !find . -name "*.yml" -path "*/menus/*" 2>/dev/null | head -10

架构文件(用于识别可用的节点类型): !find . -name "*.yml" -path "*/schemas/*" -o -name "*schema*" -name "*.yml" 2>/dev/null | head -10

适用场景

  • 为 Infrahub Web UI 设计导航菜单
  • 将节点类型整理成逻辑分组 和层级结构
  • 为菜单项添加图标和标签
  • 设置分组标题(不可点击) 并添加嵌套子项
  • 配置架构节点使用自定义菜单, 而非自动生成的菜单
  • 调整现有菜单文件中的顺序、名称或分组
  • 调试菜单项未显示或 出现在错误分组中的原因

规则类别

优先级类别前缀描述
CRITICAL格式format-apiVersion、kind、spec
CRITICAL属性item-name、namespace、label、kind
HIGH层级hierarchy-嵌套、分组标题、数据
HIGH图标icons-MDI 图标引用、选项
MEDIUM架构schema-include_in_menu、kind 链接
LOW模式patterns-平铺菜单、注释、链接

此技能依赖的架构功能

自定义菜单不会取代自动菜单,而是对其进行 补充。架构需要配合设置,以避免重复项并保持 UI 稳定。

重复项来自两个地方,只有其中一个来自架构。 对于自动菜单也会生成的节点,请在下文中设置 include_in_menu: false 来处理;对于 Infrahub 自身提供的部分,请在菜单文件中通过 parent: 处理,详见 rules/hierarchy-nesting.md。

如果菜单项……架构必须……参见
通过 kind: 链接到架构节点的列表视图定义该节点(或泛型节点),以确保 URL 可解析;并在其上设置 include_in_menu: false,以隐藏重复的自动菜单项rules/schema-integration.md
通过泛型 kind 在一个条目下显示所有子类型定义泛型节点,并确保所有相关节点都 inherit_from 它../infrahub-managing-schemas/rules/hierarchy-setup.md
自动菜单启用时,需要显示在特定位置在架构节点上设置 order_weight(自动菜单会使用它;自定义菜单会忽略它)../infrahub-managing-schemas/rules/display-order-weight.md
将子类型归入父节点条目下在每个子类型上设置 menu_placement: <FullKind>,使自动菜单侧的分组与自定义菜单保持一致../infrahub-managing-schemas/rules/display-menu-placement.md

检查菜单文件所引用的每个节点上的 include_in_menu 设置——若未避免侧边栏重复, 用户会以为自定义菜单“坏了”,但应在架构侧 进行修复。

菜单文件基础

---
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 和 spec.data 始终 为必填项。每个菜单项都需要 name 和 namespace。

工作流

创建菜单时,请遵循以下步骤:

  1. 收集需求 — 询问有哪些 schema 节点、应如何分组,以及用户想要平面导航还是层级导航。

  2. 阅读相关规则 — 阅读 rules/format-structure.md,了解必需的 YAML 结构;阅读 rules/item-properties.md,了解条目字段;阅读 rules/icons-reference.md,选择合适的 MDI 图标。放置任何条目之前(包括平面菜单),都要阅读 rules/hierarchy-nesting.md:Infrahub 已内置 IPAM、对象管理、分支等内容,属于这些类别的内容应通过 parent: 挂接,而不是重新声明。

  3. 生成菜单 YAML — 从 $schema 注释和 apiVersion/kind/spec 结构开始。应用第 2 步中的规则。

  4. 添加注册和 schema 指引 — 输出的每个菜单文件都必须包含:

    • 一个 YAML 注释块,说明如何在 .infrahub.yml 的 menus: 键下注册该文件(参见 rules/format-structure.md)
    • 一个 YAML 注释块,建议对自定义菜单中出现的每个 schema 节点设置 include_in_menu: false,以避免侧边栏条目重复(参见 rules/schema-integration.md)

    请将这些内容作为注释放在文件顶部、--- 文档分隔符之前。这样,用户就能在菜单定义旁看到这些指引。

参考资料

评论

支持 Markdown