Skip to content
Back to skills

Skills Repo Automated Sync

ASecurity

Auto-sync Hermes skills to a GitHub repo via cron job.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 10, 2026
ai-agentsgobashgit

Security analysis

A100/100

Scanned September 10, 2026

npx -y skills add LoopyLuci/Skills --skill skills-repo-automated-sync --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Skills Repo Automated Sync?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Skills Repo Automated Sync
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/loopyluci-skills-repo-automated-sync/badge)](https://www.skillsdirectory.com/skills/loopyluci-skills-repo-automated-sync)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: skills-repo-automated-sync
description: Auto-sync Hermes skills to a GitHub repo via cron job.
---

# Skills Repo Automated Sync

**Trigger**: Use when setting up automatic sync between Hermes Agent's local skills and a GitHub skills tap repository.

## Architecture

```
Hermes skills (~/.hermes/skills/)
        │
        │  Cron job (every 6h)
        ▼
scripts/sync-from-hermes.sh
        │
        │  git add + commit + push
        ▼
GitHub repo (owner/skills-repo/skills/)
        │
        │  External dirs / tap
        ▼
Hermes / other agents consume
```

## Sync Script

### Core Logic
```bash
#!/usr/bin/env bash
# Sync from Hermes → repo
# Dry-run: bash scripts/sync-from-hermes.sh
# Apply:   bash scripts/sync-from-hermes.sh --apply

REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)"
SKILLS_DIR="$REPO_DIR/skills"

# Resolve Hermes skills directory
if [ -d "$LOCALAPPDATA/hermes/skills" ]; then
    HERMES_DIR="$LOCALAPPDATA/hermes/skills"
elif [ -d "$HOME/.hermes/skills" ]; then
    HERMES_DIR="$HOME/.hermes/skills"
else
    echo "ERROR: Cannot find Hermes skills directory"
    exit 1
fi

# Walk Hermes skills
for skill_file in $(find "$HERMES_DIR" -maxdepth 3 -name "SKILL.md"); do
    # Normalize and extract skill name
    norm_path=$(echo "$skill_file" | sed 's|\\|/|g')
    parts=$(echo "${norm_path#$HERMES_DIR/}" | tr '/' '\n' | wc -l)
    
    if [ "$parts" -eq 2 ]; then
        # skill/SKILL.md (flat)
        name=$(echo "${norm_path#$HERMES_DIR/}" | cut -d/ -f1)
    elif [ "$parts" -eq 3 ]; then
        # category/skill/SKILL.md
        name=$(echo "${norm_path#$HERMES_DIR/}" | cut -d/ -f2)
    else
        continue
    fi
    
    # Compare and copy
    target="$SKILLS_DIR/$name/SKILL.md"
    if [ -f "$target" ] && cmp -s "$skill_file" "$target"; then
        continue  # Unchanged
    fi
    
    mkdir -p "$SKILLS_DIR/$name"
    cp "$skill_file" "$target"
    
    # Copy supporting dirs
    for sub in references templates scripts assets examples; do
        src_dir="$(dirname "$skill_file")/$sub"
        [ -d "$src_dir" ] && cp -r "$src_dir" "$SKILLS_DIR/$name/"
    done
done
```

## Cron Setup

```bash
# Copy script to Hermes scripts dir
cp scripts/sync-from-hermes.sh ~/AppData/Local/hermes/scripts/

# Register cron (no-agent mode — runs script, no LLM)
hermes cron-job create \
  --name skills-sync-to-github \
  --schedule "every 6h" \
  --script sync-from-hermes.sh \
  --no-agent \
  --deliver local
```

## Git Operations in the Script

```bash
cd "$REPO_DIR"
git add -A
if ! git diff --cached --quiet; then
    git commit -m "Sync skills from Hermes — $(date '+%Y-%m-%d %H:%M')"
    git push origin main
fi
```

## Two-Way Flow

| Direction | Mechanism | Frequency |
|-----------|-----------|-----------|
| Hermes → GitHub | Cron job runs sync script | Every 6 hours |
| GitHub → Hermes | External dirs in config.yaml | Instant (on each session) |
| GitHub → Other users | They clone/pull the repo | On demand |

## Pitfalls
- **Path resolution**: Windows uses `%LOCALAPPDATA%/hermes/skills` — script must check both Windows and Unix paths
- **Cron timeouts**: 1,000+ file comparisons take minutes on MSYS — runs in background
- **Deletion safety**: Sync script doesn't delete skills from repo when they're removed from Hermes (repo is the archive)
- **CRLF warnings**: Git on Windows warns about line endings — use `.gitattributes` to normalize

## Verification
```bash
# Dry-run test
bash scripts/sync-from-hermes.sh

# Check cron health
hermes cron-job list
hermes cron-job logs skills-sync-to-github

# Verify on GitHub
git log --oneline -5 origin/main
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.