Skip to main content
Kodelyth ECC
Changelog

Release history

Live-verified releases pulled from the kodelyth-ecc repo. Last 10 highlighted below, full history further down.

Latest 10 releases

v2.5.4 · Memory: direct capture CLI + aggressive auto-capture

July 2026

Two memory improvements after an end-to-end verification pass confirmed the pipeline works but only captured when the user said "thanks".

Added

  • kodelythecc memory subcommand — manage the local BM25 memory directly:
- memory capture --problem "…" --approach "…" [--tags a,b] [--language ts] [--files a,b] — store a fix on the spot, no review queue - memory recall "" [--limit N] — BM25 search - memory list · memory stats - Wired into --help (kodelythecc memory --help).

Changed

  • Auto-capture is now more aggressive. Previously it only queued a memory when a user message contained a success phrase ("that worked", "perfect", "thanks"). It now also captures on a real verification signal — an Edit/Write followed by a passing test or successful build (exit code 0, tests passed, build succeeded, PASS, …) — even without a spoken acknowledgement. This catches fixes you verified but never verbally confirmed. Opt out with KODELYTH_CAPTURE_AGGRESSIVE=0.

Verified

  • End-to-end: capture → persist → recall across processes; auto-recall hook injects past fixes; auto-capture hook queues from a real .message-nested transcript; doctor memory checks pass.
  • New regression tests: aggressive path captures without "thanks"; opt-out flag disables it. Full suite 0 failures.

v2.5.3 · Devil Mode + Memory cards for "How it works"

July 2026

Added

  • social/card-devil.svg — Devil Mode feature card: "8 agents that attack your code first", the 8-agent adversarial grid + /devil-mode --all. Red accent.
  • social/card-memory.svg — Compound Memory card: "It remembers what worked last time", the BM25 recall flow (prompt → recalled fix → injected into context). Violet accent.
  • Both wired into the site's "How it works" showcase — now 8 features (routing, RTK, Terse, codebase, MCP, CLI, devil mode, memory), all in the taller card format with summaries.

Changed

  • SVG version badges v2.5.2 → v2.5.3; 8K PNGs re-rendered across the set.
  • Fresh GitHub social preview render (196 skills, v2.5.3) at 8K + upload-ready 2×.

v2.5.2 · Broken README image fix + brand polish

July 2026

Fixed

  • README lockup was a broken image on GitHub and npm. The header referenced brand/ecc-lockup-*.png, but .gitignore excludes brand/**/*.png (SVG-only policy) so the PNGs were never committed. Switched the README to the committed SVG lockups — renders on both.
  • Stale counts across social SVGs: 194 → 196 skills, 373 → 388 tests (readme-hero, og-image, github-social-preview, fb-ad-main).

Added

  • social/faq-mastermind.svg — a "one mastermind across every IDE + CLI" illustration: the ECC core radiating to Claude Code, Cursor, Windsurf, Codex, Antigravity, and Gemini plus a CLI terminal node. Fills the previously-empty FAQ right column on the site.

Changed

  • SVG version badges v2.5.1 → v2.5.2; 8K PNGs re-rendered.
  • Site: taller feature cards (fixed cramped wide-banner proportions), header badge now matches the favicon (gradient + blue ring), FAQ is two-column with the mastermind illustration. Verified no horizontal overflow at 375px (mobile) or 1280px (desktop).

v2.5.1 · ECC product identity

July 2026

Formalized ECC as the flagship product with its own visual identity — without changing the core Kodelyth > Ghost Depth mark.

Added — brand/

  • ecc-icon.svg + ecc-icon-{512,192}.png + ecc-favicon.ico — the app-icon badge (Kodelyth > mark in a rounded, blue-bordered square). Verified legible from 16px favicon to 512px.
  • ecc-lockup-{dark,light}.{svg,png} — the ECC product lockup: mark + a small KODELYTH kicker + a bold ECC hero + the "Elite Code Crew · AI coding toolkit" tagline. Light + dark variants.
  • ecc-badge.{svg,png} — square mark + ECC for npm / GitHub / social avatars.

Changed

  • README now leads with the ECC lockup (GitHub light/dark aware via ), above the existing hero.
  • The companion site (ecc.kodelyth.com) adopts the new favicon, apple-touch-icon, PWA icons, and lockups.

Notes

  • The core Kodelyth > mark is unchanged — this is a product sub-brand, not a rebrand (parent brand → flagship product, like Adobe → Photoshop).
  • Nothing removed; all prior brand files remain.

v2.5.0 · `kodelythecc doctor` live health check

July 2026

A self-diagnostic that verifies every subsystem is actually wired and working — the direct answer to "is it real or dummy?"

Added — kodelythecc doctor

`` kodelythecc doctor # human-readable report kodelythecc doctor --json # machine-readable, exit 1 if any check fails `

11 live checks that exercise each subsystem instead of just checking a file exists — so it catches the exact class of bug we hit in 2.4.3/2.4.4/2.4.0 (recall crash on stale index, prompt-injection guard silently off, MCP server never registered):

| Check | What it actually does | |---|---| | binaries | both kodelyth-ecc + kodelythecc on PATH | | install-target | agents/skills/commands/hooks/rules populated in ~/.claude/ | | hooks-registered | required hook events present in settings.json (not just files) | | memory-recall | runs a real recall — must not throw (would have caught the 2.4.3 crash) | | memory-index | index schema valid or self-healing | | mcp-registered | ECC MCP entry in Claude Code + Desktop configs (would have caught 2.4.0) | | mcp-server-boots | spawns the server, confirms it returns a tools list | | prompt-injection | guard is active, not silently off (would have caught 2.4.4) | | rtk / terse / codebase-graph | installed + wired |

Each non-pass carries a one-line fix. Wired into doctor --help and the interactive menu ("Health check").

Verified

  • Live on this Mac: 11/11 pass — "Everything is wired and working."
  • Warn path tested (guard off → warns + shows fix), --json exits 1 only on failure
  • 4 new tests in tests/doctor/health.test.js` including a regression that feeds the foreign index schema and asserts recall self-heals
  • Full suite: 0 failures

v2.4.9 · Phase 4 audit + 6 new feature SVGs

July 2026

Final audit round + the visual gap: the six headline 2.x features had zero illustrations in the README or website.

Phase 4 audit — findings

  • End-to-end swept every advertised feature with real invocations: all 9 CLI subcommands, 16 MCP tools, swarm (builds real 4-worker plans), replay (validates args), all 8 parallel commands present, 3 bundles valid. No dummy features found — the real bugs were all caught in Phases 1-3.
  • Adversarial agents assessed (secret-hunter, backdoor-hunter, supply-chain-auditor): already built with real detection commands (backdoor-hunter has 36, supply-chain-auditor has 8 real jq/npm lockfile-audit sections). No dummy gap like security-reviewer had — honest result, left them alone.

New — 6 feature SVGs (the visual gap)

Created on-brand 900×170 illustrations matching the existing section-*.svg design system, each with real data and a diagram:

  • section-rtk.svg — input-savings pipeline (raw → RTK filter → compact, 5.1M/64% ledger)
  • section-terse.svg — 4-level output-compression dial with before/after
  • section-codebase.svg — AST graph nodes + query, 412k vs 3.4k token comparison
  • section-cli.svg — interactive menu terminal + arrow keys + update check
  • section-token-savings.svg — the three-layer stack combining to −55–65%
  • section-uninstall.svg — clean-removal checklist + dry-run
All rendered to 8K PNG (37 exports total) and injected into the README's RTK / Terse / Codebase / Interactive-CLI sections.

Verified

  • 384 tests, 0 failures
  • All 6 SVGs render clean at 8K, no text overflow, on-brand
  • README references the 4 new section SVGs

v2.4.8 · Phase 3: agent polish + token-savings skill

July 2026

Phase 3 of the sequenced plan (audit → routing → skills/agents). Disciplined polish — fixed the one agent with a real actionable gap, added the one skill filling a real gap, and deliberately did not pad agents that are already complete.

Agent polish

  • security-reviewer — added a validated Active Hunt command library. The agent described what to check (OWASP checklist, severity table) but had almost no concrete detection commands, so it could only review code it was shown, not actively hunt. Added 15 copy-paste ripgrep patterns covering hardcoded secrets, SQL/shell/code injection, XSS/DOM sinks, SSRF, authZ gaps (alg=none, decode-without-verify), weak crypto, and unsafe deserialization / prototype pollution. Every pattern was run against the repo to confirm it parses and executes — caught and fixed one that used a negative lookahead ripgrep's Rust regex engine rejects.
  • Assessed the other "thin" agents and left them alone. refactor-cleaner (knip/depcheck/ts-prune + risk tiers) and tdd-guide (red-green-refactor + coverage) are short because those workflows are concise — they already have real commands. Padding them would be bloat, against KISS/YAGNI. Line count ≠ quality.

New skill

  • skills/ecc-token-savings/SKILL.md — 195 skills existed but only one referenced the new 2.x features and none unified the savings stack. A user on 2.4.7 has three shipped savings layers (RTK input, Terse output, codebase-graph structural queries) and no single guide. This skill is the playbook: which axis each layer cuts, how to verify/enable each, a per-session-type recommendation table, how to measure real savings in the dashboard, and honest caveats (Terse per-turn overhead, RTK not covering built-in file tools, graph needing an index). All commands verified real. Now 196 skills.

Assets

  • SVG version badges → v2.4.8, all 31 8K PNGs re-rendered to match.

Verified

  • 384 tests, 0 failures
  • All 15 security-reviewer detection patterns run clean against the repo
  • New skill's 11 referenced CLI subcommands all resolve to real handlers
  • Installed copies (agent + skill) synced to this machine

v2.4.7 · Command frontmatter + 8K asset regeneration

July 2026

Final review pass across every subsystem, plus asset refresh.

Fixed

  • 20 slash commands had no YAML frontmatter — so they showed up in the / menu with no description (part of the earlier "commands don't show properly" complaint). Added description + argument-hint to all of them: build-fix, checkpoint, gan-build, gan-design, harness-audit, learn, loop-start, loop-status, model-route, multi-backend, multi-execute, multi-frontend, multi-plan, multi-workflow, pm2, quality-gate, refactor-clean, test-coverage, update-codemaps, update-docs. All 99 commands now carry frontmatter.

Assets

  • Regenerated all 31 social images at 8K (7680px wide, aspect-preserved) into social/exports/8k/ — e.g. hype-mcp-server.png is a true 7680×4320 8K UHD frame.
  • Removed the old 4K exports (social/exports/4k/, 13 MB).
  • brand/ left untouched (7 SVGs + 5 PNGs) as requested.
  • SVG version badges bumped to v2.4.7; PNGs re-rendered to match.
  • 8K PNGs stay git-only — .npmignore already excludes social/ and *.png, so the npm tarball stays lean.

Review pass (all clean)

  • 384 tests, 0 failures across 27 files
  • Every JS file parses
  • Versions consistent (package.json / VERSION / npm all 2.4.7)
  • 70/70 agents valid frontmatter; all internal doc links resolve
  • All 58 hook command paths in hooks.json resolve to real files
  • All 13 MCP tools callable; 381 MCP resources readable; 12 dashboard endpoints serve real data
  • manifest→verify roundtrip works

v2.4.6 · Phase 2: measurable intent routing (38% → 100% top-1)

July 2026

The route_intent MCP tool was thin token-overlap against agent descriptions — no way to know if it actually worked. Now it's measured and 10x better.

The problem (measured, not guessed)

Built a labeled routing eval (tests/router/intent-eval.cases.json) — 26 realistic prompts mapped to the agent that should win. Baseline route_intent:

  • top-1: 38% (10/26) — barely better than a coin flip
  • top-3: 69% (18/26)
Token-overlap can't tell that "TypeError" → debug-detective because that word isn't in the agent's description.

The fix

  • scripts/router/signals.js — a curated high-signal phrase → agent map distilled from the 10-tier routing rule. 30 agents, ~180 weighted regex patterns (weight 2-5 by specificity). "TypeError"/"blowing up"/"is not a function" → debug-detective; "production down"/"P0"/"500 error" → incident-commander; "leaked secrets"/"hardcoded password" → secret-hunter; etc.
  • route_intent rewired — signal score is a strong prior on top of the existing token-overlap, so a single specific signal outranks any description match.

The result (measured)

| Metric | Before | After | |---|---|---| | top-1 (in-sample, 26 cases) | 38% | 100% | | top-3 (in-sample) | 69% | 100% | | top-1 (held-out paraphrases, 10 cases) | 40% | 100% |

Precision-checked against false positives: "document how to rebase in our git workflow guide" does not hijack to git-rescue (tightened rebase/keyboard patterns to require a trouble/context word).

Guardrail

  • tests/router/intent-eval.test.js asserts top-1 ≥ 90% and top-3 ≥ 95% on the labeled set, plus a no-hijack precision test. Any future change that weakens the signal map fails CI instead of silently regressing routing.

Honest scope

route_intent is a deterministic prior — the full LLM reads the tier rule on top. The eval measures the prior's floor. Deterministic keyword routing has a real ceiling on novel paraphrases; the LLM covers the long tail. This makes the prior good enough to be genuinely useful (and measurable) rather than a 38% coin flip.

v2.4.5 · Real-user audit: auto-capture never captured anything

July 2026

Third "installed but dummy" feature found in the audit — and the biggest. The entire memory-capture side was dead.

Fixed

  • scripts/memory/extract.js mined ZERO candidates from real transcripts. Real Claude Code transcript events nest role, content, and tool calls under .message (e.g. event.message.role, content[].type === 'tool_use'). extractCandidates() read flat ev.role / ev.tool_name / ev.tool_input, so it skipped every event and never captured a single memory. The 52 memories in the store came from seeds and MCP capture_memory — the automatic Stop-hook capture had never worked on real data.
  • Fix: readTranscript() now normalizes every raw event to the flat shape downstream code expects — resolving role from message.role, surfacing the first tool_use as tool_name/tool_input, and exposing tool_result output for success scoring. Verified: a real transcript now mines 12 candidates (was 0); the full capture-stop hook queues 3 to pending-review.jsonl end-to-end.
  • Bonus quality fix: approach extraction now finds the last assistant message *with text*, skipping trailing tool_use/tool_result events that carry no explanation. Previously a fix followed by a tool call produced an empty approach and got dropped.

Added

  • tests/memory/extract.test.jsextract.js was completely untested, which is exactly how this shipped. New tests cover: nested-message mining, no-success-signal → no capture, legacy flat shape still works, and empty/malformed safety.

Impact

Memory now works both ways for real users: recall (fixed in 2.4.3) AND capture (fixed here). Before this session, a fresh install's memory system was effectively write-nothing / read-crash.