Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here
sync-my-skills logo

sync-my-skills

sync-my-skills

productivityClaude Codeby kunsanglee

Summary

Sync and manage Claude Code skills across multiple machines using a private GitHub repo. Push, pull, and list your skills with simple commands.

Install to Claude Code

/plugin install sync-my-skills@sync-my-skills

Run in Claude Code. Add the marketplace first with /plugin marketplace add kunsanglee/sync-my-skills if you haven't already.

README.md

sync-my-skills

한국어

Sync your Claude Code skills across multiple machines using GitHub.

Why

Claude Code skills live in local files (~/.claude/skills/) and don't sync across devices through your account. If you use Claude Code on multiple machines — work, home, laptop — you've probably wanted your custom skills everywhere without manually copying files.

This plugin automates that: push skills to a private GitHub repo from one machine, pull them on another.

Prerequisites

Installation

Install via Claude Code plugin:

/plugin marketplace add kunsanglee/sync-my-skills
/plugin install sync-my-skills

Or install manually:

mkdir -p ~/.claude/skills/my-skills
curl -o ~/.claude/skills/my-skills/SKILL.md \
  https://raw.githubusercontent.com/kunsanglee/sync-my-skills/main/skills/my-skills/SKILL.md

Usage

Run these commands inside Claude Code.

Initial Setup

/my-skills setup
  • Verifies your GitHub account via gh CLI
  • Creates a private repo (or clones an existing one)
  • Generates a config file (~/.my-skills.yml)
  • If skills already exist in the repo (from another machine), offers to link them

Push Skills (Local → GitHub)

/my-skills push                            # Push all linked user-level skills
/my-skills push memo                       # Push a specific skill
/my-skills push memo recap                 # Push multiple skills
/my-skills push backend-init -p            # Push project-level skill (auto-detect project)
/my-skills push backend-init -p retrievo   # Push to a specific project

The first push copies the skill to the repo and replaces the original with a symlink. Subsequent pushes just commit and push changes.

Pull Skills (GitHub → Local)

/my-skills pull                            # Pull all updates + offer to link new skills
/my-skills pull memo                       # Pull a specific skill
/my-skills pull memo recap                 # Pull multiple skills
/my-skills pull -p retrievo                # Show retrievo's skills, select which to pull
/my-skills pull backend-init -p retrievo   # Pull a specific project skill directly

List Skills

/my-skills list                   # Show all skills (user + project level)
/my-skills list -p retrievo       # Show skills for a specific project

Example output:

Repo: username/my-skills (private)

── User Level ──
[linked]     memo            Create study notes from conversations
[linked]     recap           Summarize session work
[local only] backend-init    Spring Boot project initializer
[other]      skill-creator   Create and improve skills (via plugin)

── Project Level ──
  retrievo/
    [linked]     backend-init  Spring Boot + Kotlin DDD project init
    [remote]     claude-api    Build apps with Claude API

Unlink Skills

/my-skills unlink memo                  # Unlink a user-level skill
/my-skills unlink memo recap            # Unlink multiple skills
/my-skills unlink backend-init -p       # Unlink a project-level skill

Removes the symlink and restores the original from backup. The skill stays in the repo — only the local link is removed.

How It Works

~/.claude/skills/memo  →  (symlink)  →  ~/.my-skills-repo/user/memo
                                              ↕ (git push/pull)
                                        GitHub: username/my-skills
                                              ↕ (git push/pull)
[Other machine] ~/.my-skills-repo/user/memo  ←  (symlink)  ←  ~/.claude/skills/memo

1. When you push a skill, it's copied to ~/.my-skills-repo/user/ (or projects/<name>/ for project-level) and the original is replaced with a symlink. 2. After that, editing the skill directly modifies the file in the repo directory (through the symlink). 3. /my-skills push commits and pushes changes to GitHub. /my-skills pull on another machine fetches them.

Repo Structure

~/.my-skills-repo/
├── user/                       ← user-level skills
│   ├── memo/SKILL.md
│   └── recap/SKILL.md
└── projects/                   ← project-level skills (by project name)
    ├── retrievo/
    │   └── backend-init/SKILL.md
    └── execute/
        └── frontend-init/SKILL.md

User Level vs Project Level

| Scope | Path | Applies to | |-------|------|------------| | User level | ~/.claude/skills/ | All projects | | Project level | {project}/.claude/skills/ | That project only |

  • Default scope is user level
  • Use --project (-p) flag for project-level skills

Status Labels

| Label | Meaning | |-------|---------| | [linked] | Symlink connected to repo — synced | | [remote] | Exists in repo but not linked on this machine | | [local only] | Exists locally but not in repo | | [other] | Symlink pointing elsewhere (e.g. plugin-installed) |

FAQ

Q: Will my existing skills be deleted? A: No. Original skills are backed up to ~/.my-skills-backup/ before being replaced with symlinks.

Q: What happens when I edit a skill? A: The symlink points to the repo directory, so edits go directly to the repo. Just run /my-skills push to sync.

Q: What if I edit the same skill on two machines? A: A Git conflict may occur. The tool will show the conflict and help you resolve it.

Q: Is the repo public? A: No, it's created as private by default. Your personal skills stay private.

Q: What if I push the same skill name from different projects? A: No conflict — project-level skills are stored under projects/<project-name>/, so the same skill name can exist in multiple projects.

Feedback & Feature Requests

Found a bug or have an idea? Open a GitHub Issue.

  • Open an Issue
  • Bug reports, feature requests, and feedback are all welcome.

Author

Related plugins

Browse all →