Feature: Deferred skill loading (like deferred tools)
Problem
Skill descriptions are injected into every system prompt message, consuming significant context tokens. With 60+ skills installed (from plugins like everything-claude-code, superpowers, cloudflare, etc.), this adds ~15-20k tokens of skill descriptions repeated in every turn's system reminder.
This is in contrast to deferred tools, which only inject their name into a lightweight index and load full schemas on demand via ToolSearch. Skills have no equivalent lazy-loading mechanism.
Impact
- Heavy plugin users (20+ plugins, 60+ skills) lose meaningful context to skill description overhead
- Skills for irrelevant languages/frameworks (Django, Spring Boot, Perl) inject into every session regardless of project type
- No project-level skill scoping — all skills load everywhere
- The only workaround is physically deleting skill files from the plugin cache (fragile, lost on update)
Proposed Solution
Deferred skill loading — same pattern already built for tools:
- Lightweight index: Inject only skill name + one-line trigger pattern into the system prompt (like deferred tools show only names)
- On-demand loading: Full skill content loaded via
Skilltool only when matched/invoked - Optional: Per-project skill allowlist in
.claude/settings.jsonto scope which skills are active
This would also enable:
- Plugin authors to ship large skill libraries without context tax
- Users to install broad plugins (ECC, superpowers) without paying for unused skills
- Better scaling as the plugin ecosystem grows
Current Workarounds
- Disabling entire plugins (loses hooks/agents/MCP servers bundled with skills)
- Deleting skill files from
~/.claude/plugins/cache/(lost on plugin update) - No per-skill or per-category disable mechanism exists
Context
Discovered during a context optimization session where the skill description list itself was a primary contributor to context consumption. The irony was not lost on us.
Environment
- Claude Code CLI
- Opus 1M context plan
- 22 plugins, 62 skills, 44 agents, 35 hooks, 13 MCP servers
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗