| name | skill-commit |
| description | 全局 skill 提交规范。告知 AI 全局 skills 目录通常是符号链接,如何自动定位实际 git 仓库并正确提交推送。触发词:skill 提交、提交 skill、skill commit、全局 skill、推送 skill、commit skill。 |
skill-commit — 全局 Skill 提交规范
核心原则
全局 skills 目录(~/.claude/skills/)通常是符号链接,指向某个 git 仓库内的子目录。创建/修改 skill 文件可以直接在 ~/.claude/skills/<name>/ 下操作(符号链接透明),但 git 操作必须去实际仓库根目录执行。
本 skill 告诉 AI 如何自动发现这些路径,适配任意机器、任意 OS 的部署方式。
第一步:自动探测仓库信息
在提交任何 skill 改动前,AI 必须先探测以下信息:
SKILLS_REAL=$(readlink -f ~/.claude/skills 2>/dev/null || realpath ~/.claude/skills 2>/dev/null)
REPO_ROOT=$(cd "$SKILLS_REAL" && git rev-parse --show-toplevel 2>/dev/null)
SKILLS_SUBDIR=$(cd "$SKILLS_REAL" && git rev-parse --show-prefix 2>/dev/null)
cd "$REPO_ROOT"
git remote -v
git branch --show-current
探测后必须向用户展示:
Skills 实际路径: /home/user/code/agent-skills-hook/agents/skills
Git 仓库根目录: /home/user/code/agent-skills-hook
Skills 子目录: agents/skills/
Remote: origin git@github.com:user/repo.git
分支: main
第二步:创建/修改 skill 文件
直接在 ~/.claude/skills/<skill-name>/ 下操作即可,符号链接会透传到实际仓库:
mkdir -p ~/.claude/skills/<skill-name>
第三步:提交
必须在第一步探测到的 $REPO_ROOT 下执行 git 操作:
cd "$REPO_ROOT"
git status
git add "${SKILLS_SUBDIR}<skill-name>/"
git commit -m "<message>"
第四步:推送
cd "$REPO_ROOT"
git push origin <branch>
故障排查
| 症状 | 处理 |
|---|
readlink -f 不识别 | 换 realpath,都不行则 ls -la ~/.claude/skills 手动看指向 |
~/.claude/skills 不是符号链接 | 它自身可能就是一个 git 仓库,直接用 git rev-parse --show-toplevel 在它里面执行 |
git rev-parse --show-toplevel 失败(不在 git 仓库中) | 沿目录树向上找 .git 目录,或检查 skills 是否通过其他方式部署(如直接拷贝) |
Skills 就在仓库根目录($SKILLS_SUBDIR 为空) | git add <skill-name>/ 即可,不需要前缀 |
| 多个 remote | 用 git remote -v 确认 push 目标,通常是 origin |
跨平台注意事项
- Linux:
readlink -f 和 realpath 都可用
- macOS:
readlink 没有 -f,用 realpath(需 coreutils)或 python3 -c "import os; print(os.path.realpath('...'))"
- Windows (Git Bash):
readlink -f 通常可用;如不行用 cygpath 或手动 ls -la 解析
- JSON 等配置文件中的
~ 展开:用 $HOME 或 ${HOME} 替代