自动同步 claude skills 到 codex、gemini、opencode
antigravity 也支持 skills 了,skills 逐渐成为大家的共识。随之而带的带来一个问题,每个工具的 skills 都是在自己的文件结构中去创建和 copy,而且 skills 也是可能需要优化和更新的,导致管理起来挺烦,所以想到基于主工具 claude code 来自动同步 skills 到其它各 ai 工具的想法。
opencode 自身就会加载 claude code 的 skills,所以没必要同步
Step 1
准备好 fswatch,监听 ~/.claude/skills 的变化
brew install fswatch
Step 2
准备一个 sync_skills.sh:
#!/bin/bash
fswatch -o ~/.claude/skills | while read f; do
rsync -a --delete --exclude-from=~/.codex/skills/.exclude-list ~/.claude/skills/ ~/.codex/skills/
rsync -a --delete --exclude-from=~/.gemini/skills/.exclude-list ~/.claude/skills/ ~/.gemini/skills/
rsync -a --delete --exclude-from=~/.gemini/antigravity/skills/.exclude-list ~/.claude/skills/ ~/.gemini/antigravity/skills/
done
其中 --exclude-from 是为了在某些工具中想要排除一些 skills 的同步,比如有一些 skills 只能用于某个工具里,就可以创建一个.exclude-list 文件,把要排除的 skills 文件夹名丢进去,一行一个。
Step 3
如果想每次重启后自动运行,还可以创建一个 ~/Library/LaunchAgents/com.user.sync_claude_codex_skills.plist:
里面的 xxx 换成自己的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.sync_claude_codex_skills</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/xxx/sync_skills.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/sync_skills.stdout</string>
<key>StandardErrorPath</key>
<string>/tmp/sync_skills.stderr</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/local/bin:/bin:/usr/bin</string>
</dict>
</dict>
</plist>
然后终端执行:
launchctl load ~/Library/LaunchAgents/com.user.sync_claude_codex_skills.plist