frequency-guard
Per-skill run-count watchdog — checks if any capped skills exceeded their configured daily limit and alerts on breach
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Per-skill run-count watchdog — checks if any capped skills exceeded their configured daily limit and alerts on breach
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Audit every enabled skill's upstream file dependencies for staleness — flags chained skills about to consume yesterday's article or a long-dead topic file
Validate skill outputs against assertions, diff vs prior eval to flag regressions, file issues for new failures, and queue concrete fixes
Compare current progress against goals with quantified status, velocity, trend, and a concrete next action per goal
First-touch review of newly opened PRs on [REPLACE: WATCHED_REPO] — verdict + welcoming comment + label
Summary of the [REPLACE: CHANNEL_PLATFORM] channel [REPLACE: CHANNEL_NAME] — top [REPLACE: TOP_N_THREADS] threads + open questions
Price and volume tracker for [REPLACE: TOKEN_SYMBOL] with anomaly alerts above [REPLACE: ALERT_THRESHOLD_PCT]% movement
| name | Frequency Guard |
| category | meta |
| description | Per-skill run-count watchdog — checks if any capped skills exceeded their configured daily limit and alerts on breach |
| tags | ["meta"] |
Today is ${today}. Check whether any capped skills exceeded their daily run limit.
Caps live in memory/skill-caps.json. If the file doesn't exist, create it with the seed below and continue:
{
"deploy-prototype": { "daily_max": 1, "note": "expensive — capped at 1/day" },
"external-feature": { "daily_max": 1, "note": "1 pass per day; var targets vary" },
"feature": { "daily_max": 1, "note": "iterates all watched repos per run" },
"vuln-scanner": { "daily_max": 2, "note": "scheduled 2x/day by design; cap covers extra manual fires" }
}
Operators can also declare caps in aeon.yml under a top-level skill_caps: block. If both exist, memory/skill-caps.json wins (operator-edited dynamic state outranks committed config).
memory/token-usage.csvdate,skill,model,input_tokens,output_tokens,cache_read,cache_creationRUN_FREQ_GUARD_SKIP: no token-usage.csv and stop. No notification.date == ${today}.RUN_FREQ_GUARD_SKIP: no runs today yet and stop.Group filtered rows by skill. Each row = one run. Output: { skill: run_count }.
Read memory/skill-caps.json (preferred) or aeon.yml's skill_caps: block. If neither exists, write the defaults from the Config section above to memory/skill-caps.json, then continue with those values.
For each skill in the caps config:
count > daily_max: record a breach → { skill, daily_max, actual: count, over_by: count - daily_max }.RUN_FREQ_GUARD_OK with the count summary, skip notification../notify -f.Write to .pending-notify-temp/run-freq-guard-${today}.md (create dir if needed), then:
./notify -f .pending-notify-temp/run-freq-guard-${today}.md
Message format:
*Run Frequency Guard — ${today}*
<N> cap breach(es):
- <skill>: <actual> runs today / <daily_max> cap (<over_by> over)
- <skill>: <actual> runs today / <daily_max> cap (<over_by> over)
update caps: memory/skill-caps.json
log: memory/logs/${today}.md
No hedging, no fluff.
memory/logs/${today}.mdAppend:
## Run Frequency Guard
- Skills checked: <count of capped skills>
- Breaches: <list of "skill (actual/max)" or "none">
- Status: OK / BREACH
- Notification: sent / skipped (OK)
- RUN_FREQ_GUARD_OK
(Use RUN_FREQ_GUARD_OK even on breach — the log marker just means the skill ran successfully.)
Reads only local files (memory/token-usage.csv, memory/skill-caps.json, aeon.yml). No external network calls. No prefetch/postprocess needed.