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:
parent
281dc7a725
commit
03ef856bb0
@ -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` 存在,`~/.hermes/skills/` 下有从 repo 同步过来的 skill 目录
|
||||
✅ 达标:
|
||||
- `~/Code/skills` 存在
|
||||
- config.yaml 的 `external_dirs` 包含 `~/Code/skills/hermes`
|
||||
- `~/.cursor/rules/` 下有指向 `~/Code/skills/cursor/` 的 symlink
|
||||
|
||||
## 安装
|
||||
|
||||
### 克隆 skills repo
|
||||
|
||||
cd ~
|
||||
git clone https://git.shazhou.work/shazhou/skills.git
|
||||
|
||||
### 同步到 Hermes
|
||||
|
||||
cd ~/Code/skills
|
||||
bash sync.sh
|
||||
|
||||
### 目录结构
|
||||
### 1. 克隆 skills repo
|
||||
|
||||
```bash
|
||||
cd ~/Code
|
||||
git clone https://git.shazhou.work/shazhou/skills.git
|
||||
```
|
||||
~/Code/skills/
|
||||
├── hermes/ # Hermes Agent skills
|
||||
├── cursor/ # Cursor rules
|
||||
├── sync.sh # 同步脚本:hermes skills → ~/.hermes/skills/
|
||||
└── README.md
|
||||
|
||||
### 2. 配置 Hermes external_dirs
|
||||
|
||||
编辑 `~/.hermes/config.yaml`,在 `skills` 下添加:
|
||||
|
||||
```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/
|
||||
# 应该能看到从 repo 同步过来的 skill 目录
|
||||
|
||||
## 日常使用
|
||||
|
||||
有新 skill 更新时:
|
||||
|
||||
cd ~/Code/skills && git pull && bash sync.sh
|
||||
```bash
|
||||
grep external_dirs ~/.hermes/config.yaml
|
||||
ls -la ~/.cursor/rules/ | grep Code/skills
|
||||
```
|
||||
|
||||
@ -74,7 +74,7 @@ check "CURSOR_API_KEY 可用" "test -n \"\$CURSOR_API_KEY\""
|
||||
|
||||
echo "11. Skills"
|
||||
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 ""
|
||||
|
||||
39
setup.sh
Normal file
39
setup.sh
Normal 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
62
sync.sh
@ -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"
|
||||
Loading…
x
Reference in New Issue
Block a user