Cheapskate Skill
Trit: -1 (MINUS - validator/constrainer) Purpose: Every token must pay rent. No freeloaders.
A token pays rent if it:
| Freeloader | Example | Eviction |
|---|---|---|
| Preamble | "I'll help you with..." | Delete |
| Hedging | "It seems like maybe..." | State directly |
| Restating | "You asked me to..." | Skip |
| Filler | "Let me think about..." | Just do |
| Over-explaining | 3 paragraphs for 1 line fix | Code only |
| Permission-seeking | "Should I proceed?" | Proceed |
| Apologies | "Sorry, I..." | Fix it |
| Summaries | "To summarize..." | Stop |
| Pattern | Cost | Fix |
|---|---|---|
| Reading entire files | High | Use line ranges [1, 50] |
| Sequential tool calls | Medium | Parallelize independents |
| Explaining before doing | Medium | Just do it |
| Asking permission | Low-Medium | Act, don't ask |
| Repeating user's question | Low | Skip acknowledgment |
| Long error explanations | Medium | Terse: "Error: X. Fix: Y" |
| Multiple edit iterations | High | Plan first, single edit |
| Loading unused skills | Medium | Load on-demand |
# Bad: Read full 2000-line file
Read("/path/to/big.py")
# Good: Read relevant section
Read("/path/to/big.py", [100, 150])
# Better: Grep first, then targeted read
Grep("def target_function", path="/path/to/big.py")
Read("/path/to/big.py", [142, 165])
# Bad: Sequential
Read(file1) ā Read(file2) ā Read(file3)
# Good: Parallel (single message, 3 tool calls)
Read(file1) | Read(file2) | Read(file3)
# Bad: Heavy work in main thread (tokens visible)
[read 10 files, analyze, generate report]
# Good: Subagent isolation (only summary returned)
Task("Analyze 10 files, return 3-line summary")
# Bad (47 tokens)
"I'll help you implement that feature. Let me start by
examining the codebase to understand the current architecture,
then I'll make the necessary changes..."
# Good (3 tokens)
[starts making changes]
| Operation | ~Tokens |
|---|---|
| Read 100 lines code | 400-800 |
| Grep results (10 matches) | 200-400 |
| Edit file | 100-300 |
| Skill load | 500-2000 |
| Task subagent prompt | 200-500 |
| Task subagent result | 100-500 |
| Web search result | 500-1500 |
| Mermaid diagram | 100-300 |
Before responding:
As MINUS (-1) validator:
Σ(generator_tokens) + Σ(validator_savings) ┠0 (mod 3)
scripts/evict.sh < output.txt
# Highly compressible = repetitive = freeloaders
ratio = len(zlib.compress(text)) / len(text)
if ratio < 0.3: EVICT
# Count tool calls vs prose tokens
work_tokens = count_code_blocks() + count_tool_calls()
prose_tokens = total - work_tokens
if prose_tokens / total > 0.7: EVICT
# Chain validators
output | accept-no-substitutes/scripts/validate.sh | cheapskate/scripts/evict.sh
Both skills emit MINUS (-1) on rejection:
accept-no-substitutes: rejects incomplete workcheapskate: rejects work that doesn't work# Evict freeloaders from output
scripts/evict.sh < output.txt
# Analyze thread token efficiency
just cheapskate-analyze <thread-id>
# Estimate remaining budget
just cheapskate-budget
# Compress context
just cheapskate-compress
parallel-fanout - Efficient parallel dispatchtriad-interleave - Balanced token streamsfrustration-eradication - Don't waste tokens on frustrationThis skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:
general: 734 citations in bib.duckdbThis skill maps to Cat# = Comod(P) as a bicomodule in the equipment structure:
Trit: 0 (ERGODIC)
Home: Prof
Poly Op: ā
Kan Role: Adj
Color: #26D826
The skill participates in triads satisfying:
(-1) + (0) + (+1) ā” 0 (mod 3)
This ensures compositional coherence in the Cat# equipment structure.