feature
Build, enhance, or revive GitHub repos - ship one feature PR per watched repo (watched), make the best single enhancement on one external repo (external), or revive the top dormant repo (dormant).
git clone --depth 1 https://github.com/aeonfun/aeon /tmp/feature && cp -r /tmp/feature/skills/feature ~/.claude/skills/featureSKILL.md
> **${var}** — Selector `target[:arg] [--fix-issues]`, `target ∈ {watched, external, dormant}`. Empty or `watched` = build a feature on every watched repo (one PR each); `external:<owner/repo>` = one best enhancement on that external repo; `dormant` = revive the highest-scoring dormant repo. A leading `build:<owner/repo | issue-url | free-text instruction>` — the shape the Telegram "ship which opportunity?" force-reply sends via `repo-scanner`'s offer — is intercepted **first** and routed into the **external** branch on that target/instruction. `--fix-issues` biases the chosen branch toward fixing an open GitHub issue. Full grammar below.
This skill merges three repo-work modes behind one selector so no capability is lost:
| Branch | Selector | Per run | Repo source | Use it for |
|---|---|---|---|---|
| **watched** (§A) | empty / `watched` | Iterates **every** watched repo, ships one PR per repo | `memory/watched-repos.md` | Weekly broad sweep — keep every repo moving |
| **external** (§B) | `external[:owner/repo[#N]]` | **Single** repo per run | `memory/topics/repos.md` catalog (or `${var}` override) | Targeted enhancement / issue fix on one repo |
| **dormant** (§C) | `dormant[:owner/repo]` | **Single** dormant repo per run | `memory/watched-repos.md` scored by dormancy | Reactivate a stale high-★ repo with one visible fix |
Today is ${today}. Read `memory/MEMORY.md` and the last 7 days of `memory/logs/` before starting — and before notifying, drop anything already reported in the last ~3 days of logs.
## Selector
**Telegram force-reply interception — check this FIRST, before parsing anything else.** If `${var}` starts with `build:`, it is the "ship which opportunity?" force-reply that `repo-scanner` offers (routed here as `feature` with `var="build:<the operator's reply>"`). Strip the prefix with `${var#build:}` and treat the remainder as an **external build target/instruction** — route it straight into the **external** branch (§B), reusing that branch's existing logic (do **not** run the watched or dormant branches for a `build:` value, and do not duplicate §B). Normalize the remainder into a §B target:
- `owner/repo` → run §B as if `external:owner/repo` (B2 "clone that repo").
- an issue URL (`https://github.com/owner/repo/issues/N`) or `owner/repo#N` → run §B as if `external:owner/repo#N` (B2 "fetch that issue").
- free text like `owner/repo: add retry to the client` → run §B on `owner/repo`, using the trailing text as the **explicit enhancement to build** (see §B4's "requested enhancement" note — skip the auto-pick).
- anything else with no parseable repo → run §B passing the whole remainder as the enhancement instruction; §B B2/B4 already reason about selecting and scoping a target.
The remainder may itself contain colons — keep them. This is a complete run once §B ships its PR (or cleanly skips); do not then fall through to the normal selector.
Parse `${var}` into a **target** and optional flags:
- Empty or `watched` → **watched** branch (§A): sweep every watched repo, ship one feature PR each.
- `watched:<feature-spec>` → **watched** branch, but build `<feature-spec>` on the **FIRST watched repo only**.
- `external` → **external** branch (§B): auto-pick one catalog/watched repo and make the best single enhancement.
- `external:<owner/repo>` → **external** branch on that specific repo.
- `external:<owner/repo>#N` → **external** branch on that specific issue.
- `dormant` → **dormant** branch (§C): auto-select the highest-scoring dormant repo and revive it.
- `dormant:<owner/repo>` → **dormant** branch on that specific repo (skip selection).
- Trailing `--fix-issues` (with any target) → bias the branch toward **fixing an OPEN GitHub issue** rather than a proactive change (see each branch's "with `--fix-issues`" note).
Example values: `` (empty → watched sweep), `watched`, `watched:add a dark-mode toggle`, `external`, `external:acme/api`, `external:acme/api#42`, `dormant`, `dormant:acme/legacy-lib`, `external --fix-issues`, `dormant --fix-issues`.
Dispatch to exactly one branch. Do not run branches you weren't selected into.
## Voice
If `soul/SOUL.md` and `soul/STYLE.md` are populated, read both and match the operator's voice in every written output — per-repo notifications (§A), and the revival tweet draft (§C step 5). If they are empty templates or absent, use a clear, direct, neutral tone — short sentences, no hashtags, no emojis, no corporate launch-language.
## Config
All branches read operator-controlled files under `memory/` (runtime config — reference the paths exactly, never edit them here):
- **`memory/watched-repos.md`** — candidate repo pool. One `owner/repo` per line (markdown bullets like `- owner/repo` are fine; comment lines starting with `#` are ignored). Used by **watched** and **dormant**; also the OWNER fallback for **external**. If missing or empty on the **watched** branch, log `FEATURE_NO_CONFIG` and exit cleanly (no notification — empty config is not an error). On **dormant**, log `REPO_REVIVE_NO_CONFIG` and exit cleanly.
- **`memory/topics/repos.md`** — full repo catalog with descriptions, stack, and opportunities. Preferred repo source for the **external** branch; if absent, fall back to `memory/watched-repos.md`.
- **`memory/topics/stale-models.md`** — stale AI model names and their current replacements. Used only by the **dormant** branch's stale-model audit. Example shape:
```markdown
# Stale Models
## Considered stale (flag if a watched repo's README/config still references these)
- gpt-3.5
- claude-2
- claude-instant
- gpt-4 (without version suffix)
- text-davinci
## Current models (suggest these as replacements)
- claude-sonnet-5
- claude-opus-4-8
- gpt-5
- gemini-3
- grok-4.6
```
If the file is missing, the **dormant** branch skips the "stale model" fix category entirely (other categories still apply) and logs `REPO_REVIVE_NO_MODEL_CONFIG: skipping model audit`.
---
## §A — Watched branch (buildSet up and run an Aeon agent instance — get started from scratch, pick which skills to turn on or install more from packs, reschedule or change what runs, edit what an existing skill does, fix a skill that isn't firing, set the STRATEGY.md north star and soul/ voice, turn a coding-agent chat into a scheduled Aeon skill, and mine past coding-agent conversations for recurring work worth automating as a skill. Use when the user mentions Aeon, aeon.yml, an Aeon skill / instance / routine / pack, asks to schedule, enable, edit, or debug an agent that runs on a cron, or asks what of their repeated/manual work Aeon could take over.
Mention/keyword sweep on social platforms for [REPLACE: KEYWORDS] — trends, sentiment, top posts
5 concrete real-life actions, leverage-scored against open loops with specificity and anti-fluff gates
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.
Pull framework updates from the upstream Aeon repo into this instance - 3-way merges canon's new commits into a PR, never clobbering operator config.
Write a publication-ready article in one of three angles - a trending long-form piece, a watched-repo thesis, or a project-through-a-lens essay. Optional Replicate hero image with --visual.
Automatically merge open PRs that have passing CI, no blocking reviews, and no conflicts
Two-mode aeon.yml workflow builder - analyze inspects URLs and emits a tiered, signal-verified skill-enablement plan plus an aeon.yml diff; enable flips slugs to enabled:true and opens a PR.