已开启
openharmony-skills 通道安装后缺少平台原生 manifest,版本号不可读 #7
LuBo创建于  7月25日
LuBo成员
7月25日 创建

问题描述

openharmony-skills 通道的插件(ohos-sdd、ohos-delivery-kit)只有中性描述符 plugin.yaml(含 version),没有生成各平台原生 manifest:

平台 需要的 manifest openharmony-skills 通道 ohos-marketplace 通道
Claude Code .claude-plugin/plugin.json ❌ 不存在 ✅ 有 version
Codex .codex-plugin/plugin.json ❌ 不存在 ✅ 有 version
OpenCode package.json ❌ 不存在 ✅ 有 version

影响

  1. 版本号不可读:安装后各平台无法获取插件版本,无法做版本校验或升级提示
  2. 平台原生结构缺失:除了 manifest,还可能缺少 platform-specific hooks、commands 等生成产物
  3. plugin.yaml 声明了 generate-native-plugin 策略但无执行者:compatibility.targets.claude-code.strategy: generate-native-plugin 表明设计上需要构建步骤,但 openharmony-skills 通道目前只是复制中性源文件

plugin.yaml 中的设计意图

compatibility:
  targets:
    claude-code:
      strategy: generate-native-plugin
      lifecycle: native
    codex:
      strategy: generate-native-plugin
      lifecycle: native
    opencode:
      strategy: generate-install-payload
      lifecycle: managed-by-ohos-agent

这表明 plugin.yaml 是构建输入,需要一个工具在安装时(或发布时)将其转换为各平台原生格式。

建议方案

oh-skillhub 作为分发通道,应考虑在 install 流程中增加 plugin.yaml → 平台原生 manifest 的生成逻辑:

  1. Claude Code:生成 .claude-plugin/plugin.json(从 plugin.yaml 的 id、version、description、license 字段映射)
  2. Codex:生成 .codex-plugin/plugin.json(同上)
  3. OpenCode:生成 package.json(从 plugin.yaml 映射 + opencode 插件入口)
  4. 版本校验:安装后可读版本号,支持 --check-version 或升级提示

当前 workaround

用户如需完整平台原生文件 + 版本号,请使用 ohos-marketplace 通道安装(已有三端原生 manifest)。

相关仓库

likedislike
LuBo成员
7月27日 评论:

更新:openharmony-skills PR #308/#309 review 中发现的路径映射问题

在向本仓提交 ohos-sdd 和 ohos-delivery-kit 两个插件的 PR 过程中,经过 4 轮 review 迭代,发现以下与 oh-skillhub 安装/构建相关的问题:

1. plugin.yaml schema 不一致(已修复)

ohos-sdd 的 plugin.yaml 最初使用自定义 schema(schema: ohos-sdd-plugin/v1),缺少 id/components/compatibility 等字段。ohos-agent build 可能无法正确发现插件的 skills、hooks、assets。已对齐到标准格式(schemaVersion: 1 + kind: Plugin)。

建议:oh-skillhub 可提供 plugin.yaml 标准 schema 验证,拒绝不符合 schemaVersion: 1 + kind: Plugin 的 plugin.yaml。

2. {{PLUGIN_ROOT}} vs {{ASSET_ROOT}} 占位符(已修复)

源仓使用 {{PLUGIN_ROOT}}(marketplace 渠道替换),oh-skillhub 使用 {{ASSET_ROOT}}(通过 variables: ASSET_ROOT 解析)。手动 sync 时遗漏了 68 处转换。

建议:oh-skillhub 的 install 流程可同时支持 {{PLUGIN_ROOT}} 和 {{ASSET_ROOT}} 两个占位符(映射到同一值),避免 sync 时遗漏转换。或在 install 时自动检测并转换。

3. workspace.yaml 跨 PR 引用(已修复)

workspace.yaml 是 workspace 级声明,引用所有插件。但每个 PR 只包含一个插件,导致 workspace.yaml 引用不存在的路径。

建议:oh-skillhub 可提供 workspace.yaml 验证工具,检查 plugins[*].path 是否都存在。或支持 workspace.yaml 的增量声明(每个插件 PR 只声明自己)。

4. provenance commit 过时(已修复)

多轮修复后 provenance.yaml 的 commit 未同步更新。

建议:oh-skillhub 的 install 流程可自动更新 provenance.yaml 的 commit 和 importedAt 字段。

5. 路径查找逻辑分散在多个文件(已修复)

_find_profiles_dir() 同名函数存在于 ohos_sdd_engine.py 和 ohos_sdd_spec_for_test.py 两个文件,修复一个遗漏另一个。

建议:oh-skillhub 可提供标准的路径解析库(如 ohos_agent.paths),插件 CLI 统一调用,避免各自维护路径查找逻辑。

关联

likedislike
huobaobaohuobaobao成员
8月19日 关联了pull request:feat(plugin): test head format
huobaobaohuobaobao成员
8月21日 关联了pull request:feat(plugin): transactional lifecycle + strict conflict blocking (closes #9)