smithery.ai

Version Controlling Global Configuration

Use when user asks about version controlling ~/.claude directory or syncing Claude Code settings across machines.

Installation

$ npx skills add https://smithery.ai

Summary

  • Use when user asks about version controlling ~/.claude directory or syncing Claude Code settings across machines.
  • Provides git setup instructions and .gitignore patterns to track only portable settings while excluding logs, session data, and machine-specific plugin metadata.
  • Invoke before initializing git in ~/.claude to prevent committing non-portable data.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,237 B
  • docs SUMMARY.md 408 B

History

  1. First recorded snapshot · 1 installs

SKILL.md

Version Controlling Claude Code Global Configuration

Use this skill when users want to version control their ~/.claude directory to sync settings across machines.

Critical Understanding

The ~/.claude directory contains both portable settings and machine-specific data. Not everything should be version controlled.

Safe to Version Control

  • CLAUDE.md - Global instructions
  • settings.json - User preferences (only contains enabled plugin names)
  • Documentation files you create (README, PLUGINS.md)

NEVER Version Control

  • plugins/installed_plugins.json - Contains absolute paths and timestamps
  • plugins/known_marketplaces.json - Contains absolute paths and timestamps
  • plugins/config.json - Machine-specific configuration
  • plugins/marketplaces/ and plugins/repos/ - Downloaded plugin data
  • debug/, file-history/, history.jsonl - Logs and session data (may contain sensitive info)
  • projects/, session-env/, shell-snapshots/, todos/ - Session-specific cache
  • statsig/ - Analytics cache

Why Plugin Metadata Shouldn't Be Versioned

The plugin metadata files contain:

  1. Absolute paths specific to each machine (e.g., /Users/username/...)
  2. Timestamps that cause unnecessary merge conflicts
  3. Git commit SHAs from local repositories

These files are automatically regenerated by Claude Code when plugins are installed. You don't need to preserve them.

Standard .gitignore Template

# Session data and logs
debug/
file-history/
history.jsonl
session-env/
shell-snapshots/
todos/

# Project-specific cache
projects/

# Analytics and telemetry
statsig/

# Plugin metadata (machine-specific paths and timestamps)
plugins/installed_plugins.json
plugins/known_marketplaces.json
plugins/config.json
plugins/marketplaces/
plugins/repos/

# Any log files
*.log

# Temporary files
*.tmp
*.swp
*~

# OS-specific files
.DS_Store
Thumbs.db

Recommended Workflow

Initial Setup

  1. Examine the ~/.claude directory to understand what's there
  2. Create .gitignore with the template above
  3. Create PLUGINS.md to document which plugins to install:
# Installed Plugins

## Marketplaces
- **marketplace-name**: `https://github.com/user/repo`

## Plugins
From `marketplace-name`:
- `plugin-name` - Brief description

## Installation on New Machine
1. Clone/install marketplaces listed above
2. Use Claude Code to install plugins
3. Copy `settings.json` and `CLAUDE.md` from this repo
  1. Create README.md explaining what the repo contains and setup process
  2. Initialize git: git init
  3. Verify with git status - should only show safe files
  4. Commit the initial setup

Cross-Machine Sync

On a new machine:

  1. Clone the config repo to ~/.claude
  2. Manually install marketplaces and plugins per PLUGINS.md
  3. Claude Code will regenerate all machine-specific metadata automatically

Validation Steps

After creating .gitignore:

  1. Run git status to see what will be tracked
  2. Verify NO plugin metadata files appear
  3. Verify NO log or session files appear
  4. Should only see: .gitignore, CLAUDE.md, settings.json, and any docs you created

If plugin metadata appears in git status, the .gitignore is incorrect.

Common Mistakes to Avoid

  • Don't version control the entire plugins/ directory
  • Don't try to preserve absolute paths across machines
  • Don't commit history.jsonl (contains conversation history, potentially sensitive)
  • Don't assume plugin metadata needs to be preserved

When to Use This Skill

Trigger this skill when users:

  • Ask about version controlling ~/.claude
  • Want to sync Claude settings across machines
  • Ask what's safe to commit from their Claude directory
  • Question whether plugin files should be in git