Repository navigation
fix(integrations): check OpenClaw manifest against skills, with explicit exclusions - #1727
phernandez wants to merge 4 commits into
Conversation
fetch-skills copies every skills/memory-* directory into the OpenClaw package, but OpenClaw only exposes skills its manifest enumerates. memory-capture, memory-ci-capture, memory-continue and memory-curate shipped in the package and stayed invisible. validate_skills.py now fails when the manifest's skills array drifts from the skills/ directories, so package-check-skills catches the next one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea Signed-off-by: phernandez <paul@basicmachines.co>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8864408466
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…uplicates Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea Signed-off-by: phernandez <paul@basicmachines.co>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 542905258d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The four skills missing from the OpenClaw manifest call tools or parameters the OpenClaw plugin does not register (recent_activity, list_directory, build_context.timeframe, search_notes.page_size), and memory-ci-capture runs only in CI. Listing them would lead OpenClaw agents into rejected calls, so the manifest goes back to main's list. The manifest check now requires every memory-* skill to be either listed or named in OPENCLAW_EXCLUDED_SKILLS with its reason, so a new skill cannot be shipped to or left out of OpenClaw silently. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea Signed-off-by: phernandez <paul@basicmachines.co>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7aba6a6eea
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea Signed-off-by: phernandez <paul@basicmachines.co>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8dfddcde51
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| OPENCLAW_EXCLUDED_SKILLS = { | ||
| "memory-capture": "omits search_notes.query; uses write_note.directory", | ||
| "memory-ci-capture": "CI-only; runs under bm ci, not an interactive agent", | ||
| "memory-continue": "uses recent_activity and build_context.timeframe", | ||
| "memory-curate": "uses list_directory and unsupported parameters", |
There was a problem hiding this comment.
Exclude the remaining OpenClaw-incompatible skills
The validator now requires every skill absent from this exclusion set to remain exposed, even though several such skills still cannot use OpenClaw's registered schemas. Fresh evidence beyond the four skills addressed in the prior thread is that memory-reflect calls the unregistered recent_activity tool, memory-metadata-search omits required search_notes.query and uses unsupported page_size, and memory-ingest passes write_note.directory where OpenClaw requires folder. Consequently the package check succeeds while enforcing publication of workflows whose documented calls will be rejected; adapt these skills or include every incompatible skill in the exclusion set.
Useful? React with 👍 / 👎.
| OpenClaw's fetch-skills copies every memory-* directory into the npm package, | ||
| but OpenClaw only exposes the skills its manifest enumerates. A new skill must | ||
| either be listed there or carry an explicit exclusion above, so nobody ships a | ||
| skill to OpenClaw users by accident or leaves one out without a reason. |
There was a problem hiding this comment.
Apply exclusions to generated skill commands
When a user invokes an excluded workflow through an OpenClaw slash command, this exclusion does not protect them: integrations/openclaw/scripts/fetch-skills.ts still puts every memory-* directory into skills/manifest.json, and commands/skills.ts::registerSkillCommands registers every entry from that generated manifest. Fresh evidence not addressed by the earlier manifest cleanup is that /capture, /continue, and /curate therefore remain available with the same unsupported calls even though openclaw.plugin.json omits them. Filter the generated command manifest or command registration with the same exclusion source so an excluded skill is actually unavailable on every OpenClaw surface.
Useful? React with 👍 / 👎.
|
Closing in favor of #1728. The skill/tool mismatch is broader than this exclusion list can express, and the OpenClaw plugin is being redone. |
Why
fetch-skills.tscopies everyskills/memory-*directory into the OpenClaw package, but OpenClaw only exposes skills listed inopenclaw.plugin.json. Nothing checked that list, somemory-comarkwas nearly left out (fixed in #1715), and four other skills are absent with no recorded reason.Those four are absent for good reasons. The OpenClaw plugin registers a narrower tool surface than the MCP server, and these skills don't fit it:
memory-captureomitssearch_notes.queryand useswrite_note.directory.memory-continueusesrecent_activityandbuild_context.timeframe.memory-curateuseslist_directoryand unsupported parameters.memory-ci-captureruns only underbm ci.The first version of this PR listed them; Codex caught that they would lead OpenClaw agents into rejected calls.
What changed
scripts/validate_skills.py:validate_openclaw_manifestrequires everymemory-*skill to be listed in the manifest or named inOPENCLAW_EXCLUDED_SKILLSwith a reason. It also reports duplicate entries and exclusions for skills that no longer exist. It runs frommainonly, so plugin validators that importparse_frontmatterare unaffected.skills/DEVELOPMENT.md: tells skill authors to check calls againstintegrations/openclaw/tools/and choose list or exclude.Verification
just package-check-skills: validated 16 skills.missing=['skills/memory-zzz'].duplicates=['skills/memory-tasks'].ruff checkandruff format --checkclean.🤖 Generated with Claude Code
https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea