docs(plugins): show root CLI commands (#126621)

This commit is contained in:
Peter Steinberger
2026-08-20 02:42:05 -07:00
committed by GitHub
parent b668a21f07
commit 6932897bf9
21 changed files with 43 additions and 24 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ Adds agent-callable tools.
## Surface
contracts: `tools`; skills
CLI commands: `openclaw browser`; contracts: `tools`; skills
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ Codex app-server harness and native session catalog.
## Surface
commands: `/codex`; contracts: `mediaUnderstandingProviders`, `migrationProviders`, `tools`, `webSearchProviders`
CLI commands: `openclaw codex`; slash commands: `/codex`; contracts: `mediaUnderstandingProviders`, `migrationProviders`, `tools`, `webSearchProviders`
## Related docs
+1 -1
View File
@@ -16,4 +16,4 @@ Generate setup codes and approve device pairing requests.
## Surface
commands: `/pair`
slash commands: `/pair`
+1 -1
View File
@@ -16,7 +16,7 @@ OpenClaw Google Meet participant plugin for joining calls through Chrome or Twil
## Surface
contracts: `tools`, `transcriptSourceProviders`
CLI commands: `openclaw googlemeet`; contracts: `tools`, `transcriptSourceProviders`
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ OpenClaw Matrix channel plugin for rooms and direct messages.
## Surface
channels: `matrix`
channels: `matrix`; CLI commands: `openclaw matrix`
## Related docs
+1 -1
View File
@@ -16,4 +16,4 @@ Adds agent-callable tools.
## Surface
commands: `/dreaming`; contracts: `tools`
CLI commands: `openclaw memory`; slash commands: `/dreaming`; contracts: `tools`
+1 -1
View File
@@ -16,7 +16,7 @@ OpenClaw LanceDB-backed long-term memory plugin with auto-recall, auto-capture,
## Surface
contracts: `tools`
CLI commands: `openclaw ltm`; contracts: `tools`
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ Persistent wiki compiler and Obsidian-friendly knowledge vault for OpenClaw.
## Surface
contracts: `tools`; skills
CLI commands: `openclaw wiki`; contracts: `tools`; skills
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ Adds the openclaw path CLI for oc:// workspace file addressing.
## Surface
plugin
CLI commands: `openclaw path`
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ title: "Onepassword plugin"
## Surface
contracts: `tools`
CLI commands: `openclaw onepassword`; contracts: `tools`
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ Adds policy-backed doctor checks for workspace conformance.
## Surface
plugin
CLI commands: `openclaw policy`
<!-- openclaw-plugin-reference:manual-start -->
+1 -1
View File
@@ -16,4 +16,4 @@ OpenClaw QA lab plugin with private debugger UI and scenario runner.
## Surface
contracts: `tools`, `webSearchProviders`, `workerProviders`
CLI commands: `openclaw qa`; contracts: `tools`, `webSearchProviders`, `workerProviders`
+1 -1
View File
@@ -16,7 +16,7 @@ Guarded end-to-end encrypted claw channel.
## Surface
channels: `reef`
channels: `reef`; CLI commands: `openclaw reef`
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ Manage Talk voice selection (list/set).
## Surface
commands: `/voice`
slash commands: `/voice`
<!-- openclaw-plugin-reference:manual-start -->
+1 -1
View File
@@ -16,7 +16,7 @@ Join Microsoft Teams meetings as a Chrome browser guest.
## Surface
contracts: `tools`, `transcriptSourceProviders`
CLI commands: `openclaw teamsmeetings`; contracts: `tools`, `transcriptSourceProviders`
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ HashiCorp Vault SecretRef provider integration.
## Surface
plugin
CLI commands: `openclaw vault`
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ OpenClaw voice-call plugin for Twilio, Telnyx, and Plivo phone calls.
## Surface
contracts: `tools`; skills
CLI commands: `openclaw voicecall`; contracts: `tools`; skills
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ Dashboard workboard for agent-owned issues and sessions.
## Surface
contracts: `tools`; dashboard data bindings: `workboard.cards.list`, `workboard.stats`, `workboard.boards.list`; dashboard action verbs: `workboard.dispatch`
CLI commands: `openclaw workboard`; contracts: `tools`; dashboard data bindings: `workboard.cards.list`, `workboard.stats`, `workboard.boards.list`; dashboard action verbs: `workboard.dispatch`
## Related docs
+1 -1
View File
@@ -16,7 +16,7 @@ Join Zoom meetings as a Chrome browser guest.
## Surface
contracts: `tools`, `transcriptSourceProviders`
CLI commands: `openclaw zoommeetings`; contracts: `tools`, `transcriptSourceProviders`
## Related docs
+14 -3
View File
@@ -2,6 +2,7 @@ type PluginSurfaceManifest = {
id?: string;
channels?: string[];
providers?: string[];
cliCommands?: Array<{ name?: string }>;
commandAliases?: Array<{ name?: string; kind?: string }>;
contracts?: Record<string, unknown>;
dashboard?: Partial<Record<"actionVerbs" | "dataBindings", Array<{ id?: string }>>>;
@@ -83,7 +84,17 @@ export function resolvePluginSurface(manifest: PluginSurfaceManifest) {
if (Array.isArray(manifest.providers) && manifest.providers.length > 0) {
parts.push(`providers: ${formatIdentifiers(manifest.providers)}`);
}
const commands = [
const cliCommands = [
...new Set(
(manifest.cliCommands ?? [])
.map((command) => command.name?.trim())
.filter((name): name is string => Boolean(name)),
),
].toSorted((left, right) => left.localeCompare(right));
if (cliCommands.length > 0) {
parts.push(`CLI commands: ${formatIdentifiers(cliCommands.map((name) => `openclaw ${name}`))}`);
}
const slashCommands = [
...new Set(
(manifest.commandAliases ?? [])
.filter((alias) => alias.kind === "runtime-slash")
@@ -91,8 +102,8 @@ export function resolvePluginSurface(manifest: PluginSurfaceManifest) {
.filter((name): name is string => Boolean(name)),
),
].toSorted((left, right) => left.localeCompare(right));
if (commands.length > 0) {
parts.push(`commands: ${formatIdentifiers(commands.map((name) => `/${name}`))}`);
if (slashCommands.length > 0) {
parts.push(`slash commands: ${formatIdentifiers(slashCommands.map((name) => `/${name}`))}`);
}
const contracts = Object.keys(manifest.contracts ?? {}).toSorted((left, right) =>
left.localeCompare(right),
+10 -2
View File
@@ -30,15 +30,23 @@ describe("resolvePluginSurface", () => {
expect(resolvePluginSurface({})).toBe("plugin");
});
it("renders only runtime slash command aliases", () => {
it("renders root CLI commands separately from runtime slash command aliases", () => {
expect(
resolvePluginSurface({
cliCommands: [
{ name: " voicecall " },
{ name: "browser" },
{ name: "voicecall" },
{ name: " " },
],
commandAliases: [
{ name: "voice", kind: "runtime-slash" },
{ name: " voice ", kind: "runtime-slash" },
{ name: " ", kind: "runtime-slash" },
{ name: "internal", kind: "activation-only" },
],
}),
).toBe("commands: `/voice`");
).toBe("CLI commands: `openclaw browser`, `openclaw voicecall`; slash commands: `/voice`");
});
it("escapes dashboard plugin owner delimiters and literal escape markers", () => {