self-improve
GitHub用于自我改进或审计代理性能。支持improve模式自动修复高影响问题,audit模式审查失败并应用安全修复。通过解析日志和配置,每次仅执行一项变更以提升技能、提示词及可靠性。
Trigger Scenarios
Install
npx skills add aaronjmars/aeon --skill self-improve -g -y
SKILL.md
Frontmatter
{
"var": "",
"name": "self-improve",
"tags": [
"meta"
],
"type": "Skill",
"category": "core",
"description": "Improve the agent itself, or audit its recent performance — better skills, prompts, workflows, and config, plus a quality\/reliability\/memory-hygiene review of what the agent did and what failed"
}
${var} — Mode selector, optionally with a focus area, as
modeormode:focus.
- empty or
improve→ improve mode: find and fix the highest-impact issue from recent logs, then propose + apply the fix via PR (default).improve:<area>(or a bare area likenotifications) → improve mode focused on that specific area (e.g.heartbeat,notifications,memory).audit→ audit mode: review what the agent did, what failed, and what to improve; save a full review and apply safe, obvious fixes directly.audit:<area>→ audit mode focused on that specific area (e.g.reliability,memory).
Setup (both modes)
Parse ${var} into a mode and an optional focus area:
- Split on the first
:— the part before is the mode, the part after is the focus. - If the mode is
audit→ run the Mode: audit branch below (focus = optional area to concentrate the review on). - If the mode is
improveor empty → run the Mode: improve branch below (focus = optional area to fix). - If the token is neither keyword but non-empty (e.g.
notifications) → treat it as improve mode with the whole${var}as the focus area (backward compatibility).
Then:
- Read
memory/MEMORY.mdfor high-level context and goals. - Read recent
memory/logs/(improve mode: last 2 days; audit mode: last 7 days) for errors, failures, and quality issues.
If a focus area is set, concentrate the run on that area.
Mode: improve (default)
Improve the agent itself based on recent performance. ONE change per run.
Steps
-
Check for open improvement PRs — don't pile up unreviewed work:
OPEN_PRS=$(gh pr list --state open --json title,number --jq '[.[] | select(.title | test("^(fix|feat|chore)\\("; "i"))] | length')If there are already 3+ open improvement PRs, log "self-improve: 3+ open PRs, waiting for review" and exit. Don't create more debt.
-
Identify what to improve. If the focus area is empty, scan for issues:
- Read
memory/logs/from last 2 days — look for:- Skills that failed or produced low-quality output
- Errors, timeouts, "zero output", rate limiting
- Notifications that didn't send or were truncated
- Memory consolidation problems
- Read
memory/cron-state.jsonfor skills with low success rates - Read
output/articles/repo-actions-*.mdfrom last 7 days for self-improvement ideas - Pick the highest-impact, smallest-effort fix. One change per run.
- Read
-
Understand the area you're fixing. Read the relevant files:
- Skills:
skills/{name}/SKILL.md - Config:
aeon.yml - Workflows:
.github/workflows/*.yml - Agent instructions:
CLAUDE.md - Dashboard:
apps/dashboard/(if UI-related)
Understand the current behavior before changing anything.
- Skills:
-
Implement the fix. Make minimal, targeted changes:
- If a skill prompt is unclear → rewrite the ambiguous section
- If a skill is hitting rate limits → add backoff logic or reduce frequency
- If output quality is low → tighten the prompt, add examples, clarify format
- If a notification is broken → fix the formatting or truncation
- If a config is wrong → fix aeon.yml
Do NOT:
- Rewrite entire skills from scratch
- Add new features (that's create-skill's job)
- Change the core architecture
- Modify secrets or environment variables
-
Create a branch and PR:
git checkout -b fix/self-improve-${today} git add -A git commit -m "fix: [description of what was improved] Problem: [what was failing/degraded] Fix: [what was changed] Evidence: [log entries, error messages, success rates]"Open a PR:
gh pr create --title "fix: [short description]" \ --body "## Problem [What was failing or degraded — cite specific log entries or error messages] ## Fix [What was changed and why] ## Evidence - [Relevant log entries] - [Success rate before: X%] - [Error pattern: ...]" -
Notify. Send via
./notify:self-improve: [what was fixed] — PR: [url] -
Log (see the shared
## Logsection below).
Guidelines
- ONE fix per run. Don't bundle unrelated changes.
- Smallest viable fix. A one-line prompt tweak > a full rewrite.
- If you can't find anything to improve, that's fine. Log "self-improve: everything looks healthy" and exit.
- Never modify workflow files (.github/workflows/) — only skill files, CLAUDE.md, and aeon.yml.
- Don't create circular improvements (e.g. don't improve self-improve).
Mode: audit
Audit what the agent did, what failed, and what to improve. Produce a full review, apply safe fixes, and surface recommendations.
Steps
Read memory/MEMORY.md for context and goals. Read ALL memory/logs/ entries from the last 7 days.
- Audit quality of outputs:
- Read recent articles in
output/articles/— are they substantive or formulaic? - Check recent notifications in logs — were they useful or noisy?
- Review any PR comments posted — were they actionable?
- Read recent articles in
- Audit reliability:
- How many skills ran vs expected?
- Any repeated errors or patterns of failure?
- Are monitors catching real issues or always returning OK?
- Audit memory hygiene:
- Is
MEMORY.mdcurrent and under 50 lines? - Are logs structured consistently?
- Any stale data that should be cleaned?
- Is
- Generate improvement recommendations:
- Skills to add, modify, or disable
- Schedule adjustments
- Config changes (feeds, repos, addresses to add/remove)
- Quality improvements (better prompts, new data sources)
- Save the full review to
output/articles/self-review-${today}.md. - Apply any safe, obvious improvements directly:
- Prune stale
MEMORY.mdentries - Update
feeds.ymlif feeds are dead
- Prune stale
- Send a summary via
./notify:*Self Review — ${today}* Quality: assessment Reliability: X/Y skills ran Actions taken: what was fixed Recommendations: top 2-3 suggestions - Log (see the shared
## Logsection below).
Log
After completing the run, append a log entry to memory/logs/${today}.md under a single ### self-improve heading, with a discriminator line naming the mode that ran:
### self-improve
- **Mode:** improve (or: audit)
Then, for improve mode:
- **Target:** [what was improved]
- **Problem:** [what was failing]
- **Fix:** [what was changed]
- **PR:** [url]
For audit mode:
- **Review:** output/articles/self-review-${today}.md
- **Quality:** [assessment]
- **Reliability:** [X/Y skills ran]
- **Actions taken:** [what was fixed directly]
- **Recommendations:** [top 2-3]
Sandbox note
Write mode. Both branches touch the repo (improve opens a PR via git/gh; audit writes output/articles/self-review-${today}.md and may prune MEMORY.md/feeds.yml). For the GitHub API, use the gh CLI (gh pr list, gh pr create) — it handles auth internally and works from the sandbox where secret-bearing curl calls are blocked. No pre-fetch or post-process side-channel is needed.
Version History
- fb16753 Current 2026-07-05 12:07


