-
-
Notifications
You must be signed in to change notification settings - Fork 307
Description
Problem
When a standalone skill has disable-model-invocation: true in its SKILL.md frontmatter, the skill is completely excluded from the system-reminder's available skills list. This means even when a user explicitly types $skill-name or /skill-name, the model cannot invoke it via the Skill tool because it doesn't appear in the available skills.
Expected Behavior
disable-model-invocation: true should only prevent the model from proactively invoking the skill on its own. When a user explicitly requests a skill via $skill-name, it should still work — the user's intent is clear.
Current Behavior
The flag completely removes the skill from the model's available skills list, making it impossible to invoke in any way (including explicit user request).
Reproduction
- Create
~/.claude/skills/my-skill/SKILL.mdwith:--- name: my-skill description: My test skill disable-model-invocation: true --- # My skill content
- In a session, type
$my-skill - Model responds: "The skill 'my-skill' is not available"
Suggested Fix
When building the available skills list for the system-reminder, include skills with disable-model-invocation: true but mark them as "user-invocable only". The model should be instructed not to invoke these proactively, but should honor explicit user requests.
Analysis
The skill discovery in cli/src/modules/common/skills.ts returns all skills (no filtering by frontmatter). The filtering by disable-model-invocation happens upstream when generating the system-reminder. The fix should be in the system-reminder generation logic — either:
- Include
disable-model-invocationskills in the available list with an annotation - Or separate "model-invocable" vs "user-invocable" skill categories in the system-reminder