LaunchKit · 2026
Back to Skills

iterative-code-evolution

Systematically improve code through structured analysis-mutation-evaluation loops.

0
550 downloads
by @aaronjmars

Setup & Installation

openclaw skills install @aaronjmars/iterative-code-evolution

Or with the ClawHub CLI, for registry-managed skill folders outside a full OpenClaw workspace:

npx clawhub install iterative-code-evolution

What This Skill Does

A structured methodology for improving code through repeated analyze-plan-mutate-verify-score-archive cycles, adapted from the ALMA research framework. Each cycle is logged in `.evolution/log.json`, so lessons from past iterations inform the next change. Designed for situations where ad-hoc fixes keep failing.

Unlike ad-hoc iteration, it enforces a maximum of 3 changes per cycle and requires every change to link to a specific observation, making it possible to attribute improvements or regressions accurately.

When to use it

  • Debugging a web scraper that fails on 40% of target pages
  • Optimizing a slow database query through multiple profiling rounds
  • Improving an LLM prompt pipeline with structured variant tracking
  • Breaking out of a debugging loop after two or more failed fix attempts
  • Evolving an agent's memory design through principled experimentation

Example Workflow

Here's how your AI assistant might use this skill in practice.

INPUT

User asks: improve a web scraper that fails on 40% of target pages

AGENT
  1. 1Assess each component: marks parse_html() as Broken (crashes on pages without <article>), fetch_page() as Working, extract_links() as Fragile
  2. 2Plan one targeted change: add fallback selectors in parse_html() for pages missing <article>
  3. 3Mutate the code: add cascading selector logic trying <article>, then <main>, then <body>
  4. 4Verify: run the scraper against the same test pages, confirm no crashes
  5. 5Score and archive: pass rate rises from 40% to 72%, log the change and record the learned principle
OUTPUT

Pass rate reaches 88% after a second cycle fixing relative URL resolution in extract_links(), with both cycles logged in .evolution/log.json