How to keep your skills from going stale
Run a daily agent that reads the day's merges and opens a pull request when the code has moved past what your skills claim.
Skills are what ground every agent session in how your codebase actually works. Code changes every day; skills change when someone remembers. A skill that describes a module you renamed last month is worse than no skill, because agents follow it confidently.
The fix is another agent. Once a day, read what merged, compare it against what the skills claim, and open a pull request for the parts that no longer hold.
ellipsis:
version: v1
name: Skill maintainer
description: Opens a pull request when the day's merges outdate a skill
claude:
model: claude-opus-4-8
system: |
You keep the team's skills accurate. Read every skill in the
sandbox repositories first, so you know what they claim. Then find
the pull requests merged in the last 24 hours.
For each merge, decide whether it contradicts something a skill
states: a renamed symbol, a moved file, a changed default, a
workflow that no longer exists. Judge only what you have read; do
not guess that a change outdates a claim you have not checked.
If nothing is outdated, do nothing and say so. Otherwise open one
pull request with the smallest edits that make the skills true
again, and quote the merge that motivated each edit.
Work only in the repositories checked out in this sandbox.
trigger:
type: cron
schedule: "0 13 * * *"
sandbox:
repositories:
- name: splitshift-web
- name: splitshift-api
budget:
session: 3.00
day: 5.00Most days it finds nothing and the session ends with one line. The day marcus-lee renames the trade-validation module, it opens a pull request:
Updates 2 skills for the trade-validation rename in #437.
- skills/trade-engine/SKILL.md: `trades/validation.py` is now
`trades/rules.py`; the rest-period example referenced the old
path.
- skills/testing/SKILL.md: the fixture name in the worked example
changed with it.
Left alone: skills/deploys/SKILL.md mentions validation but only
describes the deploy order, which #437 did not change.For a deployable version, use the Skill Maintainer template.
Why a strong model
This agent's whole job is a judgment call: does this diff actually contradict that sentence? A cheap model produces two failure modes, both bad. It rewrites skills that were fine, or it misses the rename that matters. This is the one agent where paying for the stronger model is the point, which is why the budget is higher than a review agent's.
Weekends and gaps
A daily cron on a repository nobody touched over the weekend simply finds nothing to do. The prompt handles the empty case explicitly ("if nothing is outdated, do nothing"), which is what keeps it from inventing work on a quiet Monday.
Next
Write the skills this agent maintains with How to teach every agent your team's conventions, or put another job on a clock with How to automate your daily standup.
How to teach every agent your team's conventions
Write your conventions once as a skill and have every agent across every repository load it when the task calls for it.
How to trigger agents from your own scripts and CI
Start, watch, and stop sessions over HTTP so a CI job or your own service can put an agent in its pipeline.