refactor: 去掉 sync.sh,改用 external_dirs + symlink

- Hermes: config.yaml external_dirs 直接索引 ~/Code/skills/hermes/
- Cursor: setup.sh 一次性创建 symlink 到 ~/.cursor/rules/
- git pull 即生效,无需反复同步
- sync.sh → setup.sh(一次性)

[小糯]
This commit is contained in:
小糯 (Xiaonuo) 2026-04-23 20:21:52 +08:00
parent 281dc7a725
commit 03ef856bb0
4 changed files with 87 additions and 93 deletions

View File

@ -2,45 +2,62 @@
## 检查 ## 检查
确认 skills repo 已克隆: ```bash
# skills repo 已克隆
ls ~/Code/skills/hermes/
ls ~/Code/skills/sync.sh # hermes external_dirs 已配置
grep external_dirs ~/.hermes/config.yaml
确认 skills 已同步到 Hermes: # cursor rules 已 link
ls -la ~/.cursor/rules/*.mdc 2>/dev/null | grep -q 'Code/skills'
```
ls ~/.hermes/skills/ ✅ 达标:
- `~/Code/skills` 存在
✅ 达标:`~/Code/skills` 存在,`~/.hermes/skills/` 下有从 repo 同步过来的 skill 目录 - config.yaml 的 `external_dirs` 包含 `~/Code/skills/hermes`
- `~/.cursor/rules/` 下有指向 `~/Code/skills/cursor/` 的 symlink
## 安装 ## 安装
### 克隆 skills repo ### 1. 克隆 skills repo
cd ~
git clone https://git.shazhou.work/shazhou/skills.git
### 同步到 Hermes
cd ~/Code/skills
bash sync.sh
### 目录结构
```bash
cd ~/Code
git clone https://git.shazhou.work/shazhou/skills.git
``` ```
~/Code/skills/
├── hermes/ # Hermes Agent skills ### 2. 配置 Hermes external_dirs
├── cursor/ # Cursor rules
├── sync.sh # 同步脚本:hermes skills → ~/.hermes/skills/ 编辑 `~/.hermes/config.yaml`,在 `skills` 下添加:
└── README.md
```yaml
skills:
external_dirs: ["~/Code/skills/hermes"]
```
这样 Hermes 直接从 repo 索引 skills,无需复制。
### 3. 链接 Cursor rules
```bash
mkdir -p ~/.cursor/rules
for f in ~/Code/skills/cursor/*.mdc; do
ln -sf "$f" ~/.cursor/rules/$(basename "$f")
done
```
## 日常更新
git pull 即生效,无需 sync:
```bash
cd ~/Code/skills && git pull
``` ```
## 验证 ## 验证
ls ~/.hermes/skills/ ```bash
# 应该能看到从 repo 同步过来的 skill 目录 grep external_dirs ~/.hermes/config.yaml
ls -la ~/.cursor/rules/ | grep Code/skills
## 日常使用 ```
有新 skill 更新时:
cd ~/Code/skills && git pull && bash sync.sh

View File

@ -74,7 +74,7 @@ check "CURSOR_API_KEY 可用" "test -n \"\$CURSOR_API_KEY\""
echo "11. Skills" echo "11. Skills"
check "skills repo 已克隆" "test -d ~/Code/skills/.git" check "skills repo 已克隆" "test -d ~/Code/skills/.git"
check "skills 已同步" "ls ~/.hermes/skills/ | grep -qv '^$'" check "hermes external_dirs 已配置" "grep -q 'Code/skills/hermes' ~/.hermes/config.yaml 2>/dev/null"
echo "" echo ""

39
setup.sh Normal file
View File

@ -0,0 +1,39 @@
#!/bin/bash
# 一次性 setup:配置 skills 索引(无需重复运行)
# Hermes: 通过 external_dirs 直接索引 hermes/
# Cursor: symlink cursor/*.mdc → ~/.cursor/rules/
# 之后 git pull 即生效
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "🔧 Skills 索引配置"
echo "========================"
# Cursor rules symlink
CURSOR_SOURCE="$SCRIPT_DIR/cursor"
CURSOR_TARGET="$HOME/.cursor/rules"
if [ -d "$CURSOR_SOURCE" ]; then
mkdir -p "$CURSOR_TARGET"
count=0
for f in "$CURSOR_SOURCE"/*.mdc; do
[ -f "$f" ] || continue
ln -sf "$f" "$CURSOR_TARGET/$(basename "$f")"
echo " 🔗 $(basename "$f")"
count=$((count + 1))
done
echo ""
echo "Cursor rules: $count 个 symlink → $CURSOR_TARGET"
fi
echo ""
echo "========================"
echo "✅ 完成"
echo ""
echo "⚠️ Hermes 需手动配置 config.yaml:"
echo " skills:"
echo " external_dirs: [\"~/Code/skills/hermes\"]"
echo ""
echo "之后更新只需: cd ~/Code/skills && git pull"

62
sync.sh
View File

@ -1,62 +0,0 @@
#!/bin/bash
# 同步 shazhou/skills 到各目标
# - hermes/ → ~/.hermes/skills/
# - cursor/ → ~/.cursor/rules/
# 用法:bash sync.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
HERMES_HOME="${HERMES_HOME:-$HOME/.hermes}"
echo "🔄 沙洲家族 Skills 同步"
echo "========================"
echo ""
# --- Hermes skills ---
HERMES_SOURCE="$SCRIPT_DIR/hermes"
HERMES_TARGET="$HERMES_HOME/skills"
if [ -d "$HERMES_SOURCE" ]; then
mkdir -p "$HERMES_TARGET"
count=0
for skill_dir in "$HERMES_SOURCE"/*/; do
[ -d "$skill_dir" ] || continue
skill_name=$(basename "$skill_dir")
rsync -a --delete "$skill_dir" "$HERMES_TARGET/$skill_name/"
echo " ✅ hermes: $skill_name"
count=$((count + 1))
done
echo ""
echo "Hermes skills: $count$HERMES_TARGET"
else
echo "⚠️ hermes/ 目录不存在,跳过"
fi
echo ""
# --- Cursor rules ---
CURSOR_SOURCE="$SCRIPT_DIR/cursor"
CURSOR_TARGET="$HOME/.cursor/rules"
if [ -d "$CURSOR_SOURCE" ]; then
mkdir -p "$CURSOR_TARGET"
count=0
for rule_file in "$CURSOR_SOURCE"/*.mdc; do
[ -f "$rule_file" ] || continue
cp "$rule_file" "$CURSOR_TARGET/"
echo " ✅ cursor rule: $(basename "$rule_file")"
count=$((count + 1))
done
echo ""
echo "Cursor rules: $count$CURSOR_TARGET"
else
echo "⚠️ cursor/ 目录不存在,跳过"
fi
echo ""
echo "========================"
echo "✅ 同步完成"
echo ""
echo "💡 家族共识通过 cfg (HERMES_AGENT_CONVENTIONS) 管理"
echo "💡 hermes-har personality switch 时自动 append 到 SOUL.md"