Manually invoked skill mandates silently ignored when followed by long user prompt (v2.1.98)
Summary
When a skill is manually invoked via /skill-name and followed by a long user message, the process mandates inside the skill (approval gates, planning templates, handoff protocols) are silently ignored. Short prompts after the same invocation work correctly. The skill content is clearly being loaded — the model just doesn't comply with the process mandates when the user prompt is long enough to dominate attention.
This is a compliance regression, not an activation/discovery regression. The skill is manually invoked and its content is loaded. The model reads it and then skips the process steps.
Environment
- Claude Code version: 2.1.98 (April 9, 2026 release)
- Model: Opus 4.6 (
claude-opus-4-6[1m]) - Platform: macOS (Darwin 25.4.0)
Repro
- Define a routing/orchestration skill that contains mandated process steps — e.g., a playbook that requires:
- Classifying the request into a phase before doing work
- Running a pre-scan protocol before spawning any expensive subagent
- Presenting an approval gate between each phase
- Writing a plan using a prescribed template before touching code
- Manually invoke it with a long user message:
/routing-skill <several paragraphs of task detail describing the feature> - Observe: the model jumps straight to task execution. Approval gates are skipped. The planning template is not used. Pre-scan is not run. The handoff protocol is not followed.
- Compare: invoke the same skill with a short prompt:
/routing-skill fix bug in X— mandates are respected, phases run in order, gates appear.
Expected
Manually invoked skill content should bind model behavior regardless of the length of the user prompt that follows the invocation. Process mandates should have equal or greater weight than freeform user task description.
Actual
- Short user prompt after
/skill→ mandates respected. - Long user prompt after
/skill→ process mandates (gates, templates, handoffs) are silently dropped; content-level instructions inside the skill are still partially followed. - The longer and more detailed the user message, the more consistently the process steps get skipped.
Concrete example
A project-local orchestration skill (.claude/skills/director/SKILL.md) acts as a phase playbook: it classifies the request, mandates a pre-scan before spawning expensive agents, and requires an approval gate between phases (investigate → plan → build → review). It has worked reliably on this codebase since February 2026. Starting April 8–9, when invoked with a long task description, the model reads the skill and then immediately starts implementing — no classification, no pre-scan, no approval gate, no planning template. Invoking the same skill on a short request still behaves correctly.
Timeline
- Worked reliably since February 2026 (~2 months).
- Broke starting April 8–9, 2026.
- No local changes to the skill files on those dates.
Hypothesis
Prompt assembly in v2.1.98 may have altered the ordering or relative weighting of skill content vs. user text. When the user prompt is long, attention shifts toward the detailed task description and skill mandates are deprioritized as background context rather than treated as binding instructions.
Potentially related context:
- v2.1.98 changelog entry: "fixed plugin skill hooks defined in YAML frontmatter being silently ignored" — indicates the skill delivery/assembly layer was actively being changed in this release.
- v2.1.98 also changed plugin skill invocation naming (frontmatter
namevs directory basename). - New
disableSkillShellExecutionsetting. - Reports of a server-side model behavior change around the same window.
Distinct from existing skill issues
This is not a skill activation problem — the skill is manually invoked and its content is loaded. The regression is in compliance with skill content, specifically the process/workflow mandates, and it is triggered by user-message length, not by description-based routing. I couldn't find an existing issue describing this specific length-dependent trigger pattern.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗