activememory/ctx/ctx-drift
Claude Code and agent skill by activememory/ctx
- community
Checking that the SKILL.md file is still in the repository.
Detect and fix context drift. Use to find stale paths, broken references, and constitution violations in context files.
Install
npx vskill@latest install activememory/ctx/ctx-driftSKILL.md
Detect context drift at two layers: structural (stale paths, missing files, constitution violations) via ctx drift, and semantic (outdated conventions, superseded decisions, irrelevant learnings) via agent analysis. The semantic layer is where the real value is: the CLI cannot do it.
When to Use
- At session start to verify context health before working
- After refactors, renames, or major structural changes
- When the user asks "is our context clean?", "anything
stale?", or "check for drift"
- Proactively when you notice a path in ARCHITECTURE.md or
CONVENTIONS.md that does not match the actual file tree
- Before a release or milestone to ensure context is accurate
When NOT to Use
- When you just ran
/ctx-statusand everything looked fine
(status already shows drift warnings)
- Repeatedly in the same session without changes in between
- When the user is mid-flow on a task; do not interrupt with
unsolicited maintenance
Usage Examples
Execution
Drift detection has two layers: structural (programmatic) and semantic (agent-driven). Always do both.
Layer 1: Structural Checks
Run the CLI tool for fast, programmatic checks:
This catches dead paths, missing files, staleness indicators, and constitution violations. These are necessary but insufficient: they only detect structural problems.
Layer 2: Semantic Analysis
After the structural check, read the context files yourself and compare them to what you know about the codebase. This is where you add real value: the CLI tool cannot do this.
Check for:
- Outdated conventions: Does CONVENTIONS.md describe patterns
the code no longer follows? Read a few source files in the relevant area to verify.
- Superseded decisions: Does DECISIONS.md contain entries that
were implicitly overridden by later work? Look for decisions whose rationale no longer applies.
- Stale architecture descriptions: Does ARCHITECTURE.md
describe module purposes that have changed? A path can still exist while its description is wrong.
- Irrelevant learnings: Does LEARNINGS.md contain entries
about bugs that were since fixed or patterns that no longer apply?
- Contradictions: Do any context files contradict each other
or contradict the actual code?
Reporting
After both layers, do not dump raw output. Instead:
- Summarize findings by severity (structural warnings,
semantic issues) in plain language
- Explain each finding: what file, what line, why it
matters
- Distinguish structural from semantic: structural issues
can be auto-fixed; semantic issues need the user's judgment
- Offer to auto-fix structural issues:
"I can run ctx drift --fix to clean up the dead path references. Want me to?"
- Propose specific edits for semantic issues:
"CONVENTIONS.md still says 'use fmt.Printf for output' but we switched to cmd.Printf three weeks ago. Want me to update it?"
- Suggest follow-up commands when appropriate:
- Many stale paths after a refactor → suggest
ctx sync - Heavy task clutter → suggest
ctx compact --archive - Old files untouched for weeks → suggest reviewing content
Interpreting Results
| Finding | What It Means | Suggested Action | |
|---|---|---|---|
| Path does not exist | Context references a deleted file/dir | Remove reference or update path | |
| Directory is empty | Referenced dir exists but has no files | Remove reference or populate directory | |
| Many completed tasks | TASKS.md is cluttered | Run ctx compact --archive | |
| File not modified in 30+ days | Content may be outdated | Review and update or confirm current | |
| Constitution violation | A hard rule may be broken | Fix immediately | |
| Missing packages | An internal/ package is not in ARCHITECTURE.md | Add it with /ctx-architecture or document manually | |
| Required file missing | A core context file does not exist | Create it with ctx init or manually |
Auto-Fix
When the user agrees to auto-fix:
After fixing, run ctx drift again to confirm remaining issues need manual attention. Report what was fixed and what still needs the user's judgment.
Skill Template Drift
After running ctx drift, check whether the project's installed skills (.claude/skills/) match the canonical templates shipped with ctx.
Procedure
- Create a temp directory and run
ctx init --resetinside
it to get the latest templates:
``bash CTX_TPL_DIR=$(mktemp -d) cd "$CTX_TPL_DIR" && ctx init --reset 2>/dev/null ``
- Compare each skill in the project against the template:
``bash diff -ru "$CTX_TPL_DIR/.claude/skills/" .claude/skills/ 2>/dev/null ``
- Clean up the temp directory:
``bash rm -rf "$CTX_TPL_DIR" ``
Interpreting Skill Drift
| Finding | Action | |
|---|---|---|
| Skill missing from project | Offer to install: copy from template | |
| Skill differs from template | Show the diff; offer to update to latest template | |
| Project has extra skills (no match) | These are custom: leave them alone | |
| No differences | Skills are up to date; report clean |
When reporting skill drift, distinguish between:
- ctx-managed skills (present in the template): these
should generally match; differences mean the user's copy is outdated or was customized intentionally
- Custom skills (only in the project): these are user
additions and should not be flagged as drift
If a skill was intentionally customized, note it and move on. Offer to update only ctx-managed skills, and always show the diff before overwriting.
Permission Drift
After checking skills, verify that .claude/settings.local.json has the expected ctx permissions. This file is gitignored, so it drifts independently from the codebase.
Procedure
- Read
.claude/settings.local.jsonand extract the allow list.
- Check for missing ctx defaults. Every entry in
DefaultAllowPermissions() (defined in internal/assets/permissions/allow.txt) should be present. The current expected set is:
Bash(ctx:*): covers all ctx subcommandsSkill(ctx-*): one entry per ctx-shipped skill
To get the authoritative list:
``bash ctx init --reset 2>/dev/null # in a temp dir ``
Then compare permissions from the generated settings.local.json against the project's copy.
- Check for stale skill permissions. If a
Skill(ctx-*)
entry references a skill that no longer exists in .claude/skills/, flag it.
- Check for missing skill permissions. If a
ctx-*skill
exists in .claude/skills/ but has no corresponding Skill(ctx-*) in the allow list, flag it.
Interpreting Permission Drift
| Finding | Action | |
|---|---|---|
Missing Bash(ctx:*) | Suggest adding: required for ctx to work | |
Missing Skill(ctx-*) entry | Suggest adding: skill will prompt every time | |
Stale Skill(ctx-*) entry | Suggest removing: dead reference | |
Granular Bash(ctx <sub>:*) | Suggest consolidating to Bash(ctx:*) | |
| One-off / session debris entries | Note as hygiene issue (see docs/operations/runbooks/sanitize-permissions.md) |
Important
Do not edit settings.local.json directly. Report findings and let the user make changes. This file controls agent permissions: self-modification is a security concern. Refer users to docs/operations/runbooks/sanitize-permissions.md for the manual cleanup procedure.
Proactive Use
Run drift detection without being asked when:
- You load context at session start and notice a path
reference that does not match the file tree
- The user just completed a refactor that renamed or moved
files
- TASKS.md has obviously heavy clutter (20+ completed items
visible when you read it)
When running proactively, keep the report brief:
I ran a quick drift check after the refactor. Two stalepath references in ARCHITECTURE.md. Want me to cleanthem up?
Quality Checklist
After running drift detection, verify:
- [ ] Summarized findings in plain language (did not just
paste raw CLI output)
- [ ] Explained why each finding matters
- [ ] Offered auto-fix for fixable issues before running it
- [ ] Suggested appropriate follow-up commands
- [ ] Did not run
--fixwithout user confirmation
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckinginternal/assets/claude/skills/ctx-drift/SKILL.md
Popularity
- Repository stars
- 69
- Repository forks
- 12
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/activememory/ctx/ctx-drift)