fix: align OpenClaw plugin metadata - #546
Conversation
meng93
left a comment
There was a problem hiding this comment.
I read the full PR and compared it against main. Verdict first, then a P0/P1/P2 punch list.
PR Overview
- Author:
vincentkoc(cross-repo fork; branchcodex/openclaw-metadata, likely AI-generated) - The real code change is ~10 lines (
openclaw.plugin.json+package.json); the remaining ~2030 lines are three generated inspector reports underreports/ - PR is based on
0.8.20;mainis already at0.8.21-beta.0— stale, needs rebase - The inspector report itself says:
P0=0, Live issues=0, Compat gaps=0. The lone P1 is aninspector-gap(the tool can't statically capture it — not a real defect)
Bottom line: don't merge as-is. The "fix" framing is contradicted by the report's own data. Some changes are genuinely useful, others should be dropped — please split before merging.
P0 (must fix before merging)
-
Report files leak the contributor's local filesystem path
reports/plugin-inspector-report.json:284,:286,:1909and other lines hardcode/Users/vincentkoc/GIT/_Perso/openclawas a "deterministic" field. That's both a PII leak and a reproducibility hole — nobody else (and no CI) can regenerate this report identically. -
2030+ lines of inspector reports should not be checked in
reports/plugin-inspector-issues.md,reports/plugin-inspector-report.md,reports/plugin-inspector-report.jsonare one-shot tool output. They will go stale the moment the upstream inspector or OpenClaw bumps a version. They belong in CI artifacts or an external repo, not in the plugin source tree. If they must be kept locally, addreports/to.gitignore. -
Removing
authorfromopenclaw.plugin.jsonneeds an authoritative source
The PR justifies removing"author": "DingTalk Real Team"as "unsupported top-level OpenClaw manifest fields", but cites only a third-party Crabpot report — no link to the OpenClaw manifest schema or doc. Dropping branding/attribution must be backed by evidence that the field is actually rejected or causes install / ClawHub failures; most validators silently ignore unknown fields, so leaving it in is harmless.
P1 (should fix before merging)
-
build.openclawVersion: "2026.4.9"duplicatespeerDependencies.openclaw: ">=2026.4.9"
The newopenclaw.build.openclawVersion(package.json:139) hardcodes a single pinned value that says the same thing as the existing peerDependency range, with stricter framing. The two will drift on the next OpenClaw bump. Either drop it or derive it frompeerDependencies. -
compat.pluginApi/compat.minGatewayVersionvalues need to be justified
package.json:135-138reuses>=2026.4.9without evidence the plugin actually requires anything that landed in 2026.4.9. Once written, these fields gate install-time version eligibility on ClawHub — wrong values either lock out older OpenClaw users or over-promise compatibility. Derive the lower bound from the plugin SDK surface this code actually calls, and document the reasoning in the PR. -
Removing
main: "index.ts"fromopenclaw.plugin.jsonneeds runtime confirmation
package.json'smainis./dist/index.mjs— different field, different layer. The PR drops the manifest-levelmainbut keeps the package.json one. Before merging, grep the OpenClaw manifest-loader code to confirmmanifest.maintruly isn't consumed any longer; otherwise this is a silent behavior change. -
PR is behind
main— rebase required
PR tree still hasversion: "0.8.20";mainis on0.8.21-beta.0(#595). Rebase before merging or risk reverting release metadata.
P2 (nice to have)
-
fix:is the wrong commit type
The inspector reports0 P0 / 0 live issues. This is metadata normalization plus new compat declarations. Semantically it'schore:orrefactor(manifest):, notfix:. -
Drop the pure-formatting
skillschange
openclaw.plugin.json:14-17reflows["./skills"]to multi-line — pure prettier noise, unrelated to the PR's purpose. Splitting it into its own PR keeps this diff legible. -
The remaining
legacy-root-sdk-importdeprecation isn't addressed
The report's P2 findinglegacy-root-sdk-import(10 sites importing theopenclaw/plugin-sdkroot barrel:index.ts:17,src/channel.ts:5, etc.) is the real plugin-side debt. This PR only ships metadata, leaving that debt for next round. If the maintainer fixes it here, the PR genuinely "improves the OpenClaw plugin experience"; otherwise we'll see a follow-up doing this same dance. -
External contributor warrants dual-side review
codex/...branch name + boilerplate phrasing in the report ("deterministic", "contract probe backlog") + cross-repo PR + first appearance from this contributor — metadata changes look harmless on the surface, butcompat.pluginApiactually drives installer decisions. Recommend one DingTalk-side and one OpenClaw-side maintainer both sign off before merge.
Suggested landing path
Split into three PRs:
- ① Keep
compat.pluginApi/minGatewayVersiononly, with values derived from real API surface usage — merge this - ②
author/main/ formatting removals, with a link to the OpenClaw manifest schema — merge separately - ③ Move reports to CI artifacts (or drop them entirely) and add
reports/to.gitignore
Thanks for the contribution — happy to re-review once these are addressed.
|
补充一条中文说明,方便国内同学快速对齐: 感谢 @vincentkoc 的贡献,这边对照
建议把当前 PR 拆成 3 个:① 仅保留 |
Summary
openclaw.compat.pluginApi/ gateway compatibility metadataWhy
This PR comes from an OpenClaw core maintainer compatibility pass across Crabpot's visible plugin fixtures. The goal is to improve the overall OpenClaw plugin experience by helping widely used plugins clear high-signal Crabpot/plugin-inspector findings before they become install, ClawHub, or compatibility problems.
Relevant projects:
Crabpot findings
Discovered in Crabpot at
openclaw/crabpot@3b5131e345404e551ab09f6af686462fa8095ef2:manifest-unknown-fields: https://github.com/openclaw/crabpot/blob/3b5131e345404e551ab09f6af686462fa8095ef2/reports/crabpot-report.md#L1202-L1208package-plugin-api-compat-missing: https://github.com/openclaw/crabpot/blob/3b5131e345404e551ab09f6af686462fa8095ef2/reports/crabpot-report.md#L1209-L1214Maintainer test instructions
You can verify this package with plugin-inspector from this repo:
npx @openclaw/plugin-inspector check --plugin-root . --openclaw /path/to/openclaw --jsonFor a local plugin-inspector checkout, use:
node /path/to/plugin-inspector/src/cli.js check --plugin-root . --openclaw /path/to/openclaw --jsonLocal validation
node /Users/vincentkoc/GIT/_Perso/plugin-inspector/src/cli.js check --plugin-root . --openclaw /Users/vincentkoc/GIT/_Perso/openclaw --json0plugin-owned residues after this patchRemaining findings
Any remaining findings after this patch are owned by OpenClaw core or plugin-inspector capture/runtime coverage, not this plugin package metadata.