Lazy-load skill descriptions instead of injecting all into system prompt
Problem
All installed skill descriptions are injected into the system prompt on every message, regardless of whether any skill will be used in the session. With 58 skills installed, this costs ~1,400 tokens per message — tokens that are wasted 99% of the time since most sessions use 0 skills, and the rare session that does use one uses exactly 1.
The justification would be "the model needs to know skills exist to suggest them," but in practice this never happens. Users invoke skills explicitly by typing /skill-name. The model doesn't proactively suggest running skills.
Proposal
Two-tier loading:
- Always loaded: Just skill names as a flat list (~50 tokens for 58 skills instead of ~1,400)
- On demand: Full skill description loaded only when the user types
/skill-nameor the model invokes one via the Skill tool
This is essentially how tool descriptions could work — the model sees enough to know a skill exists, and gets the full prompt only when it's actually needed.
Impact
- Saves ~1,400 tokens/message for a typical skill library (scales with number of installed skills)
- No functional regression — users already invoke skills explicitly
- Frees context for actual conversation content
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗