| name | frustration-eradication |
| description | Frustration Eradication Skill |
| version | 1.0.0 |
Frustration Eradication Skill
Layer 0: Pre-Response Validation for Persistent User Preferences
Version: 1.0.0
Trit: -1 (MINUS - Validator/Constrainer)
Bundle: meta-enforcement
Overview
This skill enforces user preferences that historically don't persist across sessions. It implements the Frustration Index — a ranked list of patterns where repeated requests fail to stick.
Core Insight: Preferences stated once should persist forever. This skill validates every response against known frustration patterns before output.
Frustration Index (Ranked by Persistence Score)
| Rank | Pattern | Persistence | Enforcement |
|---|---|---|---|
| 1 | Banned voices (Daniel, novelty) | 2/10 | Voice allowlist check |
| 2 | Subagent bypass | 2/10 | Task tool mandate |
| 3 | derive-resource-account-address | 3/10 | Aptos wallet validation |
| 4 | web_search vs Exa | 3/10 | MCP tool inheritance |
| 5 | Sequential vs parallel | 4/10 | Trifurcation default |
| 6 | Response verbosity | 4/10 | Line count check |
| 7 | GF(3) conservation | 5/10 | Σ trits = 0 assertion |
| 8 | Comments in code | 5/10 | Comment detection |
| 9 | Declarative preference | 6/10 | Config lang suggestion |
| 10 | 3 skills per interaction | 6/10 | Skill count check |
Pre-Response Validation Checklist
Before EVERY response, validate:
frustration_checklist:
voices:
banned: [all native en_* voices - Samantha, Ava, Karen, Daniel, etc.]
allowed: [_, non-English voices speaking English, novelty voices for effects]
rule: ALL skills use "say -v _" - say-narration resolves voice
subagents:
rule: "NEVER say 'I'll implement instead of subagents'"
enforcement: use_task_tool_for_parallel_work
search:
banned: web_search (in Task subagents)
required: mcp__exa__* tools
pass_to_subagent: "CRITICAL: Use mcp__exa__web_search_exa, NOT web_search"
parallelism:
default: trifurcate_into_3_task_agents
sequential_requires: explicit_justification
verbosity:
max_lines: 4 (unless user asks for detail)
no_summaries: true
no_preamble: true
no_postamble: true
code:
no_comments: true (unless requested)
no_ts_ignore: true
no_as_any: true
gf3:
conservation: Σ trits ≡ 0 (mod 3)
verify_after: every_trifurcation
skills:
per_interaction: 3
include: plurigrid-asi-integrated
assign_trits: [-1, 0, +1]
aptos:
banned: derive-resource-account-address (for wallets)
validate_before: any_funding_operation
Validation Functions
1. validate_voices
# Check for banned voices in response
validate_voices() {
local banned="Daniel|Albert|Bad News|Bells|Boing|Bubbles|Cellos|Zarvox"
if echo "$RESPONSE" | grep -qE "say -v ($banned)"; then
echo "❌ BANNED VOICE DETECTED"
return 1
fi
return 0
}
2. validate_subagent_usage
def validate_subagent_usage(response: str) -> bool:
"""Ensure Task tool is used for parallel work."""
banned_phrases = [
"I'll implement instead of subagents",
"I'll do this sequentially",
"Let me handle this myself"
]
for phrase in banned_phrases:
if phrase.lower() in response.lower():
return False
return True
3. validate_search_tools
def validate_task_prompt(prompt: str) -> str:
"""Inject Exa requirement into Task prompts."""
exa_warning = """
CRITICAL: Do NOT use web_search. Use only:
- mcp__exa__web_search_exa for semantic search
- mcp__exa__crawling_exa for URL content
- finder, Grep, Read for local files
"""
return prompt + "\n\n" + exa_warning
4. validate_gf3_conservation
def validate_gf3(trits: list[int]) -> bool:
"""Verify GF(3) conservation: Σ trits ≡ 0 (mod 3)."""
return sum(trits) % 3 == 0
5. validate_response_length
def validate_verbosity(response: str, max_lines: int = 4) -> bool:
"""Check response doesn't exceed line limit."""
lines = [l for l in response.split('\n') if l.strip()]
# Exclude code blocks and tool outputs
prose_lines = [l for l in lines if not l.startswith('```')]
return len(prose_lines) <= max_lines
Integration with Ruler
This skill's constraints are automatically propagated via Ruler to:
~/.ruler/AGENTS.md # Source of truth
~/.claude/CLAUDE.md # Claude Code
~/.cursor/rules/ # Cursor
~/.codex/instructions.md # Codex
~/.amp/AGENTS.md # Amp
# ... 67+ more agent configs
Triadic Role
| Trit | Skill | Function |
|---|---|---|
| -1 | frustration-eradication | Validate/Constrain |
| 0 | ruler | Coordinate/Propagate |
| +1 | skill-evolution | Generate/Improve |
Conservation: (-1) + (0) + (+1) = 0 ✓
Usage
Automatic (Recommended)
Load this skill at session start:
skill frustration-eradication
It will automatically inject validation into the response pipeline.
Manual Validation
# Check current response for violations
just frustration-check
# Scan all skills for banned patterns
just frustration-scan-skills
# Update Frustration Index with new pattern
just frustration-add "pattern_name" "evidence" "persistence_score"
Adding New Frustration Patterns
When you identify a new pattern that doesn't persist:
Document in FRUSTRATION_INDEX.md:
### N. **Pattern Name** — Persistence Score: X/10 **Pattern**: Description **Evidence**: Where it fails **Root Cause**: Why it doesn't persistAdd to this skill's checklist:
new_pattern: check: how_to_detect enforcement: how_to_preventPropagate via Ruler:
just ruler-propagate
Prediction Market Integration
Each frustration pattern has betting odds in prediction.move:
// Market outcomes map to GF(3) trits
// 0 = MINUS (pattern persists = bad)
// 1 = ERGODIC (partial fix)
// 2 = PLUS (pattern fixed = good)
Related Skills
ruler— Propagates constraints to all agentsself-validation-loop— Runtime validationbisimulation-game— Verifies equivalence across agentsskill-evolution— Improves skills over time
Commands
just frustration-check # Validate current session
just frustration-scan # Find all violations
just frustration-fix # Auto-fix known patterns
just frustration-report # Generate compliance report
just frustration-propagate # Push to all agents via Ruler
"The best frustration is the one that never happens."
GF(3) Trit: -1 (VALIDATOR — preventing frustration before it occurs)
Scientific Skill Interleaving
This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:
Graph Theory
- networkx [○] via bicomodule
- Universal graph hub
Bibliography References
category-theory: 139 citations in bib.duckdb
Cat# Integration
This 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
GF(3) Naturality
The skill participates in triads satisfying:
(-1) + (0) + (+1) ≡ 0 (mod 3)
This ensures compositional coherence in the Cat# equipment structure.