check-drift — no change is done until every coupled artifact moves with it
A change is silent drift until the same PR updates all its coupled artifacts. This skill turns that discipline into a check.
Procedure
- Load the map: read
.skills/change-map.yamlat the repo root. It listscouplings, each with atrigger, an optionalssot, amust_updatelist, and optionalrevalidatesteps. - Diff the change: get the working-tree / PR diff (changed files).
- Match couplings: for each coupling whose
ssotor trigger-owned file appears in the diff, treat it as fired. - Report gaps: for each fired coupling, list every
must_updatepath that is NOT in the diff. That list is the drift. Be specific — path by path. - Delegate the mechanizable half: if the repo has a consistency linter
(e.g.
scripts/check-consistency.sh), run it and fold its output in — it catches the grep-able stale refs; this skill catches the rest. - Flag revalidation: if a fired coupling has
revalidatesteps (a golden lane, a rebuild), remind the user to run them — a moved file can still be semantically stale. - Self-check: verify the
tools/agent-skills/pointer + index block exist and match across the project's docs (this skill's own wiring is a coupling).
Output
A short verdict: OK — all couplings satisfied, or a per-coupling list of
missing artifacts. No prose padding. If nothing in the diff matches any
coupling, say so plainly rather than inventing findings.
Extending
When a new mechanically-checkable coupling appears, add it to
.skills/change-map.yaml (not to this body) — that is how the "automat" grows
without editing the skill.