skill-drift-scanner
Skill2 starsChanged 4 months agoMITView on GitHub
Audit Codex and Claude skill installation drift, autosync health, scheduler status, and reload requirements. Use when the user asks whether skills are installed, synced, stale, missing, or drifting from a source skills repo, or when they ask for a skill health report.
In this repository15 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-coordinationSkill
- blog-image-genSkill
- bogdan-baciu-designSkill
- chat-analysisSkill
- deep-decideSkill
- deep-research-agentsSkill
- grill-meSkill
- handoffSkill
- insight-lockSkill
- parallel-dispatchSkill
- quiz-meSkill
- table-system-migrationSkill
- weekly-updateSkill
- x-signal-researchSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 7 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 46
Use the environment's installed scanner command.
- Distinctive: line 56
If the scanner exists:
- Very specific: line 69
If codex-skill-sync is not installed but the current repo has sync-skills.sh, use this non-mutating fallback:
- Distinctive: line 76
Treat this as a source-to-installed-copy dry-run, not a full scheduler/autosync health report.
- Distinctive: line 85
Use the same resolved scanner path:
- Distinctive: line 91
If the scanner is unavailable and this repo's fallback is appropriate:
- Distinctive: line 97
Use this when the user wants the machine brought back to source of truth, not just inspected.
- Distinctive: line 117
If the user asks for the full report, point them to the local report path the scanner prints or to the state/report directory for that …
- Distinctive: line 121
When editing parser expectations, run:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill Drift Scanner
Inspect whether the machine's active Codex and Claude skills match the intended source-of-truth set, whether the autosync timers are healthy, and whether either tool needs a reload or restart to pick up changes.
When to use
- "Are my skills installed?"
- "Are all skills synced?"
- "Did autosync run?"
- "What changed in my skills?"
- "Do I have skill drift?"
- "Give me a skills health report"
Scope
This skill audits a machine-level skill deployment, not a single application repo.
Typical install layout:
- source skills repo clone or mirror
- optional local overlay skills
- Codex user skills at
~/.codex/skills - agent-compatible user skills at
~/.agents/skills - Claude user skills at
~/.claude/skills - repo-local project skill pairs at
.claude/skillsand.agents/skills - state and reports under a local state directory
It checks:
- Missing installed skills
- Content drift between source and installed copies
- Unmanaged custom skills in either install root
- Repo-local project skills that exist for Claude but not Codex-compatible agents, or the reverse
- Scheduler health for sync/report timers
- Whether the last sync changed skill content, which implies Codex may need restart while Claude may only need reload or a fresh skill scan
Workflow
Step 1 — Locate the scanner
Use the environment's installed scanner command; do not assume a Linux/root home
path. Prefer an explicit override, then PATH, then the user's local bin:
scanner="${CODEX_SKILL_SYNC:-$(command -v codex-skill-sync || true)}"
[ -n "$scanner" ] || scanner="$HOME/.local/bin/codex-skill-sync"Step 2 — Run the status command
If the scanner exists:
"$scanner" statusThis should print the current report without mutating anything. If a text report is produced, summarize it with:
python3 scripts/parse_status_report.py <report-path-or->If codex-skill-sync is not installed but the current repo has
sync-skills.sh, use this non-mutating fallback:
sh sync-skills.sh --all --dry-runTreat this as a source-to-installed-copy dry-run, not a full scheduler/autosync health report. To summarize the fallback output, run:
sh sync-skills.sh --all --dry-run | python3 scripts/parse_status_report.py --sync-dry-run -Step 3 — If the user wants reconciliation, run sync
Use the same resolved scanner path:
"$scanner" syncIf the scanner is unavailable and this repo's fallback is appropriate:
sh sync-skills.sh --allUse this when the user wants the machine brought back to source of truth, not just inspected.
Step 4 — Interpret results by tool
- Missing Installed Skills means the source repo has a skill that an install root does not.
- Content Drift means the skill exists in both places but file content differs.
- Unmanaged Custom Skills means there are extra custom skills under an install root that the autosync subsystem does not own.
- Project Skill Parity means each real repo's
.claude/skills/<name>and.agents/skills/<name>copies are paired. Missing one side can be reconciled automatically; same-name content conflicts are reported for manual review. - Codex restart recommended after last change: yes means a background sync changed installed content and open Codex sessions may still have stale skill state.
- Claude can hot-reload in some setups, but do not claim reload success unless verified on the installed Claude version.
Output contract
Return:
- The top-line status in one sentence
- The highest-signal per-tool sections from the report
- The Project Skill Parity section if it reports any missing or drifted repo-local skills
- The exact reconcile command if drift exists, using the resolved scanner path from Step 1
If the user asks for the full report, point them to the local report path the scanner prints or to the state/report directory for that environment.
Skill Maintenance
When editing parser expectations, run:
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest tests/test_parse_status_report.pyFixtures cover text status parsing, fallback dry-run parsing, live command resolution, and scheduler-health report shape.
What this skill does NOT do
- It does not push changes to GitHub.
- It does not assume every tool hot-reloads skills the same way.
- It does not delete unmanaged custom skills unless the user explicitly asks.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

