Skip to content

fix(integrations): check OpenClaw manifest against skills, with explicit exclusions - #1727

Closed
phernandez wants to merge 4 commits into
mainfrom
fix/openclaw-manifest-skills
Closed

phernandez wants to merge 4 commits into
mainfrom
fix/openclaw-manifest-skills

Conversation

@phernandez

@phernandez phernandez commented Oct 10, 2026 •

Copy link
Copy Markdown
Member

Why

fetch-skills.ts copies every skills/memory-* directory into the OpenClaw package, but OpenClaw only exposes skills listed in openclaw.plugin.json. Nothing checked that list, so memory-comark was 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-capture omits search_notes.query and uses write_note.directory.
  • memory-continue uses recent_activity and build_context.timeframe.
  • memory-curate uses list_directory and unsupported parameters.
  • memory-ci-capture runs only under bm ci.

The first version of this PR listed them; Codex caught that they would lead OpenClaw agents into rejected calls.

What changed

  • Manifest unchanged from main.
  • scripts/validate_skills.py: validate_openclaw_manifest requires every memory-* skill to be listed in the manifest or named in OPENCLAW_EXCLUDED_SKILLS with a reason. It also reports duplicate entries and exclusions for skills that no longer exist. It runs from main only, so plugin validators that import parse_frontmatter are unaffected.
  • skills/DEVELOPMENT.md: tells skill authors to check calls against integrations/openclaw/tools/ and choose list or exclude.

Verification

  • just package-check-skills: validated 16 skills.
  • A new skill directory that is neither listed nor excluded fails: missing=['skills/memory-zzz'].
  • A duplicated manifest entry fails: duplicates=['skills/memory-tasks'].
  • ruff check and ruff format --check clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01APFUk2bjEwMptMQqpRhjea

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>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-10T18:02:04.518740Z 8dfddcd Manual request
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread scripts/validate_skills.py Outdated
…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>
@phernandez

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread integrations/openclaw/openclaw.plugin.json Outdated
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>
@phernandez phernandez changed the title fix(integrations): list every memory-* skill in the OpenClaw manifest fix(integrations): check OpenClaw manifest against skills, with explicit exclusions Oct 10, 2026
@phernandez

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread scripts/validate_skills.py
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>
@phernandez

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +96 to +100
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",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +107 to +110
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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@phernandez

Copy link
Copy Markdown
Member Author

Closing in favor of #1728. The skill/tool mismatch is broader than this exclusion list can express, and the OpenClaw plugin is being redone.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant