You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
OpenClaw plugin exposes skills that call tools it doesn't register #1728
The shared skills/memory-* set is written against the full Basic Memory MCP tool surface. The OpenClaw plugin registers a narrower one, so most skills lead OpenClaw agents into rejected or unavailable tool calls.
recent_activity and list_directory (not registered at all)
build_context.timeframe
search_notes.page_size; search_notes.query is required
write_note.directory; OpenClaw requires folder
A grep of each SKILL.md for those calls finds 12 of 16 skills using at least one. Only memory-comark, memory-defrag, memory-lifecycle and memory-ci-capture are clean. Skills OpenClaw already exposes are affected, including memory-ingest, memory-reflect, memory-metadata-search and memory-literary-analysis.
Two skill lists that disagree
openclaw.plugin.json enumerates the skills OpenClaw exposes. It omits memory-capture, memory-ci-capture, memory-continue and memory-curate, with no recorded reason.
scripts/fetch-skills.ts generates skills/manifest.json from every memory-* directory, and commands/skills.ts::registerSkillCommands registers a slash command for each entry. So /capture, /continue and /curate are available anyway.
Nothing checks either list against skills/.
For the plugin redo
Decide the plugin's tool surface: match the MCP server's tools and parameters, or keep it narrow and ship OpenClaw-specific skill variants or a filtered set.
Drive the manifest and the slash commands from one source.
Add a package check that fails when a skill is exposed but uses calls OpenClaw doesn't register, or when the lists drift.
Context: found during #1715 and the closed #1727, which tried an exclusion list in scripts/validate_skills.py. Codex review showed the mismatch is broader than four skills.
Type: bug (shipped skills direct OpenClaw agents to tools or parameters the plugin doesn't register). The fix also involves a design decision.
Component: OpenClaw plugin (integrations/openclaw) and the shared skills/ set. This is not Cloud-related, so I didn't apply the cloud label.
Priority: Medium. Most of the shared skills (12 of 16) can lead OpenClaw agents into rejected tool calls. Nothing breaks and no data is at risk.
Complexity: Medium to complex. The tool-surface decision (match the MCP server, or keep the plugin narrow and ship OpenClaw-specific skill variants) affects everything else. The remaining work follows from it: a single source for the manifest and slash commands, plus a package check for skill/tool/list drift.
Decide the tool surface. This is a product call for the maintainers.
Derive openclaw.plugin.json and registerSkillCommands from one source, so the two skill lists can't disagree.
Add a check to just package-check-openclaw that fails when an exposed skill calls an unregistered tool or parameter, or when the lists drift from skills/.
I haven't made any code changes. This was triage only.
Update from #1767: the rewritten memory-defrag now audits with list_directory and recent_activity, so it joins the affected set (it was one of the four clean skills above). memory-reflect now also uses list_directory(sort="title_desc") to find its last checkpoint, along with recent_activity. Both stay in openclaw.plugin.json for now, so OpenClaw's /reflect and /defrag will hit unregistered tools until the plugin redo here lands.
#1767 also adds memory-okf, which needs a shell with the bm CLI. It's listed in the OpenClaw manifest because validate_skills.py requires every distributed skill there unless it's in may_omit, the exclusion pattern this issue says should become a real per-tool check.
Activity
claude commentedon Oct 10, 2026
Claude finished @phernandez's task in 15s —— View job
Triage
integrations/openclaw) and the sharedskills/set. This is not Cloud-related, so I didn't apply thecloudlabel.Suggested order:
openclaw.plugin.jsonandregisterSkillCommandsfrom one source, so the two skill lists can't disagree.just package-check-openclawthat fails when an exposed skill calls an unregistered tool or parameter, or when the lists drift fromskills/.I haven't made any code changes. This was triage only.
phernandez commentedon Oct 14, 2026
Update from #1767: the rewritten
memory-defragnow audits withlist_directoryandrecent_activity, so it joins the affected set (it was one of the four clean skills above).memory-reflectnow also useslist_directory(sort="title_desc")to find its last checkpoint, along withrecent_activity. Both stay inopenclaw.plugin.jsonfor now, so OpenClaw's/reflectand/defragwill hit unregistered tools until the plugin redo here lands.#1767 also adds
memory-okf, which needs a shell with thebmCLI. It's listed in the OpenClaw manifest becausevalidate_skills.pyrequires every distributed skill there unless it's inmay_omit, the exclusion pattern this issue says should become a real per-tool check.