diff --git a/docs/tools/skills.md b/docs/tools/skills.md
index 37f1e0dc540..b9320c6b029 100644
--- a/docs/tools/skills.md
+++ b/docs/tools/skills.md
@@ -188,7 +188,9 @@ instructions to reference the skill folder path.
When `true`, the skill is exposed as a user slash command.
- 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`.
When set to `tool`, the slash command bypasses the model and dispatches directly to a tool.
diff --git a/src/cli/skills-cli.format.ts b/src/cli/skills-cli.format.ts
index 107620efe3e..acbeb8d6b13 100644
--- a/src/cli/skills-cli.format.ts
+++ b/src/cli/skills-cli.format.ts
@@ -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:"));
diff --git a/src/cli/skills-cli.test.ts b/src/cli/skills-cli.test.ts
index becc702b874..9c445b5185e 100644
--- a/src/cli/skills-cli.test.ts
+++ b/src/cli/skills-cli.test.ts
@@ -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", () => {