Plugin caches ship shared docs as relative symlinks pointing outside the
skill dir; a verbatim copy dangles in the codex tree and GNU diff reports
the broken pair as perpetual --check drift on Linux.
Codex skill frontmatter does not support allowed-tools, which previously
required maintaining a full codex-overrides copy of upstream skills just to
drop that line. Copies now stage through a transform that strips it, and
--check diffs the staged result so copy and check can never disagree.
Drop the canton-nodes override: its only delta was the allowed-tools line,
now handled by the transform, and it duplicated internal infra reference
data into this public repo.
Upstream user/plugin sync copied skills that a codex-overrides entry later
replaced, so --check compared the override-shadowed destination against the
upstream source and reported perpetual false drift. Override-owned skills are
now skipped upstream; sync_codex_override_skills copies, checks, and marks
them itself.
Rewrite README.md to make this repo presentable for open-source consumers
who don't have the surrounding private dotfiles tree. Inventory every
directory (commands, agents, all 25 skills, plugins, statusline, scripts,
settings, hooks, analytics) with accurate descriptions, document the
plugin marketplace install path, and add an explicit footnote about the
optional dotfiles-tree relationship.
install.sh now also symlinks commands/, agents/, and .claude/skills/ into
~/.claude/, and prefers the parent dotfiles' codex/codex.json when present
but falls back to a new in-repo codex.json sample so standalone clones no
longer fail under set -e.
Remove the stale TODO.md (DuckDB indexing work, all items completed) and
untrack CLAUDE.local.md / AGENTS.local.md so personal notes stay private
on disk via .gitignore. Drop a personal ~/dotfiles path from
scripts/README.md.
Add check-plugin-versions.sh that validates plugin.json and
marketplace.json versions match, and warns when plugin source files
change without a version bump. Update CLAUDE.local.md with a clear
version bump checklist for publishing plugin updates.
Normal sync uses last-writer-wins when multiple plugins export the same
skill name, but --check compared each source against the same Codex
destination and reported false drift on the earlier provider.
Collect plugin skill candidates first and only copy/check the final winning
source for each skill name so check mode matches sync mode.
Prevent sync automation from failing in default macOS environments and from deleting skills through the legacy wrapper path.
- replace Bash 4 associative arrays with Bash 3.2-compatible tracking in sync-codex.sh
- make sync-skills-to-codex.sh opt out of pruning to keep wrapper behavior non-destructive
Adds a script to copy skills from Claude Code to Codex, enabling both
AI assistants to use the same skill definitions. Discovers skills from:
- User-level skills in .claude/skills/
- Plugin skills from installed marketplace plugins
Supports dry-run mode and verbose output for debugging.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add pyproject.toml and uv.lock to establish Python project structure for the usage tracker script, and update settings.json to use uv run for executing the usage tracker hooks.