Skip to content

Commit a68c0f3

Browse files
fix(cli): pass remote eligibility to skills CLI commands
The `openclaw skills list/info/check` commands called `buildWorkspaceSkillStatus` without passing remote eligibility context, causing macOS-only skills like `apple-notes` to always show as ineligible when a remote macOS node is connected. The Gateway's `skills.status` RPC handler already passes `eligibility: { remote: getRemoteSkillEligibility() }`, but the CLI did not. This fix aligns the CLI with the Gateway by passing the same remote eligibility context in all four `buildWorkspaceSkillStatus` call sites. Fixes #94956
1 parent 417509c commit a68c0f3

1 file changed

Lines changed: 17 additions & 4 deletions

File tree

src/cli/skills-cli.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
type SkillStatusReport,
77
} from "../agents/skills-status.js";
88
import { loadConfig } from "../config/config.js";
9+
import { getRemoteSkillEligibility } from "../infra/skills-remote.js";
910
import { defaultRuntime } from "../runtime.js";
1011
import { formatDocsLink } from "../terminal/links.js";
1112
import { renderTable } from "../terminal/table.js";
@@ -359,7 +360,10 @@ export function registerSkillsCli(program: Command) {
359360
try {
360361
const config = loadConfig();
361362
const workspaceDir = resolveAgentWorkspaceDir(config, resolveDefaultAgentId(config));
362-
const report = buildWorkspaceSkillStatus(workspaceDir, { config });
363+
const report = buildWorkspaceSkillStatus(workspaceDir, {
364+
config,
365+
eligibility: { remote: getRemoteSkillEligibility() },
366+
});
363367
defaultRuntime.log(formatSkillsList(report, opts));
364368
} catch (err) {
365369
defaultRuntime.error(String(err));
@@ -376,7 +380,10 @@ export function registerSkillsCli(program: Command) {
376380
try {
377381
const config = loadConfig();
378382
const workspaceDir = resolveAgentWorkspaceDir(config, resolveDefaultAgentId(config));
379-
const report = buildWorkspaceSkillStatus(workspaceDir, { config });
383+
const report = buildWorkspaceSkillStatus(workspaceDir, {
384+
config,
385+
eligibility: { remote: getRemoteSkillEligibility() },
386+
});
380387
defaultRuntime.log(formatSkillInfo(report, name, opts));
381388
} catch (err) {
382389
defaultRuntime.error(String(err));
@@ -392,7 +399,10 @@ export function registerSkillsCli(program: Command) {
392399
try {
393400
const config = loadConfig();
394401
const workspaceDir = resolveAgentWorkspaceDir(config, resolveDefaultAgentId(config));
395-
const report = buildWorkspaceSkillStatus(workspaceDir, { config });
402+
const report = buildWorkspaceSkillStatus(workspaceDir, {
403+
config,
404+
eligibility: { remote: getRemoteSkillEligibility() },
405+
});
396406
defaultRuntime.log(formatSkillsCheck(report, opts));
397407
} catch (err) {
398408
defaultRuntime.error(String(err));
@@ -405,7 +415,10 @@ export function registerSkillsCli(program: Command) {
405415
try {
406416
const config = loadConfig();
407417
const workspaceDir = resolveAgentWorkspaceDir(config, resolveDefaultAgentId(config));
408-
const report = buildWorkspaceSkillStatus(workspaceDir, { config });
418+
const report = buildWorkspaceSkillStatus(workspaceDir, {
419+
config,
420+
eligibility: { remote: getRemoteSkillEligibility() },
421+
});
409422
defaultRuntime.log(formatSkillsList(report, {}));
410423
} catch (err) {
411424
defaultRuntime.error(String(err));

0 commit comments

Comments
 (0)