Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install vivekkarmarkar-claude-code-os-skills-sync-osgit clone https://github.com/VivekKarmarkar/claude-code-os.gitcp claude-code-os/SKILL.MD ~/.claude/skills/vivekkarmarkar-claude-code-os-skills-sync-os/SKILL.md# Sync OS — Sync Live Claude Code Config to the Remote Repo Sync the live `~/.claude/` configuration (skills, plugins, hooks, channels, settings) to the claude-code-os GitHub repo. Can be run from any project folder — it always targets the same repo. ## Arguments `<optional commit message>` — If provided, used as the commit message. If not, auto-generates one from the changes detected. Examples: - `/sync-os` — auto-detects changes and generates commit message - `/sync-os added weather and latex skills` — uses provided message - `/sync-os` from any project folder — always syncs to the claude-code-os repo ## Constants - **Repo path:** `/home/vivekkarmarkar/claude-code-os` - **Remote:** `origin` (GitHub: VivekKarmarkar/claude-code-os) - **Branch:** `main` ## Workflow ### Step 1: Diff Skills ```bash diff <(ls ~/.claude/skills/ | sort) <(ls /home/vivekkarmarkar/claude-code-os/skills/ | sort) ``` For each skill in live but not in repo: copy the entire skill folder. For each skill in repo but not in live: leave it (don't delete — it might be intentionally archived). ### Step 2: Diff Plugins ```bash diff <(ls ~/.claude/plugins/cache/claude-plugins-official/ | sort) <(ls /home/vivekkarmarkar/claude-code-os/plugins/ | sort) ``` For new plugins: copy the entire plugin folder. For existing plugins with version changes: remove old version folder, copy new one. Check for nested `.git` directories and remove them before staging. ### Step 3: Diff Settings ```bash diff ~/.claude/settings.json /home/vivekkarmarkar/claude-code-os/settings.json ``` If different: copy live settings.json to repo. ### Step 4: Diff Global CLAUDE.md ```bash diff ~/.claude/CLAUDE.md /home/vivekkarmarkar/claude-code-os/CLAUDE.md ``` If different: copy live CLAUDE.md to repo. This is the global behavioral enforcement file — voice transcription, food image detection, and any future cross-project behavioral rules live here. ### Step 5: Diff Installed Plugins Manifest ```bash diff ~/.claude/plugins/installed_plugins.json /home/vivekkarmarkar/claude-code-os/installed_plugins.json ``` If different: copy live manifest to repo. ### Step 6: Diff Hooks ```bash diff <(ls ~/.claude/hooks/ | sort) <(ls /home/vivekkarmarkar/claude-code-os/hooks/ | sort) ``` Copy any new hook files. ### Step 7: Diff Channels ```bash diff <(ls ~/.claude/channels/ 2>/dev/null | sort) <(ls /home/vivekkarmarkar/claude-code-os/channels/ 2>/dev/null | sort) ``` Copy any new channel folders. ### Step 7.5: Diff MCP Servers ```bash diff <(ls ~/.claude/mcp_servers/ 2>/dev/null | sort) <(ls /home/vivekkarmarkar/claude-code-os/mcp-servers/ 2>/dev/null | sort) ``` For each MCP server in live (`~/.claude/mcp_servers/<name>/`) but not in repo (`~/claude-code-os/mcp-servers/<name>/`): copy ONLY the source files (`*.py`, `pyproject.toml`, `requirements.txt`, `README.md`). NEVER copy `.venv/`, `__pycache__/`, `*.pyc`, or any file with secrets. The repo's `.gitignore` already excludes `.venv/` and `__pycache__/` but be defensive. Also re-run the MCP registration sync to refresh `mcp-servers.json` with the live registrations from `~/.claude.json` (with secrets redacted). The `~/.claude/hooks/sync-mcp.sh` hook does this; running it explicitly here ensures the manifest is current. It preserves the top-level structure of `mcp-servers.json` (`local`, `claude.ai`, `plugins` keys) and only refreshes the `local` block: ```bash ~/.claude/hooks/sync-mcp.sh ``` ### Step 8: Update README Counts Count the current totals: ```bash ls /home/vivekkarmarkar/claude-code-os/skills/ | wc -l ls /home/vivekkarmarkar/claude-code-os/plugins/ | wc -l ls /home/vivekkarmarkar/claude-code-os/hooks/*.sh | wc -l ls /home/vivekkarmarkar/claude-code-os/mcp-servers/ | wc -l # MCP Servers count in README also includes claude.ai remotes + plugin servers # from mcp-servers.json — count those separately from the directory list. ``` Update `## Skills (N)`, `## Plugins (N)`, `## Hooks (N)`, and `## MCP Servers (N)` in README.md with actual counts. For each new skill, add a row to the skills table in alphabetical order: ``` | `skill-name` | One-line description from the first line of SKILL.md | ``` For each new plugin, add a row to the plugins table. For each new hook, add a row to the hooks table. For each new local MCP server, add a row to the MCP Servers table under the local-stdio section, alphabetical order. ### Step 9: Check for Large Files ```bash find /home/vivekkarmarkar/claude-code-os -size +90M -not -path '*/.git/*' ``` If any files exceed 90MB (GitHub's limit is 100MB), add them to `.gitignore` and warn the user. ### Step 10: Stage, Commit, Push ```bash cd /home/vivekkarmarkar/claude-code-os git add -A ``` Before committing, check for `.env` files, credentials, tokens — do NOT stage those. Generate or use the provided commit message. Format: ``` feat: sync — X new skills, Y plugin updates, Z config changes (TOTAL skills) Details of what changed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> ``` Commit and push to origin main. ### Step 11: Report Print a summary: ``` Sync complete. Skills: X → Y (+N new) Plugins: X → Y (+N new, M updated) Hooks: X → Y CLAUDE.md: [changed/unchanged] Settings: [changed/unchanged] Commit: <hash> Pushed to: origin/main ``` ## Rules 1. **Always works from any directory.** The skill hardcodes the repo path. It does not depend on the current working directory. 2. **Never delete from the repo.** Only add or update. If a skill was removed from live, leave it in the repo — it's an archive. 3. **Never commit secrets.** Check for .env, API keys, tokens before staging. 4. **Handle large files.** GitHub rejects files over 100MB. Auto-gitignore anything over 90MB. 5. **Remove nested .git directories.** Plugins sometimes have these. Remove before staging or git will treat them as submodules. 6. **Don't touch the README structure.** Only update counts and add new rows. Never rearrange or remove existing rows.