Is this 15,000-character budget the same across every Claude Code version?
That figure is the current version's default, not a value that's been fixed since the Skill feature launched. A system-level budget ceiling like this is one of the parameters that tends to shift across Claude Code releases, and the community has observed this threshold moving slightly between versions. Rather than memorizing a fixed number, the more reliable habit is actually checking with --debug or /doctor — that way, however the official ceiling gets adjusted in the future, your diagnostic approach doesn't go stale.
If I raise the budget ceiling, does that permanently solve the problem?
Raising the budget postpones when the problem recurs, but it isn't a permanent fix. The reason this ceiling exists in the first place is essentially to protect the quality of the System Prompt itself — without any limit, a user running hundreds of Skills could see the Skill listing alone consume a substantial share of context, crowding out content actually needed for the task at hand. Raising the ceiling shifts the responsibility for deciding "which Skills deserve this space" away from the system's automatic drop mechanism and back onto you — you still need to periodically review your installed list and actively retire Skills you no longer use, or the raised budget just gets refilled by a new batch of Skills instead of actually solving anything.
Besides having its description dropped, what else can cause an installed Skill to never trigger?
Description budget overflow is just one cause. Other common ones the community has documented include: extra whitespace or text before the opening --- marker in the YAML Frontmatter, which causes the whole file to be treated as having no frontmatter at all; an unquoted colon inside the description that breaks YAML parsing; a description written too vaguely to cover the phrasing users actually use; and two Skills sharing the same name across different install locations (say, personal-level and project-level), where the version actually taking effect isn't the one you think you're editing.
All of these produce a very similar symptom — no error message, the Skill just quietly doesn't exist — so it's worth checking them in order during diagnosis rather than assuming upfront that the description must be the problem.
I've only installed three or four Skills — do I need to worry about this?
If you've only got a single-digit number of Skills installed, the description length alone usually isn't enough to hit the 15,000-character threshold — unless every single description is unusually long. This problem tends to surface once you've gradually accumulated a dozen or two Skills and custom slash commands, or installed a third-party Skill bundle that pulls in a large number of sub-skills at once (a marketplace package that installs a dozen-plus skills in one go, for instance).
Even if your current usage is nowhere near the threshold, it's still worth building the habit of confirming a newly installed Skill made it into the System Prompt with --debug — that way, you'll already know how your diagnostic tools work before you actually hit the problem, and by the time your Skill count really does climb, this won't be the first time you're facing a completely Silent Failure with no error message.
You've installed a Skill, written a specific and syntactically correct description in its YAML Frontmatter, and tested it — only to find Claude never triggers it. No error message, no warning; in the conversation, it's as if the Skill never existed. Most people's first instinct is to rewrite the description, but if the actual problem lies somewhere else, rewriting it a dozen more times won't fix anything.
At the start of every conversation, Claude Code compiles the name and description of every installed Skill and slash command into a single listing and injects it into the System Prompt. That listing has a total character budget, currently defaulting to 15,000 characters (roughly 4,000 tokens). When the number of installed Skills and commands is high enough that their combined description length exceeds this limit, Claude Code doesn't throw an error or display any warning on screen — it simply starts dropping descriptions from the list, and the drop order starts with whichever Skill has been triggered the fewest times.
This drop mechanism produces a particularly misleading consequence: a freshly installed Skill that hasn't been triggered yet has zero invocation history, which puts it first in line to be dropped. In other words, the more eager you are to test whether a new Skill works, the more likely it is to get cut from the system prompt entirely due to budget overflow — the "it's not triggering" you're seeing may never have been about a poorly written description at all. Claude simply never saw that description this conversation.
This also explains another common source of confusion: why the same Skill that triggered fine yesterday suddenly stops working today. If you installed a few more Skills or commands between yesterday and today, the combined character count may have just crossed that 15,000-character threshold, pushing a lower-invocation Skill further back out of the list. This fluctuation comes with no on-screen indication whatsoever, which easily gets misread as Claude itself becoming "less reliable" or "dumber."
When a Skill won't trigger, the diagnostic order the official documentation recommends is to first launch with claude --debug to check the Skill's loading status, or run /doctor for a configuration check, to confirm whether that Skill's description was actually included in the system prompt for this particular conversation — if it wasn't delivered at all, rewriting the description into any version whatsoever won't help, because the problem was never about the text content. Only once you've confirmed the description was delivered and Claude read it but still didn't trigger does it make sense to move on to checking whether the description itself is specific enough or covers the phrasing users actually use.
If you genuinely need to run a large number of Skills and commands at once, Claude Code offers an environment variable that raises this budget ceiling, giving more descriptions a chance to make it into the system prompt. But simply raising the ceiling only postpones when the problem recurs — if the number of Skills keeps growing, you'll eventually overflow it again. The more durable fix is periodically auditing your installed Skills, removing ones that haven't been triggered in a long time or that overlap in function with something else, so the budget goes to the Skills you actually use.
If your project or personal environment has more than a dozen or so Skills installed, it's worth building the habit of not judging a newly installed Skill's success purely by whether it "felt like it should have triggered" — instead, actually confirm with --debug or /doctor whether it made it into that conversation's system prompt. That check takes under a minute, but it lets you tell apart two completely different problems that need completely different fixes — "the Skill never got delivered" versus "the description isn't specific enough" — instead of repeatedly editing the wrong thing.