Improve skills check visibility wording

This commit is contained in:
Mariano Belinky
2026-05-02 09:53:13 +02:00
parent be7d10e6d4
commit 5f93106ed2
3 changed files with 26 additions and 1 deletions

View File

@@ -188,7 +188,9 @@ instructions to reference the skill folder path.
When `true`, the skill is exposed as a user slash command.
</ParamField>
<ParamField path="disable-model-invocation" type="boolean" default="false">
When `true`, the skill is excluded from the model prompt (still available via user invocation).
When `true`, OpenClaw keeps the skill's instructions out of the agent's normal
prompt. The skill is still installed and can still be run explicitly as a
slash command when `user-invocable` is also `true`.
</ParamField>
<ParamField path="command-dispatch" type='"tool"'>
When set to `tool`, the slash command bypasses the model and dispatches directly to a tool.

View File

@@ -374,6 +374,26 @@ export function formatSkillsCheck(report: SkillStatusReport, opts: SkillsCheckOp
}
lines.push(`${theme.error("✗")} ${theme.muted("Missing requirements:")} ${missingReqs.length}`);
if (modelVisible.length > 0 || commandVisible.length > 0 || promptHidden.length > 0) {
lines.push("");
lines.push(theme.heading("What this means:"));
if (modelVisible.length > 0) {
lines.push(
` ${theme.muted("Visible to model:")} the agent can see the skill instructions during normal chat.`,
);
}
if (commandVisible.length > 0) {
lines.push(
` ${theme.muted("Available as command:")} people, scripts, or cron jobs can call the skill explicitly.`,
);
}
if (promptHidden.length > 0) {
lines.push(
` ${theme.muted("Hidden from model prompt:")} installed and ready, but kept out of normal chat unless called explicitly.`,
);
}
}
if (modelVisible.length > 0) {
lines.push("");
lines.push(theme.heading("Ready and visible to model:"));

View File

@@ -269,6 +269,9 @@ describe("skills-cli", () => {
expect(output).toContain("prompt-hidden");
expect(output).toContain("Excluded by agent allowlist");
expect(output).toContain("not-assigned");
expect(output).toContain("What this means");
expect(output).toContain("people, scripts, or cron jobs can call the skill explicitly");
expect(output).toContain("kept out of normal chat unless called explicitly");
});
it("summarizes a mixed bad skill pack in JSON", () => {