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` 存在
|
||||||
✅ 达标:`~/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 ~
|
```bash
|
||||||
|
cd ~/Code
|
||||||
git clone https://git.shazhou.work/shazhou/skills.git
|
git clone https://git.shazhou.work/shazhou/skills.git
|
||||||
|
|
||||||
### 同步到 Hermes
|
|
||||||
|
|
||||||
cd ~/Code/skills
|
|
||||||
bash sync.sh
|
|
||||||
|
|
||||||
### 目录结构
|
|
||||||
|
|
||||||
```
|
```
|
||||||
~/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
|
|
||||||
|
|||||||
@ -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
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