Skip to main content
skills-not-mcp

skills-not-mcp

80-90% fewer tokens with Skills + Shell vs MCP

Github


ToC


About

80-90% token savings by replacing MCP with Skills + Shell scripts.

18 MCP tools from pal-mcp-server converted to:

  • Claude Skills (commands/*.md) - slash command interface
  • Shell scripts (scripts/*.sh) - actual execution
approachtokens loadedsavings
MCP (18 tools)~12,500 alwaysbaseline
Skills + Shell~50 per call80-90%

MCP loads all 18 tool schemas (~700 tokens each) into context whether you use them or not.

Skills + Shell loads nothing until called- then only the output.

Conversion Table

#MCP (before ❌)Skill (after ✅)Shell (after ✅)
1tools/chat.pycommands/chat.mdscripts/chat.sh
2tools/thinkdeep.pycommands/thinkdeep.mdscripts/thinkdeep.sh
3tools/consensus.pycommands/consensus.mdscripts/consensus.sh
4tools/codereview.pycommands/codereview.mdscripts/codereview.sh
5tools/debug.pycommands/debug.mdscripts/debug.sh
6tools/planner.pycommands/planner.mdscripts/planner.sh
7tools/analyze.pycommands/analyze.mdscripts/analyze.sh
8tools/refactor.pycommands/refactor.mdscripts/refactor.sh
9tools/testgen.pycommands/testgen.mdscripts/testgen.sh
10tools/secaudit.pycommands/secaudit.mdscripts/secaudit.sh
11tools/docgen.pycommands/docgen.mdscripts/docgen.sh
12tools/apilookup.pycommands/apilookup.mdscripts/apilookup.sh
13tools/challenge.pycommands/challenge.mdscripts/challenge.sh
14tools/tracer.pycommands/tracer.mdscripts/tracer.sh
15tools/clink.pycommands/clink.mdscripts/clink.sh
16tools/precommit.pycommands/precommit.mdscripts/precommit.sh
17tools/listmodels.pycommands/listmodels.mdscripts/listmodels.sh
18tools/version.pycommands/version.mdscripts/version.sh

Source: pal-mcp-server

Pattern

Deterministic delegation: Skills orchestrate, Shell executes

┌─────────────────────────────────────────────────────────────┐
│ MCP APPROACH │
│ │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ tool 1 │ │ tool 2 │ │ tool 3 │ │ ...18 │ │
│ │ ~700 │ │ ~700 │ │ ~700 │ │ tokens │ │
│ └────────┘ └────────┘ └────────┘ └────────┘ │
│ │
│ COST: ~12,500 tokens ALWAYS LOADED │
│ SAVINGS: 0% │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│ SKILLS + SHELL (Deterministic Delegation) │
│ │
│ ┌────────┐ │
│ │ /skill │ ────> shell script ────> output │
│ │ ~50 tok│ (external) (only this) │
│ └────────┘ │
│ │
│ COST: ~50 tokens + output only │
│ SAVINGS: 80-90% │
└─────────────────────────────────────────────────────────────┘

Flow:

USER                    AI                      SHELL
│ │ │
│ "/chat review this" │ │
│ ───────────────────> │ │
│ │ exec chat.sh │
│ │ ────────────────────> │
│ │ │
│ │ ┌─────────────────┤
│ │ │ - parse args │
│ │ │ - detect model │
│ │ │ - call API │
│ │ │ - format output │
│ │ └─────────────────┤
│ │ │
│ │ JSON result │
│ │ <──────────────────── │
│ │ │
│ formatted response │ │
│ <─────────────────── │ │

Layers:

┌────────────────────────────────────────────────┐
│ LAYER 1: SKILL (orchestrator) │
│ commands/*.md │
│ - slash commands, routing, ~50 tokens each │
└────────────────────────────────────────────────┘
│ delegates to

┌────────────────────────────────────────────────┐
│ LAYER 2: SHELL (execution) │
│ scripts/*.sh │
│ - actual logic, 0 tokens til called │
└────────────────────────────────────────────────┘
│ calls

┌────────────────────────────────────────────────┐
│ LAYER 3: PROVIDER (external) │
│ Anthropic / OpenAI / Ollama / etc │
└────────────────────────────────────────────────┘
propertyMCPSkills + Shell
schema loadingalways (~12.5k)never
token savings0%80-90%
executionprobabilisticdeterministic
debuggingopaquebash -x script.sh

How to build

git clone https://github.com/vdutts7/skills-not-mcp.git
cd skills-not-mcp/scripts

API keys:

export ANTHROPIC_API_KEY="sk-..."
export CEREBRAS_API_KEY="..."
# or local Ollama (no key)

Usage

# claude
./chat.sh -m claude-sonnet-4-20250514 "structure this API?"

# ollama (free/local)
./chat.sh -m qwen2.5-coder:7b "review this"

# file context
./chat.sh -f src/main.py -f src/utils.py "explain flow"

# multi-turn
./chat.sh -c sess1 "design cache"
./chat.sh -c sess1 "redis vs memcached?"

# code review
./codereview.sh -m llama-3.3-70b -f src/auth.py

# demo
./demo.sh
providermodelsenv
anthropicAnthropicsonnet-4, opus-4ANTHROPIC_API_KEY
cerebrasCerebrasllama-3.3-70b, qwen-3-32bCEREBRAS_API_KEY
ollamaOllamaqwen2.5-coder, llama, mistrallocal
openaiOpenAIgpt-4o, o1, o3OPENAI_API_KEY
geminiGemini2.0-flashGEMINI_API_KEY
openrouterOpenRouteranyOPENROUTER_API_KEY

Tools

Zsh Claude Model Context Protocol (MCP) SKILL.md

Contact

websiteTwitter