git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/frustration-eradication" ~/.claude/skills/majiayu000-claude-skill-registry-frustration-eradication && rm -rf "$T"
skills/data/frustration-eradication/SKILL.mdFrustration 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 persist -
Add to this skill's checklist:
new_pattern: check: how_to_detect enforcement: how_to_prevent -
Propagate 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
— Propagates constraints to all agentsruler
— Runtime validationself-validation-loop
— Verifies equivalence across agentsbisimulation-game
— Improves skills over timeskill-evolution
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
: 139 citations in bib.duckdbcategory-theory
SDF Interleaving
This skill connects to Software Design for Flexibility (Hanson & Sussman, 2021):
Primary Chapter: 10. Adventure Game Example
Concepts: autonomous agent, game, synthesis
GF(3) Balanced Triad
frustration-eradication (+) + SDF.Ch10 (+) + [balancer] (+) = 0
Skill Trit: 1 (PLUS - generation)
Secondary Chapters
- Ch7: Propagators
- Ch4: Pattern Matching
- Ch6: Layering
Connection Pattern
Adventure games synthesize techniques. This skill integrates multiple patterns.
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.