From 5f722cc2183a14ab82fd0a99b3bdbcff9d199679 Mon Sep 17 00:00:00 2001 From: aaronjmars Date: Thu, 27 Aug 2026 23:15:44 -0400 Subject: [PATCH] docs: sync PRs #957-#979 to aeon docs --- .claude/skills/aeon/SKILL.md | 6 +- .claude/skills/aeon/references/layout.md | 2 +- .claude/skills/aeon/references/mcp.md | 2 +- .../skills/aeon/references/skill-anatomy.md | 6 +- .github/README.md | 12 ++-- CHANGELOG.md | 62 +++++++++++++++++++ apps/dashboard/lib/skill-icons.data.ts | 1 + catalog/skill-icons.json | 1 + docs/CAPABILITIES.md | 2 +- docs/assets/hero-animated.svg | 2 +- docs/assets/skill-icons/rightstack.svg | 1 + docs/harnesses.md | 13 ++-- harness-adapter/README.md | 4 +- llms.txt | 4 +- plugin/skills/aeon/SKILL.md | 6 +- plugin/skills/aeon/references/layout.md | 2 +- plugin/skills/aeon/references/mcp.md | 2 +- .../skills/aeon/references/skill-anatomy.md | 6 +- 18 files changed, 99 insertions(+), 35 deletions(-) create mode 100644 docs/assets/skill-icons/rightstack.svg diff --git a/.claude/skills/aeon/SKILL.md b/.claude/skills/aeon/SKILL.md index c93881ce4c..639a889760 100644 --- a/.claude/skills/aeon/SKILL.md +++ b/.claude/skills/aeon/SKILL.md @@ -251,7 +251,7 @@ metadata: Today is ${today}. ## Steps -1. +1. ## Network note @@ -311,9 +311,9 @@ Three at a time, not twelve. Every enabled skill is a recurring notification, an ./aeon packs ls # the six first-party packs ``` -`ls` footers with `76 skills · 1 enabled` — read it to them before proposing anything. First run installs the CLI runtime (tsx + yaml, ~12MB); the npm noise is one-time and expected. Grep-only equivalents: `references/layout.md`. +`ls` footers with `77 skills · 1 enabled` — read it to them before proposing anything. First run installs the CLI runtime (tsx + yaml, ~12MB); the npm noise is one-time and expected. Grep-only equivalents: `references/layout.md`. -Packs are a visibility filter, not a runtime switch — revealing one runs nothing. Core (12), Evolution (9) and Basics (18) show by default; Dev (11), Crypto (15) and Productivity (11) are on demand. +Packs are a visibility filter, not a runtime switch — revealing one runs nothing. Core (12), Evolution (9) and Basics (18) show by default; Dev (12), Crypto (15) and Productivity (11) are on demand. Reasonable starting sets: diff --git a/.claude/skills/aeon/references/layout.md b/.claude/skills/aeon/references/layout.md index fa890dd83d..7f27f9ce5a 100644 --- a/.claude/skills/aeon/references/layout.md +++ b/.claude/skills/aeon/references/layout.md @@ -12,7 +12,7 @@ Where everything lives in an Aeon repo, and the fastest way to see what's on. ./aeon skills ls --enabled --json # for building the Mode 2 timeline ``` -`ls` prints `SKILL / ON / SCHEDULE / PACK / DESCRIPTION` and a footer — `76 skills · 1 enabled`. First run installs the CLI runtime (tsx + yaml, ~12MB, one-time); the noise is expected. +`ls` prints `SKILL / ON / SCHEDULE / PACK / DESCRIPTION` and a footer — `77 skills · 1 enabled`. First run installs the CLI runtime (tsx + yaml, ~12MB, one-time); the noise is expected. **The `SCHEDULE` column is populated for disabled skills too** — it's their `aeon.yml` entry, not proof anything fires. Only the `●` in `ON` means it runs. diff --git a/.claude/skills/aeon/references/mcp.md b/.claude/skills/aeon/references/mcp.md index dcabb01432..a0b7e37e3d 100644 --- a/.claude/skills/aeon/references/mcp.md +++ b/.claude/skills/aeon/references/mcp.md @@ -7,7 +7,7 @@ Two unrelated things share the name. Get this wrong and nothing works. | | | |---|---| | **`.mcp.json`** — *external MCP servers, called BY Aeon skills* | Wired via the dashboard MCP panel or `./aeon mcp add`. This is what you want when a skill needs a tool. | -| **`bin/add-mcp`** — *Aeon itself AS an MCP server* | Builds `apps/mcp-server` and registers it with Claude Code / Desktop, so all 76 skills appear as `aeon-*` tools **in your local Claude**. Nothing to do with a skill calling out. | +| **`bin/add-mcp`** — *Aeon itself AS an MCP server* | Builds `apps/mcp-server` and registers it with Claude Code / Desktop, so all 77 skills appear as `aeon-*` tools **in your local Claude**. Nothing to do with a skill calling out. | The rest of this doc is the first one. For the second: `bin/add-mcp`, `--desktop` for a Claude Desktop snippet, `--uninstall` to remove, `claude mcp list` to verify. diff --git a/.claude/skills/aeon/references/skill-anatomy.md b/.claude/skills/aeon/references/skill-anatomy.md index 0964fad122..9025e7fc2c 100644 --- a/.claude/skills/aeon/references/skill-anatomy.md +++ b/.claude/skills/aeon/references/skill-anatomy.md @@ -1,10 +1,10 @@ # How Aeon skills are actually written -Surveyed across all 76 skills in `aeonfun/aeon`. Frequencies are real counts — match the dominant convention unless there's a reason not to. Bodies run 133–757 lines (~306 median); a skill is a prompt, not a config file, and reads as prose. +Surveyed across all 77 skills in `aeonfun/aeon`. Frequencies are real counts — match the dominant convention unless there's a reason not to. Bodies run 133–757 lines (~306 median); a skill is a prompt, not a config file, and reads as prose. ## Frontmatter -Universal — **all 76 skills** carry these five: +Universal — **all 77 skills** carry these five: ```yaml name: my-skill # the slug (matches the skills// directory) @@ -113,7 +113,7 @@ There is **no network sandbox** — plain `curl` works for unauthenticated GETs. `memory/` is the durable state that survives between runs. Four conventions, in order of how often skills touch them: -### `memory/logs/${today}.md` — the run log (63 of 76 skills) +### `memory/logs/${today}.md` — the run log (63 of 77 skills) Every skill appends what it did, under **one** heading that is exactly its slug: diff --git a/.github/README.md b/.github/README.md index c6f3404646..379f767d19 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,5 +1,5 @@

- AEON — the most autonomous agent framework. 60+ skills across 7 harnesses (Claude Code, Grok, Codex, Pi, Vibe, Kimi, fx), running unattended on GitHub Actions: it ships features to your repos, privately discloses real vulnerabilities, deploys live apps, runs deep research, and writes new skills for itself. Keywords: autonomous AI agent, agent framework, GitHub Actions automation, self-improving agent, multi-agent orchestration, LLM skills, cron agent. + AEON — the most autonomous agent framework. 60+ skills across 10 harnesses (Claude Code, Grok, Codex, Pi, Vibe, Kimi, fx, Cursor, Hermes, GLM), running unattended on GitHub Actions: it ships features to your repos, privately discloses real vulnerabilities, deploys live apps, runs deep research, and writes new skills for itself. Keywords: autonomous AI agent, agent framework, GitHub Actions automation, self-improving agent, multi-agent orchestration, LLM skills, cron agent.

@@ -46,7 +46,7 @@ git clone https://github.com//aeon # skip if you used `gh repo fork --clo cd aeon && ./aeon ``` -Open [localhost:5555](http://localhost:5555) and follow the dashboard: **Authenticate** (any of seven [harnesses](../docs/harnesses.md)) → **add a channel** → **pick skills** → **Run**. That's it - Aeon runs unattended. Everything is also an `./aeon` command ([CLI](../apps/cli/README.md)) or a `/aeon` chat command ([setup skill](../docs/aeon-setup.md), installable as a [Claude Code or Codex plugin](../docs/aeon-setup.md#install)). +Open [localhost:5555](http://localhost:5555) and follow the dashboard: **Authenticate** (any of ten [harnesses](../docs/harnesses.md)) → **add a channel** → **pick skills** → **Run**. That's it - Aeon runs unattended. Everything is also an `./aeon` command ([CLI](../apps/cli/README.md)) or a `/aeon` chat command ([setup skill](../docs/aeon-setup.md), installable as a [Claude Code or Codex plugin](../docs/aeon-setup.md#install)).

No admin rights / can't install gh? @@ -87,13 +87,13 @@ The prompt *is* the skill. You schedule it, hand it a `var`, chain it into other

Community skill packs →

-## Support seven harnesses: Claude, Grok, Codex, Pi, Vibe, Kimi, fx +## Support ten harnesses: Claude, Grok, Codex, Pi, Vibe, Kimi, fx, Cursor, Hermes, GLM

- Seven engines, one socket - a SKILL.md flows through run-harness into any of seven agent CLIs: Claude, Grok, Codex, Pi, Vibe, Kimi, and fx. Every harness honors the same contract: result, usage, session. + Ten engines, one socket - a SKILL.md flows through run-harness into any of ten agent CLIs: Claude, Grok, Codex, Pi, Vibe, Kimi, fx, Cursor, Hermes, and GLM. Every harness honors the same contract: result, usage, session.

-The same `SKILL.md` runs on any of seven agent CLIs - **Claude**, **Grok**, **Codex**, **Pi**, **Vibe**, **Kimi**, **fx** - behind one `run-harness` contract (same result, usage, and session shape). Swap the harness; nothing else changes. How the contract works: [`docs/harnesses.md`](../docs/harnesses.md). +The same `SKILL.md` runs on any of ten agent CLIs - **Claude**, **Grok**, **Codex**, **Pi**, **Vibe**, **Kimi**, **fx**, **Cursor**, **Hermes**, **GLM** - behind one `run-harness` contract (same result, usage, and session shape). Swap the harness; nothing else changes. How the contract works: [`docs/harnesses.md`](../docs/harnesses.md). ## Why "the most autonomous" @@ -185,7 +185,7 @@ The deep reference lives in [`docs/`](../docs) - jump in:

Configuration - chaining, triggers, scheduler, capability modes, gateways, Fleet Watcher  - Harnesses - run skills on any of seven agent CLIs behind one contract  + Harnesses - run skills on any of ten agent CLIs behind one contract  Skill Packs - how packs work and how to build your own  Core - the self-healing health and repair loop

diff --git a/CHANGELOG.md b/CHANGELOG.md index 20d37e2057..e04e2e7540 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,37 @@ from or pin to; the template keeps serving the latest `main` to new forks. ### Added +- **Three more run-harnesses: Cursor, Hermes, and GLM.** Cursor CLI (`agent -p`, + `CURSOR_API_KEY`), Hermes via the Nous Portal (`hermes -z`, `HERMES_AUTH`), and + the GLM Coding Plan on Z.AI's Anthropic endpoint (`GLM_API_KEY` / `ZAI_API_KEY`) + join the `run-harness` contract, wired through the resolver, installer, both + workflows, the local MCP dispatch path, the capability manifest, and regression + tests. Aeon now dispatches to ten coding-agent CLIs. Their credentials are + permanent first-class rows in the dashboard Access Keys panel, with Hermes on the + captured-login Connect/Reconnect flow. (#967, #975) +- **New `rightstack` skill (Dev & Code).** A read-only Web3 stack advisor + (recommend / workflow / compare / explain / migrate) that maps a build goal to a + coherent stack before implementation; disabled and manual-only, it cannot install + packages, edit an app, or touch a wallet or contract. Catalog is now 77 skills. + (#961) +- **Read-only harness comparison (`scripts/skill-health-routing.mjs`).** Phase 2 of + measured harness routing: it groups harness-tagged skill-health scores (five + required per harness) and joins per-run token / cache usage, so an operator can + weigh quality against cost before changing `aeon.yml`. It never writes repo + state. (#969) +- **Machine-readable vuln-scanner execution evidence.** Staged scanner binaries + (Semgrep, TruffleHog, OSV-Scanner, Slither, cargo-fuzz) are wrapped with an + invocation logger, and a post-run step prints the staged manifest plus the actual + invocation log, so a report can no longer claim a scan that never ran. An absent + optional scanner still does not fail the run. (#968) +- **Three community skill packs listed:** CultOS exact-commit PR review (#974), the + Farcaster pack with a Neynar-backed `cast` publish skill (#977), and the Spoolis + Outcome Gate acceptance-criteria gate (#978). +- **Operator-console plugin prepped for more marketplaces.** The `plugin/` operator + skill gained manifests and privacy / support metadata for OpenAI's plugin + directory (host-neutral wording, a Codex-runnable history-mining script), the + Kiro Powers registry, and MiniMax. (#959, #964, #965) + - **`./notify` moves behind a post-run delivery dispatcher (#912 Phase 2).** A skill call now writes one structured JSON payload to the notify queue instead of ever touching the wire; a new post-run `scripts/notify-deliver.sh` is the only @@ -257,6 +288,13 @@ from or pin to; the template keeps serving the latest `main` to new forks. ### Changed +- **Stale harness and MCP catalog counts corrected.** `llms.txt` moved from six to + seven coding-agent CLIs (the harness work above then takes the count to ten), and + the MCP OAuth catalog in `docs/mcp-oauth.md` gained the missing Higgsfield row + (`mcp.higgsfield.ai/mcp`), so "every catalog provider rotates" replaces "all + four". (#960) +- **Ecosystem list churn:** added Eyebrow (#976) and removed Amper (#979). + - **Harness inventory counts normalized to seven.** With fx as the 7th adapter, `docs/harnesses.md`, `harness-adapter/README.md`, and the workflow comments now say seven (not six / five / four) and present the harnesses evenly, and the @@ -363,6 +401,25 @@ from or pin to; the template keeps serving the latest `main` to new forks. ### Fixed +- **Local MCP server runs skills without blocking.** `apps/mcp-server` replaced the + event-loop-freezing `spawnSync` with an async `spawn`, so a long `tools/call` no + longer stalls `tools/list`, ping, or a second call; a new in-process single-flight + queue serializes runs to protect the shared working tree from `.git/index.lock` + and interleaved `memory/` writes. Same 600s timeout and 10MB output cap. (#973) +- **Telegram notification chunks stay under the size limit.** Markdown is now + rendered to HTML before the final size split, and active tags are closed and + reopened at chunk boundaries, so a skill with many links can no longer produce an + unsendable oversized payload. (#970) +- **`bin/add-skill` records the real source commit in `skills.lock`.** The + provenance lookup passed a `gh api` field that forced a `POST` to the GET-only + commits collection, 404ed, and fell back to `commit_sha: "unknown"`; it now reads + the commit correctly. (#972) +- **macOS portability:** the cron scheduler test detects GNU vs BSD `date` and uses + native syntax (#957), and the issue-backed cron-state / health helpers no longer + abort under Bash 3.2 `set -u` on an empty `REPO_ARGS` in their default + current-repo mode (#971). Both were local-dev-only; Linux Actions scheduling was + never affected. + - **Post-run scorer grades the sent notify card, not the harness `.result` recap.** For a notify-first skill the scorer now reads the captured chain artifact (`output/.chains/.md`) - the card that was actually sent - and @@ -727,6 +784,11 @@ from or pin to; the template keeps serving the latest `main` to new forks. ### Maintenance +- First repo lint gates: eslint (per app) and shellcheck (whole shell surface), + both green on the current tree, with two shellcheck false positives suppressed + with rationale (#962, #963); plus a 400x400 MCP logo for the Cline marketplace + (#966). + - CI/test/asset noise: HOL AI Plugin Scanner workflow added then dropped same-day (#928, #929); unused `docs/assets` images removed and provider/free-aeon docs images refreshed (#939, #940); state-store/health-issue test hardening (#942); diff --git a/apps/dashboard/lib/skill-icons.data.ts b/apps/dashboard/lib/skill-icons.data.ts index e8cf71eaae..e050bf8c43 100644 --- a/apps/dashboard/lib/skill-icons.data.ts +++ b/apps/dashboard/lib/skill-icons.data.ts @@ -55,6 +55,7 @@ export const SKILL_ICONS: Record = { "price-alert": "", "remotion": "", "reply-maker": "", + "rightstack": "", "robinhood-mcp": "", "schedule-ads": "", "search-skill": "", diff --git a/catalog/skill-icons.json b/catalog/skill-icons.json index 5d3b540a4d..5a0476c4b2 100644 --- a/catalog/skill-icons.json +++ b/catalog/skill-icons.json @@ -73,6 +73,7 @@ "schedule-ads": "", "send-email": "", "spend-watch": "", + "rightstack": "", "competitor-monitor": "", "higgsfield": "", "hunter-22": "", diff --git a/docs/CAPABILITIES.md b/docs/CAPABILITIES.md index bb25ba0272..9c31301711 100644 --- a/docs/CAPABILITIES.md +++ b/docs/CAPABILITIES.md @@ -94,7 +94,7 @@ mode: write # default — full Write / Edit / git / gh / python3 | 2. **OS sandbox** | Write-locks the workspace for the whole run — the repo is mounted read-only, network stays open | `run-harness --mode read-only` → [`harness-adapter/lib/sandbox.sh`](../harness-adapter/lib/sandbox.sh) | | 3. Post-run guard | Reverts and cleans anything that still landed under `CODE_PATHS`, preserving the skill's real output (memory, `output/`) and writing its run-log on its behalf | `.github/workflows/aeon.yml` | -**Layer 2 is the guarantee.** Layer 1 is a real narrowing but not a boundary: a shell redirection routes around it, and only the claude and pi adapters consume the allowlist at all. Layer 3 is after-the-fact repair. So the sentence "a read-only skill physically cannot mutate the repo" is true because of the sandbox — `bwrap --ro-bind` on Linux, `sandbox-exec` with a `deny file-write*` profile on macOS — which applies uniformly on **all seven harnesses**, claude included. +**Layer 2 is the guarantee.** Layer 1 is a real narrowing but not a boundary: a shell redirection routes around it, and only the claude and pi adapters consume the allowlist at all. Layer 3 is after-the-fact repair. So the sentence "a read-only skill physically cannot mutate the repo" is true because of the sandbox — `bwrap --ro-bind` on Linux, `sandbox-exec` with a `deny file-write*` profile on macOS — which applies uniformly on **all ten harnesses**, claude included. ### Why the sandbox is the dispatcher's, not each harness's diff --git a/docs/assets/hero-animated.svg b/docs/assets/hero-animated.svg index 79e04b5b08..b519aea05f 100644 --- a/docs/assets/hero-animated.svg +++ b/docs/assets/hero-animated.svg @@ -75,7 +75,7 @@ - 7 harnesses + 10 harnesses diff --git a/docs/assets/skill-icons/rightstack.svg b/docs/assets/skill-icons/rightstack.svg new file mode 100644 index 0000000000..c3a924f204 --- /dev/null +++ b/docs/assets/skill-icons/rightstack.svg @@ -0,0 +1 @@ + diff --git a/docs/harnesses.md b/docs/harnesses.md index a3ea5ec97b..660f7ba59c 100644 --- a/docs/harnesses.md +++ b/docs/harnesses.md @@ -252,7 +252,7 @@ the harness is already executing as the agent's workspace. **Other harnesses.** MCP is not grok-only: `claude`, `codex`, `vibe` and `kimi` all call live MCP tools too (codex and kimi needed their own dispatcher fixes — -see the [harness-adapter README](../harness-adapter/README.md#the-six-harnesses)). +see the [harness-adapter README](../harness-adapter/README.md#the-ten-harnesses)). `pi` is the one harness that cannot: it rejects MCP by design, so its adapter warns and skips every configured server, and the dashboard's MCP panel disables itself when `pi` is the selected harness. @@ -295,10 +295,10 @@ one path, an adapter-level fix reaches every surface by construction. claude/grok/codex, prompt-shim on pi/vibe/kimi). Callers that don't pass it get plain text. (A grok-only `GROK_JSON_SCHEMA` env var existed on the old script path until it was removed: nothing in the repo ever set it, and the scorer it was -reserved for goes schema-less on purpose so a single parse path covers all seven +reserved for goes schema-less on purpose so a single parse path covers all ten harnesses.) -**Both hosted surfaces stage all seven.** `aeon.yml` (skill runs) and +**Both hosted surfaces stage all ten.** `aeon.yml` (skill runs) and `messages.yml` (inbound messages) share the same two scripts, so a repo answers messages on the harness it runs skills on: @@ -312,8 +312,7 @@ Each workflow still declares its own `env:` block, because `secrets.*` only resolves inside a workflow — but the logic is shared, which is the half that drifted before. `messages.yml` used to carry a second, weaker copy that knew only claude and grok, so a repo on codex/pi/vibe/kimi had its messages answered on -claude with a `::warning::`. The local MCP server (`apps/mcp-server`) resolves all -six but expects the CLI to already be installed on your machine. +claude with a `::warning::`. The local MCP server (`apps/mcp-server`) resolves all ten but expects the CLI to already be installed on your machine. ## Every entry point runs on either harness @@ -325,8 +324,8 @@ behaves identically everywhere. All of them dispatch through `run-harness`: |---------|---------------------|-------| | Scheduled / manual skill run (`aeon.yml`) | dispatch **Harness** input → per-skill `harness:` → global `harness:` → `claude` | full flags + MCP + scorer | | Skill chains (`chain-runner.yml`) | inherits — each step dispatches `aeon.yml`, which resolves per-skill/global | | -| Inbound messages (`messages.yml`, Telegram/Discord/Slack) | global `harness:` in `aeon.yml` | conversational reply in write mode; the resolved harness's CLI is staged here (all seven), same as skill runs | -| Local MCP server (`apps/mcp-server`) | `AEON_HARNESS` env → global `harness:` | `resolveHarness()` in `skill-executor.ts`; resolves all six, expects the CLI installed locally | +| Inbound messages (`messages.yml`, Telegram/Discord/Slack) | global `harness:` in `aeon.yml` | conversational reply in write mode; the resolved harness's CLI is staged here (all ten), same as skill runs | +| Local MCP server (`apps/mcp-server`) | `AEON_HARNESS` env → global `harness:` | `resolveHarness()` in `skill-executor.ts`; resolves all ten, expects the CLI installed locally | | Webhook (`apps/webhook`) | relay only → dispatches `messages.yml` | harness-agnostic | | Post-run quality scorer (`aeon.yml`) | scores through the same harness the skill ran on | | diff --git a/harness-adapter/README.md b/harness-adapter/README.md index b15e69d5b2..0ea1acee7a 100644 --- a/harness-adapter/README.md +++ b/harness-adapter/README.md @@ -128,7 +128,7 @@ bind-mounts) kimi still reads the literal `${VAR}`s. **Read-only enforcement is hoisted into the dispatcher.** Only codex has a native kernel sandbox that actually holds; every other harness — claude, grok, pi, vibe, kimi, fx — runs read-only under `sandbox-exec` (macOS) or `bwrap` (Linux) with the -workspace mounted read-only, so `--mode read-only` means the same thing on all seven: +workspace mounted read-only, so `--mode read-only` means the same thing on all ten: *the repo physically cannot be mutated*, regardless of the model or its permission config. (vibe and kimi lean on this entirely — their `-p` modes have no permission-layer gate of their own.) @@ -187,7 +187,7 @@ step and the native-auth secrets (`CODEX_AUTH`, `KIMI_AUTH`, `MISTRAL_API_KEY`, ## Capability manifest [`harnesses.json`](harnesses.json) is the machine-readable capability manifest for -the seven adapters - the local analog of a UHP [`GET /v1/harnesses`](https://unifiedharnessprotocol.org) +the ten adapters - the local analog of a UHP [`GET /v1/harnesses`](https://unifiedharnessprotocol.org) discovery response. One queryable file answers *does this harness report token cost? enforce read-only natively or via the wrapper sandbox? support MCP, and how? what auth does it take?* - instead of that knowledge living only in the diff --git a/llms.txt b/llms.txt index dc2a301958..2023302ae3 100644 --- a/llms.txt +++ b/llms.txt @@ -1,6 +1,6 @@ # Aeon -> Aeon is an autonomous agent framework. It runs your own skills on a schedule in GitHub Actions, keeps state in git-committed memory, and dispatches every run through one harness adapter that works across seven coding-agent CLIs (Claude Code, Codex, Grok, Kimi, Pi, Vibe, fx). Skills are Markdown with a spec-form frontmatter; a least-privilege `requires:` -> dashboard vault contract wires secrets. Fork the repo, turn skills on, and it runs itself. +> Aeon is an autonomous agent framework. It runs your own skills on a schedule in GitHub Actions, keeps state in git-committed memory, and dispatches every run through one harness adapter that works across ten coding-agent CLIs (Claude Code, Codex, Grok, Kimi, Pi, Vibe, fx, Cursor, Hermes, GLM). Skills are Markdown with a spec-form frontmatter; a least-privilege `requires:` -> dashboard vault contract wires secrets. Fork the repo, turn skills on, and it runs itself. Repo: https://github.com/aeonfun/aeon Site: https://aeon.fun @@ -28,7 +28,7 @@ Site: https://aeon.fun ## Harnesses and integrations -- [docs/harnesses.md](https://raw.githubusercontent.com/aeonfun/aeon/main/docs/harnesses.md): Advanced harness behavior across the seven supported coding-agent CLIs. +- [docs/harnesses.md](https://raw.githubusercontent.com/aeonfun/aeon/main/docs/harnesses.md): Advanced harness behavior across the ten supported coding-agent CLIs. - [harness-adapter/README.md](https://raw.githubusercontent.com/aeonfun/aeon/main/harness-adapter/README.md): The single dispatch path that translates one tool grammar to every harness. - [docs/mcp-oauth.md](https://raw.githubusercontent.com/aeonfun/aeon/main/docs/mcp-oauth.md): Durable dashboard OAuth for OAuth-gated MCP servers. - [docs/telegram-commands.md](https://raw.githubusercontent.com/aeonfun/aeon/main/docs/telegram-commands.md): The inbound Telegram command surface. diff --git a/plugin/skills/aeon/SKILL.md b/plugin/skills/aeon/SKILL.md index 404bdee29f..49df0e3b7d 100644 --- a/plugin/skills/aeon/SKILL.md +++ b/plugin/skills/aeon/SKILL.md @@ -251,7 +251,7 @@ metadata: Today is ${today}. ## Steps -1. +1. ## Network note @@ -311,9 +311,9 @@ Three at a time, not twelve. Every enabled skill is a recurring notification, an ./aeon packs ls # the six first-party packs ``` -`ls` footers with `76 skills · 1 enabled` — read it to them before proposing anything. First run installs the CLI runtime (tsx + yaml, ~12MB); the npm noise is one-time and expected. Grep-only equivalents: `references/layout.md`. +`ls` footers with `77 skills · 1 enabled` — read it to them before proposing anything. First run installs the CLI runtime (tsx + yaml, ~12MB); the npm noise is one-time and expected. Grep-only equivalents: `references/layout.md`. -Packs are a visibility filter, not a runtime switch — revealing one runs nothing. Core (12), Evolution (9) and Basics (18) show by default; Dev (11), Crypto (15) and Productivity (11) are on demand. +Packs are a visibility filter, not a runtime switch — revealing one runs nothing. Core (12), Evolution (9) and Basics (18) show by default; Dev (12), Crypto (15) and Productivity (11) are on demand. Reasonable starting sets: diff --git a/plugin/skills/aeon/references/layout.md b/plugin/skills/aeon/references/layout.md index fa890dd83d..7f27f9ce5a 100644 --- a/plugin/skills/aeon/references/layout.md +++ b/plugin/skills/aeon/references/layout.md @@ -12,7 +12,7 @@ Where everything lives in an Aeon repo, and the fastest way to see what's on. ./aeon skills ls --enabled --json # for building the Mode 2 timeline ``` -`ls` prints `SKILL / ON / SCHEDULE / PACK / DESCRIPTION` and a footer — `76 skills · 1 enabled`. First run installs the CLI runtime (tsx + yaml, ~12MB, one-time); the noise is expected. +`ls` prints `SKILL / ON / SCHEDULE / PACK / DESCRIPTION` and a footer — `77 skills · 1 enabled`. First run installs the CLI runtime (tsx + yaml, ~12MB, one-time); the noise is expected. **The `SCHEDULE` column is populated for disabled skills too** — it's their `aeon.yml` entry, not proof anything fires. Only the `●` in `ON` means it runs. diff --git a/plugin/skills/aeon/references/mcp.md b/plugin/skills/aeon/references/mcp.md index dcabb01432..a0b7e37e3d 100644 --- a/plugin/skills/aeon/references/mcp.md +++ b/plugin/skills/aeon/references/mcp.md @@ -7,7 +7,7 @@ Two unrelated things share the name. Get this wrong and nothing works. | | | |---|---| | **`.mcp.json`** — *external MCP servers, called BY Aeon skills* | Wired via the dashboard MCP panel or `./aeon mcp add`. This is what you want when a skill needs a tool. | -| **`bin/add-mcp`** — *Aeon itself AS an MCP server* | Builds `apps/mcp-server` and registers it with Claude Code / Desktop, so all 76 skills appear as `aeon-*` tools **in your local Claude**. Nothing to do with a skill calling out. | +| **`bin/add-mcp`** — *Aeon itself AS an MCP server* | Builds `apps/mcp-server` and registers it with Claude Code / Desktop, so all 77 skills appear as `aeon-*` tools **in your local Claude**. Nothing to do with a skill calling out. | The rest of this doc is the first one. For the second: `bin/add-mcp`, `--desktop` for a Claude Desktop snippet, `--uninstall` to remove, `claude mcp list` to verify. diff --git a/plugin/skills/aeon/references/skill-anatomy.md b/plugin/skills/aeon/references/skill-anatomy.md index 0964fad122..9025e7fc2c 100644 --- a/plugin/skills/aeon/references/skill-anatomy.md +++ b/plugin/skills/aeon/references/skill-anatomy.md @@ -1,10 +1,10 @@ # How Aeon skills are actually written -Surveyed across all 76 skills in `aeonfun/aeon`. Frequencies are real counts — match the dominant convention unless there's a reason not to. Bodies run 133–757 lines (~306 median); a skill is a prompt, not a config file, and reads as prose. +Surveyed across all 77 skills in `aeonfun/aeon`. Frequencies are real counts — match the dominant convention unless there's a reason not to. Bodies run 133–757 lines (~306 median); a skill is a prompt, not a config file, and reads as prose. ## Frontmatter -Universal — **all 76 skills** carry these five: +Universal — **all 77 skills** carry these five: ```yaml name: my-skill # the slug (matches the skills// directory) @@ -113,7 +113,7 @@ There is **no network sandbox** — plain `curl` works for unauthenticated GETs. `memory/` is the durable state that survives between runs. Four conventions, in order of how often skills touch them: -### `memory/logs/${today}.md` — the run log (63 of 76 skills) +### `memory/logs/${today}.md` — the run log (63 of 77 skills) Every skill appends what it did, under **one** heading that is exactly its slug: