关于 rhdh-plugin-nfs-migration
rhdh-plugin-nfs-migration 是帮助开发者将前端插件从旧版前端系统迁移到 NFS 的技能。它先盘点插件扩展,再逐类迁移,同时保留旧版导出,除非用户明确批准破坏性变更。
主要功能
- 01盘点插件扩展与导出
- 02逐类迁移到 NFS Blueprint
- 03保留旧版消费者兼容
- 04按扩展类型查阅迁移指引
- 05通过工作区 TypeScript 检查
适用场景
- 01迁移页面、实体内容或 API 工厂
- 02迁移翻译及 RHDH 扩展
- 03检查迁移后的类型与消费者兼容性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ redhat-developer/ rhdh-skills --skill rhdh-plugin-nfs-migration安装后在 Claude Code 中输入/rhdh-plugin-nfs-migration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/app-setup.mdgotchas.mdmigrate-app-level.mdmigrate-entity-content.mdmigrate-page.mdmigrate-rhdh-extensions.mdmigrate-translations.mdmount-point-mapping.mdoperator-config.mdoverview.mdpackage-json.mdreference-prs.mdsupport.mdtesting-rhdh.mdverification.mdworkflows/migrate-nfs.mdtest-nfs-plugin.md详细介绍
RHDH 插件 NFS 迁移
负责管理前端插件从旧版前端系统迁移到 NFS 时的扩展结构。修改前先了解插件导出了什么内容,逐次迁移一种扩展类型,并确保旧版使用方仍能通过编译,直到用户明确批准破坏性变更。
从这里开始
- 阅读插件的
package.json、src/plugin.ts或src/plugin.tsx、路由引用、API 工厂、导出的组件以及app-config.dynamic.yaml。 - 阅读工作区自己的
AGENTS.md或CLAUDE.md;仓库规则优先于此处的任何内容。 - 编辑前,向用户列出发现的所有扩展。
- 修改文件前检查分支和状态,并保护未提交的工作。
按目标选择路径
| 目标 | 加载并遵循 |
|---|---|
| 将插件迁移到 NFS | workflows/migrate-nfs.md |
| 在 RHDH 中测试迁移后的插件 | workflows/test-nfs-plugin.md |
| 在迁移前了解 NFS | references/overview.md |
| 迁移页面或 API 工厂 | references/migrate-page.md |
| 迁移实体标签页或卡片 | references/migrate-entity-content.md |
| 迁移翻译 | references/migrate-translations.md |
| 迁移 RHDH 抽屉、页眉项、主页小组件 | references/migrate-rhdh-extensions.md |
| 迁移应用级封装或根元素 | references/migrate-app-level.md |
| 将旧版动态挂载点转换为扩展 | references/mount-point-mapping.md |
| 更新包导出 | references/package-json.md |
| 设置或更新 NFS 开发应用 | references/app-setup.md |
| 验证迁移 | references/verification.md |
访问 RHDH operator 的 app.extensions 或 app.routes.bindings | references/operator-config.md |
| 排查迁移失败 | 先查看 references/gotchas.md,再查看 references/support.md |
| 查找可供参考的真实迁移插件 | references/reference-prs.md |
范围
- 此技能负责扩展结构:哪个 Blueprint 替换哪个旧版扩展、扩展的挂载位置,以及包导出内容。它不负责选择
@backstage/*版本号。 /rhdh-backstage-upgrade负责版本号:要升级到哪个 Backstage 版本,以及如何升级到对应的依赖集。当插件的@backstage/*依赖版本过旧,不足以支持此次迁移所需的 Blueprints 时,先按名称调用此技能,再返回此处。/backstage-api-changes负责早期 alpha 版与当前 GA 版 NFS API 之间的差异,包括已移除的NavItemBlueprint、替代config.schema的configSchema,以及重命名的 Blueprint 参数。迁移已基于旧版 NFS API 完成迁移的插件,或 Blueprint 参数导致 TypeScript 错误时,按名称调用此技能。/rhdh-plugin-export负责导出和打包迁移后的插件。/rhdh-plugin-wiring负责生成dynamic-plugins.yaml配置。/rhdh-local负责运行本地 RHDH 实例并向其应用插件配置。/rhdh-pr-create负责暂存、提交和拉取请求。完成时请让修改过的文件保持未暂存状态,并列出这些文件。
调用指定名称的技能,并在对话中说明交接内容。切勿打开其他技能的文件。
不变量
- NFS 尚未正式发布。默认采用 alpha 方案:NFS 位于
./alpha,根导出保持原样。只有当用户希望通过同一个导入路径使用两种 API 时,才采用并置方案。 - 组件级导入(
useApi、useRouteRef)保留在@backstage/core-plugin-api,这样同一组件就能用于两种导出路径。只有当组件需要 NFS 未提供的旧版上下文提供程序时,才使用compatWrapper()。 - 核心蓝图来自
@backstage/frontend-plugin-api。仅适用于 RHDH 的蓝图(例如AppDrawerContentBlueprint和GlobalHeaderMenuItemBlueprint)来自@red-hat-developer-hub/*。不要混用这两个命名空间。 - 将实体内容和卡片直接放入插件的
extensions数组。仅在需要定位到其他插件时才使用createFrontendModule——例如将翻译定位到pluginId: 'app',或将主页小组件定位到pluginId: 'home'。 - 旧版导出仍然可用。对旧版使用方造成破坏性变更前,必须征得用户明确同意。
- 在工作区根目录运行
yarn tsc,而不是在插件目录中运行,以便发现使用方导入遭到破坏的问题。 - 不要在此处暂存、提交、推送或创建拉取请求。
完成
报告发现的扩展及其对应的 NFS 等效项、所选导出方案、已修改且仍未暂存的文件、运行的验证命令及其结果、任何旧版使用方风险,以及接下来应调用以进行导出、接线、本地测试或发布的具名技能。
评论
支持 Markdown