diff --git a/hermes/shazhou-family-onboard/references/11-skills-sync.md b/hermes/shazhou-family-onboard/references/11-skills-sync.md index 9a845e7..2d681ad 100644 --- a/hermes/shazhou-family-onboard/references/11-skills-sync.md +++ b/hermes/shazhou-family-onboard/references/11-skills-sync.md @@ -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 +``` diff --git a/hermes/shazhou-family-onboard/scripts/self-check.sh b/hermes/shazhou-family-onboard/scripts/self-check.sh index 0608b63..17ea14f 100644 --- a/hermes/shazhou-family-onboard/scripts/self-check.sh +++ b/hermes/shazhou-family-onboard/scripts/self-check.sh @@ -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 "" diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..0072083 --- /dev/null +++ b/setup.sh @@ -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" diff --git a/sync.sh b/sync.sh deleted file mode 100755 index cbdc8c5..0000000 --- a/sync.sh +++ /dev/null @@ -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"