[BUG] Skill tool blocks invocation with "disable-model-invocation" on skills that do NOT have that flag set
Environment
- Claude Code: latest (Opus 4.7)
- Platform: Linux (Debian 13)
- Session type: interactive CLI
- Plugin: compound-engineering-plugin v2.65.0
Bug
The Skill tool rejects invocation of compound-engineering:ce-compound-refresh with:
Skill compound-engineering:ce-compound-refresh cannot be used with Skill tool due to disable-model-invocation
But the skill's SKILL.md frontmatter does NOT set disable-model-invocation: true. It only has name and description:
---
name: ce-compound-refresh
description: Refresh stale learning docs and pattern docs under docs/solutions/ by reviewing them against the current codebase...
---
The skill IS listed in available skills (visible in system prompt) and CAN be triggered by the user typing /compound-engineering:ce-compound-refresh directly. Only the Skill tool invocation path is blocked.
Repro
- Install compound-engineering plugin (v2.65.0)
- In an active session, attempt:
Skill(skill="compound-engineering:ce-compound-refresh") - Error fires immediately — skill never loads
Other skills from the same plugin work fine via Skill tool (e.g. compound-engineering:ce-compound).
Key observations
- The skill does NOT have
disable-model-invocation: truein frontmatter - The skill does NOT have
context: forkin frontmatter - The skill has a very long
descriptionfield (~750 chars) that contains trigger phrases - The skill IS available and IS listed in the system prompt skills list
- User-typed
/compound-engineering:ce-compound-refreshpresumably works (standard slash command path)
Hypothesis
The harness may be inferring disable-model-invocation behavior from the description content or length, rather than solely from the explicit frontmatter flag. The ce-compound-refresh description contains trigger phrases ("Trigger this skill when...", "Do not trigger for...") that might cause the harness to treat it as auto-trigger-only.
Workaround
Invoke the skill's content directly via an Agent tool with the skill's logic embedded in the prompt, bypassing the Skill tool.
Related issues
- #43809 — Skills with explicit
disable-model-invocation: truecannot be invoked by subagents - #51007 — Subagent
skills:preload doesn't inject content when skill hasdisable-model-invocation: true - #51165 — Skills with
context: forkfail with "disable-model-invocation" (different trigger, same error message)
This issue is distinct: the skill has NEITHER disable-model-invocation NOR context: fork, but is still blocked.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗