Agent skill

Aeon Config Doctor

by aeonfun in aeonfun/aeon

Static linter for an Aeon instance's configuration that catches silent failures such as unquoted schedules, duplicate keys, unconfigured skills and broken MCP references.

MITAuto-check passedDevelopment

Install Aeon Config Doctor

skills CLI
$ npx skills add aeonfun/aeon --skill aeon-doctor -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install aeonfun/aeon aeon-doctor --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/aeonfun/aeon.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/aeon-doctor .claude/skills/aeon-doctor && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
aeon-doctor
GitHub stars
770
Token cost
~3.3k tokens
SKILL.md length
1,438 words
Files
1
Skills in repo
82
Repo updated
First seen
Licence
MIT

At a glance

Static linter for an Aeon instance's configuration that catches silent failures such as unquoted schedules, duplicate keys, unconfigured skills and broken MCP references.

  • Works in 12 steps: Unquoted schedule: on the old regex… → Duplicate skill keys — silent shadow… → On disk but unconfigured — invisible… → …
  • Checking an Aeon instance for skills that silently never run
  • SKILL.md covers Preamble (always), Steps — run every check,…, Report and Constraints, plus 1 more section
  • Calls node

What it does

This skill reads an Aeon instance's configuration before anything runs, to find mistakes that stop a skill from ever firing and leave no failed run behind. With no argument it lints the whole instance (`aeon.yml`, every `skills/*/SKILL.md` and `.mcp.json`), and given a skill slug it checks only that skill's entry and SKILL.md. It never fixes anything: it reports findings and leaves repair to the operator or `skill-repair`.

Each check is a pure local file read using grep, sort, jq and node, with no network or secrets, and one failing check never stops the others. A finding records the check, the skill, a severity, what is wrong and the exact fix. Critical means an enabled skill that will never fire or runs with the wrong privilege, while warn means a latent trap such as the same defect on a disabled skill. Findings already reported in recent logs are dropped, it notifies only on problems, and the excerpt is cut off at the first check.

When your agent uses it

  • Checking an Aeon instance for skills that silently never run
  • Linting one skill's config entry and its SKILL.md
  • Finding duplicate keys or mistyped modes in aeon.yml
  • Catching broken requires or MCP references before they cause trouble

Example prompts

  • “Run the config doctor on the whole Aeon instance.”
  • “Lint just the digest skill's config entry and SKILL.md.”
  • “My scheduled skill never fired. Check the config for unquoted schedules.”

Requirements

  • An Aeon instance with aeon.yml and a skills folder

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. Unquoted schedule: on the old regex scheduler (critical / warn)
  2. Duplicate skill keys — silent shadow (critical)
  3. On disk but unconfigured — invisible skills (warn)
  4. Enabled skill with no SKILL.md — broken entry (critical)
  5. requires: entry the allowlist silently drops (warn)
  6. mode: typo — silent write grant (critical)
  7. .mcp.json unresolved ${VAR} — kills ALL MCP (warn)
  8. Multi-line aeon.yml entry — override ignored (warn)
  9. Misleading schedule: / cron: in SKILL.md frontmatter (warn)
  10. Unquoted per-skill harness: / model: override (warn)
  11. Category not one of the six — trips CI (warn)
  12. Daily-log heading not ### — health loop can't key it (warn)

What it can do on your machine

Read from SKILL.md and the folder at commit df013db. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Aeon Config Doctor loads about 3.3k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 1,438 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~65
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from aeonfun/aeon at commit df013db, republished under its MIT licence (© aeonfun). 1,438 words, ~3,312 tokens.

Download SKILL.mdSave it as .claude/skills/aeon-doctor/SKILL.md (or your agent's skills folder).
name
aeon-doctor
description
Static config-correctness linter for this instance - catches the silent-failure class (unquoted schedules, duplicate keys, unconfigured skills, mode typos, broken requires/MCP refs) that no run-based health skill can see. Notifies only on problems.
metadata.title
Aeon Doctor
metadata.category
evolution
metadata.tags
meta, health
metadata.mode
read-only

${var} — scope. Empty (default) = lint the entire instance config (aeon.yml + every skills/*/SKILL.md + .mcp.json). A skill slug (e.g. digest) = lint just that one skill's aeon.yml entry and its SKILL.md.

Today is ${today}. You are this instance's config doctor. Every other health skill (heartbeat, skill-health) reads run outcomes — did a skill fire, did it pass. You read the config itself, before anything runs, for the class of bug where a skill is silently misconfigured and never fires at all — no error, no failed run, nothing in the Actions tab to notice. That class is invisible to run-based observability by construction, and it is the single most common reason an Aeon instance quietly stops doing what its operator thinks it does.

You do not fix anything — a diagnostic that inspects config must never mutate it. You surface precise, actionable findings; the operator (or skill-repair) applies the fix.

Preamble (always)

  1. Read memory/MEMORY.md for context and scan the last ~3 days of memory/logs/ — drop any finding you already reported so you don't re-nag a known-but-unfixed issue every run. (A finding is "the same" if it's the same check on the same skill.)
  2. Resolve scope from ${var}: empty → all skills; a slug → restrict every check to that skill (skip fleet-wide-only checks like duplicate-key detection unless they touch the target).
  3. Every check below is a pure local file read - grep, sort, and node (inline or node scripts/*.js). This skill is read-only, whose tool allowlist (scripts/skill_mode.sh) has grep/sort/head/tail/wc/cat/jq/node but not awk/sed/comm/bash, so the checks use those. No network, no secrets, no GitHub API. If a referenced script is missing, skip that check and note it; never let one check's failure stop the others.

Steps — run every check, collect findings

Each finding = {check, skill, severity, one-line what's-wrong, exact fix}. Severity:

  • critical — an enabled: true skill that will never fire or will run with the wrong privilege. Live breakage.
  • warn — a latent trap: the same defect on a disabled skill, or a correctness issue that degrades silently rather than killing the run.
1 · Unquoted schedule: on the old regex scheduler (critical / warn)

Applies only when scripts/parse-aeon-config.sh is missing. With it, scheduler.yml reads aeon.yml through yq and a bare schedule: 0 12 * * * fires like a quoted one, so the command below prints nothing. Without it, scheduler.yml matches schedules with the bash regex schedule: *"([^"]+)": an unquoted value doesn't match, is read as empty, and the skill is skipped every tick, forever - the file is still valid YAML, so nothing else notices.

bash
[ -f scripts/parse-aeon-config.sh ] || grep -nE '^\s+[a-z0-9-]+:\s*\{[^}]*schedule:' aeon.yml | grep -vE 'schedule: *"'

Each printed line is an entry whose schedule: isn't double-quoted. critical if that entry is enabled: true; warn if disabled (it'll be dead the moment it's enabled). Fix: add the quotes (schedule: "0 12 * * *"), or pull upstream to get the yq scheduler.

2 · Duplicate skill keys — silent shadow (critical)

A repeated skill name under the skills: map silently disables the first copy (last-wins YAML).

bash
node scripts/validate-config.js                        # authoritative — dup keys + checkout ordering
node -e 'const k=require("fs").readFileSync("aeon.yml","utf8").match(/^  [a-z0-9-]+:/gm)||[];const c={};for(const x of k)c[x]=(c[x]||0)+1;for(const x in c)if(c[x]>1)console.log(x.trim().slice(0,-1))'    # names appearing more than once

Any printed name (or a dup-key error from the validator) is a finding. critical if either copy is enabled. Fix: remove the shadow copy.

3 · On disk but unconfigured — invisible skills (warn)

A skill with a SKILL.md but no aeon.yml entry defaults to disabled, so "not configured" and "deliberately off" look identical.

bash
node -e 'const fs=require("fs");const k=new Set((fs.readFileSync("aeon.yml","utf8").match(/^  [a-z0-9-]+:/gm)||[]).map(x=>x.trim().slice(0,-1)));for(const d of fs.readdirSync("skills").sort())if(fs.existsSync("skills/"+d+"/SKILL.md")&&!k.has(d))console.log(d)'

Each printed name exists on disk but has no config entry. warn — list them so the operator can decide (enable, or accept it's intentionally uninstalled).

4 · Enabled skill with no SKILL.md — broken entry (critical)

The inverse: an aeon.yml entry pointing at a skill dir that doesn't exist. For every enabled: true key, confirm skills/<key>/SKILL.md is present. Missing → critical (the run fails or no-ops).

5 · requires: entry the allowlist silently drops (warn)

Both list forms parse — inline (requires: [KEY?]) and block (- KEY on its own line), top-level or nested under metadata:. What still bites is the value: scripts/skill_requires.sh injects only names matching ^[A-Z][A-Z0-9_]{2,}$ (a trailing ? = "works better with" is allowed). An entry that fails the filter — lowercase, fewer than 3 chars, a leading digit, or stray punctuation — is silently dropped, so the skill declares a credential it never receives and fails or degrades with a confusing auth error.

bash
node -e 'const fs=require("fs");for(const d of fs.readdirSync("skills")){const p="skills/"+d+"/SKILL.md";if(!fs.existsSync(p))continue;const fm=(fs.readFileSync(p,"utf8").split(/^---$/m)[1]||"").split("\n");fm.forEach((l,i)=>{const m=l.match(/^\s*requires:\s*(.*)$/);if(!m)return;let it=[];if(m[1].includes("["))it=m[1].replace(/.*\[/,"").replace(/\].*/,"").split(",");else for(let j=i+1;j<fm.length&&/^\s*-\s*/.test(fm[j]);j++)it.push(fm[j].replace(/^\s*-\s*/,"").replace(/\s*#.*/,""));for(let x of it){x=x.replace(/\s/g,"").replace(/\?$/,"");if(x&&!/^[A-Z][A-Z0-9_]{2,}$/.test(x))console.log(p+": requires entry \""+x+"\" is dropped by the allowlist filter")}})}'

Flag any entry that fails the filter. warn. Fix: use the exact env-var name (uppercase, ^[A-Z][A-Z0-9_]{2,}$), with a trailing ? only to mark it optional.

6 · mode: typo — silent write grant (critical)

An unknown mode: value falls back to write, never to the safer tier. The only valid strings are read-only and write.

bash
grep -rnE '^[[:space:]]*mode:' skills/*/SKILL.md | grep -vE ':\s*(read-only|write)\s*$'

mode: is nested under metadata: (spec form), so the pattern allows leading indent. Any printed line is a typo (readonly, read only, readOnly, …) that silently grants full write / gh / git. critical — least-privilege is broken. Fix: the exact string read-only. (A skill with no mode: line is intentionally write — not a finding.)

7 · .mcp.json unresolved ${VAR} — kills ALL MCP (warn)

On the Claude harness a single ${VAR} in .mcp.json that resolves to no secret disables every MCP server that run (Skipping MCP this run.), not just the broken one. List the referenced vars so the operator can confirm each is set:

bash
grep -oE '\$\{[A-Z0-9_]+\}' .mcp.json | sort -u    # no .mcp.json = no output

Report the list as warn with the note: verify each with ./aeon secrets ls --set; any one unset silently blacks out MCP for skills that rely on it. (You can't read secret values in read-only mode — surface the vars, don't try to resolve them.)

Show full SKILL.md (585 more words)Show less
8 · Multi-line aeon.yml entry — override ignored (warn)

Per-skill model: / harness: overrides are read by a single-line grep. An entry split across lines (its { and } on different lines) takes the global default instead — no error, and the run's model= line looks normal.

bash
grep -nE '^\s+[a-z0-9-]+:\s*\{[^}]*$' aeon.yml    # opens { with no closing } on the same line

Each hit is a split entry → warn. Fix: collapse it to one inline { … } line.

9 · Misleading schedule: / cron: in SKILL.md frontmatter (warn)

Schedules live in aeon.yml only; scheduler.yml never reads SKILL.md. A schedule: / cron: line in frontmatter looks load-bearing but does nothing — a trap for anyone editing the skill.

bash
grep -rnE '^[[:space:]]*(schedule|cron):' skills/*/SKILL.md

Report as warn (informational): these lines are inert; the real schedule is the aeon.yml entry (the pattern allows leading indent, since spec-form frontmatter nests these under metadata:).

10 · Unquoted per-skill harness: / model: override (warn)

The override read (scripts/skill_entry.sh plus a quoted-value match) requires double quotes, even where the yq scheduler accepts a bare schedule:. An unquoted harness: grok or model: … is silently ignored and the skill keeps running the global default.

bash
grep -nE '\{[^}]*(harness|model):' aeon.yml | grep -vE '(harness|model): *"'

Each printed line has an unquoted override → warn. Fix: quote it (harness: "grok").

11 · Category not one of the six — trips CI (warn)

Every skill's category: must be one of core evolution basics dev crypto productivity or the catalog CI gate goes red.

bash
node -e 'const fs=require("fs");const V=["core","evolution","basics","dev","crypto","productivity"];for(const d of fs.readdirSync("skills")){const p="skills/"+d+"/SKILL.md";if(!fs.existsSync(p))continue;const m=(fs.readFileSync(p,"utf8").split(/^---$/m)[1]||"").match(/^\s*category:\s*["\x27]?([A-Za-z-]+)/m);if(!m||!V.includes(m[1]))console.log(d+": category "+(m?m[1]:"(missing)")+" is not one of "+V.join(" "))}'    # same set as scripts/check-skill-categories.sh

Report any offender as warn.

12 · Daily-log heading not ### <slug> — health loop can't key it (warn)

CLAUDE.md mandates each skill append its daily-log entry under a ### <slug> heading — "the health loop parses this shape", and skill-health / heartbeat key skills by slug. A skill that logs under ## <Display Name> (wrong level and wrong identifier) still runs, but its narrative log is harder for the health view to attribute and for the cross-skill dedup ("read the last 3 days of logs") to match — a silent degrade, never an error.

bash
node -e 'const fs=require("fs");const e=x=>x.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");for(const s of fs.readdirSync("skills")){const p="skills/"+s+"/SKILL.md";if(!fs.existsSync(p))continue;const t=fs.readFileSync(p,"utf8");if(!/memory\/logs\/\$\{today\}/.test(t))continue;if(new RegExp("###\\s+"+e(s)+"\\b").test(t))continue;const n=((t.match(/^name:\s*(.*)$/m)||[])[1]||s).trim();const h=t.match(new RegExp("^##\\s+("+e(s)+"|"+e(n)+")\\b","m"));if(h)console.log(s+" logs under \""+h[0]+"\" - should be \"### "+s+"\"")}'

Each hit → warn. Fix: change the Log-section heading (the instruction line and the example block) to ### <slug>, and demote any sub-sections inside the block to ####.

Report

  • No findings → send nothing and exit. A clean config is the common case; silence is correct and keeps this channel trustworthy.
  • Findings → one consolidated ./notify, most-severe first. Write the body to a scratch file and send with -f (never a long argv):
    bash
    ./notify -f <file> \
      --title "aeon-doctor: <N> config issue(s)" \
      --severity <critical if any critical else warn> \
      --mute-key "aeon-doctor"
    Group by severity. For each finding give: the skill, one line on what breaks (and that it's silent — the operator won't see it in the Actions tab), and the exact one-command fix. If a critical exists, lead with it — an enabled skill that never fires is the whole reason this skill exists.
  • Do not open a PR or edit any file. Point mechanical fixes at skill-repair / the ./aeon CLI; leave the fix to the operator.

Constraints

  • Read-only by contract — inspect config, never mutate it. No Write / Edit / git / gh.
  • Every finding must cite the exact file + line and a copy-pasteable fix. A config finding with no fix is noise.
  • Don't invent problems: only report what a check actually matched. If every check is clean, say nothing.
  • Fully local — no network, no secrets, no GitHub API. Run-outcome health is skill-health's job; live attention is heartbeat's. Stay in your lane: the static config.

Log

This skill is read-only, so the workflow's read-only guard writes its ### aeon-doctor log entry from your captured output; a self-written entry would be a duplicate. Don't append to memory/logs/ yourself - put this record in your final output as bullets: checks run, findings by severity (or clean), and whether a notification was sent. End-states: AEON_DOCTOR_CLEAN, AEON_DOCTOR_FINDINGS, AEON_DOCTOR_ERROR.

© aeonfun, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/aeon-doctor of aeonfun/aeon.

Open the folder on GitHubat commit df013db

Compare with similar skills

Aeon Config Doctor next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Aeon Config Doctor compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Aeon Config Doctor this skillaeonfun/aeon770—~3.3kAutomated safety check: PassMIT
Ue Code AuthoringJasonMa0012/MooaToon750—~1.9kAutomated safety check: NotesCustom licence
Typescript Styletjx666/vscode-mcp105—~961Automated safety check: PassCustom licence
Vscode MCP Architecturetjx666/vscode-mcp105—~1.5kAutomated safety check: PassCustom licence
Search Firstaffaan-m/ECC276k—~1.7kAutomated safety check: PassMIT
Search FirstaAAaqwq/AGI-Super-Team1057 repos~1.4kAutomated safety check: PassMIT

Similar skills

  • Ue Code Authoring

    JasonMa0012/MooaToon

    A skill your agent uses when writing or modifying UE C++ (classes, actors, components, subsystems, interfaces, function libraries) with Rider MCP available.

    750 GitHub stars~1.9k tokensUpdated 22 days ago
    DevelopmentAuto-check: notes
  • Typescript Style

    tjx666/vscode-mcp

    TypeScript code style and repo conventions for VSCode MCP — inference vs explicit types, ESM import suffixes, zod schema contracts, async VSCode/Node APIs, JSON-safe IPC results, JSDoc for public…

    105 GitHub stars~961 tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Vscode MCP Architecture

    tjx666/vscode-mcp

    VSCode MCP Bridge project architecture — current monorepo layout, IPC/EventDispatcher flow, per-workspace socket discovery, MCP/CLI adapters, tool filtering, and VSCode extension services.

    105 GitHub stars~1.5k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Search First

    affaan-m/ECC

    Research-before-coding workflow. An agent skill from affaan-m/ECC.

    276k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Search First

    aAAaqwq/AGI-Super-Team

    Research-before-coding workflow. An agent skill from aAAaqwq/AGI-Super-Team.

    105 GitHub starsUsed in 7 repos~1.4k tokens
    DevelopmentAuto-check passed
  • Chrome Devtools MCP

    managedcode/dotnet-skills

    Use Chrome DevTools MCP from .NET agents and .NET-focused repos to inspect, debug, and automate Chrome through an MCP client.

    486 GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed

More from aeonfun/aeon

All 82 skills in this repo
  • Browses open tasks on the TaskMarket agent-worker market and, with explicit operator approval, creates tasks, tracks submissions and submits finished work.

    770 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Sets up and manages an Aeon agent instance that runs skills on a schedule through GitHub Actions: starting, rescheduling, debugging, editing skills and mining chat history.

    770 GitHub stars~9k tokensUpdated today
    Auto-check: warnings
  • Reads a Base Account's address, portfolio and transaction history through the Base MCP server, and stays strictly read-only in unattended Aeon runs, reporting only changes.

    770 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Audits every page of a site each day from its sitemap, scores on-page and technical SEO, checks duplicates across pages and reports what changed since the last run.

    770 GitHub stars~5.1k tokensUpdated today
    Auto-check passed
  • Action Converter

    aeonfun/aeon

    5 concrete real-life actions, leverage-scored against open loops with specificity and anti-fluff gates

    770 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Auto Merge

    aeonfun/aeon

    Automatically merge open PRs that have passing CI, no blocking reviews, and no conflicts

    770 GitHub stars~2.6k tokensUpdated today
    Auto-check passed

Questions about Aeon Config Doctor

What does Aeon Config Doctor do?

Static linter for an Aeon instance's configuration that catches silent failures such as unquoted schedules, duplicate keys, unconfigured skills and broken MCP references. This skill reads an Aeon instance's configuration before anything runs, to find mistakes that stop a skill from ever firing and leave no failed run behind.md.

When should I use Aeon Config Doctor?

Aeon Config Doctor fits situations like: checking an Aeon instance for skills that silently never run; linting one skill's config entry and its SKILL.md; finding duplicate keys or mistyped modes in aeon.yml; catching broken requires or MCP references before they cause trouble.

How do I install Aeon Config Doctor in Claude Code?

Run `npx skills add aeonfun/aeon --skill aeon-doctor -a claude-code`. Or copy the skill folder (skills/aeon-doctor in aeonfun/aeon) into .claude/skills/aeon-doctor in your project. Claude Code loads it when a task matches its description.

How do I install Aeon Config Doctor in Codex?

Run `npx skills add aeonfun/aeon --skill aeon-doctor -a codex`. Or copy the skill folder (skills/aeon-doctor in aeonfun/aeon) into .agents/skills/aeon-doctor in your project. Codex loads it when a task matches its description.

Can I use Aeon Config Doctor in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aeonfun/aeon --skill aeon-doctor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aeon-doctor, .gemini/skills/aeon-doctor, .github/skills/aeon-doctor and .opencode/skills/aeon-doctor in your project.

What does Aeon Config Doctor need to run?

Going by SKILL.md and its folder, Aeon Config Doctor needs the command-line tools its instructions call (node). Our summary lists: An Aeon instance with aeon.yml and a skills folder.

Does Aeon Config Doctor access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Aeon Config Doctor safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Aeon Config Doctor use?

Aeon Config Doctor is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Aeon Config Doctor use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Aeon Config Doctor?

Skills that share tags, products or a category with Aeon Config Doctor: Ue Code Authoring (JasonMa0012/MooaToon, 750 stars), Typescript Style (tjx666/vscode-mcp, 105 stars), Vscode MCP Architecture (tjx666/vscode-mcp, 105 stars) and Search First (affaan-m/ECC, 276k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Aeon Config Doctor?

aeonfun (a GitHub organization) maintains it in aeonfun/aeon, which has 770 GitHub stars. The repository holds 82 skills in this directory. The repository was last updated on October 10, 2026.

Source: aeonfun/aeon on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.