search-skill
${var} — Capability to search for (e.g.
rss,gas alert,farcaster). If empty, derives a query from concrete repo gaps (failing skills, open issues, non-template priorities). If no gap can be derived, abort asSEARCH_SKILL_NO_GAP— silent, log-only.
Today is ${today}. Your task is to find an external skill that fills a real gap in this repo, install it via bin/add-skill (so skills.lock + aeon.yml + the trust-gated security scan all fire), and notify only when something was installed or surfaces as a strong recommendation. Silence on no-gap / empty-result runs is correct — it prevents training the operator to ignore this channel.
Steps
1. Derive the query
If ${var} is set → use it as-is, skip inference.
Otherwise infer a gap from these sources, in order. Stop at the first concrete capability word.
a. Failing skills — memory/cron-state.json: any skill with consecutive_failures >= 2 OR success_rate < 0.6 (ignore skills with fewer than 3 total_runs). Query = the capability the failing skill covers (e.g. twitter api for fetch-tweets, rss parser for rss-digest).
b. Open issues — memory/issues/INDEX.md: any issue with status open + category in {missing-secret, api-change, permanent-limitation, quality-regression}. Query = capability named in the issue title.
c. Non-template priorities — memory/MEMORY.md "Next Priorities" section. Skip template lines "Configure notification channels" and "Run first digest" — those are bootstrap, not capability gaps.
d. Recent log signals — grep memory/logs/ over the last 7 days for phrases "no skill for", "can't do", "would help if", "missing" in a capability context (not commit-message noise).
If none of (a)–(d) yield a concrete capability word → exit mode SEARCH_SKILL_NO_GAP. Log and stop. Do NOT notify. Do NOT search.