week I noticed my Claude Code token usage was through the roof. £100/week higher than normal.

I dug in and found the issue: Claude Code loads EVERY skill in your skills folder into the context window by default.

My .claude/skills/ folder had:

  • 195 skills

  • 1.3MB of content

  • 220,750 tokens wasted before I even typed a prompt

That's your entire 128K context window eaten by skills you're not even using.

The Discovery: Skills Are Bloated

The worst offenders:

  • last30days skill: 66.9KB (16,725 tokens)

  • ads-plan assets: 81.5KB across 9 files (20,375 tokens)

  • writing-skills: 45.8KB (11,450 tokens)

Total waste: ~127,200 tokens just on these three skills. You're paying for content that loads automatically, whether you use it or not.

The 3-Step Fix I Built in 10 Minutes

Step 1: The Scanner

python
#!/usr/bin/env python3

skill-scanner.py - Find bloated skills

import os
from pathlib import Path

skills_dir = Path.home() / ".claude" / "skills"
bloated = []

for skill_file in skills_dir.glob("*.md"):
size_kb = skill_file.stat().st_size / 1024
if size_kb > 3: # Skills over 3KB are bloated
bloated.append({
'name': skill_file.stem,
'size_kb': size_kb,
'path': skill_file
})

print(f"Found {len(bloated)} bloated skills:")
for skill in sorted(bloated, key=lambda x: x['size_kb'], reverse=True)[:10]:
print(f" {skill['name']:30} {skill['size_kb']:6.1f}KB")

Run it: python3 skill-scanner.py

Step 2: The Mover

python
#!/usr/bin/env python3

skill-mover.py - Safely backup bloated skills

import shutil
from pathlib import Path

skills_dir = Path.home() / ".claude" / "skills"
backup_dir = Path.home() / ".claude" / "skills-backup"
backup_dir.mkdir(exist_ok=True)

Move all .md files >3KB

for skill_file in skills_dir.glob("*.md"):
if skill_file.stat().st_size / 1024 > 3:
dest = backup_dir / skill_file.name
shutil.move(str(skill_file), str(dest))
print(f"Moved: {skill_file.name}")

print(f"\n✅ Originals safe in: {backup_dir}")

Run it: python3 skill-mover.py

Step 3: The Optimizer

python
#!/usr/bin/env python3

skill-optimizer.py - Create minimal versions

from pathlib import Path

backup_dir = Path.home() / ".claude" / "skills-backup"
minimal_dir = Path.home() / ".claude" / "skills-minimal"
minimal_dir.mkdir(exist_ok=True)

for skill_file in backup_dir.glob("*.md"):
# Read original
with open(skill_file, 'r') as f:
content = f.read()

# Keep first 50 lines (essential content)
lines = content.split('\n')
minimal_content = '\n'.join(lines[:50])

# Add note about full version
minimal_content += f"\n\n---\n# Minimal version\nFull skill: {skill_file}\n"

# Save
minimal_path = minimal_dir / f"{skill_file.stem}-minimal.md"
with open(minimal_path, 'w') as f:
    f.write(minimal_content)

print(f"Created: {minimal_path.name}")

print(f"\n✅ Minimal versions in: {minimal_dir}")
print(f"📁 Copy to skills folder: cp {minimal_dir}/*.md ~/.claude/skills/")

Run it: python3 skill-optimizer.py

The Complete Script (All 3 Steps Combined)

python
#!/usr/bin/env python3
"""
Claude Code Skill Optimizer - Complete 3-Step Fix
Saves 220K+ tokens per session
"""

import os
import shutil
from pathlib import Path

def main():
print("🔧 Claude Code Skill Optimizer")
print("=" * 50)

# Paths
home = Path.home()
skills_dir = home / ".claude" / "skills"
backup_dir = home / ".claude" / "skills-backup"
minimal_dir = home / ".claude" / "skills-minimal"

# Create directories
backup_dir.mkdir(exist_ok=True)
minimal_dir.mkdir(exist_ok=True)

# Step 1: Scan
print("\n1️⃣ SCANNING for bloated skills (>3KB)...")
bloated = []
for skill_file in skills_dir.glob("*.md"):
    size_kb = skill_file.stat().st_size / 1024
    if size_kb > 3:
        bloated.append({'file': skill_file, 'size_kb': size_kb})

if not bloated:
    print("✅ No bloated skills found!")
    return

total_kb = sum(s['size_kb'] for s in bloated)
print(f"   Found {len(bloated)} skills ({total_kb:.1f}KB total)")

# Step 2: Move
print("\n2️⃣ MOVING originals to backup...")
for skill in bloated:
    dest = backup_dir / skill['file'].name
    shutil.move(str(skill['file']), str(dest))

# Step 3: Create minimal versions
print("\n3️⃣ CREATING minimal versions...")
for skill_file in backup_dir.glob("*.md"):
    with open(skill_file, 'r') as f:
        content = f.read()
    
    # Keep essential content (first 50 lines)
    lines = content.split('\n')
    minimal = '\n'.join(lines[:50])
    minimal += f"\n\n---\n# Minimal version\nFull skill available at: {skill_file}"
    
    # Save
    minimal_path = minimal_dir / f"{skill_file.stem}-minimal.md"
    with open(minimal_path, 'w') as f:
        f.write(minimal)

# Results
print("\n✅ OPTIMIZATION COMPLETE!")
print("=" * 50)

estimated_tokens = total_kb * 250  # ~250 tokens per KB
weekly_savings = estimated_tokens * 0.000002 * 30  # £0.000002 per token × 30 sessions

print(f"Skills optimized: {len(bloated)}")
print(f"Original size:    {total_kb:.1f}KB")
print(f"Tokens saved:     ~{estimated_tokens:,.0f} per session")
print(f"Weekly savings:   £{weekly_savings:.0f}")

print(f"\n📁 Backup:    {backup_dir}")
print(f"📁 Minimal:   {minimal_dir}")
print(f"\n🎯 Final step: cp {minimal_dir}/*.md {skills_dir}/")

if name == "main":
main()

The Results

Before:

  • 195 skills, 1.3MB, 220,750 tokens wasted

  • Context window: 100% full before typing

  • Cost: £100+/week in wasted tokens

After:

  • Minimal skills, 448KB, 74,000 tokens

  • Context window: 58% free for actual work

  • Savings: £50-80/week immediately

Why This Matters

  1. Claude Code's design flaw: It loads ALL skills by default

  2. Hidden cost: You're paying for content you're not using

  3. Simple fix: 50 lines of Python saves thousands

  4. Reusable: Works for any Claude Code user

Download & Run

  1. Run: python3 skill-optimizer.py

  2. Follow the 3 steps

  3. Restart Claude Code

Time: 10 minutes

Savings: £50-100/week

ComplTags: #ClaudeCode #Python #AIAutomation #TokenOptimization #DeveloperTools #CostSaving #AICoding #TechTips #OpenSource

Hope this helps

Mike