Days window: $ARGUMENTS (default 7 if empty).
Perform these steps in order, then return a single punch-list summary. Do not modify any file.
- Inventory every
CLAUDE.mdand*.claude/rules/*.mdin the tree usingfind . -name "CLAUDE.md" -type f -not -path "*/.git/*" -not -path "*/node_modules/*". List paths and line counts. - Collect change signal for the window:
git log --since="$ARGUMENTS days ago" --name-status --no-merges --diff-filter=DR→ deleted and renamed paths.git diff "@{$ARGUMENTS days ago}" --name-status -- package.json requirements.txt pyproject.toml go.mod Cargo.toml 2>/dev/null→ manifest deltas (removed/added deps).
- Cross-reference each CLAUDE.md against those signals using
grep/Read:- Mark any line that names a deleted or renamed path.
- Mark any line in a Tech Stack / Dependencies section that names a removed dep.
- Mark any
@path/...chain import or markdown link whose target was deleted.
- Return the punch list in this exact shape (markdown), nothing else:
## Drift Audit (window: <N> days)
Total CLAUDE.md inspected: Signals examined: <deleted_paths>, <renamed_paths>, <removed_deps>
Findings
- : — — suggested action
- ... (one bullet per drift; omit section if empty)
Clean
- (lines unchanged, references valid)
5. If no drift is found, return exactly `## Drift Audit\n\nNo drift in <N>-day window. <count> files inspected.`. Do not pad the output.