Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Analyze and improve the improvement process. Use for detecting regressions and meta-optimization.
.claude/skills/athola-metacognitive-self-mod/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 85% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 128% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 90% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 122% | 0% |
Analyze the effectiveness of past skill improvements and refine the improvement process itself. This is the core innovation from the Hyperagents paper: not just improving skills, but improving HOW skills are improved.
This skill should be invoked automatically when:
a skill's evaluation window ended in pending_rollback_review status. The improvement made things worse, and we need to understand why.
ImprovementMemory.get_effective_strategies() vs get_failed_strategies() shows effectiveness below 50%, the improvement process itself needs refinement.
PerformanceTracker.get_improvement_trend() returns negative for a skill that was recently improved.
(tracked via outcome count in ImprovementMemory).
The homeostatic monitor emits "improvement_triggered": true when a skill crosses the flag threshold. At that point, before dispatching the skill-improver, check if metacognitive analysis is warranted:
pythonfrom abstract.improvement_memory import ImprovementMemory from pathlib import Path memory = ImprovementMemory(Path.home() / ".claude/skills/improvement_memory.json") # Check if metacognitive analysis is warranted effective = memory.get_effective_strategies() failed = memory.get_failed_strategies() total = len(effective) + len(failed) needs_metacognition = False # Trigger 1: Low effectiveness rate if total >= 5 and len(effective) / total < 0.5: needs_metacognition = True # Trigger 2: Periodic check (every 10 outcomes) if total > 0 and total % 10 == 0: needs_metacognition = True # Trigger 3: Recent regression if failed and failed[-1].get("outcome_type") == "failure": needs_metacognition = True if needs_metacognition: # Run metacognitive analysis before next improvement pass # Skill(abstract:metacognitive-self-mod)
worked
Read improvement memory and performance tracker data:
bash# Check for improvement memory MEMORY_FILE=~/.claude/skills/improvement_memory.json TRACKER_FILE=~/.claude/skills/performance_history.json if [ ! -f "$MEMORY_FILE" ]; then echo "No improvement memory found." echo "Run skill-improver first to generate improvement data." exit 0 fi
Load the JSON files using Python:
pythonfrom abstract.improvement_memory import ImprovementMemory from abstract.performance_tracker import PerformanceTracker from pathlib import Path memory = ImprovementMemory(Path.home() / ".claude/skills/improvement_memory.json") tracker = PerformanceTracker(Path.home() / ".claude/skills/performance_history.json")
For each improvement outcome in memory, classify:
after_score - before_score >= 0.1-0.1 < improvement < 0.1after_score < before_scorepythoneffective = memory.get_effective_strategies() failed = memory.get_failed_strategies() # Calculate effectiveness rate total = len(effective) + len(failed) if total > 0: effectiveness_rate = len(effective) / total
Analyze WHAT types of improvements succeed vs fail:
Success patterns to look for:
Failure patterns to look for:
For each pattern found, record as a causal hypothesis:
pythonmemory.record_insight( skill_ref="_meta", # Special ref for meta-insights category="causal_hypothesis", insight="Error handling improvements have 85% success rate", evidence=["skill-A v1.1.0: +0.3", "skill-B v2.1.0: +0.15"], )
Use PerformanceTracker to identify:
pythonfor skill_ref in tracker.get_all_skill_refs(): trend = tracker.get_improvement_trend(skill_ref) if trend is not None: if trend > 0.05: # Sustained improvement - what's working? pass elif trend < -0.05: # Degrading despite improvements - investigate pass
Based on the meta-analysis, generate recommendations for the skill-improver:
types have higher improvement success rates, weight them higher.
success vs "restructure workflow" at 30%, bias toward error handling.
priority 3.0 consistently fail, raise the minimum threshold.
in future improvements.
Record all findings back into ImprovementMemory under the special _meta skill ref:
python# Record strategy recommendation memory.record_insight( skill_ref="_meta", category="strategy_success", insight="Recommendation: Prioritize error handling and examples over restructuring", evidence=[f"Success rate: error_handling={eh_rate:.0%}, restructure={rs_rate:.0%}"], )
If significant meta-insights are found, propose concrete modifications to the skill-improver agent:
Important: Propose changes, do not auto-apply. The user must approve modifications to the improvement process.
Metacognitive Self-Modification Report
Improvement Data:
Total outcomes analyzed: 15
Effective improvements: 11 (73%)
Regressions: 2 (13%)
Neutral: 2 (13%)
Success Patterns:
1. Error handling additions: 5/6 success (83%)
2. Example additions: 3/3 success (100%)
3. Quiet mode additions: 2/2 success (100%)
Failure Patterns:
1. Workflow restructuring: 1/3 success (33%)
2. Token-heavy additions: 0/1 success (0%)
Performance Trends:
Improving: 8 skills (positive trend)
Stable: 4 skills (no trend)
Degrading: 1 skill (negative trend despite attempts)
Recommendations:
1. Weight error handling improvements 2x in priority
2. Avoid workflow restructuring below priority 8.0
3. Cap additions at 200 tokens to prevent budget overflow
4. Focus next improvement cycle on degrading skill X
Meta-insights stored: 5 new entries in improvement memoryabstract:skill-improver - The agent this skill analyzesand proposes modifications for
abstract:skills-eval - Evaluation framework whosecriteria could be refined by meta-insights
abstract:aggregate-logs - Data source for improvementmetrics
counts) sourced from ~/.claude/skills/improvement_memory.json.
skill_ref: "_meta" inimprovement_memory.json with cited evidence (skill refs and score deltas).
rules, adjust thresholds) is presented as a proposal requiring explicit user approval before any change is applied.
primary trigger reason in the report output.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 20,248 | 8,960 | -56% | 1 | 1 | 0% | 3,481 | 2,609 | -25% | 0 | 0 | — |
case-02 | fail→fail | 17,946 | 8,734 | -51% | 1 | 1 | 0% | 2,888 | 2,718 | -6% | 0 | 0 | — |
case-03 | fail→fail | 4,902 | 9,254 | +89% | 1 | 1 | 0% | 256 | 2,771 | +982% | 0 | 0 | — |
case-04 | pass→fail | 11,356 | 6,301 | -45% | 1 | 1 | 0% | 1,852 | 2,479 | +34% | 0 | 0 | — |
case-05 | pass→pass | 18,617 | 9,994 | -46% | 1 | 1 | 0% | 3,581 | 3,717 | +4% | 0 | 0 | — |
case-06 | fail→fail | 5,422 | 5,267 | -3% | 1 | 1 | 0% | 713 | 2,356 | +230% | 0 | 0 | — |
case-07 | fail→pass | 8,660 | 2,338 | -73% | 1 | 1 | 0% | 1,382 | 2,553 | +85% | 0 | 0 | — |
case-08 | pass→pass | 4,192 | 4,189 | -0% | 1 | 1 | 0% | 617 | 2,898 | +370% | 0 | 0 | — |
case-09 | fail→pass | 7,952 | 2,070 | -74% | 1 | 1 | 0% | 1,074 | 2,444 | +128% | 0 | 0 | — |
case-10 | fail→pass | 10,478 | 3,774 | -64% | 1 | 1 | 0% | 1,510 | 2,762 | +83% | 0 | 0 | — |
case-11 | pass→pass | 11,088 | 3,770 | -66% | 1 | 1 | 0% | 1,559 | 2,764 | +77% | 0 | 0 | — |
case-12 | fail→pass | 11,680 | 7,058 | -40% | 1 | 1 | 0% | 1,687 | 3,208 | +90% | 0 | 0 | — |
case-13 | pass→pass | 8,950 | 6,136 | -31% | 1 | 1 | 0% | 1,274 | 3,166 | +149% | 0 | 0 | — |
case-14 | fail→pass | 9,804 | 4,280 | -56% | 1 | 1 | 0% | 1,283 | 2,844 | +122% | 0 | 0 | — |
case-15 | fail→pass | 6,960 | 2,252 | -68% | 1 | 1 | 0% | 924 | 2,411 | +161% | 0 | 0 | — |
case-16 | fail→pass | 11,930 | 3,007 | -75% | 1 | 1 | 0% | 1,836 | 2,558 | +39% | 0 | 0 | — |
case-17 | pass→pass | 10,284 | 9,175 | -11% | 1 | 1 | 0% | 1,487 | 3,611 | +143% | 0 | 0 | — |
case-18 | pass→pass | 15,254 | 7,889 | -48% | 1 | 1 | 0% | 2,204 | 3,294 | +49% | 0 | 0 | — |
case-19 | pass→pass | 9,084 | 7,421 | -18% | 1 | 1 | 0% | 1,334 | 3,246 | +143% | 0 | 0 | — |
case-20 | fail→pass | 18,245 | 4,006 | -78% | 1 | 1 | 0% | 1,712 | 2,825 | +65% | 0 | 0 | — |
case-21 | fail→pass | 7,501 | 2,256 | -70% | 1 | 1 | 0% | 1,188 | 2,457 | +107% | 0 | 0 | — |
case-22 | pass→pass | 8,428 | 6,774 | -20% | 1 | 1 | 0% | 1,199 | 3,176 | +165% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.