Changelog.

What shipped in aeon - merged PRs, new skills, dashboard fixes, and ecosystem additions, published as a changelog each week.

  1. secretcurl auth, headless CLI, dashboard polish

    Skills now call authenticated APIs directly via `./secretcurl`, collapsing three pre-run airlock scripts into zero and giving each fork least-privilege key injection by default. The batch also ships a headless `aeon` CLI, a 14-PR dashboard UX overhaul, and Sigstore attestations on every skill-run output.

    • `./secretcurl` replaces the XAI pre-run airlock; all 11 social skills call api.x.ai directly (#685, #687)
    • CoinGecko, Alchemy, Etherscan, and GitHub reads moved in-run via `./secretcurl`; all prefetch scripts retired (#689, #691)
    • Irreversible sends (notify, article, tweets) run in-run; four postprocess scripts deleted (#695)
    • Per-skill least-privilege: each skill receives only the API keys it declares in `requires:` (#682, #684)
    • CoinGecko demo-key header fixed — free keys were 400'ing silently with the wrong header (#683)
    • Headless `aeon` CLI ships — every dashboard feature as a scriptable, server-free command (#676, #677)
    • Skill catalog restructured: 59 skills in 6 packs where `category` equals the pack name (#647)
    • Sigstore provenance: every skill-run output gets a signed, Rekor-logged attestation (#650, #652, #653)
    • Chain-input script injection and arbitrary file read patched (GHSA-h9v2, GHSA-cqvj) (#658, #660, #661)
    • Dashboard: enable/disable is now a real toggle switch with live schedule status on the skill page (#673)
    • Dashboard copy overhaul: Team→Skills, duty→enabled/disabled, bare text actions → bordered buttons (#664, #669, #670, #671, #672, #674, #675)
    • Scheduler and message poller split into independent workflows; fresh-fork DEGRADED state fixed (#649, #678)
    • vuln-scanner scan arm made functional: scanner allowlist grant and tool-staging step wired (#693)
    • Email notifications migrated from SendGrid to Resend — one outbound-email key covers everything (#680)
    • Non-main-ref workflow dispatch no longer breaks Commit and cron-state steps (#694)
    • 8-agent optimize sweep: dead code, weak types, orphaned verdikta scaffolding, dead scripts removed (#655, #656, #657, #696)
    • Maintenance: 1 CI config update (#659)
  2. OKF-native memory, repo compaction, grok-build

    Aeon's `memory/topics/` is now an OKF-native knowledge bundle — every concept self-describes with `type:` frontmatter, enforced by a CI gate and exposed via MCP `okf://` resources. In the same batch the repo root compacted 31 → 14 tracked entries, the grok harness gained grok-build model selection, and the skill catalog pruned to 69.

    • `memory/topics/` becomes an OKF-native knowledge bundle: `type:` frontmatter on every concept, `okf-validate` CI gate, MCP `okf://` resources (#627, #628, #629)
    • Repo root compacted 31 → 14 tracked entries: CLI scripts → `bin/`, registries → `catalog/`, deliverables → `output/` (#607, #616, #617, #618, #619)
    • Architecture audit across all 69 skills: silently-bypassed security scanner restored, 3 dead scripts pruned, .gitignore fixed (#620)
    • `grok-build` is now a selectable model in the dashboard harness picker (#622)
    • Connecting the grok harness in the dashboard auto-switches and pushes the config — no manual step (#624)
    • Heartbeat shifted to once daily at 08:00 UTC; staleness heuristic updated from ~8h to ~26h (#625)
    • `verdikta-hunter` ships as a prompt-style bounty-discovery skill with hard-capped on-chain execution, contributed by @nigelon11 (#605)
    • SECURITY.md and CONTRIBUTING.md added; LICENSE restored to repo root so GitHub detects it; Sponsor button added via FUNDING.yml (#609, #610, #611)
    • Skill catalog pruned 94 → 69 (25 removed, incl. 3 Core); community pack registry trimmed 24 → 10 (#603, #600)
    • Maintenance: Telegram slash-commands now re-register daily; sync-upstream workflow dropped (no-op on canonical repo); FUNDING.yml location settled; misc admin cleanup (#626, #623, #621, #613, #614, #615, #612, #608, #601, #604)
  3. API-key audit, repair ledger, cadence-free shiplog

    The API-key layer got a full audit across all 102 skills — routing is verified, vault descriptions corrected, and one orphaned key removed. shiplog collapses into a single cadence-agnostic skill that covers whatever window has elapsed since it last ran, and a public self-repair ledger backported from aaeron tracks every skill write, review, merge, and prune.

    • API-key routing audited across all 102 skills: GH_READ_PAT added where missing, orphan removed, vault descriptions corrected to match real usage (#595)
    • shiplog is now cadence-agnostic — one skill covers the full elapsed window since the last run, replacing the separate weekly and daily variants (#569)
    • self-repair-ledger backported from aaeron: a dated public ledger of every skill the agent wrote, reviewed, merged, or pruned, auto-committed to the repo (#568)
    • Phylax audit gains a hosted-engine fast path — canonical ALLOW/WARN/DENY verdict from the Phylax API, with inline 3-scanner fallback if the API is unreachable (#559)
    • README and docs updated: default model corrected to claude-sonnet-4-6, stale skill counts synced to 102 (#596)
    • pyyaml pinned to ==6.0.2 in CI — the last unpinned CLI install across all workflows (#577)
    • Maintenance: 6 dependency/CI bumps
  4. Grok Build harness + skills consolidated to 102

    aeon becomes multi-harness: run any skill through xAI's Grok Build CLI, logging in with your X account — fully additive, with Claude Code still the default. In parallel the skill catalog is consolidated from 187 hubs down to 102 with no capability lost, and Telegram's button + reply layer is wired across 16 skills.

    • New Grok Build harness — run skills through xAI's grok CLI, authenticated with your X account (SuperGrok / X Premium+) or an XAI_API_KEY; Claude Code stays the default (#585)
    • A Claude→grok compatibility layer lets existing skills run unchanged on grok, with no per-skill rewrites (#590)
    • Grok harness gains native MCP support plus opt-in per-skill run-shaping — max_turns, best_of_n, verify, effort (#587)
    • The harness is wired through every entry point — scheduled runs, chains, inbound Telegram/Discord/Slack, and the quality scorer — so a grok-only fork behaves identically (#586, #587)
    • Note: grok's headless output carries no token counts, so grok-harness runs log 0 tokens on Actions and don't appear in cost tracking (#585)
    • Skill catalog consolidated 187 → 102 hubs behind per-skill selectors; every absorbed behavior survives as a branch of its hub (#581, #583)
    • Telegram buttons and stateless force-reply follow-ups wired across 16 skills — snooze/mute a noisy alert, refine a draft, or add to a watchlist straight from chat (#591)
    • Then made zero-touch: every notification auto-carries global Run again / Schedule weekly quick-action buttons, and saving your bot token in the dashboard auto-registers the slash-command menu — no manual workflow run (#593, #594)
    • Dashboard: harness picker with one-click Connect X account, Sonnet 4.6 as the default model, and grok model-id fixes (#585, #588, #589, #592)
    • Docs and catalogs (smithery, skill-graph) regenerated to the 102-skill inventory (#584)
  5. Interactive Telegram + a leaner core

    Telegram gains slash commands, inline buttons, deep links, and force-reply follow-ups — all with no LLM in the loop for structured input. The codebase also sheds ~1,800 lines of dead weight, Claude Sonnet 5 lands as a selectable model, and the ecosystem list is refreshed.

    • Telegram interactivity: /skill slash commands with autocomplete, inline snooze/mute/re-run buttons, t.me deep links, and stateless force-reply follow-ups — structured input runs with no LLM in the loop, on both the poller and the instant webhook (#578)
    • Installers consolidated behind a shared library and the speculative a2a-server removed — net −1,823 lines, plus a fix for a footgun that shipped real treasury addresses into forks (#579)
    • CLAUDE.md audited against the real workflows: drift fixed and an end-to-end architecture overview added (#576)
    • Claude Sonnet 5 added as a selectable model — near-Opus quality on coding and agentic work at Sonnet pricing (#572)
    • Ecosystem refresh: logos updated, Zetta added, x402Books and Bankrsynth removed (#571)
    • shiplog's X-traction prefetch path wired up, config-driven from memory/products.md (#570)
  6. 21 skills backported, vigil at 17 tools

    The biggest skill expansion since the hardening trilogy: 21 skills from derivative instances land in canonical aeon (all disabled by default), vigil's tool count jumps from 9 to 17, and a new send-email skill ships while 5 others are retired. Heartbeat, repo-pulse, and disclosure-tracker all get richer implementations reverse-backported from live instances.

    • vigil skill jumps from 9 to 17 tools: consensus, liquidity lock, tax check, and ownership audit added (#558)
    • validate-config test suite wired into CI, closing a gate gap where the suite ran nowhere (#560)
    • 21 skills from derivative instances backported to canonical aeon, all disabled by default (#562)
    • repo-pulse, disclosure-tracker, and pvr-watchlist upgraded with richer reverse-backported implementations (#563)
    • heartbeat status logic refined: status page no longer flaps red on a recovered transient failure (#564)
    • private-repo prefetch now driven by products.md; GH_READ_PAT wired for per-product access (#565)
    • send-email skill ships via Resend; polymarket, polymarket-comments, ecosystem-entrants, smithery-manifest, v4-readiness removed (#566)
    • daily-shiplog and idea-forge generalized to config-driven skills via memory/products.md (#567)
    • 8-agent optimize sweep: dead code removed, internal constants de-exported, knip now clean (#561)
  7. hardening trilogy defaults on, chain and scanner fixes

    Three hardening features from aeon-dev — capability tiers (§6), issues-as-state dual-write (§3), and votable health (§7) — now activate by default in any fork. The batch also fixes a silent coercion bug that had disabled §7, patches two latent chain-runner issues, and corrects the vuln-scanner disclosure endpoint.

    • Port hardening easy wins: notify formatter, compact logs, verify output, schedule clusters, prune skills (#547)
    • Capability tiers (§6) enforce read-only vs write mode per skill, now on by default (#548)
    • Issues-as-state (§3) and votable health (§7) ship on by default with dual-write safety net (#550)
    • `HEALTH_ISSUES` unset was coerced to 0, silently disabling votable health — now fixed (#552)
    • Chain runner gets `issues:write` permission and var-less skill discovery fixed (#553)
    • Hardening features documented: capability tiers, issues-as-state, votable health in README (#554)
    • `validate-config.js` added — the shared validator `config-validator` already referenced but never committed (#546)
    • Phylax-audit threat-string examples wrapped in backticks to prevent scanner false positives (#545)
    • vuln-scanner disclosure endpoint corrected to `POST /security-advisories/reports` with explicit HTTP-code branching (#557)
    • AeThree joins ecosystem: agent governance launchpad where token holders vote on AI models (#556)
    • clawhunter-skills v0.2 listing: multi-venue support, per-bounty agentPlan, research tools (#555)
  8. skill-triage gets Phylax security pre-screen

    Inbound skill PRs that reference a Base contract address or a declared payment/data endpoint now get a Phylax onchain + endpoint ALLOW/WARN/DENY verdict inline, alongside the existing static skill-scan pass. Pure-prompt skills — the common case — pass through unchanged.

    • skill-triage runs Phylax onchain + endpoint audit on any skill PR declaring a contract address or payment endpoint (#544)

    1 PR included

  9. dashboard README closes the last sub-app gap

    The Aeon dashboard was the only sub-app without a README — the A2A and MCP servers got theirs in #501 and #512. One PR closes that gap: quickstart via `./aeon` or direct npm, the six views, configuration, and the loopback security gate, all documented.

    • Dashboard README added: quickstart, six views, config reference, and remote-access security gate documented (#543)

    1 PR included

  10. phylax-audit skill, dashboard signal cleanup

    Phylax ships a pre-install ALLOW/WARN/DENY verdict for external skills — the first supply-chain audit gate contributed from outside the core team. The dashboard feed gets fixed the same day to show only Aeon-launched runs, cutting Dependabot rows that were flooding real activity.

    • `phylax-audit` gives a deterministic ALLOW/WARN/DENY verdict before any external skill install (#537)
    • Dashboard feed and Runs tab now show only Aeon-launched events; Dependabot rows filtered out (#542)
    • Phylax listed in ECOSYSTEM.md as an active security-layer contributor (#539)
    • Code quality pass: shared utilities extracted, dead code removed, load-error UX improved (#540)
    • Maintenance: 6 dependency/CI bumps
  11. community packs, MCP catalog, install pipeline hardening

    Community packs drove this batch — Charon, Simmer, ClawHunter, Hunch, glim.sh, and logbook all joined the registry — while a run of dashboard fixes made pack discovery and install reliable enough that new forks start Core-only by default.

    • Charon policy-guard pack runs pre-flight PASS/PAUSE/DENY checks before each skill (#511)
    • Simmer Polymarket Trader: take live positions on Polymarket from an Aeon skill (#499)
    • ClawHunter: Pump Fun bounty discovery and x402-paid content-studio skills (#498)
    • Hunch: on-Base prediction markets with x402 position-taking (#472)
    • glim.sh added to MCP catalog: semantic search, X, Reddit, GitHub live data (#470)
    • Litebeam added to MCP catalog: x402-settled microservice routing layer (#508)
    • Robinhood Agentic Trading MCP added: portfolio read and trade execution via OAuth (#489)
    • logbook signed action-receipt pack listed in ecosystem (#507)
    • Five ecosystem entries added: ClawHunter, Glim.sh, Lens, LiteBeam, Simmer (#528)
    • Pack install auto-merges and ensures Actions can open PRs on fresh forks (#485)
    • Installed community packs now appear in the dashboard skill roster (#490)
    • Enabled-packs scoped per repo; new forks default to Core-only (#491)
    • Pack `path` field forwarded correctly on dashboard one-click install (#493)
    • `packs.json` regenerated on install so new skills appear without manual steps (#487)
    • `validate-pack.sh` added for local pre-flight validation before opening a PR (#495)
    • `skills.json` decoupled from `aeon.yml`; catalog CI no longer trips on config edits (#484)
    • A2A gateway quickstart README added (#501)
    • MCP server quickstart README added (#512)
    • PR template added to surface contribution gates at submission time (#494)
    • Stale skill references cleaned across docs, config, and issue templates (#503, #504, #505, #506, #531)
    • README one-click dashboard pack install documented (#497)
    • Only Claude models remain in aeon.yml; non-Claude Bankr options removed (#496)
    • LICENSE copyright updated to Aeon Inc (#529)
    • `@json-render` packages aligned on ^0.19 to eliminate dependency duplication (#526)
    • Dependabot enabled for Actions workflows and npm workspaces (#513)
    • README skill count synced to 183; packs table aligned, stale banner removed (#530, #488)
    • Maintenance: 12 dependency/CI bumps